mathlib documentation

tactic.linarith.lemmas

Lemmas for linarith #

This file contains auxiliary lemmas that linarith uses to construct proofs. If you find yourself looking for a theorem here, you might be in the wrong place.

theorem linarith.int.coe_nat_bit0_mul (n x : ℕ) :
↑(bit0 n * x) = ↑(bit0 n) * ↑x
theorem linarith.int.coe_nat_bit1_mul (n x : ℕ) :
↑(bit1 n * x) = ↑(bit1 n) * ↑x
theorem linarith.int.coe_nat_one_mul (x : ℕ) :
↑(1 * x) = 1 * ↑x
theorem linarith.int.coe_nat_zero_mul (x : ℕ) :
↑(0 * x) = 0 * ↑x
theorem linarith.int.coe_nat_mul_bit0 (n x : ℕ) :
↑(x * bit0 n) = ↑x * ↑(bit0 n)
theorem linarith.int.coe_nat_mul_bit1 (n x : ℕ) :
↑(x * bit1 n) = ↑x * ↑(bit1 n)
theorem linarith.int.coe_nat_mul_one (x : ℕ) :
↑(x * 1) = ↑x * 1
theorem linarith.int.coe_nat_mul_zero (x : ℕ) :
↑(x * 0) = ↑x * 0
theorem linarith.nat_eq_subst {n1 n2 : ℕ} {z1 z2 : ℤ} (hn : n1 = n2) (h1 : ↑n1 = z1) (h2 : ↑n2 = z2) :
z1 = z2
theorem linarith.nat_le_subst {n1 n2 : ℕ} {z1 z2 : ℤ} (hn : n1 ≤ n2) (h1 : ↑n1 = z1) (h2 : ↑n2 = z2) :
z1 ≤ z2
theorem linarith.nat_lt_subst {n1 n2 : ℕ} {z1 z2 : ℤ} (hn : n1 < n2) (h1 : ↑n1 = z1) (h2 : ↑n2 = z2) :
z1 < z2
theorem linarith.eq_of_eq_of_eq {α : Type u_1} [ordered_semiring α] {a b : α} (ha : a = 0) (hb : b = 0) :
a + b = 0
theorem linarith.le_of_eq_of_le {α : Type u_1} [ordered_semiring α] {a b : α} (ha : a = 0) (hb : b ≤ 0) :
a + b ≤ 0
theorem linarith.lt_of_eq_of_lt {α : Type u_1} [ordered_semiring α] {a b : α} (ha : a = 0) (hb : b < 0) :
a + b < 0
theorem linarith.le_of_le_of_eq {α : Type u_1} [ordered_semiring α] {a b : α} (ha : a ≤ 0) (hb : b = 0) :
a + b ≤ 0
theorem linarith.lt_of_lt_of_eq {α : Type u_1} [ordered_semiring α] {a b : α} (ha : a < 0) (hb : b = 0) :
a + b < 0
theorem linarith.mul_neg {α : Type u_1} [ordered_ring α] {a b : α} (ha : a < 0) (hb : 0 < b) :
b * a < 0
theorem linarith.mul_nonpos {α : Type u_1} [ordered_ring α] {a b : α} (ha : a ≤ 0) (hb : 0 < b) :
b * a ≤ 0
@[nolint]
theorem linarith.mul_eq {α : Type u_1} [ordered_semiring α] {a b : α} (ha : a = 0) (hb : 0 < b) :
b * a = 0
theorem linarith.eq_of_not_lt_of_not_gt {α : Type u_1} [linear_order α] (a b : α) (h1 : ¬a < b) (h2 : ¬b < a) :
a = b
@[nolint]
theorem linarith.mul_zero_eq {α : Type u_1} {R : α → α → Prop} [semiring α] {a b : α} (_x : R a 0) (h : b = 0) :
a * b = 0
@[nolint]
theorem linarith.zero_mul_eq {α : Type u_1} {R : α → α → Prop} [semiring α] {a b : α} (h : a = 0) (_x : R b 0) :
a * b = 0