Documentation

Lean.Elab.PreDefinition.WF.Unfold

This module is responsible for proving the unfolding equation for functions defined by well-founded recursion. It uses WellFounded.fix_eq, and then has to undo the changes to matchers that WF.Fix did using MatcherApp.addArg.

This is done using a single-pass simp traversal of the expression that looks for expressions that were modified that way, and rewrites them back using the rather specialized _arg_pusher theorem that is generated by mkMatchArgPusher.

def Lean.Elab.WF.mkUnfoldEq (preDef : PreDefinition) (unaryPreDefName : Name) (wfPreprocessProof : Meta.Simp.Result) :
Equations
  • One or more equations did not get rendered due to their size.
Instances For
    def Lean.Elab.WF.mkBinaryUnfoldEq (preDef : PreDefinition) (unaryPreDefName : Name) :

    Derives the equational theorem for the individual functions from the equational theorem of foo._unary or foo._binary.

    It should just be a specialization of that one, due to defeq.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For