All the type atoms and term atoms are interpreted as fvars, which are let-declarations in the local context. We don't want the external prover to unfold these let-declarations, so we add these atoms as non-let free variables into the local context, run the external prover, abstract these free variables after the external prover has finished, and apply the abstracted expression to the value of these atoms to restore the requires expression.
- tyVal : Array (Lean.Expr × Lean.Level)
- varVal : Array (Lean.Expr × Embedding.Lam.LamSort)
- lamEVarTy : Array Embedding.Lam.LamSort
- atomsToAbstract : Array (Lean.FVarId × Lean.Expr)
- etomsToAbstract : Array (Lean.FVarId × Nat)
- typeAtomFVars : Std.HashMap Nat Lean.Expr
- termAtomFVars : Std.HashMap Nat Lean.Expr
- etomFVars : Std.HashMap Nat Lean.Expr
Instances For
Equations
Instances For
Equations
- m.run s = StateRefT'.run m s
Instances For
Equations
- m.run' s = StateRefT'.run' m s
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
- Auto.Lam2DAAF.getVarVal = do let st ← get pure st.varVal
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
- Auto.Lam2DAAF.getTyVal = do let st ← get pure st.tyVal
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Auto.Lam2DAAF.getEtomsToAbstract = do let st ← get pure st.etomsToAbstract
Instances For
Equations
- Auto.Lam2DAAF.getTermAtomFVars = do let st ← get pure st.termAtomFVars
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
- Auto.Lam2DAAF.getAtomsToAbstract = do let st ← get pure st.atomsToAbstract
Instances For
Equations
- Auto.Lam2DAAF.getLamEVarTy = do let st ← get pure st.lamEVarTy
Instances For
Equations
- Auto.Lam2DAAF.getEtomFVars = do let st ← get pure st.etomFVars
Instances For
Equations
- Auto.Lam2DAAF.getTypeAtomFVars = do let st ← get pure st.typeAtomFVars
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The external prover should only see the local context
and an array of Lean expressions, and should not see
anything within ExternM, LamReif.ReifM, ULiftM
or Reif.ReifM
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a list of non-dependent types ty₁, ty₂, ⋯, tyₙ
, add
free variables x₁ : ty₁, x₂ : ty₂, ⋯, xₙ : tyₙ
into local context,
and return #[x₁, x₂, ⋯, xₙ]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Calling external provere with type atoms, atoms, etoms, inhabitation facts and lemmas as free variables
Note that MetaState.withTemporaryLCtx
is used to isolate the prover from the
current local context. This is necessary because lean-auto
assumes that the prover
does not use free variables introduced during monomorphization
Equations
- One or more equations did not get rendered due to their size.