The various guard_*
tactics have similar matching specifiers for how equal expressions
have to be to pass the tactic.
This inductive gives the different specifiers that can be selected.
- syntactic : MatchKind
A syntactic match means that the
Expr
s are==
after strippingMData
- defEq
(red : Meta.TransparencyMode := Meta.TransparencyMode.reducible)
: MatchKind
A defeq match
isDefEqGuarded
returns true. (Note that unification is allowed here.) - alphaEq : MatchKind
An alpha-eq match means that
Expr.eqv
returns true.
Instances For
Elaborate a
and b
and then do the given equality test mk
. We make sure to unify
the types of a
and b
after elaboration so that when synthesizing pending metavariables
we don't get the wrong instances due to default instances (for example, for nat literals).