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
    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
        Instances For