ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CanonicallyOrderedAddCommMonoid.exists_add_of_le
class CanonicallyOrderedAddCommMonoid (α : Type*) extends OrderedAddCommMonoid α, OrderBot α where
    protected exists_add_of_le : ∀ {a b : α}, a ≤ b → ∃ c, b = a + c
    protected le_self_add : ∀ a b : α, a ≤ a + b
Arguments: {α : Type u_1} [self : CanonicallyOrderedAddCommMonoid α] {a b : α}
Goal: a ≤ b → ∃ c, b = a + c
-- CanonicallyOrderedAddCommMonoid.le_self_add
class CanonicallyOrderedAddCommMonoid (α : Type*) extends OrderedAddCommMonoid α, OrderBot α where
    protected exists_add_of_le : ∀ {a b : α}, a ≤ b → ∃ c, b = a + c
    protected le_self_add : ∀ a b : α, a ≤ a + b
Arguments: {α : Type u_1} [self : CanonicallyOrderedAddCommMonoid α] (a b : α)
Goal: a ≤ a + b
-- CanonicallyOrderedCommMonoid.le_self_mul
@[to_additive]
class CanonicallyOrderedCommMonoid (α : Type*) extends OrderedCommMonoid α, OrderBot α where
    protected exists_mul_of_le : ∀ {a b : α}, a ≤ b → ∃ c, b = a * c
    protected le_self_mul : ∀ a b : α, a ≤ a * b
Arguments: {α : Type u_1} [self : CanonicallyOrderedCommMonoid α] (a b : α)
Goal: a ≤ a * b
-- CanonicallyOrderedCommMonoid.exists_mul_of_le
@[to_additive]
class CanonicallyOrderedCommMonoid (α : Type*) extends OrderedCommMonoid α, OrderBot α where
    protected exists_mul_of_le : ∀ {a b : α}, a ≤ b → ∃ c, b = a * c
    protected le_self_mul : ∀ a b : α, a ≤ a * b
Arguments: {α : Type u_1} [self : CanonicallyOrderedCommMonoid α] {a b : α}
Goal: a ≤ b → ∃ c, b = a * c
-- le_self_mul
@[to_additive]
theorem le_self_mul : a ≤ a * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a c : α}
Goal: a ≤ a * c
-- le_self_add
@[to_additive]
theorem le_self_mul : a ≤ a * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a c : α}
Goal: a ≤ a + c
-- le_add_self
@[to_additive]
theorem le_mul_self : a ≤ b * a 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α}
Goal: a ≤ b + a
-- le_mul_self
@[to_additive]
theorem le_mul_self : a ≤ b * a 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α}
Goal: a ≤ b * a
-- self_le_mul_right
@[to_additive (attr := simp)]
theorem self_le_mul_right (a b : α) : a ≤ a * b 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] (a b : α)
Goal: a ≤ a * b
-- self_le_add_right
@[to_additive (attr := simp)]
theorem self_le_mul_right (a b : α) : a ≤ a * b 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] (a b : α)
Goal: a ≤ a + b
-- self_le_add_left
@[to_additive (attr := simp)]
theorem self_le_mul_left (a b : α) : a ≤ b * a 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] (a b : α)
Goal: a ≤ b + a
-- self_le_mul_left
@[to_additive (attr := simp)]
theorem self_le_mul_left (a b : α) : a ≤ b * a 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] (a b : α)
Goal: a ≤ b * a
-- le_of_mul_le_left
@[to_additive]
theorem le_of_mul_le_left : a * b ≤ c → a ≤ c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b c : α}
Goal: a * b ≤ c → a ≤ c
-- le_of_add_le_left
@[to_additive]
theorem le_of_mul_le_left : a * b ≤ c → a ≤ c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b c : α}
Goal: a + b ≤ c → a ≤ c
-- le_of_add_le_right
@[to_additive]
theorem le_of_mul_le_right : a * b ≤ c → b ≤ c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b c : α}
Goal: a + b ≤ c → b ≤ c
-- le_of_mul_le_right
@[to_additive]
theorem le_of_mul_le_right : a * b ≤ c → b ≤ c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b c : α}
Goal: a * b ≤ c → b ≤ c
-- le_mul_of_le_left
@[to_additive]
theorem le_mul_of_le_left : a ≤ b → a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b c : α}
Goal: a ≤ b → a ≤ b * c
-- le_add_of_le_left
@[to_additive]
theorem le_mul_of_le_left : a ≤ b → a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b c : α}
Goal: a ≤ b → a ≤ b + c
-- le_add_of_le_right
@[to_additive]
theorem le_mul_of_le_right : a ≤ c → a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b c : α}
Goal: a ≤ c → a ≤ b + c
-- le_mul_of_le_right
@[to_additive]
theorem le_mul_of_le_right : a ≤ c → a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b c : α}
Goal: a ≤ c → a ≤ b * c
-- le_iff_exists_mul
@[to_additive]
theorem le_iff_exists_mul : a ≤ b ↔ ∃ c, b = a * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α}
Goal: a ≤ b ↔ ∃ c, b = a * c
-- le_iff_exists_add
@[to_additive]
theorem le_iff_exists_mul : a ≤ b ↔ ∃ c, b = a * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α}
Goal: a ≤ b ↔ ∃ c, b = a + c
-- le_iff_exists_add'
@[to_additive]
theorem le_iff_exists_mul' : a ≤ b ↔ ∃ c, b = c * a 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α}
Goal: a ≤ b ↔ ∃ c, b = c + a
-- le_iff_exists_mul'
@[to_additive]
theorem le_iff_exists_mul' : a ≤ b ↔ ∃ c, b = c * a 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α}
Goal: a ≤ b ↔ ∃ c, b = c * a
-- one_le
@[to_additive (attr := simp) zero_le]
theorem one_le (a : α) : 1 ≤ a 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] (a : α)
Goal: 1 ≤ a
-- zero_le
@[to_additive (attr := simp) zero_le]
theorem one_le (a : α) : 1 ≤ a 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] (a : α)
Goal: 0 ≤ a
-- bot_eq_one
@[to_additive]
theorem bot_eq_one : (⊥ : α) = 1 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α]
Goal: ⊥ = 1
-- bot_eq_zero
@[to_additive]
theorem bot_eq_one : (⊥ : α) = 1 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α]
Goal: ⊥ = 0
-- add_eq_zero_iff
@[to_additive (attr := simp)]
theorem mul_eq_one_iff : a * b = 1 ↔ a = 1 ∧ b = 1 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α}
Goal: a + b = 0 ↔ a = 0 ∧ b = 0
-- mul_eq_one_iff
@[to_additive (attr := simp)]
theorem mul_eq_one_iff : a * b = 1 ↔ a = 1 ∧ b = 1 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α}
Goal: a * b = 1 ↔ a = 1 ∧ b = 1
-- le_one_iff_eq_one
@[to_additive (attr := simp)]
theorem le_one_iff_eq_one : a ≤ 1 ↔ a = 1 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a : α}
Goal: a ≤ 1 ↔ a = 1
-- nonpos_iff_eq_zero
@[to_additive (attr := simp)]
theorem le_one_iff_eq_one : a ≤ 1 ↔ a = 1 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a : α}
Goal: a ≤ 0 ↔ a = 0
-- pos_iff_ne_zero
@[to_additive]
theorem one_lt_iff_ne_one : 1 < a ↔ a ≠ 1 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a : α}
Goal: 0 < a ↔ a ≠ 0
-- one_lt_iff_ne_one
@[to_additive]
theorem one_lt_iff_ne_one : 1 < a ↔ a ≠ 1 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a : α}
Goal: 1 < a ↔ a ≠ 1
-- eq_zero_or_pos
@[to_additive]
theorem eq_one_or_one_lt (a : α) : a = 1 ∨ 1 < a 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] (a : α)
Goal: a = 0 ∨ 0 < a
-- eq_one_or_one_lt
@[to_additive]
theorem eq_one_or_one_lt (a : α) : a = 1 ∨ 1 < a 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] (a : α)
Goal: a = 1 ∨ 1 < a
-- add_pos_iff
@[to_additive (attr := simp) add_pos_iff]
theorem one_lt_mul_iff : 1 < a * b ↔ 1 < a ∨ 1 < b 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α}
Goal: 0 < a + b ↔ 0 < a ∨ 0 < b
-- one_lt_mul_iff
@[to_additive (attr := simp) add_pos_iff]
theorem one_lt_mul_iff : 1 < a * b ↔ 1 < a ∨ 1 < b 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α}
Goal: 1 < a * b ↔ 1 < a ∨ 1 < b
-- exists_pos_add_of_lt
@[to_additive]
theorem exists_one_lt_mul_of_lt (h : a < b) : ∃ (c : _) (_ : 1 < c), a * c = b 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α} (h : a < b)
Goal: ∃ c x, a + c = b
-- exists_one_lt_mul_of_lt
@[to_additive]
theorem exists_one_lt_mul_of_lt (h : a < b) : ∃ (c : _) (_ : 1 < c), a * c = b 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α} (h : a < b)
Goal: ∃ c x, a * c = b
-- le_add_left
@[to_additive]
theorem le_mul_left (h : a ≤ c) : a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b c : α} (h : a ≤ c)
Goal: a ≤ b + c
-- le_mul_left
@[to_additive]
theorem le_mul_left (h : a ≤ c) : a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b c : α} (h : a ≤ c)
Goal: a ≤ b * c
-- le_mul_right
@[to_additive]
theorem le_mul_right (h : a ≤ b) : a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b c : α} (h : a ≤ b)
Goal: a ≤ b * c
-- le_add_right
@[to_additive]
theorem le_mul_right (h : a ≤ b) : a ≤ b * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b c : α} (h : a ≤ b)
Goal: a ≤ b + c
-- lt_iff_exists_mul
@[to_additive]
theorem lt_iff_exists_mul [CovariantClass α α (· * ·) (· < ·)] : a < b ↔ ∃ c > 1, b = a * c 
Arguments: {α : Type u} [CanonicallyOrderedCommMonoid α] {a b : α} [CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1]
Goal: a < b ↔ ∃ c, c > 1 ∧ b = a * c
-- lt_iff_exists_add
@[to_additive]
theorem lt_iff_exists_mul [CovariantClass α α (· * ·) (· < ·)] : a < b ↔ ∃ c > 1, b = a * c 
Arguments: {α : Type u} [CanonicallyOrderedAddCommMonoid α] {a b : α} [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1]
Goal: a < b ↔ ∃ c, c > 0 ∧ b = a + c
-- pos_of_gt
theorem pos_of_gt {M : Type*} [CanonicallyOrderedAddCommMonoid M] {n m : M} (h : n < m) : 0 < m 
Arguments: {M : Type u_1} [CanonicallyOrderedAddCommMonoid M] {n m : M} (h : n < m)
Goal: 0 < m
-- NeZero.pos
theorem pos {M} (a : M) [CanonicallyOrderedAddCommMonoid M] [NeZero a] : 0 < a 
Arguments: {M : Type u_1} (a : M) [CanonicallyOrderedAddCommMonoid M] [NeZero a]
Goal: 0 < a
-- NeZero.of_gt
theorem of_gt {M} [CanonicallyOrderedAddCommMonoid M] {x y : M} (h : x < y) : NeZero y 
Arguments: {M : Type u_1} [CanonicallyOrderedAddCommMonoid M] {x y : M} (h : x < y)
Goal: NeZero y
-- min_add_distrib
@[to_additive]
theorem min_mul_distrib (a b c : α) : min a (b * c) = min a (min a b * min a c) 
Arguments: {α : Type u} [CanonicallyLinearOrderedAddCommMonoid α] (a b c : α)
Goal: min a (b + c) = min a (min a b + min a c)
-- min_mul_distrib
@[to_additive]
theorem min_mul_distrib (a b c : α) : min a (b * c) = min a (min a b * min a c) 
Arguments: {α : Type u} [CanonicallyLinearOrderedCommMonoid α] (a b c : α)
Goal: min a (b * c) = min a (min a b * min a c)
-- min_add_distrib'
@[to_additive]
theorem min_mul_distrib' (a b c : α) : min (a * b) c = min (min a c * min b c) c 
Arguments: {α : Type u} [CanonicallyLinearOrderedAddCommMonoid α] (a b c : α)
Goal: min (a + b) c = min (min a c + min b c) c
-- min_mul_distrib'
@[to_additive]
theorem min_mul_distrib' (a b c : α) : min (a * b) c = min (min a c * min b c) c 
Arguments: {α : Type u} [CanonicallyLinearOrderedCommMonoid α] (a b c : α)
Goal: min (a * b) c = min (min a c * min b c) c
-- zero_min
@[to_additive]
theorem one_min (a : α) : min 1 a = 1 
Arguments: {α : Type u} [CanonicallyLinearOrderedAddCommMonoid α] (a : α)
Goal: min 0 a = 0
-- one_min
@[to_additive]
theorem one_min (a : α) : min 1 a = 1 
Arguments: {α : Type u} [CanonicallyLinearOrderedCommMonoid α] (a : α)
Goal: min 1 a = 1
-- min_one
@[to_additive]
theorem min_one (a : α) : min a 1 = 1 
Arguments: {α : Type u} [CanonicallyLinearOrderedCommMonoid α] (a : α)
Goal: min a 1 = 1
-- min_zero
@[to_additive]
theorem min_one (a : α) : min a 1 = 1 
Arguments: {α : Type u} [CanonicallyLinearOrderedAddCommMonoid α] (a : α)
Goal: min a 0 = 0
-- bot_eq_one'
@[to_additive (attr := simp)
  "In a linearly ordered monoid, we are happy for `bot_eq_zero` to be a `@[simp]` lemma"]
theorem bot_eq_one' : (⊥ : α) = 1 
Arguments: {α : Type u} [CanonicallyLinearOrderedCommMonoid α]
Goal: ⊥ = 1
-- bot_eq_zero'
@[to_additive (attr := simp)
  "In a linearly ordered monoid, we are happy for `bot_eq_zero` to be a `@[simp]` lemma"]
theorem bot_eq_one' : (⊥ : α) = 1 
Arguments: {α : Type u} [CanonicallyLinearOrderedAddCommMonoid α]
Goal: ⊥ = 0
-- Submonoid.oneLE_coe
@[to_additive (attr := simps) nonneg "The submonoid of nonnegative elements."]
def oneLE : Submonoid M 
Arguments: (M : Type u_1) [Monoid M] [Preorder M] [CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1]
Goal: ↑(Submonoid.oneLE M) = Set.Ici 1
-- AddSubmonoid.nonneg_coe
@[to_additive (attr := simps) nonneg "The submonoid of nonnegative elements."]
def oneLE : Submonoid M 
Arguments: (M : Type u_1) [AddMonoid M] [Preorder M] [CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1]
Goal: ↑(AddSubmonoid.nonneg M) = Set.Ici 0
-- Submonoid.mem_oneLE
@[to_additive (attr := simp) mem_nonneg] lemma mem_oneLE : a ∈ oneLE M ↔ 1 ≤ a 
Arguments: {M : Type u_1} [Monoid M] [Preorder M] [CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1] {a : M}
Goal: a ∈ Submonoid.oneLE M ↔ 1 ≤ a
-- AddSubmonoid.mem_nonneg
@[to_additive (attr := simp) mem_nonneg] lemma mem_oneLE : a ∈ oneLE M ↔ 1 ≤ a 
Arguments: {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] {a : M}
Goal: a ∈ AddSubmonoid.nonneg M ↔ 0 ≤ a
-- Submonoid.pos_coe
@[simps] def pos : Submonoid α 
Arguments: (α : Type u_2) [MulZeroOneClass α] [PartialOrder α] [PosMulStrictMono α] [ZeroLEOneClass α] [NeZero 1]
Goal: ↑(Submonoid.pos α) = Set.Ioi 0
-- Submonoid.mem_pos
@[simp] lemma mem_pos : a ∈ pos α ↔ 0 < a 
Arguments: {α : Type u_2} [MulZeroOneClass α] [PartialOrder α] [PosMulStrictMono α] [ZeroLEOneClass α] [NeZero 1] {a : α}
Goal: a ∈ Submonoid.pos α ↔ 0 < a
-- add_tsub_cancel_of_le
@[simp]
theorem add_tsub_cancel_of_le (h : a ≤ b) : a + (b - a) = b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b : α} (h : a ≤ b)
Goal: a + (b - a) = b
-- tsub_add_cancel_of_le
theorem tsub_add_cancel_of_le (h : a ≤ b) : b - a + a = b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b : α} (h : a ≤ b)
Goal: b - a + a = b
-- add_le_of_le_tsub_right_of_le
theorem add_le_of_le_tsub_right_of_le (h : b ≤ c) (h2 : a ≤ c - b) : a + b ≤ c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h : b ≤ c) (h2 : a ≤ c - b)
Goal: a + b ≤ c
-- add_le_of_le_tsub_left_of_le
theorem add_le_of_le_tsub_left_of_le (h : a ≤ c) (h2 : b ≤ c - a) : a + b ≤ c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h : a ≤ c) (h2 : b ≤ c - a)
Goal: a + b ≤ c
-- tsub_le_tsub_iff_right
theorem tsub_le_tsub_iff_right (h : c ≤ b) : a - c ≤ b - c ↔ a ≤ b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h : c ≤ b)
Goal: a - c ≤ b - c ↔ a ≤ b
-- tsub_left_inj
theorem tsub_left_inj (h1 : c ≤ a) (h2 : c ≤ b) : a - c = b - c ↔ a = b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h1 : c ≤ a) (h2 : c ≤ b)
Goal: a - c = b - c ↔ a = b
-- tsub_inj_left
theorem tsub_inj_left (h₁ : a ≤ b) (h₂ : a ≤ c) : b - a = c - a → b = c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h₁ : a ≤ b) (h₂ : a ≤ c)
Goal: b - a = c - a → b = c
-- lt_of_tsub_lt_tsub_right_of_le
theorem lt_of_tsub_lt_tsub_right_of_le (h : c ≤ b) (h2 : a - c < b - c) : a < b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h : c ≤ b) (h2 : a - c < b - c)
Goal: a < b
-- tsub_add_tsub_cancel
theorem tsub_add_tsub_cancel (hab : b ≤ a) (hcb : c ≤ b) : a - b + (b - c) = a - c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hab : b ≤ a) (hcb : c ≤ b)
Goal: a - b + (b - c) = a - c
-- tsub_tsub_tsub_cancel_right
theorem tsub_tsub_tsub_cancel_right (h : c ≤ b) : a - c - (b - c) = a - b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (h : c ≤ b)
Goal: a - c - (b - c) = a - b
-- AddLECancellable.eq_tsub_iff_add_eq_of_le
protected theorem eq_tsub_iff_add_eq_of_le (hc : AddLECancellable c) (h : c ≤ b) :
    a = b - c ↔ a + c = b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ b)
Goal: a = b - c ↔ a + c = b
-- AddLECancellable.tsub_eq_iff_eq_add_of_le
protected theorem tsub_eq_iff_eq_add_of_le (hb : AddLECancellable b) (h : b ≤ a) :
    a - b = c ↔ a = c + b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (h : b ≤ a)
Goal: a - b = c ↔ a = c + b
-- AddLECancellable.add_tsub_assoc_of_le
protected theorem add_tsub_assoc_of_le (hc : AddLECancellable c) (h : c ≤ b) (a : α) :
    a + b - c = a + (b - c) 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {b c : α} (hc : AddLECancellable c) (h : c ≤ b) (a : α)
Goal: a + b - c = a + (b - c)
-- AddLECancellable.tsub_add_eq_add_tsub
protected theorem tsub_add_eq_add_tsub (hb : AddLECancellable b) (h : b ≤ a) :
    a - b + c = a + c - b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (h : b ≤ a)
Goal: a - b + c = a + c - b
-- AddLECancellable.tsub_tsub_assoc
protected theorem tsub_tsub_assoc (hbc : AddLECancellable (b - c)) (h₁ : b ≤ a) (h₂ : c ≤ b) :
    a - (b - c) = a - b + c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hbc : AddLECancellable (b - c)) (h₁ : b ≤ a) (h₂ : c ≤ b)
Goal: a - (b - c) = a - b + c
-- AddLECancellable.tsub_add_tsub_comm
protected theorem tsub_add_tsub_comm (hb : AddLECancellable b) (hd : AddLECancellable d)
    (hba : b ≤ a) (hdc : d ≤ c) : a - b + (c - d) = a + c - (b + d) 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c d : α} (hb : AddLECancellable b) (hd : AddLECancellable d) (hba : b ≤ a) (hdc : d ≤ c)
Goal: a - b + (c - d) = a + c - (b + d)
-- AddLECancellable.le_tsub_iff_left
protected theorem le_tsub_iff_left (ha : AddLECancellable a) (h : a ≤ c) : b ≤ c - a ↔ a + b ≤ c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (ha : AddLECancellable a) (h : a ≤ c)
Goal: b ≤ c - a ↔ a + b ≤ c
-- AddLECancellable.le_tsub_iff_right
protected theorem le_tsub_iff_right (ha : AddLECancellable a) (h : a ≤ c) :
    b ≤ c - a ↔ b + a ≤ c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (ha : AddLECancellable a) (h : a ≤ c)
Goal: b ≤ c - a ↔ b + a ≤ c
-- AddLECancellable.tsub_lt_iff_left
protected theorem tsub_lt_iff_left (hb : AddLECancellable b) (hba : b ≤ a) :
    a - b < c ↔ a < b + c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (hba : b ≤ a)
Goal: a - b < c ↔ a < b + c
-- AddLECancellable.tsub_lt_iff_right
protected theorem tsub_lt_iff_right (hb : AddLECancellable b) (hba : b ≤ a) :
    a - b < c ↔ a < c + b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (hba : b ≤ a)
Goal: a - b < c ↔ a < c + b
-- AddLECancellable.tsub_lt_iff_tsub_lt
protected theorem tsub_lt_iff_tsub_lt (hb : AddLECancellable b) (hc : AddLECancellable c)
    (h₁ : b ≤ a) (h₂ : c ≤ a) : a - b < c ↔ a - c < b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hb : AddLECancellable b) (hc : AddLECancellable c) (h₁ : b ≤ a) (h₂ : c ≤ a)
Goal: a - b < c ↔ a - c < b
-- AddLECancellable.le_tsub_iff_le_tsub
protected theorem le_tsub_iff_le_tsub (ha : AddLECancellable a) (hc : AddLECancellable c)
    (h₁ : a ≤ b) (h₂ : c ≤ b) : a ≤ b - c ↔ c ≤ b - a 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (ha : AddLECancellable a) (hc : AddLECancellable c) (h₁ : a ≤ b) (h₂ : c ≤ b)
Goal: a ≤ b - c ↔ c ≤ b - a
-- AddLECancellable.lt_tsub_iff_right_of_le
protected theorem lt_tsub_iff_right_of_le (hc : AddLECancellable c) (h : c ≤ b) :
    a < b - c ↔ a + c < b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ b)
Goal: a < b - c ↔ a + c < b
-- AddLECancellable.lt_tsub_iff_left_of_le
protected theorem lt_tsub_iff_left_of_le (hc : AddLECancellable c) (h : c ≤ b) :
    a < b - c ↔ c + a < b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ b)
Goal: a < b - c ↔ c + a < b
-- AddLECancellable.tsub_inj_right
protected theorem tsub_inj_right (hab : AddLECancellable (a - b)) (h₁ : b ≤ a) (h₂ : c ≤ a)
    (h₃ : a - b = a - c) : b = c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hab : AddLECancellable (a - b)) (h₁ : b ≤ a) (h₂ : c ≤ a) (h₃ : a - b = a - c)
Goal: b = c
-- AddLECancellable.lt_of_tsub_lt_tsub_left_of_le
protected theorem lt_of_tsub_lt_tsub_left_of_le [ContravariantClass α α (· + ·) (· < ·)]
    (hb : AddLECancellable b) (hca : c ≤ a) (h : a - b < a - c) : c < b 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} [ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x < x_1] (hb : AddLECancellable b) (hca : c ≤ a) (h : a - b < a - c)
Goal: c < b
-- AddLECancellable.tsub_lt_tsub_left_of_le
protected theorem tsub_lt_tsub_left_of_le (hab : AddLECancellable (a - b)) (h₁ : b ≤ a)
    (h : c < b) : a - b < a - c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hab : AddLECancellable (a - b)) (h₁ : b ≤ a) (h : c < b)
Goal: a - b < a - c
-- AddLECancellable.tsub_lt_tsub_right_of_le
protected theorem tsub_lt_tsub_right_of_le (hc : AddLECancellable c) (h : c ≤ a) (h2 : a < b) :
    a - c < b - c 
Arguments: {α : Type u_1} [AddCommSemigroup α] [PartialOrder α] [ExistsAddOfLE α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] [Sub α] [OrderedSub α] {a b c : α} (hc : AddLECancellable c) (h : c ≤ a) (h2 : a < b)
Goal: a - c < b - c