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

    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