Documentation

Mathlib.Tactic.Push.Attr

The @[push] attribute for the push, push_neg and pull tactics #

This file defines the @[push] attribute, so that it can be used without importing the tactic itself.

The type for a constant to be pushed by push.

Instances For
    Equations
      Instances For

        Converts a Head to a string.

        Equations
          Instances For

            Returns the head of an expression.

            Equations
              Instances For

                Checks if the theorem is suitable for the pull tactic. That is, check if it is of the form x = f ... where x contains the head f, but f is not the head of x.

                Equations
                  Instances For
                    @[reducible, inline]

                    A theorem for the pull tactic

                    Equations
                      Instances For

                        The push attribute is used to tag lemmas that "push" a constant into an expression.

                        For example:

                        @[push] theorem log_mul (hx : x ≠ 0) (hy : y ≠ 0) : log (x * y) = log x + log y
                        @[push] theorem log_abs : log |x| = log x
                        
                        @[push] theorem not_imp (p q : Prop) : ¬(p → q) ↔ p ∧ ¬q
                        @[push] theorem not_iff (p q : Prop) : ¬(p ↔ q) ↔ (p ∧ ¬q) ∨ (¬p ∧ q)
                        @[push] theorem not_not (p : Prop) : ¬ ¬p ↔ p
                        @[push] theorem not_le : ¬a ≤ b ↔ b < a
                        

                        Note that some push lemmas don't push the constant away from the head (log_abs) and some push lemmas cancel the constant out (not_not and not_le). For the other lemmas that are "genuine" push lemmas, a pull attribute is automatically added in the reverse direction. To not add a pull tag, use @[push only].

                        To tag the reverse direction of the lemma, use @[push ←].

                        Equations
                          Instances For