Documentation

Lean.Elab.Calc

Decompose e into (r, a, b).

Remark: it assumes the last two arguments are explicit.

Equations
Instances For
    def Lean.Elab.Term.mkCalcTrans (result resultType step stepType : Lean.Expr) :
    Instances For

      Adds a type annotation to a hole that occurs immediately at the beginning of the term. This is so that coercions can trigger when elaborating the term. See https://github.com/leanprover/lean4/issues/2040 for further rationale.

      • _ < 3 is annotated
      • (_) < 3 is not, because it occurs after an atom
      • in _ < _ only the first one is annotated
      • _ + 2 < 3 is annotated (not the best heuristic, ideally we'd like to annotate _ + 2)
      • lt _ 3 is not, because it occurs after an identifier
      Equations
      Instances For

        View of a calcStep.

        Instances For
          Equations
          Instances For

            Warning! It is very tempting to try to improve calc so that it makes use of the expected type to unify with the LHS and RHS. Two people have already re-implemented elabCalcSteps trying to do so and then reverted the changes, not being aware of examples like https://github.com/leanprover/lean4/issues/2073

            The problem is that the expected type might need to be unfolded to get an accurate LHS and RHS. (Consider vs . Users expect to be able to use calc to prove using chained !) Furthermore, the types of the LHS and RHS do not need to be the same (consider x ∈ S as a relation), so we also cannot use the expected LHS and RHS as type hints.

            Elaborator for the calc term mode variant.

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