# Lemmas about subtraction in an unbundled canonically ordered monoids #

source
@[simp]
theorem add_tsub_cancel_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b : α} (h : a ≤ b) :
a + (b - a) = b
source
theorem tsub_add_cancel_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b : α} (h : a ≤ b) :
b - a + a = b
source
theorem add_le_of_le_tsub_right_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h : b ≤ c) (h2 : a ≤ c - b) :
a + b ≤ c
source
theorem add_le_of_le_tsub_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h : a ≤ c) (h2 : b ≤ c - a) :
a + b ≤ c
source
theorem tsub_le_tsub_iff_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h : c ≤ b) :
a - c ≤ b - c ↔ a ≤ b
source
theorem tsub_left_inj {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h1 : c ≤ a) (h2 : c ≤ b) :
a - c = b - c ↔ a = b
source
theorem tsub_inj_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h₁ : a ≤ b) (h₂ : a ≤ c) :
b - a = c - a → b = c
source
theorem lt_of_tsub_lt_tsub_right_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h : c ≤ b) (h2 : a - c < b - c) :
a < b

See `lt_of_tsub_lt_tsub_right` for a stronger statement in a linear order.

source
theorem tsub_add_tsub_cancel {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hab : b ≤ a) (hcb : c ≤ b) :
a - b + (b - c) = a - c
source
theorem tsub_tsub_tsub_cancel_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (h : c ≤ b) :
a - c - (b - c) = a - b

#### Lemmas that assume that an element is `AddLECancellable`. #

source
theorem AddLECancellable.eq_tsub_iff_add_eq_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ b) :
a = b - c ↔ a + c = b
source
theorem AddLECancellable.tsub_eq_iff_eq_add_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (h : b ≤ a) :
a - b = c ↔ a = c + b
source
theorem AddLECancellable.add_tsub_assoc_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {b c : α} (hc : AddLECancellable c) (h : c ≤ b) (a : α) :
a + b - c = a + (b - c)
source
theorem AddLECancellable.tsub_add_eq_add_tsub {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (h : b ≤ a) :
a - b + c = a + c - b
source
theorem AddLECancellable.tsub_tsub_assoc {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hbc : AddLECancellable (b - c)) (h₁ : b ≤ a) (h₂ : c ≤ b) :
a - (b - c) = a - b + c
source
theorem AddLECancellable.tsub_add_tsub_comm {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c d : α} (hb : AddLECancellable b) (hd : AddLECancellable d) (hba : b ≤ a) (hdc : d ≤ c) :
a - b + (c - d) = a + c - (b + d)
source
theorem AddLECancellable.le_tsub_iff_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (ha : AddLECancellable a) (h : a ≤ c) :
b ≤ c - a ↔ a + b ≤ c
source
theorem AddLECancellable.le_tsub_iff_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (ha : AddLECancellable a) (h : a ≤ c) :
b ≤ c - a ↔ b + a ≤ c
source
theorem AddLECancellable.tsub_lt_iff_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (hba : b ≤ a) :
a - b < c ↔ a < b + c
source
theorem AddLECancellable.tsub_lt_iff_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (hba : b ≤ a) :
a - b < c ↔ a < c + b
source
theorem AddLECancellable.tsub_lt_iff_tsub_lt {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (hc : AddLECancellable c) (h₁ : b ≤ a) (h₂ : c ≤ a) :
a - b < c ↔ a - c < b
source
theorem AddLECancellable.le_tsub_iff_le_tsub {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (ha : AddLECancellable a) (hc : AddLECancellable c) (h₁ : a ≤ b) (h₂ : c ≤ b) :
a ≤ b - c ↔ c ≤ b - a
source
theorem AddLECancellable.lt_tsub_iff_right_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ b) :
a < b - c ↔ a + c < b
source
theorem AddLECancellable.lt_tsub_iff_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ b) :
a < b - c ↔ c + a < b
source
theorem AddLECancellable.tsub_inj_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hab : AddLECancellable (a - b)) (h₁ : b ≤ a) (h₂ : c ≤ a) (h₃ : a - b = a - c) :
b = c
source
theorem AddLECancellable.lt_of_tsub_lt_tsub_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLT α] (hb : AddLECancellable b) (hca : c ≤ a) (h : a - b < a - c) :
c < b
source
theorem AddLECancellable.tsub_lt_tsub_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hab : AddLECancellable (a - b)) (h₁ : b ≤ a) (h : c < b) :
a - b < a - c
source
theorem AddLECancellable.tsub_lt_tsub_right_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ a) (h2 : a < b) :
a - c < b - c
source
theorem AddLECancellable.tsub_lt_tsub_iff_left_of_le_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLT α] (hb : AddLECancellable b) (hab : AddLECancellable (a - b)) (h₁ : b ≤ a) (h₂ : c ≤ a) :
a - b < a - c ↔ c < b
source
@[simp]
theorem AddLECancellable.add_add_tsub_cancel {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (hcb : c ≤ b) :
a + c + (b - c) = a + b
source
@[simp]
theorem AddLECancellable.add_tsub_tsub_cancel {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hac : AddLECancellable (a - c)) (h : c ≤ a) :
a + b - (a - c) = b + c
source
theorem AddLECancellable.tsub_tsub_cancel_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b : α} (hba : AddLECancellable (b - a)) (h : a ≤ b) :
b - (b - a) = a
source
theorem AddLECancellable.tsub_tsub_tsub_cancel_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} (hab : AddLECancellable (a - b)) (h : b ≤ a) :
a - c - (a - b) = b - c

### Lemmas where addition is order-reflecting. #

source
theorem eq_tsub_iff_add_eq_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : c ≤ b) :
a = b - c ↔ a + c = b
source
theorem tsub_eq_iff_eq_add_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : b ≤ a) :
a - b = c ↔ a = c + b
source
theorem add_tsub_assoc_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {b c : α} [AddLeftReflectLE α] (h : c ≤ b) (a : α) :
a + b - c = a + (b - c)

See `add_tsub_le_assoc` for an inequality.

source
theorem tsub_add_eq_add_tsub {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : b ≤ a) :
a - b + c = a + c - b
source
theorem tsub_tsub_assoc {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h₁ : b ≤ a) (h₂ : c ≤ b) :
a - (b - c) = a - b + c
source
theorem tsub_add_tsub_comm {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c d : α} [AddLeftReflectLE α] (hba : b ≤ a) (hdc : d ≤ c) :
a - b + (c - d) = a + c - (b + d)
source
theorem le_tsub_iff_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : a ≤ c) :
b ≤ c - a ↔ a + b ≤ c
source
theorem le_tsub_iff_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : a ≤ c) :
b ≤ c - a ↔ b + a ≤ c
source
theorem tsub_lt_iff_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (hbc : b ≤ a) :
a - b < c ↔ a < b + c
source
theorem tsub_lt_iff_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (hbc : b ≤ a) :
a - b < c ↔ a < c + b
source
theorem tsub_lt_iff_tsub_lt {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h₁ : b ≤ a) (h₂ : c ≤ a) :
a - b < c ↔ a - c < b
source
theorem le_tsub_iff_le_tsub {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h₁ : a ≤ b) (h₂ : c ≤ b) :
a ≤ b - c ↔ c ≤ b - a
source
theorem lt_tsub_iff_right_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : c ≤ b) :
a < b - c ↔ a + c < b

See `lt_tsub_iff_right` for a stronger statement in a linear order.

source
theorem lt_tsub_iff_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : c ≤ b) :
a < b - c ↔ c + a < b

See `lt_tsub_iff_left` for a stronger statement in a linear order.

source
theorem lt_of_tsub_lt_tsub_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] [AddLeftReflectLT α] (hca : c ≤ a) (h : a - b < a - c) :
c < b

See `lt_of_tsub_lt_tsub_left` for a stronger statement in a linear order.

source
theorem tsub_lt_tsub_left_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] :
b ≤ a → c < b → a - b < a - c
source
theorem tsub_lt_tsub_right_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : c ≤ a) (h2 : a < b) :
a - c < b - c
source
theorem tsub_inj_right {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h₁ : b ≤ a) (h₂ : c ≤ a) (h₃ : a - b = a - c) :
b = c
source
theorem tsub_lt_tsub_iff_left_of_le_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] [AddLeftReflectLT α] (h₁ : b ≤ a) (h₂ : c ≤ a) :
a - b < a - c ↔ c < b

See `tsub_lt_tsub_iff_left_of_le` for a stronger statement in a linear order.

source
@[simp]
theorem add_add_tsub_cancel {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (hcb : c ≤ b) :
a + c + (b - c) = a + b
source
@[simp]
theorem add_tsub_tsub_cancel {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : c ≤ a) :
a + b - (a - c) = b + c
source
theorem tsub_tsub_cancel_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b : α} [AddLeftReflectLE α] (h : a ≤ b) :
b - (b - a) = a

See `tsub_tsub_le` for an inequality.

source
theorem tsub_tsub_tsub_cancel_left {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : b ≤ a) :
a - c - (a - b) = b - c
source
theorem tsub_tsub_eq_add_tsub_of_le {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [AddLeftMono α] [Sub α] [OrderedSub α] {a b c : α} [AddLeftReflectLE α] (h : c ≤ b) :
a - (b - c) = a + c - b

The `tsub` version of `sub_sub_eq_add_sub`.