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
      @[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