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

    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
    • One or more equations did not get rendered due to their size.
    Instances For

      Checks if the expression has the head in any subexpression. We don't need to check this for .lambda, because the term being a function is sufficient for pull fun _ ↦ _ to be applicable.

      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
          • One or more equations did not get rendered due to their size.
          Instances For