Runs a term elaborator inside a tactic.
This function ensures that term elaboration fails when backtracking,
i.e., in first| tac term | other
.
Instances For
Instances For
Elaborate stx
in the current MVarContext
. If given, the expectedType
will be used to help
elaboration but not enforced (use elabTermEnsuringType
to enforce an expected type).
Instances For
Elaborate stx
in the current MVarContext
. If given, the expectedType
will be used to help
elaboration and then a TypeMismatchError
will be thrown if the elaborated type doesn't match.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Try to close main goal using x target tag
, where target
is the type of the main goal and tag
is its user name.
If checkNewUnassigned
is true, then throws an error if the resulting value has metavariables that were created during the execution of x
.
If it is false, then it is the responsibility of x
to add such metavariables to the goal list.
During the execution of x
:
- The local context is that of the main goal.
- The goal list has the main goal removed.
- It is allowable to modify the goal list, for example with
Lean.Elab.Tactic.pushGoals
.
On failure, the main goal remains at the front of the goal list.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Elab.Tactic.sortMVarIdsByIndex mvarIds = do let __do_lift ← Lean.Elab.Tactic.sortMVarIdArrayByIndex mvarIds.toArray pure __do_lift.toList
Instances For
Execute k
, and collect new "holes" in the resulting expression.
parentTag
andtagSuffix
are used to tag untagged goals withLean.Elab.Tactic.tagUntaggedGoals
.- If
allowNaturalHoles
is true, then_
's are allowed and create new goals.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Elaborates stx
and collects the MVarId
s of any holes that were created during elaboration.
With allowNaturalHoles := false
(the default), any new natural holes (_
) which cannot
be synthesized during elaboration cause elabTermWithHoles
to fail. (Natural goals appearing in
stx
which were created prior to elaboration are permitted.)
Unnamed MVarId
s are renamed to share the tag parentTag?
(or the main goal's tag if parentTag?
is none
).
If multiple unnamed goals are encountered, tagSuffix
is appended to this tag along with a numerical index.
Note:
- Previously-created
MVarId
s which appear instx
are not returned. - All parts of
elabTermWithHoles
operate at the currentMCtxDepth
, and therefore may assign metavariables. - When
allowNaturalHoles := true
,stx
is elaborated underwithAssignableSyntheticOpaque
, meaning that.syntheticOpaque
metavariables might be assigned during elaboration. This is a consequence of the implementation.
Instances For
If allowNaturalHoles == true
, then we allow the resultant expression to contain unassigned "natural" metavariables.
Recall that "natutal" metavariables are created for explicit holes _
and implicit arguments. They are meant to be
filled by typing constraints.
"Synthetic" metavariables are meant to be filled by tactics and are usually created using the synthetic hole notation ?<hole-name>
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a tactic
apply f
we want the apply
tactic to create all metavariables. The following
definition will return @f
for f
. That is, it will not create
metavariables for implicit arguments.
A similar method is also used in Lean 3.
This method is useful when applying lemmas such as:
theorem infLeRight {s t : Set α} : s ⊓ t ≤ t
where s ≤ t
here is defined as
∀ {x : α}, x ∈ s → x ∈ t
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Elaborate stx
. If it is a free variable, return it. Otherwise, assert it, and return the free variable.
Note that, the main goal is updated when Meta.assert
is used in the second case.
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.