ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Even.neg_zpow
lemma Even.neg_zpow : Even n → ∀ a : α, (-a) ^ n = a ^ n 
Arguments: {α : Type u_2} [DivisionMonoid α] [HasDistribNeg α] {n : ℤ}
Goal: Even n → ∀ (a : α), (-a) ^ n = a ^ n
-- Even.neg_one_zpow
lemma Even.neg_one_zpow (h : Even n) : (-1 : α) ^ n = 1 
Arguments: {α : Type u_2} [DivisionMonoid α] [HasDistribNeg α] {n : ℤ} (h : Even n)
Goal: (-1) ^ n = 1
-- isSquare_zero
@[simp] lemma isSquare_zero [MulZeroClass α] : IsSquare (0 : α) 
Arguments: {α : Type u_2} [MulZeroClass α]
Goal: IsSquare 0
-- even_iff_exists_two_mul
lemma even_iff_exists_two_mul : Even a ↔ ∃ b, a = 2 * b 
Arguments: {α : Type u_2} [Semiring α] {a : α}
Goal: Even a ↔ ∃ b, a = 2 * b
-- even_iff_two_dvd
lemma even_iff_two_dvd : Even a ↔ 2 ∣ a 
Arguments: {α : Type u_2} [Semiring α] {a : α}
Goal: Even a ↔ 2 ∣ a
-- Even.trans_dvd
lemma Even.trans_dvd (ha : Even a) (hab : a ∣ b) : Even b 
Arguments: {α : Type u_2} [Semiring α] {a b : α} (ha : Even a) (hab : a ∣ b)
Goal: Even b
-- Dvd.dvd.even
lemma Dvd.dvd.even (hab : a ∣ b) (ha : Even a) : Even b 
Arguments: {α : Type u_2} [Semiring α] {a b : α} (hab : a ∣ b) (ha : Even a)
Goal: Even b
-- range_two_mul
@[simp] lemma range_two_mul (α) [Semiring α] : Set.range (fun x : α ↦ 2 * x) = {a | Even a} 
Arguments: (α : Type u_5) [Semiring α]
Goal: (Set.range fun x => 2 * x) = {a | Even a}
-- even_two
@[simp] lemma even_two : Even (2 : α) 
Arguments: {α : Type u_2} [Semiring α]
Goal: Even 2
-- Even.mul_left
@[simp] lemma Even.mul_left (ha : Even a) (b) : Even (b * a) 
Arguments: {α : Type u_2} [Semiring α] {a : α} (ha : Even a) (b : α)
Goal: Even (b * a)
-- Even.mul_right
@[simp] lemma Even.mul_right (ha : Even a) (b) : Even (a * b) 
Arguments: {α : Type u_2} [Semiring α] {a : α} (ha : Even a) (b : α)
Goal: Even (a * b)
-- even_two_mul
lemma even_two_mul (a : α) : Even (2 * a) 
Arguments: {α : Type u_2} [Semiring α] (a : α)
Goal: Even (2 * a)
-- Even.pow_of_ne_zero
lemma Even.pow_of_ne_zero (ha : Even a) : ∀ {n : ℕ}, n ≠ 0 → Even (a ^ n)
  
Arguments: {α : Type u_2} [Semiring α] {a : α} (ha : Even a) {n : ℕ}
Goal: n ≠ 0 → Even (a ^ n)
-- odd_iff_exists_bit1
lemma odd_iff_exists_bit1 : Odd a ↔ ∃ b, a = 2 * b + 1 
Arguments: {α : Type u_2} [Semiring α] {a : α}
Goal: Odd a ↔ ∃ b, a = 2 * b + 1
-- range_two_mul_add_one
@[simp] lemma range_two_mul_add_one (α : Type*) [Semiring α] :
    Set.range (fun x : α ↦ 2 * x + 1) = {a | Odd a} 
Arguments: (α : Type u_5) [Semiring α]
Goal: (Set.range fun x => 2 * x + 1) = {a | Odd a}
-- Even.add_odd
lemma Even.add_odd : Even a → Odd b → Odd (a + b) 
Arguments: {α : Type u_2} [Semiring α] {a b : α}
Goal: Even a → Odd b → Odd (a + b)
-- Even.odd_add
lemma Even.odd_add (ha : Even a) (hb : Odd b) : Odd (b + a) 
Arguments: {α : Type u_2} [Semiring α] {a b : α} (ha : Even a) (hb : Odd b)
Goal: Odd (b + a)
-- Odd.add_even
lemma Odd.add_even (ha : Odd a) (hb : Even b) : Odd (a + b) 
Arguments: {α : Type u_2} [Semiring α] {a b : α} (ha : Odd a) (hb : Even b)
Goal: Odd (a + b)
-- Odd.add_odd
lemma Odd.add_odd : Odd a → Odd b → Even (a + b) 
Arguments: {α : Type u_2} [Semiring α] {a b : α}
Goal: Odd a → Odd b → Even (a + b)
-- odd_one
@[simp] lemma odd_one : Odd (1 : α) 
Arguments: {α : Type u_2} [Semiring α]
Goal: Odd 1
-- Even.add_one
@[simp] lemma Even.add_one (h : Even a) : Odd (a + 1) 
Arguments: {α : Type u_2} [Semiring α] {a : α} (h : Even a)
Goal: Odd (a + 1)
-- Even.one_add
@[simp] lemma Even.one_add (h : Even a) : Odd (1 + a) 
Arguments: {α : Type u_2} [Semiring α] {a : α} (h : Even a)
Goal: Odd (1 + a)
-- odd_two_mul_add_one
lemma odd_two_mul_add_one (a : α) : Odd (2 * a + 1) 
Arguments: {α : Type u_2} [Semiring α] (a : α)
Goal: Odd (2 * a + 1)
-- odd_add_self_one'
@[simp] lemma odd_add_self_one' : Odd (a + (a + 1)) 
Arguments: {α : Type u_2} [Semiring α] {a : α}
Goal: Odd (a + (a + 1))
-- odd_add_one_self
@[simp] lemma odd_add_one_self : Odd (a + 1 + a) 
Arguments: {α : Type u_2} [Semiring α] {a : α}
Goal: Odd (a + 1 + a)
-- odd_add_one_self'
@[simp] lemma odd_add_one_self' : Odd (a + (1 + a)) 
Arguments: {α : Type u_2} [Semiring α] {a : α}
Goal: Odd (a + (1 + a))
-- Odd.map
lemma Odd.map [FunLike F α β] [RingHomClass F α β] (f : F) : Odd a → Odd (f a) 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [Semiring α] [Semiring β] {a : α} [FunLike F α β] [RingHomClass F α β] (f : F)
Goal: Odd a → Odd (f a)
-- Odd.natCast
lemma Odd.natCast {R : Type*} [Semiring R] {n : ℕ} (hn : Odd n) : Odd (n : R) 
Arguments: {R : Type u_5} [Semiring R] {n : ℕ} (hn : Odd n)
Goal: Odd ↑n
-- Odd.mul
@[simp] lemma Odd.mul : Odd a → Odd b → Odd (a * b) 
Arguments: {α : Type u_2} [Semiring α] {a b : α}
Goal: Odd a → Odd b → Odd (a * b)
-- Odd.pow
lemma Odd.pow (ha : Odd a) : ∀ {n : ℕ}, Odd (a ^ n)
  
Arguments: {α : Type u_2} [Semiring α] {a : α} (ha : Odd a) {n : ℕ}
Goal: Odd (a ^ n)
-- Odd.pow_add_pow_eq_zero
lemma Odd.pow_add_pow_eq_zero [IsCancelAdd α] (hn : Odd n) (hab : a + b = 0) :
    a ^ n + b ^ n = 0 
Arguments: {α : Type u_2} [Semiring α] {a b : α} {n : ℕ} [IsCancelAdd α] (hn : Odd n) (hab : a + b = 0)
Goal: a ^ n + b ^ n = 0
-- Odd.neg_pow
lemma Odd.neg_pow : Odd n → ∀ a : α, (-a) ^ n = -a ^ n 
Arguments: {α : Type u_2} [Monoid α] [HasDistribNeg α] {n : ℕ}
Goal: Odd n → ∀ (a : α), (-a) ^ n = -a ^ n
-- Odd.neg_one_pow
@[simp] lemma Odd.neg_one_pow (h : Odd n) : (-1 : α) ^ n = -1 
Arguments: {α : Type u_2} [Monoid α] [HasDistribNeg α] {n : ℕ} (h : Odd n)
Goal: (-1) ^ n = -1
-- even_neg_two
lemma even_neg_two : Even (-2 : α) 
Arguments: {α : Type u_2} [Ring α]
Goal: Even (-2)
-- Odd.neg
lemma Odd.neg (hp : Odd a) : Odd (-a) 
Arguments: {α : Type u_2} [Ring α] {a : α} (hp : Odd a)
Goal: Odd (-a)
-- odd_neg
@[simp] lemma odd_neg : Odd (-a) ↔ Odd a 
Arguments: {α : Type u_2} [Ring α] {a : α}
Goal: Odd (-a) ↔ Odd a
-- odd_neg_one
lemma odd_neg_one : Odd (-1 : α) 
Arguments: {α : Type u_2} [Ring α]
Goal: Odd (-1)
-- Odd.sub_even
lemma Odd.sub_even (ha : Odd a) (hb : Even b) : Odd (a - b) 
Arguments: {α : Type u_2} [Ring α] {a b : α} (ha : Odd a) (hb : Even b)
Goal: Odd (a - b)
-- Even.sub_odd
lemma Even.sub_odd (ha : Even a) (hb : Odd b) : Odd (a - b) 
Arguments: {α : Type u_2} [Ring α] {a b : α} (ha : Even a) (hb : Odd b)
Goal: Odd (a - b)
-- Odd.sub_odd
lemma Odd.sub_odd (ha : Odd a) (hb : Odd b) : Even (a - b) 
Arguments: {α : Type u_2} [Ring α] {a b : α} (ha : Odd a) (hb : Odd b)
Goal: Even (a - b)
-- Nat.odd_iff
lemma odd_iff : Odd n ↔ n % 2 = 1 
Arguments: {n : ℕ}
Goal: Odd n ↔ n % 2 = 1
-- Nat.not_odd_iff
lemma not_odd_iff : ¬Odd n ↔ n % 2 = 0 
Arguments: {n : ℕ}
Goal: ¬Odd n ↔ n % 2 = 0
-- Nat.even_iff_not_odd
lemma even_iff_not_odd : Even n ↔ ¬Odd n 
Arguments: {n : ℕ}
Goal: Even n ↔ ¬Odd n
-- Nat.odd_iff_not_even
@[simp] lemma odd_iff_not_even : Odd n ↔ ¬Even n 
Arguments: {n : ℕ}
Goal: Odd n ↔ ¬Even n
-- Odd.not_two_dvd_nat
lemma _root_.Odd.not_two_dvd_nat (h : Odd n) : ¬(2 ∣ n) 
Arguments: {n : ℕ} (h : Odd n)
Goal: ¬2 ∣ n
-- Nat.even_xor_odd
lemma even_xor_odd (n : ℕ) : Xor' (Even n) (Odd n) 
Arguments: (n : ℕ)
Goal: Xor' (Even n) (Odd n)
-- Nat.even_or_odd
lemma even_or_odd (n : ℕ) : Even n ∨ Odd n 
Arguments: (n : ℕ)
Goal: Even n ∨ Odd n
-- Nat.even_or_odd'
lemma even_or_odd' (n : ℕ) : ∃ k, n = 2 * k ∨ n = 2 * k + 1 
Arguments: (n : ℕ)
Goal: ∃ k, n = 2 * k ∨ n = 2 * k + 1
-- Nat.even_xor_odd'
lemma even_xor_odd' (n : ℕ) : ∃ k, Xor' (n = 2 * k) (n = 2 * k + 1) 
Arguments: (n : ℕ)
Goal: ∃ k, Xor' (n = 2 * k) (n = 2 * k + 1)
-- Nat.mod_two_add_add_odd_mod_two
lemma mod_two_add_add_odd_mod_two (m : ℕ) {n : ℕ} (hn : Odd n) : m % 2 + (m + n) % 2 = 1 
Arguments: (m : ℕ) {n : ℕ} (hn : Odd n)
Goal: m % 2 + (m + n) % 2 = 1
-- Nat.mod_two_add_succ_mod_two
@[simp] lemma mod_two_add_succ_mod_two (m : ℕ) : m % 2 + (m + 1) % 2 = 1 
Arguments: (m : ℕ)
Goal: m % 2 + (m + 1) % 2 = 1
-- Nat.succ_mod_two_add_mod_two
@[simp] lemma succ_mod_two_add_mod_two (m : ℕ) : (m + 1) % 2 + m % 2 = 1 
Arguments: (m : ℕ)
Goal: (m + 1) % 2 + m % 2 = 1
-- Nat.even_add'
lemma even_add' : Even (m + n) ↔ (Odd m ↔ Odd n) 
Arguments: {m n : ℕ}
Goal: Even (m + n) ↔ (Odd m ↔ Odd n)
-- Nat.not_even_bit1
@[simp] lemma not_even_bit1 (n : ℕ) : ¬Even (2 * n + 1) 
Arguments: (n : ℕ)
Goal: ¬Even (2 * n + 1)
-- Nat.not_even_two_mul_add_one
lemma not_even_two_mul_add_one (n : ℕ) : ¬ Even (2 * n + 1) 
Arguments: (n : ℕ)
Goal: ¬Even (2 * n + 1)
-- Nat.even_sub'
lemma even_sub' (h : n ≤ m) : Even (m - n) ↔ (Odd m ↔ Odd n) 
Arguments: {m n : ℕ} (h : n ≤ m)
Goal: Even (m - n) ↔ (Odd m ↔ Odd n)
-- Nat.Odd.sub_odd
lemma Odd.sub_odd (hm : Odd m) (hn : Odd n) : Even (m - n) 
Arguments: {m n : ℕ} (hm : Odd m) (hn : Odd n)
Goal: Even (m - n)
-- Nat.odd_mul
lemma odd_mul : Odd (m * n) ↔ Odd m ∧ Odd n 
Arguments: {m n : ℕ}
Goal: Odd (m * n) ↔ Odd m ∧ Odd n
-- Nat.Odd.of_mul_left
lemma Odd.of_mul_left (h : Odd (m * n)) : Odd m 
Arguments: {m n : ℕ} (h : Odd (m * n))
Goal: Odd m
-- Nat.Odd.of_mul_right
lemma Odd.of_mul_right (h : Odd (m * n)) : Odd n 
Arguments: {m n : ℕ} (h : Odd (m * n))
Goal: Odd n
-- Nat.even_div
lemma even_div : Even (m / n) ↔ m % (2 * n) / n = 0 
Arguments: {m n : ℕ}
Goal: Even (m / n) ↔ m % (2 * n) / n = 0
-- Nat.odd_add
@[parity_simps] lemma odd_add : Odd (m + n) ↔ (Odd m ↔ Even n) 
Arguments: {m n : ℕ}
Goal: Odd (m + n) ↔ (Odd m ↔ Even n)
-- Nat.odd_add'
lemma odd_add' : Odd (m + n) ↔ (Odd n ↔ Even m) 
Arguments: {m n : ℕ}
Goal: Odd (m + n) ↔ (Odd n ↔ Even m)
-- Nat.ne_of_odd_add
lemma ne_of_odd_add (h : Odd (m + n)) : m ≠ n 
Arguments: {m n : ℕ} (h : Odd (m + n))
Goal: m ≠ n
-- Nat.odd_sub
@[parity_simps] lemma odd_sub (h : n ≤ m) : Odd (m - n) ↔ (Odd m ↔ Even n) 
Arguments: {m n : ℕ} (h : n ≤ m)
Goal: Odd (m - n) ↔ (Odd m ↔ Even n)
-- Nat.Odd.sub_even
lemma Odd.sub_even (h : n ≤ m) (hm : Odd m) (hn : Even n) : Odd (m - n) 
Arguments: {m n : ℕ} (h : n ≤ m) (hm : Odd m) (hn : Even n)
Goal: Odd (m - n)
-- Nat.odd_sub'
lemma odd_sub' (h : n ≤ m) : Odd (m - n) ↔ (Odd n ↔ Even m) 
Arguments: {m n : ℕ} (h : n ≤ m)
Goal: Odd (m - n) ↔ (Odd n ↔ Even m)
-- Nat.Even.sub_odd
lemma Even.sub_odd (h : n ≤ m) (hm : Even m) (hn : Odd n) : Odd (m - n) 
Arguments: {m n : ℕ} (h : n ≤ m) (hm : Even m) (hn : Odd n)
Goal: Odd (m - n)
-- Nat.two_mul_div_two_add_one_of_odd
lemma two_mul_div_two_add_one_of_odd (h : Odd n) : 2 * (n / 2) + 1 = n 
Arguments: {n : ℕ} (h : Odd n)
Goal: 2 * (n / 2) + 1 = n
-- Nat.div_two_mul_two_add_one_of_odd
lemma div_two_mul_two_add_one_of_odd (h : Odd n) : n / 2 * 2 + 1 = n 
Arguments: {n : ℕ} (h : Odd n)
Goal: n / 2 * 2 + 1 = n
-- Nat.one_add_div_two_mul_two_of_odd
lemma one_add_div_two_mul_two_of_odd (h : Odd n) : 1 + n / 2 * 2 = n 
Arguments: {n : ℕ} (h : Odd n)
Goal: 1 + n / 2 * 2 = n
-- Function.Involutive.iterate_bit0
lemma iterate_bit0 (hf : Involutive f) (n : ℕ) : f^[2 * n] = id 
Arguments: {α : Type u_5} {f : α → α} (hf : Function.Involutive f) (n : ℕ)
Goal: f^[2 * n] = id
-- Function.Involutive.iterate_bit1
lemma iterate_bit1 (hf : Involutive f) (n : ℕ) : f^[2 * n + 1] = f 
Arguments: {α : Type u_5} {f : α → α} (hf : Function.Involutive f) (n : ℕ)
Goal: f^[2 * n + 1] = f
-- Function.Involutive.iterate_two_mul
lemma iterate_two_mul (hf : Involutive f) (n : ℕ) : f^[2 * n] = id 
Arguments: {α : Type u_5} {f : α → α} (hf : Function.Involutive f) (n : ℕ)
Goal: f^[2 * n] = id
-- Function.Involutive.iterate_even
lemma iterate_even (hf : Involutive f) (hn : Even n) : f^[n] = id 
Arguments: {α : Type u_5} {f : α → α} {n : ℕ} (hf : Function.Involutive f) (hn : Even n)
Goal: f^[n] = id
-- Function.Involutive.iterate_odd
lemma iterate_odd (hf : Involutive f) (hn : Odd n) : f^[n] = f 
Arguments: {α : Type u_5} {f : α → α} {n : ℕ} (hf : Function.Involutive f) (hn : Odd n)
Goal: f^[n] = f
-- Function.Involutive.iterate_eq_self
lemma iterate_eq_self (hf : Involutive f) (hne : f ≠ id) : f^[n] = f ↔ Odd n 
Arguments: {α : Type u_5} {f : α → α} {n : ℕ} (hf : Function.Involutive f) (hne : f ≠ id)
Goal: f^[n] = f ↔ Odd n
-- Function.Involutive.iterate_eq_id
lemma iterate_eq_id (hf : Involutive f) (hne : f ≠ id) : f^[n] = id ↔ Even n 
Arguments: {α : Type u_5} {f : α → α} {n : ℕ} (hf : Function.Involutive f) (hne : f ≠ id)
Goal: f^[n] = id ↔ Even n
-- neg_one_pow_eq_one_iff_even
lemma neg_one_pow_eq_one_iff_even {R : Type*} [Monoid R] [HasDistribNeg R] {n : ℕ}
    (h : (-1 : R) ≠ 1) : (-1 : R) ^ n = 1 ↔ Even n 
Arguments: {R : Type u_5} [Monoid R] [HasDistribNeg R] {n : ℕ} (h : -1 ≠ 1)
Goal: (-1) ^ n = 1 ↔ Even n
-- BooleanRing.mul_self
class BooleanRing (α) extends Ring α where
    mul_self : ∀ a : α, a * a = a
Arguments: {α : Type u_4} [self : BooleanRing α] (a : α)
Goal: a * a = a
-- mul_self
@[simp]
theorem mul_self : a * a = a 
Arguments: {α : Type u_1} [BooleanRing α] (a : α)
Goal: a * a = a
-- add_self
@[simp]
theorem add_self : a + a = 0 
Arguments: {α : Type u_1} [BooleanRing α] (a : α)
Goal: a + a = 0
-- neg_eq
@[simp]
theorem neg_eq : -a = a 
Arguments: {α : Type u_1} [BooleanRing α] (a : α)
Goal: -a = a
-- add_eq_zero'
theorem add_eq_zero' : a + b = 0 ↔ a = b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a + b = 0 ↔ a = b
-- mul_add_mul
@[simp]
theorem mul_add_mul : a * b + b * a = 0 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a * b + b * a = 0
-- sub_eq_add
@[simp]
theorem sub_eq_add : a - b = a + b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a - b = a + b
-- mul_one_add_self
@[simp]
theorem mul_one_add_self : a * (1 + a) = 0 
Arguments: {α : Type u_1} [BooleanRing α] (a : α)
Goal: a * (1 + a) = 0
-- toBoolAlg_symm_eq
@[simp]
theorem toBoolAlg_symm_eq : (@toBoolAlg α).symm = ofBoolAlg 
Arguments: {α : Type u_1}
Goal: toBoolAlg.symm = ofBoolAlg
-- ofBoolAlg_symm_eq
@[simp]
theorem ofBoolAlg_symm_eq : (@ofBoolAlg α).symm = toBoolAlg 
Arguments: {α : Type u_1}
Goal: ofBoolAlg.symm = toBoolAlg
-- toBoolAlg_ofBoolAlg
@[simp]
theorem toBoolAlg_ofBoolAlg (a : AsBoolAlg α) : toBoolAlg (ofBoolAlg a) = a 
Arguments: {α : Type u_1} (a : AsBoolAlg α)
Goal: toBoolAlg (ofBoolAlg a) = a
-- ofBoolAlg_toBoolAlg
@[simp]
theorem ofBoolAlg_toBoolAlg (a : α) : ofBoolAlg (toBoolAlg a) = a 
Arguments: {α : Type u_1} (a : α)
Goal: ofBoolAlg (toBoolAlg a) = a
-- toBoolAlg_inj
theorem toBoolAlg_inj {a b : α} : toBoolAlg a = toBoolAlg b ↔ a = b 
Arguments: {α : Type u_1} {a b : α}
Goal: toBoolAlg a = toBoolAlg b ↔ a = b
-- ofBoolAlg_inj
theorem ofBoolAlg_inj {a b : AsBoolAlg α} : ofBoolAlg a = ofBoolAlg b ↔ a = b 
Arguments: {α : Type u_1} {a b : AsBoolAlg α}
Goal: ofBoolAlg a = ofBoolAlg b ↔ a = b
-- BooleanRing.sup_comm
theorem sup_comm (a b : α) : a ⊔ b = b ⊔ a 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a ⊔ b = b ⊔ a
-- BooleanRing.inf_comm
theorem inf_comm (a b : α) : a ⊓ b = b ⊓ a 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a ⊓ b = b ⊓ a
-- BooleanRing.sup_assoc
theorem sup_assoc (a b c : α) : a ⊔ b ⊔ c = a ⊔ (b ⊔ c) 
Arguments: {α : Type u_1} [BooleanRing α] (a b c : α)
Goal: a ⊔ b ⊔ c = a ⊔ (b ⊔ c)
-- BooleanRing.inf_assoc
theorem inf_assoc (a b c : α) : a ⊓ b ⊓ c = a ⊓ (b ⊓ c) 
Arguments: {α : Type u_1} [BooleanRing α] (a b c : α)
Goal: a ⊓ b ⊓ c = a ⊓ (b ⊓ c)
-- BooleanRing.sup_inf_self
theorem sup_inf_self (a b : α) : a ⊔ a ⊓ b = a 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a ⊔ a ⊓ b = a
-- BooleanRing.inf_sup_self
theorem inf_sup_self (a b : α) : a ⊓ (a ⊔ b) = a 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: a ⊓ (a ⊔ b) = a
-- BooleanRing.le_sup_inf_aux
theorem le_sup_inf_aux (a b c : α) : (a + b + a * b) * (a + c + a * c) = a + b * c + a * (b * c) 
Arguments: {α : Type u_1} [BooleanRing α] (a b c : α)
Goal: (a + b + a * b) * (a + c + a * c) = a + b * c + a * (b * c)
-- BooleanRing.le_sup_inf
theorem le_sup_inf (a b c : α) : (a ⊔ b) ⊓ (a ⊔ c) ⊔ (a ⊔ b ⊓ c) = a ⊔ b ⊓ c 
Arguments: {α : Type u_1} [BooleanRing α] (a b c : α)
Goal: (a ⊔ b) ⊓ (a ⊔ c) ⊔ (a ⊔ b ⊓ c) = a ⊔ b ⊓ c
-- ofBoolAlg_top
@[simp]
theorem ofBoolAlg_top : ofBoolAlg (⊤ : AsBoolAlg α) = 1 
Arguments: {α : Type u_1} [BooleanRing α]
Goal: ofBoolAlg ⊤ = 1
-- ofBoolAlg_bot
@[simp]
theorem ofBoolAlg_bot : ofBoolAlg (⊥ : AsBoolAlg α) = 0 
Arguments: {α : Type u_1} [BooleanRing α]
Goal: ofBoolAlg ⊥ = 0
-- ofBoolAlg_sup
@[simp]
theorem ofBoolAlg_sup (a b : AsBoolAlg α) :
    ofBoolAlg (a ⊔ b) = ofBoolAlg a + ofBoolAlg b + ofBoolAlg a * ofBoolAlg b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : AsBoolAlg α)
Goal: ofBoolAlg (a ⊔ b) = ofBoolAlg a + ofBoolAlg b + ofBoolAlg a * ofBoolAlg b
-- ofBoolAlg_inf
@[simp]
theorem ofBoolAlg_inf (a b : AsBoolAlg α) : ofBoolAlg (a ⊓ b) = ofBoolAlg a * ofBoolAlg b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : AsBoolAlg α)
Goal: ofBoolAlg (a ⊓ b) = ofBoolAlg a * ofBoolAlg b
-- ofBoolAlg_compl
@[simp]
theorem ofBoolAlg_compl (a : AsBoolAlg α) : ofBoolAlg aᶜ = 1 + ofBoolAlg a 
Arguments: {α : Type u_1} [BooleanRing α] (a : AsBoolAlg α)
Goal: ofBoolAlg aᶜ = 1 + ofBoolAlg a
-- ofBoolAlg_sdiff
@[simp]
theorem ofBoolAlg_sdiff (a b : AsBoolAlg α) : ofBoolAlg (a \ b) = ofBoolAlg a * (1 + ofBoolAlg b) 
Arguments: {α : Type u_1} [BooleanRing α] (a b : AsBoolAlg α)
Goal: ofBoolAlg (a \ b) = ofBoolAlg a * (1 + ofBoolAlg b)
-- _private.Mathlib.Algebra.Ring.BooleanRing.0.of_boolalg_symmDiff_aux
private theorem of_boolalg_symmDiff_aux (a b : α) : (a + b + a * b) * (1 + a * b) = a + b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: (a + b + a * b) * (1 + a * b) = a + b
-- ofBoolAlg_symmDiff
@[simp]
theorem ofBoolAlg_symmDiff (a b : AsBoolAlg α) : ofBoolAlg (a ∆ b) = ofBoolAlg a + ofBoolAlg b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : AsBoolAlg α)
Goal: ofBoolAlg (a ∆ b) = ofBoolAlg a + ofBoolAlg b
-- ofBoolAlg_mul_ofBoolAlg_eq_left_iff
@[simp]
theorem ofBoolAlg_mul_ofBoolAlg_eq_left_iff {a b : AsBoolAlg α} :
    ofBoolAlg a * ofBoolAlg b = ofBoolAlg a ↔ a ≤ b 
Arguments: {α : Type u_1} [BooleanRing α] {a b : AsBoolAlg α}
Goal: ofBoolAlg a * ofBoolAlg b = ofBoolAlg a ↔ a ≤ b
-- toBoolAlg_zero
@[simp]
theorem toBoolAlg_zero : toBoolAlg (0 : α) = ⊥ 
Arguments: {α : Type u_1} [BooleanRing α]
Goal: toBoolAlg 0 = ⊥
-- toBoolAlg_one
@[simp]
theorem toBoolAlg_one : toBoolAlg (1 : α) = ⊤ 
Arguments: {α : Type u_1} [BooleanRing α]
Goal: toBoolAlg 1 = ⊤
-- toBoolAlg_mul
@[simp]
theorem toBoolAlg_mul (a b : α) : toBoolAlg (a * b) = toBoolAlg a ⊓ toBoolAlg b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: toBoolAlg (a * b) = toBoolAlg a ⊓ toBoolAlg b
-- toBoolAlg_add_add_mul
@[simp]
theorem toBoolAlg_add_add_mul (a b : α) : toBoolAlg (a + b + a * b) = toBoolAlg a ⊔ toBoolAlg b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: toBoolAlg (a + b + a * b) = toBoolAlg a ⊔ toBoolAlg b
-- toBoolAlg_add
@[simp]
theorem toBoolAlg_add (a b : α) : toBoolAlg (a + b) = toBoolAlg a ∆ toBoolAlg b 
Arguments: {α : Type u_1} [BooleanRing α] (a b : α)
Goal: toBoolAlg (a + b) = toBoolAlg a ∆ toBoolAlg b
-- RingHom.asBoolAlg_toLatticeHom_toSupHom_toFun
@[simps]
protected def RingHom.asBoolAlg (f : α →+* β) : BoundedLatticeHom (AsBoolAlg α) (AsBoolAlg β) 
Arguments: {α : Type u_1} {β : Type u_2} [BooleanRing α] [BooleanRing β] (f : α →+* β)
Goal: ∀ (a : AsBoolAlg α), f.asBoolAlg.toSupHom a = (⇑toBoolAlg ∘ ⇑f ∘ ⇑ofBoolAlg) a
-- RingHom.asBoolAlg_id
@[simp]
theorem RingHom.asBoolAlg_id : (RingHom.id α).asBoolAlg = BoundedLatticeHom.id _ 
Arguments: {α : Type u_1} [BooleanRing α]
Goal: (RingHom.id α).asBoolAlg = BoundedLatticeHom.id (AsBoolAlg α)
-- RingHom.asBoolAlg_comp
@[simp]
theorem RingHom.asBoolAlg_comp (g : β →+* γ) (f : α →+* β) :
    (g.comp f).asBoolAlg = g.asBoolAlg.comp f.asBoolAlg 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [BooleanRing α] [BooleanRing β] [BooleanRing γ] (g : β →+* γ) (f : α →+* β)
Goal: (g.comp f).asBoolAlg = g.asBoolAlg.comp f.asBoolAlg
-- toBoolRing_symm_eq
@[simp]
theorem toBoolRing_symm_eq : (@toBoolRing α).symm = ofBoolRing 
Arguments: {α : Type u_1}
Goal: toBoolRing.symm = ofBoolRing
-- ofBoolRing_symm_eq
@[simp]
theorem ofBoolRing_symm_eq : (@ofBoolRing α).symm = toBoolRing 
Arguments: {α : Type u_1}
Goal: ofBoolRing.symm = toBoolRing
-- toBoolRing_ofBoolRing
@[simp]
theorem toBoolRing_ofBoolRing (a : AsBoolRing α) : toBoolRing (ofBoolRing a) = a 
Arguments: {α : Type u_1} (a : AsBoolRing α)
Goal: toBoolRing (ofBoolRing a) = a
-- ofBoolRing_toBoolRing
@[simp]
theorem ofBoolRing_toBoolRing (a : α) : ofBoolRing (toBoolRing a) = a 
Arguments: {α : Type u_1} (a : α)
Goal: ofBoolRing (toBoolRing a) = a
-- toBoolRing_inj
theorem toBoolRing_inj {a b : α} : toBoolRing a = toBoolRing b ↔ a = b 
Arguments: {α : Type u_1} {a b : α}
Goal: toBoolRing a = toBoolRing b ↔ a = b
-- ofBoolRing_inj
theorem ofBoolRing_inj {a b : AsBoolRing α} : ofBoolRing a = ofBoolRing b ↔ a = b 
Arguments: {α : Type u_1} {a b : AsBoolRing α}
Goal: ofBoolRing a = ofBoolRing b ↔ a = b
-- ofBoolRing_zero
@[simp]
theorem ofBoolRing_zero : ofBoolRing (0 : AsBoolRing α) = ⊥ 
Arguments: {α : Type u_1} [BooleanAlgebra α]
Goal: ofBoolRing 0 = ⊥
-- ofBoolRing_one
@[simp]
theorem ofBoolRing_one : ofBoolRing (1 : AsBoolRing α) = ⊤ 
Arguments: {α : Type u_1} [BooleanAlgebra α]
Goal: ofBoolRing 1 = ⊤
-- ofBoolRing_neg
@[simp]
theorem ofBoolRing_neg (a : AsBoolRing α) : ofBoolRing (-a) = ofBoolRing a 
Arguments: {α : Type u_1} [BooleanAlgebra α] (a : AsBoolRing α)
Goal: ofBoolRing (-a) = ofBoolRing a
-- ofBoolRing_add
@[simp]
theorem ofBoolRing_add (a b : AsBoolRing α) : ofBoolRing (a + b) = ofBoolRing a ∆ ofBoolRing b 
Arguments: {α : Type u_1} [BooleanAlgebra α] (a b : AsBoolRing α)
Goal: ofBoolRing (a + b) = ofBoolRing a ∆ ofBoolRing b
-- ofBoolRing_sub
@[simp]
theorem ofBoolRing_sub (a b : AsBoolRing α) : ofBoolRing (a - b) = ofBoolRing a ∆ ofBoolRing b 
Arguments: {α : Type u_1} [BooleanAlgebra α] (a b : AsBoolRing α)
Goal: ofBoolRing (a - b) = ofBoolRing a ∆ ofBoolRing b
-- ofBoolRing_mul
@[simp]
theorem ofBoolRing_mul (a b : AsBoolRing α) : ofBoolRing (a * b) = ofBoolRing a ⊓ ofBoolRing b 
Arguments: {α : Type u_1} [BooleanAlgebra α] (a b : AsBoolRing α)
Goal: ofBoolRing (a * b) = ofBoolRing a ⊓ ofBoolRing b
-- ofBoolRing_le_ofBoolRing_iff
@[simp]
theorem ofBoolRing_le_ofBoolRing_iff {a b : AsBoolRing α} :
    ofBoolRing a ≤ ofBoolRing b ↔ a * b = a 
Arguments: {α : Type u_1} [BooleanAlgebra α] {a b : AsBoolRing α}
Goal: ofBoolRing a ≤ ofBoolRing b ↔ a * b = a
-- toBoolRing_bot
@[simp]
theorem toBoolRing_bot : toBoolRing (⊥ : α) = 0 
Arguments: {α : Type u_1} [BooleanAlgebra α]
Goal: toBoolRing ⊥ = 0
-- toBoolRing_top
@[simp]
theorem toBoolRing_top : toBoolRing (⊤ : α) = 1 
Arguments: {α : Type u_1} [BooleanAlgebra α]
Goal: toBoolRing ⊤ = 1
-- toBoolRing_inf
@[simp]
theorem toBoolRing_inf (a b : α) : toBoolRing (a ⊓ b) = toBoolRing a * toBoolRing b 
Arguments: {α : Type u_1} [BooleanAlgebra α] (a b : α)
Goal: toBoolRing (a ⊓ b) = toBoolRing a * toBoolRing b
-- toBoolRing_symmDiff
@[simp]
theorem toBoolRing_symmDiff (a b : α) : toBoolRing (a ∆ b) = toBoolRing a + toBoolRing b 
Arguments: {α : Type u_1} [BooleanAlgebra α] (a b : α)
Goal: toBoolRing (a ∆ b) = toBoolRing a + toBoolRing b
-- BoundedLatticeHom.asBoolRing_apply
@[simps]
protected def BoundedLatticeHom.asBoolRing (f : BoundedLatticeHom α β) :
    AsBoolRing α →+* AsBoolRing β 
Arguments: {α : Type u_1} {β : Type u_2} [BooleanAlgebra α] [BooleanAlgebra β] (f : BoundedLatticeHom α β)
Goal: ∀ (a : AsBoolRing α), f.asBoolRing a = (⇑toBoolRing ∘ ⇑f ∘ ⇑ofBoolRing) a
-- BoundedLatticeHom.asBoolRing_id
@[simp]
theorem BoundedLatticeHom.asBoolRing_id : (BoundedLatticeHom.id α).asBoolRing = RingHom.id _ 
Arguments: {α : Type u_1} [BooleanAlgebra α]
Goal: (BoundedLatticeHom.id α).asBoolRing = RingHom.id (AsBoolRing α)
-- BoundedLatticeHom.asBoolRing_comp
@[simp]
theorem BoundedLatticeHom.asBoolRing_comp (g : BoundedLatticeHom β γ) (f : BoundedLatticeHom α β) :
    (g.comp f).asBoolRing = g.asBoolRing.comp f.asBoolRing 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [BooleanAlgebra α] [BooleanAlgebra β] [BooleanAlgebra γ] (g : BoundedLatticeHom β γ) (f : BoundedLatticeHom α β)
Goal: (g.comp f).asBoolRing = g.asBoolRing.comp f.asBoolRing
-- OrderIso.asBoolAlgAsBoolRing_apply
@[simps!]
def OrderIso.asBoolAlgAsBoolRing (α : Type*) [BooleanAlgebra α] : AsBoolAlg (AsBoolRing α) ≃o α 
Arguments: (α : Type u_4) [BooleanAlgebra α]
Goal: ∀ (a : AsBoolAlg (AsBoolRing α)), (OrderIso.asBoolAlgAsBoolRing α) a = ofBoolRing (ofBoolAlg a)