make_triggers f binders decl menv
generate multi-triggers for the formula f
and binders binders
.
An escaped variable of a pattern is a variable that is not in binders
(but the variable is bound by an inner quantified formula). We can replace escaped variables by the underscore variable Var.underscore
.
For instance, if binders
is the set {x, y}
and g(x, y, z)
is a pattern where {(x, y, z)}
are free term variables, we can replace z
by _
.
Our strategy for multi-trigger generations depends on the matching environment menv
as follows:
If menv.greedy
is false
, we try to generate in order:
- Mono-triggers;
- Multi-triggers without escaped variables.
If menv.greedy
is true
, we try to generate in order:
- Mono and multi-triggers with escaped variables.
- Mono and multi-triggers without escaped variables;
If menv.triggers_var
is true
, we allow variables as valid triggers.
Note: Mono-trigger with `Sy.Plus` or `Sy.Minus` top symbols are ignored if other mono-triggers have been generated.
The matching environment env
is used to limit the number of multi-triggers generated per axiom.