File: Mathlib/Order/SymmDiff.lean

full_name: symmDiff
code: /-- The symmetric difference operator on a type with `⊔` and `\` is `(A \ B) ⊔ (B \ A)`. -/
def symmDiff [Sup α] [SDiff α] (a b : α) : α 
goal: α

full_name: bihimp
code: /-- The Heyting bi-implication is `(b ⇨ a) ⊓ (a ⇨ b)`. This generalizes equivalence of
propositions. -/
def bihimp [Inf α] [HImp α] (a b : α) : α 
goal: α

full_name: symmDiff.«_aux_Mathlib_Order_SymmDiff___macroRules_symmDiff_term_∆__1»
code: /-- Notation for symmDiff -/
scoped[symmDiff] infixl:100 " ∆ " => symmDiff
goal: Lean.Macro

full_name: symmDiff._aux_Mathlib_Order_SymmDiff___unexpand_symmDiff_1
code: /-- Notation for symmDiff -/
scoped[symmDiff] infixl:100 " ∆ " => symmDiff
goal: Lean.PrettyPrinter.Unexpander

full_name: symmDiff._aux_Mathlib_Order_SymmDiff___unexpand_bihimp_1
code: /-- Notation for bihimp -/
scoped[symmDiff] infixl:100 " ⇔ " => bihimp
goal: Lean.PrettyPrinter.Unexpander

full_name: symmDiff.«_aux_Mathlib_Order_SymmDiff___macroRules_symmDiff_term_⇔__1»
code: /-- Notation for bihimp -/
scoped[symmDiff] infixl:100 " ⇔ " => bihimp
goal: Lean.Macro

full_name: symmDiff_def
code: theorem symmDiff_def [Sup α] [SDiff α] (a b : α) : a ∆ b = a \ b ⊔ b \ a 
goal: a ∆ b = a \ b ⊔ b \ a

full_name: bihimp_def
code: theorem bihimp_def [Inf α] [HImp α] (a b : α) : a ⇔ b = (b ⇨ a) ⊓ (a ⇨ b) 
goal: a ⇔ b = (b ⇨ a) ⊓ (a ⇨ b)

full_name: symmDiff_eq_Xor'
code: theorem symmDiff_eq_Xor' (p q : Prop) : p ∆ q = Xor' p q 
goal: p ∆ q = Xor' p q

full_name: bihimp_iff_iff
code: @[simp]
theorem bihimp_iff_iff {p q : Prop} : p ⇔ q ↔ (p ↔ q) 
goal: p ⇔ q ↔ (p ↔ q)

full_name: Bool.symmDiff_eq_xor
code: @[simp]
theorem Bool.symmDiff_eq_xor : ∀ p q : Bool, p ∆ q = xor p q 
goal: p ∆ q = xor p q

full_name: toDual_symmDiff
code: @[simp]
theorem toDual_symmDiff : toDual (a ∆ b) = toDual a ⇔ toDual b 
goal: OrderDual.toDual (a ∆ b) = OrderDual.toDual a ⇔ OrderDual.toDual b

full_name: ofDual_bihimp
code: @[simp]
theorem ofDual_bihimp (a b : αᵒᵈ) : ofDual (a ⇔ b) = ofDual a ∆ ofDual b 
goal: OrderDual.ofDual (a ⇔ b) = OrderDual.ofDual a ∆ OrderDual.ofDual b

full_name: symmDiff_comm
code: theorem symmDiff_comm : a ∆ b = b ∆ a 
goal: a ∆ b = b ∆ a

full_name: symmDiff_isCommutative
code: instance symmDiff_isCommutative : Std.Commutative (α := α) (· ∆ ·) 
goal: Std.Commutative fun x x_1 => x ∆ x_1

full_name: symmDiff_self
code: @[simp]
theorem symmDiff_self : a ∆ a = ⊥ 
goal: a ∆ a = ⊥

full_name: symmDiff_bot
code: @[simp]
theorem symmDiff_bot : a ∆ ⊥ = a 
goal: a ∆ ⊥ = a

full_name: bot_symmDiff
code: @[simp]
theorem bot_symmDiff : ⊥ ∆ a = a 
goal: ⊥ ∆ a = a

full_name: symmDiff_eq_bot
code: @[simp]
theorem symmDiff_eq_bot {a b : α} : a ∆ b = ⊥ ↔ a = b 
goal: a ∆ b = ⊥ ↔ a = b

full_name: symmDiff_of_le
code: theorem symmDiff_of_le {a b : α} (h : a ≤ b) : a ∆ b = b \ a 
goal: a ∆ b = b \ a

full_name: symmDiff_of_ge
code: theorem symmDiff_of_ge {a b : α} (h : b ≤ a) : a ∆ b = a \ b 
goal: a ∆ b = a \ b

full_name: symmDiff_le
code: theorem symmDiff_le {a b c : α} (ha : a ≤ b ⊔ c) (hb : b ≤ a ⊔ c) : a ∆ b ≤ c 
goal: a ∆ b ≤ c

full_name: symmDiff_le_iff
code: theorem symmDiff_le_iff {a b c : α} : a ∆ b ≤ c ↔ a ≤ b ⊔ c ∧ b ≤ a ⊔ c 
goal: a ∆ b ≤ c ↔ a ≤ b ⊔ c ∧ b ≤ a ⊔ c

full_name: symmDiff_le_sup
code: @[simp]
theorem symmDiff_le_sup {a b : α} : a ∆ b ≤ a ⊔ b 
goal: a ∆ b ≤ a ⊔ b

full_name: symmDiff_eq_sup_sdiff_inf
code: theorem symmDiff_eq_sup_sdiff_inf : a ∆ b = (a ⊔ b) \ (a ⊓ b) 
goal: a ∆ b = (a ⊔ b) \ (a ⊓ b)

full_name: Disjoint.symmDiff_eq_sup
code: theorem Disjoint.symmDiff_eq_sup {a b : α} (h : Disjoint a b) : a ∆ b = a ⊔ b 
goal: a ∆ b = a ⊔ b

full_name: symmDiff_sdiff
code: theorem symmDiff_sdiff : a ∆ b \ c = a \ (b ⊔ c) ⊔ b \ (a ⊔ c) 
goal: a ∆ b \ c = a \ (b ⊔ c) ⊔ b \ (a ⊔ c)

full_name: symmDiff_sdiff_inf
code: @[simp]
theorem symmDiff_sdiff_inf : a ∆ b \ (a ⊓ b) = a ∆ b 
goal: a ∆ b \ (a ⊓ b) = a ∆ b

full_name: symmDiff_sdiff_eq_sup
code: @[simp]
theorem symmDiff_sdiff_eq_sup : a ∆ (b \ a) = a ⊔ b 
goal: a ∆ (b \ a) = a ⊔ b

full_name: sdiff_symmDiff_eq_sup
code: @[simp]
theorem sdiff_symmDiff_eq_sup : (a \ b) ∆ b = a ⊔ b 
goal: (a \ b) ∆ b = a ⊔ b

full_name: symmDiff_sup_inf
code: @[simp]
theorem symmDiff_sup_inf : a ∆ b ⊔ a ⊓ b = a ⊔ b 
goal: a ∆ b ⊔ a ⊓ b = a ⊔ b

full_name: inf_sup_symmDiff
code: @[simp]
theorem inf_sup_symmDiff : a ⊓ b ⊔ a ∆ b = a ⊔ b 
goal: a ⊓ b ⊔ a ∆ b = a ⊔ b

full_name: symmDiff_symmDiff_inf
code: @[simp]
theorem symmDiff_symmDiff_inf : a ∆ b ∆ (a ⊓ b) = a ⊔ b 
goal: a ∆ b ∆ (a ⊓ b) = a ⊔ b

full_name: inf_symmDiff_symmDiff
code: @[simp]
theorem inf_symmDiff_symmDiff : (a ⊓ b) ∆ (a ∆ b) = a ⊔ b 
goal: (a ⊓ b) ∆ (a ∆ b) = a ⊔ b

full_name: symmDiff_triangle
code: theorem symmDiff_triangle : a ∆ c ≤ a ∆ b ⊔ b ∆ c 
goal: a ∆ c ≤ a ∆ b ⊔ b ∆ c

full_name: le_symmDiff_sup_right
code: theorem le_symmDiff_sup_right (a b : α) : a ≤ (a ∆ b) ⊔ b 
goal: a ≤ a ∆ b ⊔ b

full_name: le_symmDiff_sup_left
code: theorem le_symmDiff_sup_left (a b : α) : b ≤ (a ∆ b) ⊔ a 
goal: b ≤ a ∆ b ⊔ a

full_name: toDual_bihimp
code: @[simp]
theorem toDual_bihimp : toDual (a ⇔ b) = toDual a ∆ toDual b 
goal: OrderDual.toDual (a ⇔ b) = OrderDual.toDual a ∆ OrderDual.toDual b

full_name: ofDual_symmDiff
code: @[simp]
theorem ofDual_symmDiff (a b : αᵒᵈ) : ofDual (a ∆ b) = ofDual a ⇔ ofDual b 
goal: OrderDual.ofDual (a ∆ b) = OrderDual.ofDual a ⇔ OrderDual.ofDual b

full_name: bihimp_comm
code: theorem bihimp_comm : a ⇔ b = b ⇔ a 
goal: a ⇔ b = b ⇔ a

full_name: bihimp_isCommutative
code: instance bihimp_isCommutative : Std.Commutative (α := α) (· ⇔ ·) 
goal: Std.Commutative fun x x_1 => x ⇔ x_1

full_name: bihimp_self
code: @[simp]
theorem bihimp_self : a ⇔ a = ⊤ 
goal: a ⇔ a = ⊤

full_name: bihimp_top
code: @[simp]
theorem bihimp_top : a ⇔ ⊤ = a 
goal: a ⇔ ⊤ = a

full_name: top_bihimp
code: @[simp]
theorem top_bihimp : ⊤ ⇔ a = a 
goal: ⊤ ⇔ a = a

full_name: bihimp_eq_top
code: @[simp]
theorem bihimp_eq_top {a b : α} : a ⇔ b = ⊤ ↔ a = b 
goal: a ⇔ b = ⊤ ↔ a = b

full_name: bihimp_of_le
code: theorem bihimp_of_le {a b : α} (h : a ≤ b) : a ⇔ b = b ⇨ a 
goal: a ⇔ b = b ⇨ a

full_name: bihimp_of_ge
code: theorem bihimp_of_ge {a b : α} (h : b ≤ a) : a ⇔ b = a ⇨ b 
goal: a ⇔ b = a ⇨ b

full_name: le_bihimp
code: theorem le_bihimp {a b c : α} (hb : a ⊓ b ≤ c) (hc : a ⊓ c ≤ b) : a ≤ b ⇔ c 
goal: a ≤ b ⇔ c

full_name: le_bihimp_iff
code: theorem le_bihimp_iff {a b c : α} : a ≤ b ⇔ c ↔ a ⊓ b ≤ c ∧ a ⊓ c ≤ b 
goal: a ≤ b ⇔ c ↔ a ⊓ b ≤ c ∧ a ⊓ c ≤ b

full_name: inf_le_bihimp
code: @[simp]
theorem inf_le_bihimp {a b : α} : a ⊓ b ≤ a ⇔ b 
goal: a ⊓ b ≤ a ⇔ b

full_name: bihimp_eq_inf_himp_inf
code: theorem bihimp_eq_inf_himp_inf : a ⇔ b = a ⊔ b ⇨ a ⊓ b 
goal: a ⇔ b = a ⊔ b ⇨ a ⊓ b

full_name: Codisjoint.bihimp_eq_inf
code: theorem Codisjoint.bihimp_eq_inf {a b : α} (h : Codisjoint a b) : a ⇔ b = a ⊓ b 
goal: a ⇔ b = a ⊓ b

full_name: himp_bihimp
code: theorem himp_bihimp : a ⇨ b ⇔ c = (a ⊓ c ⇨ b) ⊓ (a ⊓ b ⇨ c) 
goal: a ⇨ b ⇔ c = (a ⊓ c ⇨ b) ⊓ (a ⊓ b ⇨ c)

full_name: sup_himp_bihimp
code: @[simp]
theorem sup_himp_bihimp : a ⊔ b ⇨ a ⇔ b = a ⇔ b 
goal: a ⊔ b ⇨ a ⇔ b = a ⇔ b

full_name: bihimp_himp_eq_inf
code: @[simp]
theorem bihimp_himp_eq_inf : a ⇔ (a ⇨ b) = a ⊓ b 
goal: a ⇔ (a ⇨ b) = a ⊓ b

full_name: himp_bihimp_eq_inf
code: @[simp]
theorem himp_bihimp_eq_inf : (b ⇨ a) ⇔ b = a ⊓ b 
goal: (b ⇨ a) ⇔ b = a ⊓ b

full_name: bihimp_inf_sup
code: @[simp]
theorem bihimp_inf_sup : a ⇔ b ⊓ (a ⊔ b) = a ⊓ b 
goal: a ⇔ b ⊓ (a ⊔ b) = a ⊓ b

full_name: sup_inf_bihimp
code: @[simp]
theorem sup_inf_bihimp : (a ⊔ b) ⊓ a ⇔ b = a ⊓ b 
goal: (a ⊔ b) ⊓ a ⇔ b = a ⊓ b

full_name: bihimp_bihimp_sup
code: @[simp]
theorem bihimp_bihimp_sup : a ⇔ b ⇔ (a ⊔ b) = a ⊓ b 
goal: a ⇔ b ⇔ (a ⊔ b) = a ⊓ b

full_name: sup_bihimp_bihimp
code: @[simp]
theorem sup_bihimp_bihimp : (a ⊔ b) ⇔ (a ⇔ b) = a ⊓ b 
goal: (a ⊔ b) ⇔ (a ⇔ b) = a ⊓ b

full_name: bihimp_triangle
code: theorem bihimp_triangle : a ⇔ b ⊓ b ⇔ c ≤ a ⇔ c 
goal: a ⇔ b ⊓ b ⇔ c ≤ a ⇔ c

full_name: symmDiff_top'
code: @[simp]
theorem symmDiff_top' : a ∆ ⊤ = ￢a 
goal: a ∆ ⊤ = ￢a

full_name: top_symmDiff'
code: @[simp]
theorem top_symmDiff' : ⊤ ∆ a = ￢a 
goal: ⊤ ∆ a = ￢a

full_name: hnot_symmDiff_self
code: @[simp]
theorem hnot_symmDiff_self : (￢a) ∆ a = ⊤ 
goal: (￢a) ∆ a = ⊤

full_name: symmDiff_hnot_self
code: @[simp]
theorem symmDiff_hnot_self : a ∆ (￢a) = ⊤ 
goal: a ∆ (￢a) = ⊤

full_name: IsCompl.symmDiff_eq_top
code: theorem IsCompl.symmDiff_eq_top {a b : α} (h : IsCompl a b) : a ∆ b = ⊤ 
goal: a ∆ b = ⊤

full_name: bihimp_bot
code: @[simp]
theorem bihimp_bot : a ⇔ ⊥ = aᶜ 
goal: a ⇔ ⊥ = aᶜ

full_name: bot_bihimp
code: @[simp]
theorem bot_bihimp : ⊥ ⇔ a = aᶜ 
goal: ⊥ ⇔ a = aᶜ

full_name: compl_bihimp_self
code: @[simp]
theorem compl_bihimp_self : aᶜ ⇔ a = ⊥ 
goal: aᶜ ⇔ a = ⊥

full_name: bihimp_hnot_self
code: @[simp]
theorem bihimp_hnot_self : a ⇔ aᶜ = ⊥ 
goal: a ⇔ aᶜ = ⊥

full_name: IsCompl.bihimp_eq_bot
code: theorem IsCompl.bihimp_eq_bot {a b : α} (h : IsCompl a b) : a ⇔ b = ⊥ 
goal: a ⇔ b = ⊥

full_name: sup_sdiff_symmDiff
code: @[simp]
theorem sup_sdiff_symmDiff : (a ⊔ b) \ a ∆ b = a ⊓ b 
goal: (a ⊔ b) \ a ∆ b = a ⊓ b

full_name: disjoint_symmDiff_inf
code: theorem disjoint_symmDiff_inf : Disjoint (a ∆ b) (a ⊓ b) 
goal: Disjoint (a ∆ b) (a ⊓ b)

full_name: inf_symmDiff_distrib_left
code: theorem inf_symmDiff_distrib_left : a ⊓ b ∆ c = (a ⊓ b) ∆ (a ⊓ c) 
goal: a ⊓ b ∆ c = (a ⊓ b) ∆ (a ⊓ c)

full_name: inf_symmDiff_distrib_right
code: theorem inf_symmDiff_distrib_right : a ∆ b ⊓ c = (a ⊓ c) ∆ (b ⊓ c) 
goal: a ∆ b ⊓ c = (a ⊓ c) ∆ (b ⊓ c)

full_name: sdiff_symmDiff
code: theorem sdiff_symmDiff : c \ a ∆ b = c ⊓ a ⊓ b ⊔ c \ a ⊓ c \ b 
goal: c \ a ∆ b = c ⊓ a ⊓ b ⊔ c \ a ⊓ c \ b

full_name: sdiff_symmDiff'
code: theorem sdiff_symmDiff' : c \ a ∆ b = c ⊓ a ⊓ b ⊔ c \ (a ⊔ b) 
goal: c \ a ∆ b = c ⊓ a ⊓ b ⊔ c \ (a ⊔ b)

full_name: symmDiff_sdiff_left
code: @[simp]
theorem symmDiff_sdiff_left : a ∆ b \ a = b \ a 
goal: a ∆ b \ a = b \ a

full_name: symmDiff_sdiff_right
code: @[simp]
theorem symmDiff_sdiff_right : a ∆ b \ b = a \ b 
goal: a ∆ b \ b = a \ b

full_name: sdiff_symmDiff_left
code: @[simp]
theorem sdiff_symmDiff_left : a \ a ∆ b = a ⊓ b 
goal: a \ a ∆ b = a ⊓ b

full_name: sdiff_symmDiff_right
code: @[simp]
theorem sdiff_symmDiff_right : b \ a ∆ b = a ⊓ b 
goal: b \ a ∆ b = a ⊓ b

full_name: symmDiff_eq_sup
code: theorem symmDiff_eq_sup : a ∆ b = a ⊔ b ↔ Disjoint a b 
goal: a ∆ b = a ⊔ b ↔ Disjoint a b

full_name: le_symmDiff_iff_left
code: @[simp]
theorem le_symmDiff_iff_left : a ≤ a ∆ b ↔ Disjoint a b 
goal: a ≤ a ∆ b ↔ Disjoint a b

full_name: le_symmDiff_iff_right
code: @[simp]
theorem le_symmDiff_iff_right : b ≤ a ∆ b ↔ Disjoint a b 
goal: b ≤ a ∆ b ↔ Disjoint a b

full_name: symmDiff_symmDiff_left
code: theorem symmDiff_symmDiff_left :
    a ∆ b ∆ c = a \ (b ⊔ c) ⊔ b \ (a ⊔ c) ⊔ c \ (a ⊔ b) ⊔ a ⊓ b ⊓ c 
goal: a ∆ b ∆ c = a \ (b ⊔ c) ⊔ b \ (a ⊔ c) ⊔ c \ (a ⊔ b) ⊔ a ⊓ b ⊓ c

full_name: symmDiff_symmDiff_right
code: theorem symmDiff_symmDiff_right :
    a ∆ (b ∆ c) = a \ (b ⊔ c) ⊔ b \ (a ⊔ c) ⊔ c \ (a ⊔ b) ⊔ a ⊓ b ⊓ c 
goal: a ∆ (b ∆ c) = a \ (b ⊔ c) ⊔ b \ (a ⊔ c) ⊔ c \ (a ⊔ b) ⊔ a ⊓ b ⊓ c

full_name: symmDiff_assoc
code: theorem symmDiff_assoc : a ∆ b ∆ c = a ∆ (b ∆ c) 
goal: a ∆ b ∆ c = a ∆ (b ∆ c)

full_name: symmDiff_isAssociative
code: instance symmDiff_isAssociative : Std.Associative (α := α)  (· ∆ ·) 
goal: Std.Associative fun x x_1 => x ∆ x_1

full_name: symmDiff_left_comm
code: theorem symmDiff_left_comm : a ∆ (b ∆ c) = b ∆ (a ∆ c) 
goal: a ∆ (b ∆ c) = b ∆ (a ∆ c)

full_name: symmDiff_right_comm
code: theorem symmDiff_right_comm : a ∆ b ∆ c = a ∆ c ∆ b 
goal: a ∆ b ∆ c = a ∆ c ∆ b

full_name: symmDiff_symmDiff_symmDiff_comm
code: theorem symmDiff_symmDiff_symmDiff_comm : a ∆ b ∆ (c ∆ d) = a ∆ c ∆ (b ∆ d) 
goal: a ∆ b ∆ (c ∆ d) = a ∆ c ∆ (b ∆ d)

full_name: symmDiff_symmDiff_cancel_left
code: @[simp]
theorem symmDiff_symmDiff_cancel_left : a ∆ (a ∆ b) = b 
goal: a ∆ (a ∆ b) = b

full_name: symmDiff_symmDiff_cancel_right
code: @[simp]
theorem symmDiff_symmDiff_cancel_right : b ∆ a ∆ a = b 
goal: b ∆ a ∆ a = b

full_name: symmDiff_symmDiff_self'
code: @[simp]
theorem symmDiff_symmDiff_self' : a ∆ b ∆ a = b 
goal: a ∆ b ∆ a = b

full_name: symmDiff_left_involutive
code: theorem symmDiff_left_involutive (a : α) : Involutive (· ∆ a) 
goal: Function.Involutive fun x => x ∆ a

full_name: symmDiff_right_involutive
code: theorem symmDiff_right_involutive (a : α) : Involutive (a ∆ ·) 
goal: Function.Involutive fun x => a ∆ x

full_name: symmDiff_left_injective
code: theorem symmDiff_left_injective (a : α) : Injective (· ∆ a) 
goal: Function.Injective fun x => x ∆ a

full_name: symmDiff_right_injective
code: theorem symmDiff_right_injective (a : α) : Injective (a ∆ ·) 
goal: Function.Injective fun x => a ∆ x

full_name: symmDiff_left_surjective
code: theorem symmDiff_left_surjective (a : α) : Surjective (· ∆ a) 
goal: Function.Surjective fun x => x ∆ a

full_name: symmDiff_right_surjective
code: theorem symmDiff_right_surjective (a : α) : Surjective (a ∆ ·) 
goal: Function.Surjective fun x => a ∆ x

full_name: symmDiff_left_inj
code: @[simp]
theorem symmDiff_left_inj : a ∆ b = c ∆ b ↔ a = c 
goal: a ∆ b = c ∆ b ↔ a = c

full_name: symmDiff_right_inj
code: @[simp]
theorem symmDiff_right_inj : a ∆ b = a ∆ c ↔ b = c 
goal: a ∆ b = a ∆ c ↔ b = c

full_name: symmDiff_eq_left
code: @[simp]
theorem symmDiff_eq_left : a ∆ b = a ↔ b = ⊥ 
goal: a ∆ b = a ↔ b = ⊥

full_name: symmDiff_eq_right
code: @[simp]
theorem symmDiff_eq_right : a ∆ b = b ↔ a = ⊥ 
goal: a ∆ b = b ↔ a = ⊥

full_name: Disjoint.symmDiff_left
code: protected theorem Disjoint.symmDiff_left (ha : Disjoint a c) (hb : Disjoint b c) :
    Disjoint (a ∆ b) c 
goal: Disjoint (a ∆ b) c

full_name: Disjoint.symmDiff_right
code: protected theorem Disjoint.symmDiff_right (ha : Disjoint a b) (hb : Disjoint a c) :
    Disjoint a (b ∆ c) 
goal: Disjoint a (b ∆ c)

full_name: symmDiff_eq_iff_sdiff_eq
code: theorem symmDiff_eq_iff_sdiff_eq (ha : a ≤ c) : a ∆ b = c ↔ c \ a = b 
goal: a ∆ b = c ↔ c \ a = b

full_name: inf_himp_bihimp
code: @[simp]
theorem inf_himp_bihimp : a ⇔ b ⇨ a ⊓ b = a ⊔ b 
goal: a ⇔ b ⇨ a ⊓ b = a ⊔ b

full_name: codisjoint_bihimp_sup
code: theorem codisjoint_bihimp_sup : Codisjoint (a ⇔ b) (a ⊔ b) 
goal: Codisjoint (a ⇔ b) (a ⊔ b)

full_name: himp_bihimp_left
code: @[simp]
theorem himp_bihimp_left : a ⇨ a ⇔ b = a ⇨ b 
goal: a ⇨ a ⇔ b = a ⇨ b

full_name: himp_bihimp_right
code: @[simp]
theorem himp_bihimp_right : b ⇨ a ⇔ b = b ⇨ a 
goal: b ⇨ a ⇔ b = b ⇨ a

full_name: bihimp_himp_left
code: @[simp]
theorem bihimp_himp_left : a ⇔ b ⇨ a = a ⊔ b 
goal: a ⇔ b ⇨ a = a ⊔ b

full_name: bihimp_himp_right
code: @[simp]
theorem bihimp_himp_right : a ⇔ b ⇨ b = a ⊔ b 
goal: a ⇔ b ⇨ b = a ⊔ b

full_name: bihimp_eq_inf
code: @[simp]
theorem bihimp_eq_inf : a ⇔ b = a ⊓ b ↔ Codisjoint a b 
goal: a ⇔ b = a ⊓ b ↔ Codisjoint a b

full_name: bihimp_le_iff_left
code: @[simp]
theorem bihimp_le_iff_left : a ⇔ b ≤ a ↔ Codisjoint a b 
goal: a ⇔ b ≤ a ↔ Codisjoint a b

full_name: bihimp_le_iff_right
code: @[simp]
theorem bihimp_le_iff_right : a ⇔ b ≤ b ↔ Codisjoint a b 
goal: a ⇔ b ≤ b ↔ Codisjoint a b

full_name: bihimp_assoc
code: theorem bihimp_assoc : a ⇔ b ⇔ c = a ⇔ (b ⇔ c) 
goal: a ⇔ b ⇔ c = a ⇔ (b ⇔ c)

full_name: bihimp_isAssociative
code: instance bihimp_isAssociative : Std.Associative (α := α) (· ⇔ ·) 
goal: Std.Associative fun x x_1 => x ⇔ x_1

full_name: bihimp_left_comm
code: theorem bihimp_left_comm : a ⇔ (b ⇔ c) = b ⇔ (a ⇔ c) 
goal: a ⇔ (b ⇔ c) = b ⇔ (a ⇔ c)

full_name: bihimp_right_comm
code: theorem bihimp_right_comm : a ⇔ b ⇔ c = a ⇔ c ⇔ b 
goal: a ⇔ b ⇔ c = a ⇔ c ⇔ b

full_name: bihimp_bihimp_bihimp_comm
code: theorem bihimp_bihimp_bihimp_comm : a ⇔ b ⇔ (c ⇔ d) = a ⇔ c ⇔ (b ⇔ d) 
goal: a ⇔ b ⇔ (c ⇔ d) = a ⇔ c ⇔ (b ⇔ d)

full_name: bihimp_bihimp_cancel_left
code: @[simp]
theorem bihimp_bihimp_cancel_left : a ⇔ (a ⇔ b) = b 
goal: a ⇔ (a ⇔ b) = b

full_name: bihimp_bihimp_cancel_right
code: @[simp]
theorem bihimp_bihimp_cancel_right : b ⇔ a ⇔ a = b 
goal: b ⇔ a ⇔ a = b

full_name: bihimp_bihimp_self
code: @[simp]
theorem bihimp_bihimp_self : a ⇔ b ⇔ a = b 
goal: a ⇔ b ⇔ a = b

full_name: bihimp_left_involutive
code: theorem bihimp_left_involutive (a : α) : Involutive (· ⇔ a) 
goal: Function.Involutive fun x => x ⇔ a

full_name: bihimp_right_involutive
code: theorem bihimp_right_involutive (a : α) : Involutive (a ⇔ ·) 
goal: Function.Involutive fun x => a ⇔ x

full_name: bihimp_left_injective
code: theorem bihimp_left_injective (a : α) : Injective (· ⇔ a) 
goal: Function.Injective fun x => x ⇔ a

full_name: bihimp_right_injective
code: theorem bihimp_right_injective (a : α) : Injective (a ⇔ ·) 
goal: Function.Injective fun x => a ⇔ x

full_name: bihimp_left_surjective
code: theorem bihimp_left_surjective (a : α) : Surjective (· ⇔ a) 
goal: Function.Surjective fun x => x ⇔ a

full_name: bihimp_right_surjective
code: theorem bihimp_right_surjective (a : α) : Surjective (a ⇔ ·) 
goal: Function.Surjective fun x => a ⇔ x

full_name: bihimp_left_inj
code: @[simp]
theorem bihimp_left_inj : a ⇔ b = c ⇔ b ↔ a = c 
goal: a ⇔ b = c ⇔ b ↔ a = c

full_name: bihimp_right_inj
code: @[simp]
theorem bihimp_right_inj : a ⇔ b = a ⇔ c ↔ b = c 
goal: a ⇔ b = a ⇔ c ↔ b = c

full_name: bihimp_eq_left
code: @[simp]
theorem bihimp_eq_left : a ⇔ b = a ↔ b = ⊤ 
goal: a ⇔ b = a ↔ b = ⊤

full_name: bihimp_eq_right
code: @[simp]
theorem bihimp_eq_right : a ⇔ b = b ↔ a = ⊤ 
goal: a ⇔ b = b ↔ a = ⊤

full_name: Codisjoint.bihimp_left
code: protected theorem Codisjoint.bihimp_left (ha : Codisjoint a c) (hb : Codisjoint b c) :
    Codisjoint (a ⇔ b) c 
goal: Codisjoint (a ⇔ b) c

full_name: Codisjoint.bihimp_right
code: protected theorem Codisjoint.bihimp_right (ha : Codisjoint a b) (hb : Codisjoint a c) :
    Codisjoint a (b ⇔ c) 
goal: Codisjoint a (b ⇔ c)

full_name: symmDiff_eq
code: theorem symmDiff_eq : a ∆ b = a ⊓ bᶜ ⊔ b ⊓ aᶜ 
goal: a ∆ b = a ⊓ bᶜ ⊔ b ⊓ aᶜ

full_name: bihimp_eq
code: theorem bihimp_eq : a ⇔ b = (a ⊔ bᶜ) ⊓ (b ⊔ aᶜ) 
goal: a ⇔ b = (a ⊔ bᶜ) ⊓ (b ⊔ aᶜ)

full_name: symmDiff_eq'
code: theorem symmDiff_eq' : a ∆ b = (a ⊔ b) ⊓ (aᶜ ⊔ bᶜ) 
goal: a ∆ b = (a ⊔ b) ⊓ (aᶜ ⊔ bᶜ)

full_name: bihimp_eq'
code: theorem bihimp_eq' : a ⇔ b = a ⊓ b ⊔ aᶜ ⊓ bᶜ 
goal: a ⇔ b = a ⊓ b ⊔ aᶜ ⊓ bᶜ

full_name: symmDiff_top
code: theorem symmDiff_top : a ∆ ⊤ = aᶜ 
goal: a ∆ ⊤ = aᶜ

full_name: top_symmDiff
code: theorem top_symmDiff : ⊤ ∆ a = aᶜ 
goal: ⊤ ∆ a = aᶜ

full_name: compl_symmDiff
code: @[simp]
theorem compl_symmDiff : (a ∆ b)ᶜ = a ⇔ b 
goal: (a ∆ b)ᶜ = a ⇔ b

full_name: compl_bihimp
code: @[simp]
theorem compl_bihimp : (a ⇔ b)ᶜ = a ∆ b 
goal: (a ⇔ b)ᶜ = a ∆ b

full_name: compl_symmDiff_compl
code: @[simp]
theorem compl_symmDiff_compl : aᶜ ∆ bᶜ = a ∆ b 
goal: aᶜ ∆ bᶜ = a ∆ b

full_name: compl_bihimp_compl
code: @[simp]
theorem compl_bihimp_compl : aᶜ ⇔ bᶜ = a ⇔ b 
goal: aᶜ ⇔ bᶜ = a ⇔ b

full_name: symmDiff_eq_top
code: @[simp]
theorem symmDiff_eq_top : a ∆ b = ⊤ ↔ IsCompl a b 
goal: a ∆ b = ⊤ ↔ IsCompl a b

full_name: bihimp_eq_bot
code: @[simp]
theorem bihimp_eq_bot : a ⇔ b = ⊥ ↔ IsCompl a b 
goal: a ⇔ b = ⊥ ↔ IsCompl a b

full_name: compl_symmDiff_self
code: @[simp]
theorem compl_symmDiff_self : aᶜ ∆ a = ⊤ 
goal: aᶜ ∆ a = ⊤

full_name: symmDiff_compl_self
code: @[simp]
theorem symmDiff_compl_self : a ∆ aᶜ = ⊤ 
goal: a ∆ aᶜ = ⊤

full_name: symmDiff_symmDiff_right'
code: theorem symmDiff_symmDiff_right' :
    a ∆ (b ∆ c) = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ ⊔ aᶜ ⊓ bᶜ ⊓ c 
goal: a ∆ (b ∆ c) = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ ⊔ aᶜ ⊓ bᶜ ⊓ c

full_name: Disjoint.le_symmDiff_sup_symmDiff_left
code: theorem Disjoint.le_symmDiff_sup_symmDiff_left (h : Disjoint a b) : c ≤ a ∆ c ⊔ b ∆ c 
goal: c ≤ a ∆ c ⊔ b ∆ c

full_name: Disjoint.le_symmDiff_sup_symmDiff_right
code: theorem Disjoint.le_symmDiff_sup_symmDiff_right (h : Disjoint b c) : a ≤ a ∆ b ⊔ a ∆ c 
goal: a ≤ a ∆ b ⊔ a ∆ c

full_name: Codisjoint.bihimp_inf_bihimp_le_left
code: theorem Codisjoint.bihimp_inf_bihimp_le_left (h : Codisjoint a b) : a ⇔ c ⊓ b ⇔ c ≤ c 
goal: a ⇔ c ⊓ b ⇔ c ≤ c

full_name: Codisjoint.bihimp_inf_bihimp_le_right
code: theorem Codisjoint.bihimp_inf_bihimp_le_right (h : Codisjoint b c) : a ⇔ b ⊓ a ⇔ c ≤ a 
goal: a ⇔ b ⊓ a ⇔ c ≤ a

full_name: symmDiff_fst
code: @[simp]
theorem symmDiff_fst [GeneralizedCoheytingAlgebra α] [GeneralizedCoheytingAlgebra β]
    (a b : α × β) : (a ∆ b).1 = a.1 ∆ b.1 
goal: (a ∆ b).1 = a.1 ∆ b.1

full_name: symmDiff_snd
code: @[simp]
theorem symmDiff_snd [GeneralizedCoheytingAlgebra α] [GeneralizedCoheytingAlgebra β]
    (a b : α × β) : (a ∆ b).2 = a.2 ∆ b.2 
goal: (a ∆ b).2 = a.2 ∆ b.2

full_name: bihimp_fst
code: @[simp]
theorem bihimp_fst [GeneralizedHeytingAlgebra α] [GeneralizedHeytingAlgebra β] (a b : α × β) :
    (a ⇔ b).1 = a.1 ⇔ b.1 
goal: (a ⇔ b).1 = a.1 ⇔ b.1

full_name: bihimp_snd
code: @[simp]
theorem bihimp_snd [GeneralizedHeytingAlgebra α] [GeneralizedHeytingAlgebra β] (a b : α × β) :
    (a ⇔ b).2 = a.2 ⇔ b.2 
goal: (a ⇔ b).2 = a.2 ⇔ b.2

full_name: Pi.symmDiff_def
code: theorem symmDiff_def [∀ i, GeneralizedCoheytingAlgebra (π i)] (a b : ∀ i, π i) :
    a ∆ b = fun i => a i ∆ b i 
goal: a ∆ b = fun i => a i ∆ b i

full_name: Pi.bihimp_def
code: theorem bihimp_def [∀ i, GeneralizedHeytingAlgebra (π i)] (a b : ∀ i, π i) :
    a ⇔ b = fun i => a i ⇔ b i 
goal: a ⇔ b = fun i => a i ⇔ b i

full_name: Pi.symmDiff_apply
code: @[simp]
theorem symmDiff_apply [∀ i, GeneralizedCoheytingAlgebra (π i)] (a b : ∀ i, π i) (i : ι) :
    (a ∆ b) i = a i ∆ b i 
goal: (a ∆ b) i = a i ∆ b i

full_name: Pi.bihimp_apply
code: @[simp]
theorem bihimp_apply [∀ i, GeneralizedHeytingAlgebra (π i)] (a b : ∀ i, π i) (i : ι) :
    (a ⇔ b) i = a i ⇔ b i 
goal: (a ⇔ b) i = a i ⇔ b i