File: .lake/packages/lean4/src/lean/Lean/Meta/ExprTraverse.lean

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.ExprTraverse.0.Lean.Meta.forgetPos
code: /-- Convert a traversal function to a form without the `Pos` argument. -/
private def forgetPos (t : (Pos → Expr → M Expr) → (Pos → Expr → M Expr)) (visit : Expr → M Expr) (e : Expr) : M Expr 
goal: M Lean.Expr

full_name: Lean.Meta.traverseLambdaWithPos
code: /-- Similar to `traverseLambda` but with an additional pos argument to track position. -/
def traverseLambdaWithPos
  (f : Pos → Expr → M Expr) (p : Pos) (e : Expr) : M Expr 
goal: M Lean.Expr

full_name: Lean.Meta.traverseLambdaWithPos.visit
code: /-- Similar to `traverseLambda` but with an additional pos argument to track position. -/
def traverseLambdaWithPos
  (f : Pos → Expr → M Expr) (p : Pos) (e : Expr) : M Expr 
goal: Lean.Expr → M Lean.Expr

full_name: Lean.Meta.traverseForallWithPos
code: /-- Similar to `traverseForall` but with an additional pos argument to track position. -/
def traverseForallWithPos
  (f : Pos → Expr → M Expr) (p : Pos) (e : Expr) : M Expr 
goal: M Lean.Expr

full_name: Lean.Meta.traverseForallWithPos.visit
code: /-- Similar to `traverseForall` but with an additional pos argument to track position. -/
def traverseForallWithPos
  (f : Pos → Expr → M Expr) (p : Pos) (e : Expr) : M Expr 
goal: Lean.Expr → M Lean.Expr

full_name: Lean.Meta.traverseLetWithPos
code: /-- Similar to `traverseLet` but with an additional pos argument to track position. -/
def traverseLetWithPos
  (f : Pos → Expr → M Expr) (p : Pos) (e : Expr) : M Expr 
goal: M Lean.Expr

full_name: Lean.Meta.traverseLetWithPos.visit
code: /-- Similar to `traverseLet` but with an additional pos argument to track position. -/
def traverseLetWithPos
  (f : Pos → Expr → M Expr) (p : Pos) (e : Expr) : M Expr 
goal: Lean.Expr → M Lean.Expr

full_name: Lean.Meta.traverseChildrenWithPos
code: /-- Similar to `Lean.Meta.traverseChildren` except that `visit` also includes a `Pos` argument so you can
track the subexpression position. -/
def traverseChildrenWithPos (visit : Pos → Expr → M Expr) (p : Pos) (e: Expr) : M Expr 
goal: M Lean.Expr

full_name: Lean.Meta.traverseLambda
code: /-- Given an expression `fun (x₁ : α₁) ... (xₙ : αₙ) => b`, will run
`f` on each of the variable types `αᵢ` and `b` with the correct MetaM context,
replacing each expression with the output of `f` and creating a new lambda.
(that is, correctly instantiating bound variables and repackaging them after)  -/
def traverseLambda (visit : Expr → M Expr) 
goal: M Lean.Expr

full_name: Lean.Meta.traverseForall
code: /-- Given an expression ` (x₁ : α₁) → ... → (xₙ : αₙ) → b`, will run
`f` on each of the variable types `αᵢ` and `b` with the correct MetaM context,
replacing the expression with the output of `f` and creating a new forall expression.
(that is, correctly instantiating bound variables and repackaging them after)  -/
def traverseForall (visit : Expr → M Expr) 
goal: M Lean.Expr

full_name: Lean.Meta.traverseLet
code: /-- Similar to `traverseLambda` and `traverseForall` but with let binders.  -/
def traverseLet (visit : Expr → M Expr) 
goal: M Lean.Expr

full_name: Lean.Meta.traverseChildren
code: /-- Maps `visit` on each child of the given expression.

Applications, foralls, lambdas and let binders are bundled (as they are bundled in `Expr.traverseApp`, `traverseForall`, ...).
So `traverseChildren f e` where ``e = `(fn a₁ ... aₙ)`` will return
``(← f `(fn)) (← f `(a₁)) ... (← f `(aₙ))`` rather than ``(← f `(fn a₁ ... aₙ₋₁)) (← f `(aₙ))``

See also `Lean.Core.traverseChildren`.
 -/
def traverseChildren (visit : Expr → M Expr) 
goal: M Lean.Expr