DefView
plus header elaboration data and snapshot.
- kind : Lean.Elab.DefKind
- ref : Lean.Syntax
- headerRef : Lean.Syntax
- modifiers : Lean.Elab.Modifiers
- declId : Lean.Syntax
- binders : Lean.Syntax
- type? : Option Lean.Syntax
- value : Lean.Syntax
- headerSnap? : Option (Lean.Language.SnapshotBundle (Option Lean.Elab.HeaderProcessedSnapshot))
- deriving? : Option (Array Lean.Syntax)
- shortDeclName : Lake.Name
- declName : Lake.Name
- binderIds : Array Lean.Syntax
- numParams : Nat
- type : Lean.Expr
Snapshot for incremental processing of top-level tactic block, if any.
Invariant: if the bundle's
old?
is set, then the state up to the start of the tactic block is unchanged, i.e. reuse is possible.- bodySnap? : Option (Lean.Language.SnapshotBundle (Option Lean.Elab.BodyProcessedSnapshot))
Snapshot for incremental processing of definition body.
Invariant: if the bundle's
old?
is set, then elaboration of the body is guaranteed to result in the same elaboration result and state, i.e. reuse is possible.
Instances For
Equations
- Lean.Elab.instInhabitedDefViewElabHeader = { default := { toDefView := default, toDefViewElabHeaderData := default, tacSnap? := default, bodySnap? := default } }
A mapping from FVarId to Set of FVarIds.
Instances For
The let-recs may invoke each other. Example:
let rec
f (x : Nat) := g x + y
g : Nat → Nat
| 0 => 1
| x+1 => f x + z
y
is free variable in f
, and z
is a free variable in g
.
To close f
and g
, y
and z
must be in the closure of both.
That is, we need to generate the top-level definitions.
def f (y z x : Nat) := g y z x + y
def g (y z : Nat) : Nat → Nat
| 0 => 1
| x+1 => f y z x + z
- usedFVarsMap : Lean.Elab.Term.MutualClosure.UsedFVarsMap
- modified : Bool
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
- newLocalDecls : Array Lean.LocalDecl
- localDecls : Array Lean.LocalDecl
- newLetDecls : Array Lean.LocalDecl
Instances For
- ref : Lean.Syntax
- localDecls : Array Lean.LocalDecl
- closed : Lean.Expr
Expression used to replace occurrences of the let-rec
FVarId
. - toLift : Lean.Elab.Term.LetRecToLift
Instances For
Mapping from FVarId of mutually recursive functions being defined to "closure" expression.
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
- 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
- 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
sectionVars
: The section variables used in themutual
block.mainHeaders
: The elaborated header of the top-level definitions being defined by the mutual block.mainFVars
: The auxiliary variables used to represent the top-level definitions being defined by the mutual block.mainVals
: The elaborated value for the top-level definitionsletRecsToLift
: The let-rec's definitions that need to be lifted
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
- 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.