File: .lake/packages/lean4/src/lean/Lean/Elab/PreDefinition/WF/Fix.lean

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.mkDecreasingProof
code: private def mkDecreasingProof (decreasingProp : Expr) : TermElabM Expr 
goal: Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.replaceRecApps.processApp
code: private partial def replaceRecApps (recFnName : Name) (fixedPrefixSize : Nat) (F : Expr) (e : Expr) : TermElabM Expr 
goal: StateRefT' IO.RealWorld (Lean.HasConstCache recFnName) Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.replaceRecApps.containsRecFn
code: private partial def replaceRecApps (recFnName : Name) (fixedPrefixSize : Nat) (F : Expr) (e : Expr) : TermElabM Expr 
goal: StateRefT' IO.RealWorld (Lean.HasConstCache recFnName) Lean.Elab.TermElabM Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.replaceRecApps.processRec
code: private partial def replaceRecApps (recFnName : Name) (fixedPrefixSize : Nat) (F : Expr) (e : Expr) : TermElabM Expr 
goal: StateRefT' IO.RealWorld (Lean.HasConstCache recFnName) Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.replaceRecApps
code: private partial def replaceRecApps (recFnName : Name) (fixedPrefixSize : Nat) (F : Expr) (e : Expr) : TermElabM Expr 
goal: Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.replaceRecApps.loop
code: private partial def replaceRecApps (recFnName : Name) (fixedPrefixSize : Nat) (F : Expr) (e : Expr) : TermElabM Expr 
goal: StateRefT' IO.RealWorld (Lean.HasConstCache recFnName) Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.processSumCasesOn
code: /-- Refine `F` over `PSum.casesOn` -/
private partial def processSumCasesOn (x F val : Expr) (k : (x : Expr) → (F : Expr) → (val : Expr) → TermElabM Expr) : TermElabM Expr 
goal: Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.processPSigmaCasesOn
code: /-- Refine `F` over `PSigma.casesOn` -/
private partial def processPSigmaCasesOn (x F val : Expr) (k : (F : Expr) → (val : Expr) → TermElabM Expr) : TermElabM Expr 
goal: Lean.Elab.TermElabM Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.PreDefinition.WF.Fix.0.Lean.Elab.WF.applyDefaultDecrTactic
code: private def applyDefaultDecrTactic (mvarId : MVarId) : TermElabM Unit 
goal: Lean.Elab.TermElabM Unit

full_name: Lean.Elab.WF.assignSubsumed
code: def assignSubsumed (mvars : Array MVarId) : MetaM (Array MVarId) 
goal: Lean.MetaM (Array Lean.MVarId)

full_name: Lean.Elab.WF.groupGoalsByFunction
code: /--
The subgoals, created by `mkDecreasingProof`, are of the form `[data _recApp: rel arg param]`, where
`param` is the `PackMutual`'ed parameter of the current function, and thus we can peek at that to
know which function is making the call.
The close coupling with how arguments are packed and termination goals look like is not great,
but it works for now.
-/
def groupGoalsByFunction (argsPacker : ArgsPacker) (numFuncs : Nat) (goals : Array MVarId) : MetaM (Array (Array MVarId)) 
goal: Lean.MetaM (Array (Array Lean.MVarId))

full_name: Lean.Elab.WF.solveDecreasingGoals
code: def solveDecreasingGoals (argsPacker : ArgsPacker) (decrTactics : Array (Option DecreasingBy)) (value : Expr) : MetaM Expr 
goal: Lean.MetaM Lean.Expr

full_name: Lean.Elab.WF.mkFix
code: def mkFix (preDef : PreDefinition) (prefixArgs : Array Expr) (argsPacker : ArgsPacker)
    (wfRel : Expr) (decrTactics : Array (Option DecreasingBy)) : TermElabM Expr 
goal: Lean.Elab.TermElabM Lean.Expr