File: .lake/packages/lean4/src/lean/Lean/PrettyPrinter/Delaborator/SubExpr.lean

full_name: Lean.PrettyPrinter.Delaborator.OptionsPerPos
code: abbrev OptionsPerPos 
goal: Type

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.getExpr
code: def getExpr : m Expr 
goal: m Lean.Expr

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.getPos
code: def getPos  : m Pos  
goal: m Lean.SubExpr.Pos

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.descend
code: def descend (child : Expr) (childIdx : Nat) (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withAppFn
code: def withAppFn   (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withAppArg
code: def withAppArg  (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withType
code: def withType (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withAppFnArgs
code: /--
Uses `xa` to compute the fold across the arguments of an application,
where `xf` provides the initial value and is evaluated in the context of the head of the application.
-/
partial def withAppFnArgs (xf : m α) (xa : α → m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withBoundedAppFnArgs
code: /--
Uses `xa` to compute the fold across up to `maxArgs` outermost arguments of an application,
where `xf` provides the initial value and is evaluated in the context of the application minus
the arguments being folded across.
-/
def withBoundedAppFnArgs (maxArgs : Nat) (xf : m α) (xa : α → m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withBoundedAppFn
code: /--
Runs `xf` in the context of `Lean.Expr.getBoundedAppFn maxArgs`.
This is equivalent to `withBoundedAppFnArgs maxArgs xf pure`.
-/
def withBoundedAppFn (maxArgs : Nat) (xf : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withBindingDomain
code: def withBindingDomain (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withBindingBody'
code: /--
Assumes the `SubExpr` is a lambda or forall.
1. Creates a local declaration for this binder using the name `n`.
2. Evaluates `v` using the fvar for the local declaration.
3. Enters the binding body, and evaluates `x` using this result.
-/
def withBindingBody' (n : Name) (v : Expr → m β) (x : β → m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withBindingBody
code: /--
Assumes the `SubExpr` is a lambda or forall.
Creates a local declaration for this binder using the name `n`, enters the binding body, and evaluates `x`.
-/
def withBindingBody (n : Name) (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withProj
code: def withProj (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withMDataExpr
code: def withMDataExpr (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withLetVarType
code: def withLetVarType (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withLetValue
code: def withLetValue (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withLetBody
code: def withLetBody (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withNaryFn
code: def withNaryFn (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.withNaryArg
code: def withNaryArg (argIdx : Nat) (x : m α) : m α 
goal: m α

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.instInhabitedHoleIterator
code: structure HoleIterator where
  curr : Nat := 2
  top  : Nat := Pos.maxChildren
  deriving Inhabited
goal: Inhabited Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator.curr
code: structure HoleIterator where
  curr : Nat := 2
  top  : Nat := Pos.maxChildren
  deriving Inhabited
goal: Nat

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator
code: structure HoleIterator where
  curr : Nat := 2
  top  : Nat := Pos.maxChildren
  deriving Inhabited
goal: Type

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator.top
code: structure HoleIterator where
  curr : Nat := 2
  top  : Nat := Pos.maxChildren
  deriving Inhabited
goal: Nat

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator.toPos
code: def HoleIterator.toPos (iter : HoleIterator) : Pos 
goal: Lean.SubExpr.Pos

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator.next
code: def HoleIterator.next (iter : HoleIterator) : HoleIterator 
goal: Lean.PrettyPrinter.Delaborator.SubExpr.HoleIterator

full_name: Lean.PrettyPrinter.Delaborator.SubExpr.nextExtraPos
code: /-- The positioning scheme guarantees that there will be an infinite number of extra positions
which are never used by `Expr`s. The `HoleIterator` always points at the next such "hole".
We use these to attach additional `Elab.Info`.

Note: these positions are incompatible with `Lean.SubExpr.Pos.push` since the iterator
will eventually yield every child of every returned position. -/
def nextExtraPos : m Pos 
goal: m Lean.SubExpr.Pos