Documentation

Lean.Meta.Basic

structure Lean.Meta.Config :
Type
structure Lean.Meta.ParamInfo :
Type
Equations
structure Lean.Meta.FunInfo :
Type
structure Lean.Meta.InfoCacheKey :
Type
Equations
Equations
Equations
  • Lean.Meta.instInhabitedCache = { default := { inferType := default, funInfo := default, synthInstance := default, whnfDefault := default, whnfAll := default, defEqDefault := default, defEqAll := default } }
structure Lean.Meta.DefEqContext :
Type
Equations
Equations
Equations
structure Lean.Meta.Context :
Type
Equations
  • Lean.Meta.instInhabitedMetaM = { default := fun x x => default }
Equations
Equations
  • Lean.Meta.instMonadMCtxMetaM = { getMCtx := do let a ← get pure a.mctx, modifyMCtx := fun f => modify fun s => { mctx := f s.mctx, cache := s.cache, zetaFVarIds := s.zetaFVarIds, postponed := s.postponed } }
Equations
Equations
Equations
@[inline]
def Lean.Meta.MetaM.run {α : Type} (x : Lean.MetaM α) (ctx : optParam Lean.Meta.Context { config := { foApprox := false, ctxApprox := false, quasiPatternApprox := false, constApprox := false, isDefEqStuckEx := false, transparency := Lean.Meta.TransparencyMode.default, zetaNonDep := true, trackZeta := false, unificationHints := true, proofIrrelevance := true, assignSyntheticOpaque := false, ignoreLevelMVarDepth := true, offsetCnstrs := true, etaStruct := true }, lctx := { fvarIdToDecl := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, decls := { root := Std.PersistentArrayNode.node (Array.mkEmpty (USize.toNat Std.PersistentArray.branching)), tail := Array.mkEmpty (USize.toNat Std.PersistentArray.branching), size := 0, shift := Std.PersistentArray.initShift, tailOff := 0 } }, localInstances := #[], defEqCtx? := none, synthPendingDepth := 0, canUnfold? := none }) (s : optParam Lean.Meta.State { mctx := { depth := 0, mvarCounter := 0, lDepth := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, decls := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, userNames := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, lAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, eAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, dAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 } }, cache := { inferType := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, funInfo := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, synthInstance := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, whnfDefault := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, whnfAll := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, defEqDefault := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, defEqAll := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 } }, zetaFVarIds := , postponed := { root := Std.PersistentArrayNode.node (Array.mkEmpty (USize.toNat Std.PersistentArray.branching)), tail := Array.mkEmpty (USize.toNat Std.PersistentArray.branching), size := 0, shift := Std.PersistentArray.initShift, tailOff := 0 } }) :
Equations
@[inline]
def Lean.Meta.MetaM.run' {α : Type} (x : Lean.MetaM α) (ctx : optParam Lean.Meta.Context { config := { foApprox := false, ctxApprox := false, quasiPatternApprox := false, constApprox := false, isDefEqStuckEx := false, transparency := Lean.Meta.TransparencyMode.default, zetaNonDep := true, trackZeta := false, unificationHints := true, proofIrrelevance := true, assignSyntheticOpaque := false, ignoreLevelMVarDepth := true, offsetCnstrs := true, etaStruct := true }, lctx := { fvarIdToDecl := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, decls := { root := Std.PersistentArrayNode.node (Array.mkEmpty (USize.toNat Std.PersistentArray.branching)), tail := Array.mkEmpty (USize.toNat Std.PersistentArray.branching), size := 0, shift := Std.PersistentArray.initShift, tailOff := 0 } }, localInstances := #[], defEqCtx? := none, synthPendingDepth := 0, canUnfold? := none }) (s : optParam Lean.Meta.State { mctx := { depth := 0, mvarCounter := 0, lDepth := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, decls := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, userNames := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, lAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, eAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, dAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 } }, cache := { inferType := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, funInfo := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, synthInstance := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, whnfDefault := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, whnfAll := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, defEqDefault := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, defEqAll := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 } }, zetaFVarIds := , postponed := { root := Std.PersistentArrayNode.node (Array.mkEmpty (USize.toNat Std.PersistentArray.branching)), tail := Array.mkEmpty (USize.toNat Std.PersistentArray.branching), size := 0, shift := Std.PersistentArray.initShift, tailOff := 0 } }) :
Equations
@[inline]
def Lean.Meta.MetaM.toIO {α : Type} (x : Lean.MetaM α) (ctxCore : Lean.Core.Context) (sCore : Lean.Core.State) (ctx : optParam Lean.Meta.Context { config := { foApprox := false, ctxApprox := false, quasiPatternApprox := false, constApprox := false, isDefEqStuckEx := false, transparency := Lean.Meta.TransparencyMode.default, zetaNonDep := true, trackZeta := false, unificationHints := true, proofIrrelevance := true, assignSyntheticOpaque := false, ignoreLevelMVarDepth := true, offsetCnstrs := true, etaStruct := true }, lctx := { fvarIdToDecl := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, decls := { root := Std.PersistentArrayNode.node (Array.mkEmpty (USize.toNat Std.PersistentArray.branching)), tail := Array.mkEmpty (USize.toNat Std.PersistentArray.branching), size := 0, shift := Std.PersistentArray.initShift, tailOff := 0 } }, localInstances := #[], defEqCtx? := none, synthPendingDepth := 0, canUnfold? := none }) (s : optParam Lean.Meta.State { mctx := { depth := 0, mvarCounter := 0, lDepth := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, decls := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, userNames := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, lAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, eAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, dAssignment := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 } }, cache := { inferType := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, funInfo := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, synthInstance := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, whnfDefault := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, whnfAll := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, defEqDefault := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 }, defEqAll := { root := Std.PersistentHashMap.Node.entries Std.PersistentHashMap.mkEmptyEntriesArray, size := 0 } }, zetaFVarIds := , postponed := { root := Std.PersistentArrayNode.node (Array.mkEmpty (USize.toNat Std.PersistentArray.branching)), tail := Array.mkEmpty (USize.toNat Std.PersistentArray.branching), size := 0, shift := Std.PersistentArray.initShift, tailOff := 0 } }) :
Equations
instance Lean.Meta.instMetaEvalMetaM {α : Type} [inst : Lean.MetaEval α] :
Equations
@[inline]
def Lean.Meta.liftMetaM {m : TypeType u_1} {α : Type} [inst : MonadLiftT Lean.MetaM m] (x : Lean.MetaM α) :
m α
Equations
@[inline]
def Lean.Meta.mapMetaM {m : TypeType u_1} [inst : MonadControlT Lean.MetaM m] [inst : Monad m] (f : {α : Type} → Lean.MetaM αLean.MetaM α) {α : Type} (x : m α) :
m α
Equations
@[inline]
def Lean.Meta.map1MetaM {m : TypeType u_1} {β : Sort u_2} [inst : MonadControlT Lean.MetaM m] [inst : Monad m] (f : {α : Type} → (βLean.MetaM α) → Lean.MetaM α) {α : Type} (k : βm α) :
m α
Equations
@[inline]
def Lean.Meta.map2MetaM {m : TypeType u_1} {β : Sort u_2} {γ : Sort u_3} [inst : MonadControlT Lean.MetaM m] [inst : Monad m] (f : {α : Type} → (βγLean.MetaM α) → Lean.MetaM α) {α : Type} (k : βγm α) :
m α
Equations
@[inline]
Equations
  • Lean.Meta.modifyCache f = modify fun x => match x with | { mctx := mctx, cache := cache, zetaFVarIds := zetaFVarIds, postponed := postponed } => { mctx := mctx, cache := f cache, zetaFVarIds := zetaFVarIds, postponed := postponed }
@[inline]
Equations
  • Lean.Meta.modifyInferTypeCache f = Lean.Meta.modifyCache fun x => match x with | { inferType := ic, funInfo := c1, synthInstance := c2, whnfDefault := c3, whnfAll := c4, defEqDefault := c5, defEqAll := c6 } => { inferType := f ic, funInfo := c1, synthInstance := c2, whnfDefault := c3, whnfAll := c4, defEqDefault := c5, defEqAll := c6 }
Equations
Equations
  • Lean.Meta.setMCtx mctx = modify fun s => { mctx := mctx, cache := s.cache, zetaFVarIds := s.zetaFVarIds, postponed := s.postponed }
Equations
Equations
@[inline]
Equations
@[extern 6lean_whnf]
@[extern 6lean_infer_type]
@[extern 7lean_is_expr_def_eq]
@[extern 7lean_is_level_def_eq]
@[extern 6lean_synth_pending]
def Lean.Meta.withIncRecDepth {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
def Lean.Meta.renameMVar (mvarId : Lean.MVarId) (newUserName : Lean.Name) :
Equations
Equations
Equations
Equations
Equations
Equations
@[inline]
Equations
Equations
Equations
Equations
@[inline]
def Lean.Meta.withConfig {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (f : Lean.Meta.ConfigLean.Meta.Config) :
n αn α
Equations
  • Lean.Meta.withConfig f = Lean.Meta.mapMetaM fun {α} => withReader fun ctx => { config := f ctx.config, lctx := ctx.lctx, localInstances := ctx.localInstances, defEqCtx? := ctx.defEqCtx?, synthPendingDepth := ctx.synthPendingDepth, canUnfold? := ctx.canUnfold? }
@[inline]
def Lean.Meta.withTrackingZeta {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
  • Lean.Meta.withTrackingZeta x = Lean.Meta.withConfig (fun cfg => { foApprox := cfg.foApprox, ctxApprox := cfg.ctxApprox, quasiPatternApprox := cfg.quasiPatternApprox, constApprox := cfg.constApprox, isDefEqStuckEx := cfg.isDefEqStuckEx, transparency := cfg.transparency, zetaNonDep := cfg.zetaNonDep, trackZeta := true, unificationHints := cfg.unificationHints, proofIrrelevance := cfg.proofIrrelevance, assignSyntheticOpaque := cfg.assignSyntheticOpaque, ignoreLevelMVarDepth := cfg.ignoreLevelMVarDepth, offsetCnstrs := cfg.offsetCnstrs, etaStruct := cfg.etaStruct }) x
@[inline]
def Lean.Meta.withoutProofIrrelevance {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
  • Lean.Meta.withoutProofIrrelevance x = Lean.Meta.withConfig (fun cfg => { foApprox := cfg.foApprox, ctxApprox := cfg.ctxApprox, quasiPatternApprox := cfg.quasiPatternApprox, constApprox := cfg.constApprox, isDefEqStuckEx := cfg.isDefEqStuckEx, transparency := cfg.transparency, zetaNonDep := cfg.zetaNonDep, trackZeta := cfg.trackZeta, unificationHints := cfg.unificationHints, proofIrrelevance := false, assignSyntheticOpaque := cfg.assignSyntheticOpaque, ignoreLevelMVarDepth := cfg.ignoreLevelMVarDepth, offsetCnstrs := cfg.offsetCnstrs, etaStruct := cfg.etaStruct }) x
@[inline]
def Lean.Meta.withTransparency {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (mode : Lean.Meta.TransparencyMode) :
n αn α
Equations
  • Lean.Meta.withTransparency mode = Lean.Meta.mapMetaM fun {α} => Lean.Meta.withConfig fun config => { foApprox := config.foApprox, ctxApprox := config.ctxApprox, quasiPatternApprox := config.quasiPatternApprox, constApprox := config.constApprox, isDefEqStuckEx := config.isDefEqStuckEx, transparency := mode, zetaNonDep := config.zetaNonDep, trackZeta := config.trackZeta, unificationHints := config.unificationHints, proofIrrelevance := config.proofIrrelevance, assignSyntheticOpaque := config.assignSyntheticOpaque, ignoreLevelMVarDepth := config.ignoreLevelMVarDepth, offsetCnstrs := config.offsetCnstrs, etaStruct := config.etaStruct }
@[inline]
def Lean.Meta.withDefault {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
@[inline]
def Lean.Meta.withReducible {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
@[inline]
def Lean.Meta.withReducibleAndInstances {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
@[inline]
def Lean.Meta.withAtLeastTransparency {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (mode : Lean.Meta.TransparencyMode) (x : n α) :
n α
Equations
  • Lean.Meta.withAtLeastTransparency mode x = Lean.Meta.withConfig (fun config => let oldMode := config.transparency; let mode := if Lean.Meta.TransparencyMode.lt oldMode mode = true then mode else oldMode; { foApprox := config.foApprox, ctxApprox := config.ctxApprox, quasiPatternApprox := config.quasiPatternApprox, constApprox := config.constApprox, isDefEqStuckEx := config.isDefEqStuckEx, transparency := mode, zetaNonDep := config.zetaNonDep, trackZeta := config.trackZeta, unificationHints := config.unificationHints, proofIrrelevance := config.proofIrrelevance, assignSyntheticOpaque := config.assignSyntheticOpaque, ignoreLevelMVarDepth := config.ignoreLevelMVarDepth, offsetCnstrs := config.offsetCnstrs, etaStruct := config.etaStruct }) x
@[inline]
def Lean.Meta.withAssignableSyntheticOpaque {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (x : n α) :
n α
Equations
  • Lean.Meta.withAssignableSyntheticOpaque x = Lean.Meta.withConfig (fun config => { foApprox := config.foApprox, ctxApprox := config.ctxApprox, quasiPatternApprox := config.quasiPatternApprox, constApprox := config.constApprox, isDefEqStuckEx := config.isDefEqStuckEx, transparency := config.transparency, zetaNonDep := config.zetaNonDep, trackZeta := config.trackZeta, unificationHints := config.unificationHints, proofIrrelevance := config.proofIrrelevance, assignSyntheticOpaque := true, ignoreLevelMVarDepth := config.ignoreLevelMVarDepth, offsetCnstrs := config.offsetCnstrs, etaStruct := config.etaStruct }) x
@[inline]
def Lean.Meta.savingCache {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} :
n αn α
Equations
Equations
Equations
@[inline]
def Lean.Meta.resettingSynthInstanceCache {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} :
n αn α
Equations
  • Lean.Meta.resettingSynthInstanceCache = Lean.Meta.mapMetaM fun {α} => Lean.Meta.resettingSynthInstanceCacheImpl
@[inline]
def Lean.Meta.resettingSynthInstanceCacheWhen {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (b : Bool) (x : n α) :
n α
Equations
def Lean.Meta.withNewLocalInstance {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (className : Lean.Name) (fvar : Lean.Expr) :
n αn α
Equations
def Lean.Meta.withNewLocalInstances {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (fvars : Array Lean.Expr) (j : Nat) :
n αn α
Equations
def Lean.Meta.forallTelescope {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (type : Lean.Expr) (k : Array Lean.ExprLean.Exprn α) :
n α
Equations
def Lean.Meta.forallTelescopeReducing {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (type : Lean.Expr) (k : Array Lean.ExprLean.Exprn α) :
n α
Equations
def Lean.Meta.forallBoundedTelescope {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (type : Lean.Expr) (maxFVars? : Option Nat) (k : Array Lean.ExprLean.Exprn α) :
n α
Equations
def Lean.Meta.lambdaLetTelescope {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (type : Lean.Expr) (k : Array Lean.ExprLean.Exprn α) :
n α
Equations
def Lean.Meta.lambdaTelescope {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (type : Lean.Expr) (k : Array Lean.ExprLean.Exprn α) :
n α
Equations
Equations
def Lean.Meta.withLocalDecl {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (name : Lean.Name) (bi : Lean.BinderInfo) (type : Lean.Expr) (k : Lean.Exprn α) :
n α
Equations
def Lean.Meta.withLocalDeclD {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (name : Lean.Name) (type : Lean.Expr) (k : Lean.Exprn α) :
n α
Equations
def Lean.Meta.withLocalDecls {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} [inst : Inhabited α] (declInfos : Array (Lean.Name × Lean.BinderInfo × (Array Lean.Exprn Lean.Expr))) (k : Array Lean.Exprn α) :
n α
Equations
partial def Lean.Meta.withLocalDecls.loop {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (declInfos : Array (Lean.Name × Lean.BinderInfo × (Array Lean.Exprn Lean.Expr))) (k : Array Lean.Exprn α) [inst : Inhabited α] (acc : Array Lean.Expr) :
n α
def Lean.Meta.withLocalDeclsD {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} [inst : Inhabited α] (declInfos : Array (Lean.Name × (Array Lean.Exprn Lean.Expr))) (k : Array Lean.Exprn α) :
n α
Equations
def Lean.Meta.withNewBinderInfos {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (bs : Array (Lean.FVarId × Lean.BinderInfo)) (k : n α) :
n α
Equations
def Lean.Meta.withLetDecl {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (name : Lean.Name) (type : Lean.Expr) (val : Lean.Expr) (k : Lean.Exprn α) :
n α
Equations
def Lean.Meta.withExistingLocalDecls {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (decls : List Lean.LocalDecl) :
n αn α
Equations
def Lean.Meta.withNewMCtxDepth {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} :
n αn α
Equations
def Lean.Meta.withLCtx {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (lctx : Lean.LocalContext) (localInsts : Lean.LocalInstances) :
n αn α
Equations
def Lean.Meta.withMVarContext {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (mvarId : Lean.MVarId) :
n αn α
Equations
def Lean.Meta.withMCtx {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} (mctx : Lean.MetavarContext) :
n αn α
Equations
@[inline]
def Lean.Meta.approxDefEq {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} :
n αn α
Equations
@[inline]
def Lean.Meta.fullApproxDefEq {n : TypeType u_1} [inst : MonadControlT Lean.MetaM n] [inst : Monad n] {α : Type} :
n αn α
Equations
Equations
Equations
  • Lean.Meta.ppExpr e = do let ctxCore ← readThe Lean.Core.Context let a ← Lean.getEnv let a_1 ← Lean.getMCtx let a_2 ← Lean.getLCtx let a_3 ← Lean.getOptions liftM (Lean.ppExpr { env := a, mctx := a_1, lctx := a_2, opts := a_3, currNamespace := ctxCore.currNamespace, openDecls := ctxCore.openDecls } e)
@[inline]
def Lean.Meta.orElse {α : Type} (x : Lean.MetaM α) (y : UnitLean.MetaM α) :
Equations
instance Lean.Meta.instOrElseMetaM {α : Type} :
Equations
  • Lean.Meta.instOrElseMetaM = { orElse := Lean.Meta.orElse }
@[inline]
def Lean.Meta.orelseMergeErrors {m : TypeType u_1} {α : Type} [inst : MonadControlT Lean.MetaM m] [inst : Monad m] (x : m α) (y : m α) (mergeRef : optParam (Lean.SyntaxLean.SyntaxLean.Syntax) fun r₁ r₂ => r₁) (mergeMsg : optParam (Lean.MessageDataLean.MessageDataLean.MessageData) fun m₁ m₂ => m₁ ++ Lean.MessageData.ofFormat Lean.Format.line ++ Lean.MessageData.ofFormat Lean.Format.line ++ m₂) :
m α
Equations
Equations
@[inline]
def Lean.Meta.mapError {m : TypeType u_1} {α : Type} [inst : MonadControlT Lean.MetaM m] [inst : Monad m] (x : m α) (f : Lean.MessageDataLean.MessageData) :
m α
Equations
Equations
Equations
def Lean.Meta.processPostponed (mayPostpone : optParam Bool true) (exceptionOnFailure : optParam Bool false) :
Equations
partial def Lean.Meta.processPostponed.loop (mayPostpone : optParam Bool true) (exceptionOnFailure : optParam Bool false) :
@[specialize]
Equations
Equations
Equations
Equations