Documentation

Init.NotationExtra

def Lean.expandExplicitBindersAux (combinator : Syntax) (idents : Array Syntax) (type? : Option Syntax) (body : Syntax) :
Instances For
    def Lean.expandBracketedBindersAux (combinator : Syntax) (binders : Array Syntax) (body : Syntax) :
    Instances For
      def Lean.expandExplicitBinders (combinatorDeclName : Name) (explicitBinders body : Syntax) :
      Instances For
        def Lean.expandBracketedBinders (combinatorDeclName : Name) (bracketedExplicitBinders body : Syntax) :
        Instances For

          Step-wise reasoning over transitive relations.

          calc
            a = b := pab
            b = c := pbc
            ...
            y = z := pyz
          

          proves a = z from the given step-wise proofs. = can be replaced with any relation implementing the typeclass Trans. Instead of repeating the right- hand sides, subsequent left-hand sides can be replaced with _.

          calc
            a = b := pab
            _ = c := pbc
            ...
            _ = z := pyz
          

          It is also possible to write the first relation as <lhs>\n _ = <rhs> := <proof>. This is useful for aligning relation symbols, especially on longer identifiers:

          calc abc
            _ = bce := pabce
            _ = cef := pbcef
            ...
            _ = xyz := pwxyz
          

          calc works as a term, as a tactic or as a conv tactic.

          See Theorem Proving in Lean 4 for more information.

          Instances For

            Step-wise reasoning over transitive relations.

            calc
              a = b := pab
              b = c := pbc
              ...
              y = z := pyz
            

            proves a = z from the given step-wise proofs. = can be replaced with any relation implementing the typeclass Trans. Instead of repeating the right- hand sides, subsequent left-hand sides can be replaced with _.

            calc
              a = b := pab
              _ = c := pbc
              ...
              _ = z := pyz
            

            It is also possible to write the first relation as <lhs>\n _ = <rhs> := <proof>. This is useful for aligning relation symbols, especially on longer identifiers:

            calc abc
              _ = bce := pabce
              _ = cef := pbcef
              ...
              _ = xyz := pwxyz
            

            calc works as a term, as a tactic or as a conv tactic.

            See Theorem Proving in Lean 4 for more information.

            Instances For

              Step-wise reasoning over transitive relations.

              calc
                a = b := pab
                b = c := pbc
                ...
                y = z := pyz
              

              proves a = z from the given step-wise proofs. = can be replaced with any relation implementing the typeclass Trans. Instead of repeating the right- hand sides, subsequent left-hand sides can be replaced with _.

              calc
                a = b := pab
                _ = c := pbc
                ...
                _ = z := pyz
              

              It is also possible to write the first relation as <lhs>\n _ = <rhs> := <proof>. This is useful for aligning relation symbols, especially on longer identifiers:

              calc abc
                _ = bce := pabce
                _ = cef := pbcef
                ...
                _ = xyz := pwxyz
              

              calc works as a term, as a tactic or as a conv tactic.

              See Theorem Proving in Lean 4 for more information.

              Instances For

                Apply function extensionality and introduce new hypotheses. The tactic funext will keep applying the funext lemma until the goal target is not reducible to

                  |-  ((fun x => ...) = (fun x => ...))
                

                The variant funext h₁ ... hₙ applies funext n times, and uses the given identifiers to name the new hypotheses. Patterns can be used like in the intro tactic. Example, given a goal

                  |-  ((fun x : Nat × Bool => ...) = (fun x => ...))
                

                funext (a, b) applies funext once and performs pattern matching on the newly introduced pair.

                Instances For

                  Expands

                  class abbrev C <params> := D_1, ..., D_n
                  

                  into

                  class C <params> extends D_1, ..., D_n
                  attribute [instance] C.mk
                  
                  Instances For
                    Instances For

                      · tac focuses on the main goal and tries to solve it using tac, or else fails.

                      Instances For

                        Similar to first, but succeeds only if one the given tactics solves the current goal.

                        Instances For

                          { a, b, c } syntax, powered by the Singleton and Insert typeclasses.

                          Conventions for notations in identifiers:

                          • The recommended spelling of {x} in identifiers is singleton.
                          Instances For

                            Unexpander for the { x } notation.

                            Instances For

                              Unexpander for the { x, y, ... } notation.

                              Instances For