`->/2`

`+-P` `->`

`+*Q`

"Local cut"

If `P` then `Q` else fail, using first solution of `P`
only.

`P`callable [MOD]-
`Q`callable [MOD]

When occurring other than as the first argument of a disjunction operator
(`|`

or `;`

), this is equivalent to:

P -> Q | fail.

(For a definition of `P`` -> `

`Q`` | `

`R````
,
see ref-sem-con.)
```

`->`

cuts away any choice points in the execution of `P`

Note that the operator precedence of
`->`

is greater than 1000, so it dominates commas. Thus, in:

f :- p, q -> r, s. f.

`->`

cuts away any choices in `p`

or in `q`

, but unlike cut (`!`

)
it does not cut away the alternative choice for `f`

.

`context_error`