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
Returns the head of an expression.
Equations
Instances For
The push environment extension
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
A theorem for the pull tactic
Equations
Instances For
The pull environment extension
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 ←].