Some tactics substitute hypotheses with expressions.
We track these substitutions using FVarSubst
.
It is just a mapping from the original FVarId (internal) name
to an expression. The free variables occurring in the expression must
be defined in the new goal.
Instances For
Equations
- Lean.Meta.instInhabitedFVarSubst = { default := { map := default } }
Equations
- s.isEmpty = s.map.isEmpty
Instances For
Instances For
Add entry fvarId |-> v
to s
if s
does not contain an entry for fvarId
.
Equations
- s.insert fvarId v = if s.contains fvarId = true then s else let map := Lean.AssocList.mapVal (fun (e : Lean.Expr) => e.replaceFVarId fvarId v) s.map; { map := map.insert fvarId v }
Instances For
Equations
- s.erase fvarId = { map := Lean.AssocList.erase fvarId s.map }
Instances For
Equations
- s.find? fvarId = Lean.AssocList.find? fvarId s.map
Instances For
Instances For
Given e
, for each (x => v)
in s
replace x
with v
in e
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- s.domain = Lean.AssocList.foldl (fun (r : List Lean.FVarId) (k : Lean.FVarId) (x : Lean.Expr) => k :: r) [] s.map