When you define the operator op(1050, xfx, *->) and import *->/2 from sepia_kernel, then the expression
A *-> B ; Cis evaluated as a soft cut: if A succeeds, B is executed and on backtracking subsequent solutions of A are returned, but C is never executed. If A fails, C is executed. It is similar to ->/2, with the exception that ->/2 cuts both A and the disjunction if A succeeds, whereas *->/2 cuts only the disjunction.