- all : tactic.transparency
- semireducible : tactic.transparency
- instances : tactic.transparency
- reducible : tactic.transparency
- none : tactic.transparency
A parameter representing how aggressively definitions should be unfolded when trying to decide if two terms match, unify or are definitionally equal. By default, theorem declarations are never unfolded.
allwill unfold everything, including macros and theorems. Except projection macros.semireduciblewill unfold everything except theorems and definitions tagged as irreducible.instanceswill unfold all class instance definitions and definitions tagged with reducible.reduciblewill only unfold definitions tagged with thereducibleattribute.nonewill never unfold anything. [NOTE] You are not allowed to tag a definition with more than one ofreducible,irreducible,semireducibleattributes. [NOTE] there is a config flagm_unfold_lemmasthat will make it unfold theorems.
Instances for tactic.transparency
- tactic.transparency.has_sizeof_inst
- tactic.transparency.inhabited
- tactic.transparency.has_reflect
- non_dep_first : tactic.new_goals
- non_dep_only : tactic.new_goals
- all : tactic.new_goals
How to order the new goals made from an apply tactic.
Supposing we were applying e : ∀ (a:α) (p : P(a)), Q
non_dep_firstwould produce goals⊢ P(?m),⊢ α. It puts the P goal at the front because none of the arguments afterpinedepend onp. It doesn't matter what the resultQdepends on.non_dep_onlywould produce goal⊢ P(?m).allwould produce goals⊢ α,⊢ P(?m).
Instances for tactic.new_goals
- tactic.new_goals.has_sizeof_inst
- tactic.new_goals.inhabited
- md : tactic.transparency
- approx : bool
- new_goals : tactic.new_goals
- instances : bool
- auto_param : bool
- opt_param : bool
- unify : bool
Configuration options for the apply tactic.
mdsets how aggressively definitions are unfolded.new_goalsis the strategy for ordering new goals.instancesiftt, thenapplytries to synthesize unresolved[...]arguments using type class resolution.auto_paramiftt, thenapplytries to synthesize unresolved(h : p . tac_id)arguments using tactictac_id.opt_paramiftt, thenapplytries to synthesize unresolved(a : t := v)arguments by setting them tov.unifyiftt, thenapplyis free to assign existing metavariables in the goal when solving unification constraints. For example, in the goal|- ?x < succ 0, the tacticapply succ_lt_succsucceeds with the default configuration, butapply_with succ_lt_succ {unify := ff}doesn't since it would require Lean to assign?xtosucc ?ywhere?yis a fresh metavariable.
Instances for tactic.apply_cfg
- tactic.apply_cfg.has_sizeof_inst
- tactic.apply_cfg.inhabited
A tag is a list of names. These are attached to goals to help tactics track them.
Equations
By default, Lean only considers local instances in the header of declarations. This has two main benefits. 1- Results produced by the type class resolution procedure can be easily cached. 2- The set of local instances does not have to be recomputed.
This approach has the following disadvantages: 1- Frozen local instances cannot be reverted. 2- Local instances defined inside of a declaration are not considered during type class resolution.