Documentation

Lean.Parser.Tactic

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

    match performs case analysis on one or more expressions. See Induction and Recursion. The syntax for the match tactic is the same as term-mode match, except that the match arms are tactics instead of expressions.

    example (n : Nat) : n = n := by
      match n with
      | 0 => rfl
      | i+1 => simp
    
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The tactic

      intro
      | pat1 => tac1
      | pat2 => tac2
      

      is the same as:

      intro x
      match x with
      | pat1 => tac1
      | pat2 => tac2
      

      That is, intro can be followed by match arms and it introduces the values while doing a pattern match. This is equivalent to fun with match arms in term mode.

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

        decide will attempt to prove a goal of type p by synthesizing an instance of Decidable p and then evaluating it to isTrue ... Because this uses kernel computation to evaluate the term, it may not work in the presence of definitions by well founded recursion, since this requires reducing proofs.

        example : 2 + 2 ≠ 5 := by decide
        
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          native_decide will attempt to prove a goal of type p by synthesizing an instance of Decidable p and then evaluating it to isTrue ... Unlike decide, this uses #eval to evaluate the decidability instance.

          This should be used with care because it adds the entire lean compiler to the trusted part, and the axiom ofReduceBool will show up in #print axioms for theorems using this method or anything that transitively depends on them. Nevertheless, because it is compiled, this can be significantly more efficient than using decide, and for very large computations this is one way to run external programs and trust the result.

          example : (List.range 1000).length = 1000 := by native_decide
          
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For