Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2022 Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies

! This file was ported from Lean 3 source module order.heyting.boundary
! leanprover-community/mathlib commit 70d50ecfd4900dd6d328da39ab7ebd516abe4025
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Order.BooleanAlgebra

/-!
# Co-Heyting boundary

The boundary of an element of a co-Heyting algebra is the intersection of its Heyting negation with
itself. The boundary in the co-Heyting algebra of closed sets coincides with the topological
boundary.

## Main declarations

* `Coheyting.boundary`: Co-Heyting boundary. `Coheyting.boundary a = a ⊓ ¬a`

## Notation

`∂ a` is notation for `Coheyting.boundary a` in locale `Heyting`.
-/


variable {
α: Type ?u.5
α
:
Type _: Type (?u.2+1)
Type _
} namespace Coheyting variable [
CoheytingAlgebra: Type ?u.8964 → Type ?u.8964
CoheytingAlgebra
α: Type ?u.8559
α
] {
a: α
a
b: α
b
:
α: Type ?u.9794
α
} /-- The boundary of an element of a co-Heyting algebra is the intersection of its Heyting negation with itself. Note that this is always `⊥` for a boolean algebra. -/ def
boundary: αα
boundary
(
a: α
a
:
α: Type ?u.15
α
) :
α: Type ?u.15
α
:=
a: α
a
⊓ ¬
a: α
a
#align coheyting.boundary
Coheyting.boundary: {α : Type u_1} → [inst : CoheytingAlgebra α] → αα
Coheyting.boundary
/-- The boundary of an element of a co-Heyting algebra. -/ scoped[Heyting] prefix:120 "∂ " =>
Coheyting.boundary: {α : Type u_1} → [inst : CoheytingAlgebra α] → αα
Coheyting.boundary
-- Porting note: Should the notation be automatically included in the current scope? open Heyting -- Porting note: Should hnot be named hNot? theorem
inf_hnot_self: ∀ (a : α), a a = a
inf_hnot_self
(
a: α
a
:
α: Type ?u.7905
α
) :
a: α
a
⊓ ¬
a: α
a
= ∂
a: α
a
:=
rfl: ∀ {α : Sort ?u.7984} {a : α}, a = a
rfl
#align coheyting.inf_hnot_self
Coheyting.inf_hnot_self: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a a = a
Coheyting.inf_hnot_self
theorem
boundary_le: a a
boundary_le
: ∂
a: α
a
a: α
a
:=
inf_le_left: ∀ {α : Type ?u.8054} [inst : SemilatticeInf α] {a b : α}, a b a
inf_le_left
#align coheyting.boundary_le
Coheyting.boundary_le: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a : α}, a a
Coheyting.boundary_le
theorem
boundary_le_hnot: a a
boundary_le_hnot
: ∂
a: α
a
≤ ¬
a: α
a
:=
inf_le_right: ∀ {α : Type ?u.8194} [inst : SemilatticeInf α] {a b : α}, a b b
inf_le_right
#align coheyting.boundary_le_hnot
Coheyting.boundary_le_hnot: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a : α}, a a
Coheyting.boundary_le_hnot
@[simp] theorem
boundary_bot: ∀ {α : Type u_1} [inst : CoheytingAlgebra α], =
boundary_bot
: ∂ (
: ?m.8272
:
α: Type ?u.8256
α
) =
: ?m.8335
:=
bot_inf_eq: ∀ {α : Type ?u.8372} [inst : SemilatticeInf α] [inst_1 : OrderBot α] {a : α}, a =
bot_inf_eq
#align coheyting.boundary_bot
Coheyting.boundary_bot: ∀ {α : Type u_1} [inst : CoheytingAlgebra α], =
Coheyting.boundary_bot
@[simp] theorem
boundary_top: =
boundary_top
: ∂ (
: ?m.8575
:
α: Type ?u.8559
α
) =
: ?m.8608
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α



Goals accomplished! 🐙
#align coheyting.boundary_top
Coheyting.boundary_top: ∀ {α : Type u_1} [inst : CoheytingAlgebra α], =
Coheyting.boundary_top
theorem
boundary_hnot_le: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), (a) a
boundary_hnot_le
(
a: α
a
:
α: Type ?u.8961
α
) : ∂ (¬
a: α
a
) ≤ ∂
a: α
a
:=
inf_comm: ∀ {α : Type ?u.9058} [inst : SemilatticeInf α] {a b : α}, a b = b a
inf_comm
.
trans_le: ∀ {α : Type ?u.9075} [inst : Preorder α] {a b c : α}, a = bb ca c
trans_le
<|
inf_le_inf_right: ∀ {α : Type ?u.9162} [inst : SemilatticeInf α] (a : α) {b c : α}, b cb a c a
inf_le_inf_right
_: ?m.9163
_
hnot_hnot_le: ∀ {α : Type ?u.9186} [inst : CoheytingAlgebra α] {a : α}, a a
hnot_hnot_le
#align coheyting.boundary_hnot_le
Coheyting.boundary_hnot_le: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), (a) a
Coheyting.boundary_hnot_le
@[simp] theorem
boundary_hnot_hnot: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), (a) = (a)
boundary_hnot_hnot
(
a: α
a
:
α: Type ?u.9221
α
) : ∂ (¬¬
a: α
a
) = ∂ (¬
a: α
a
) :=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α



Goals accomplished! 🐙

Goals accomplished! 🐙
#align coheyting.boundary_hnot_hnot
Coheyting.boundary_hnot_hnot: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), (a) = (a)
Coheyting.boundary_hnot_hnot
@[simp] theorem
hnot_boundary: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a =
hnot_boundary
(
a: α
a
:
α: Type ?u.9580
α
) : ¶
a: α
a
=
: ?m.9628
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α



Goals accomplished! 🐙
#align coheyting.hnot_boundary
Coheyting.hnot_boundary: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a =
Coheyting.hnot_boundary
/-- **Leibniz rule** for the co-Heyting boundary. -/ theorem
boundary_inf: ∀ (a b : α), (a b) = a b a b
boundary_inf
(
a: α
a
b: α
b
:
α: Type ?u.9794
α
) : ∂ (
a: α
a
b: α
b
) = ∂
a: α
a
b: α
b
a: α
a
⊓ ∂
b: α
b
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


(a b) = a b a b
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b (a b) = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


(a b) = a b a b
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b (a b) = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b (a b) = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b (a b) = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b a a b b = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b (a b) = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a a b a b b = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a b (a b) = a a b a (b b)
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b✝, a, b: α


a a b a b b = a a b a b b

Goals accomplished! 🐙
#align coheyting.boundary_inf
Coheyting.boundary_inf: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a b : α), (a b) = a b a b
Coheyting.boundary_inf
theorem
boundary_inf_le: (a b) a b
boundary_inf_le
: ∂ (
a: α
a
b: α
b
) ≤ ∂
a: α
a
⊔ ∂
b: α
b
:= (
boundary_inf: ∀ {α : Type ?u.10438} [inst : CoheytingAlgebra α] (a b : α), (a b) = a b a b
boundary_inf
_: ?m.10439
_
_: ?m.10439
_
).
trans_le: ∀ {α : Type ?u.10451} [inst : Preorder α] {a b c : α}, a = bb ca c
trans_le
<|
sup_le_sup: ∀ {α : Type ?u.10526} [inst : SemilatticeSup α] {a b c d : α}, a bc da c b d
sup_le_sup
inf_le_left: ∀ {α : Type ?u.10571} [inst : SemilatticeInf α] {a b : α}, a b a
inf_le_left
inf_le_right: ∀ {α : Type ?u.10613} [inst : SemilatticeInf α] {a b : α}, a b b
inf_le_right
#align coheyting.boundary_inf_le
Coheyting.boundary_inf_le: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a b : α}, (a b) a b
Coheyting.boundary_inf_le
theorem
boundary_sup_le: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a b : α}, (a b) a b
boundary_sup_le
: ∂ (
a: α
a
b: α
b
) ≤ ∂
a: α
a
⊔ ∂
b: α
b
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(a b) a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(a b) a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(a b) (a b) a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(a b) a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


a (a b) b (a b) a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


a (a b) b (a b) a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(a b) a b

Goals accomplished! 🐙
#align coheyting.boundary_sup_le
Coheyting.boundary_sup_le: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a b : α}, (a b) a b
Coheyting.boundary_sup_le
/- The intuitionistic version of `Coheyting.boundary_le_boundary_sup_sup_boundary_inf_left`. Either proof can be obtained from the other using the equivalence of Heyting algebras and intuitionistic logic and duality between Heyting and co-Heyting algebras. It is crucial that the following proof be intuitionistic. -/
example: ∀ (a b : Prop), (a b ¬(a b)) ((a b) ¬(a b))a ¬a
example
(
a: Prop
a
b: Prop
b
:
Prop: Type
Prop
) : (
a: Prop
a
b: Prop
b
∨ ¬(
a: Prop
a
b: Prop
b
)) ∧ ((
a: Prop
a
b: Prop
b
) ∨ ¬(
a: Prop
a
b: Prop
b
)) →
a: Prop
a
∨ ¬
a: Prop
a
:=

Goals accomplished! 🐙
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop


(a b ¬(a b)) ((a b) ¬(a b))a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

ha✝: a

right✝: b

ha: a


intro.inl.intro.inl.inl
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

ha: a

right✝, hb: b


intro.inl.intro.inl.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

ha: a

right✝: b

hnab: ¬(a b)


intro.inl.intro.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab: ¬(a b)

ha: a


intro.inr.inl.inl
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab: ¬(a b)

hb: b


intro.inr.inl.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab✝: ¬(a b)

hnab: ¬(a b)


intro.inr.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop


(a b ¬(a b)) ((a b) ¬(a b))a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

ha✝: a

right✝: b

ha: a


intro.inl.intro.inl.inl
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

ha: a

right✝, hb: b


intro.inl.intro.inl.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

ha: a

right✝: b

hnab: ¬(a b)


intro.inl.intro.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab: ¬(a b)

ha: a


intro.inr.inl.inl
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab: ¬(a b)

hb: b


intro.inr.inl.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab✝: ¬(a b)

hnab: ¬(a b)


intro.inr.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop


(a b ¬(a b)) ((a b) ¬(a b))a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab✝: ¬(a b)

hnab: ¬(a b)


intro.inr.inr
a ¬a

Goals accomplished! 🐙
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop


(a b ¬(a b)) ((a b) ¬(a b))a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab: ¬(a b)

hb: b


intro.inr.inl.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab: ¬(a b)

hb: b


intro.inr.inl.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab✝: ¬(a b)

hnab: ¬(a b)


intro.inr.inr
a ¬a

Goals accomplished! 🐙
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop


(a b ¬(a b)) ((a b) ¬(a b))a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab✝: ¬(a b)

hnab: ¬(a b)


intro.inr.inr
a ¬a
α: Type ?u.11149

inst✝: CoheytingAlgebra α

a✝, b✝: α

a, b: Prop

hnab✝: ¬(a b)

hnab: ¬(a b)


intro.inr.inr
a ¬a

Goals accomplished! 🐙
theorem
boundary_le_boundary_sup_sup_boundary_inf_left: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a b : α}, a (a b) (a b)
boundary_le_boundary_sup_sup_boundary_inf_left
: ∂
a: α
a
≤ ∂ (
a: α
a
b: α
b
) ⊔ ∂ (
a: α
a
b: α
b
) :=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


((a a a (a b) a a a (a b)) a a a b a a (a b) b) a a a (b (a b)) a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_1
a a a (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_2
a a a (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_3
a a a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_5
a a a (b (a b))
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


((a a a (a b) a a a (a b)) a a a b a a (a b) b) a a a (b (a b)) a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_1
a a a (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_2
a a a (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_3
a a a b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_5
a a a (b (a b))
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


((a a a (a b) a a a (a b)) a a a b a a (a b) b) a a a (b (a b)) a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_5
a a a (b (a b))
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


((a a a (a b) a a a (a b)) a a a b a a (a b) b) a a a (b (a b)) a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


((a a a (a b) a a a (a b)) a a a b a a (a b) b) a a a (b (a b)) a a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
Codisjoint a ((a b) b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a (a b) b
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
Codisjoint ((a b)) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
Codisjoint ((a b)) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_4
a (a b) b

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
Codisjoint a ((a b))
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
Codisjoint a ((a b))
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


refine_6
a (a b) (a b)

Goals accomplished! 🐙
#align coheyting.boundary_le_boundary_sup_sup_boundary_inf_left
Coheyting.boundary_le_boundary_sup_sup_boundary_inf_left: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a b : α}, a (a b) (a b)
Coheyting.boundary_le_boundary_sup_sup_boundary_inf_left
theorem
boundary_le_boundary_sup_sup_boundary_inf_right: b (a b) (a b)
boundary_le_boundary_sup_sup_boundary_inf_right
: ∂
b: α
b
≤ ∂ (
a: α
a
b: α
b
) ⊔ ∂ (
a: α
a
b: α
b
) :=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (b a) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (a b) (a b)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (b a) (b a)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (b a) (b a)
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


b (a b) (a b)

Goals accomplished! 🐙
#align coheyting.boundary_le_boundary_sup_sup_boundary_inf_right
Coheyting.boundary_le_boundary_sup_sup_boundary_inf_right: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a b : α}, b (a b) (a b)
Coheyting.boundary_le_boundary_sup_sup_boundary_inf_right
theorem
boundary_sup_sup_boundary_inf: ∀ (a b : α), (a b) (a b) = a b
boundary_sup_sup_boundary_inf
(
a: α
a
b: α
b
:
α: Type ?u.13665
α
) : ∂ (
a: α
a
b: α
b
) ⊔ ∂ (
a: α
a
b: α
b
) = ∂
a: α
a
⊔ ∂
b: α
b
:=
le_antisymm: ∀ {α : Type ?u.13814} [inst : PartialOrder α] {a b : α}, a bb aa = b
le_antisymm
(
sup_le: ∀ {α : Type ?u.13837} [inst : SemilatticeSup α] {a b c : α}, a cb ca b c
sup_le
boundary_sup_le: ∀ {α : Type ?u.13915} [inst : CoheytingAlgebra α] {a b : α}, (a b) a b
boundary_sup_le
boundary_inf_le: ∀ {α : Type ?u.13941} [inst : CoheytingAlgebra α] {a b : α}, (a b) a b
boundary_inf_le
) <|
sup_le: ∀ {α : Type ?u.13966} [inst : SemilatticeSup α] {a b c : α}, a cb ca b c
sup_le
boundary_le_boundary_sup_sup_boundary_inf_left: ∀ {α : Type ?u.13990} [inst : CoheytingAlgebra α] {a b : α}, a (a b) (a b)
boundary_le_boundary_sup_sup_boundary_inf_left
boundary_le_boundary_sup_sup_boundary_inf_right: ∀ {α : Type ?u.14009} [inst : CoheytingAlgebra α] {a b : α}, b (a b) (a b)
boundary_le_boundary_sup_sup_boundary_inf_right
#align coheyting.boundary_sup_sup_boundary_inf
Coheyting.boundary_sup_sup_boundary_inf: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a b : α), (a b) (a b) = a b
Coheyting.boundary_sup_sup_boundary_inf
@[simp] theorem
boundary_idem: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a = a
boundary_idem
(
a: α
a
:
α: Type ?u.14033
α
) : ∂ ∂
a: α
a
= ∂
a: α
a
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


a = a

Goals accomplished! 🐙
#align coheyting.boundary_idem
Coheyting.boundary_idem: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a = a
Coheyting.boundary_idem
theorem
hnot_hnot_sup_boundary: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a a = a
hnot_hnot_sup_boundary
(
a: α
a
:
α: Type ?u.14338
α
) : ¬¬
a: α
a
⊔ ∂
a: α
a
=
a: α
a
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


(a a) (a a) = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


(a a) = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


a a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α


α: Type u_1

inst✝: CoheytingAlgebra α

a✝, b, a: α



Goals accomplished! 🐙
#align coheyting.hnot_hnot_sup_boundary
Coheyting.hnot_hnot_sup_boundary: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] (a : α), a a = a
Coheyting.hnot_hnot_sup_boundary
theorem
hnot_eq_top_iff_exists_boundary: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a : α}, a = b, b = a
hnot_eq_top_iff_exists_boundary
: ¬
a: α
a
=
: ?m.14948
↔ ∃
b: ?m.14991
b
, ∂
b: ?m.14991
b
=
a: α
a
:= ⟨fun
h: ?m.15034
h
=> ⟨
a: α
a
,

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a = a
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α

h: a =


a = a

Goals accomplished! 🐙
⟩,

Goals accomplished! 🐙
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(b, b = a) → a =
α: Type u_1

inst✝: CoheytingAlgebra α

b✝, b: α


intro
α: Type u_1

inst✝: CoheytingAlgebra α

a, b: α


(b, b = a) → a =

Goals accomplished! 🐙
#align coheyting.hnot_eq_top_iff_exists_boundary
Coheyting.hnot_eq_top_iff_exists_boundary: ∀ {α : Type u_1} [inst : CoheytingAlgebra α] {a : α}, a = b, b = a
Coheyting.hnot_eq_top_iff_exists_boundary
end Coheyting open Heyting section BooleanAlgebra variable [
BooleanAlgebra: Type ?u.15360 → Type ?u.15360
BooleanAlgebra
α: Type ?u.15351
α
] @[simp] theorem
Coheyting.boundary_eq_bot: ∀ {α : Type u_1} [inst : BooleanAlgebra α] (a : α), a =
Coheyting.boundary_eq_bot
(
a: α
a
:
α: Type ?u.15357
α
) : ∂
a: α
a
=
: ?m.15384
:=
inf_compl_eq_bot: ∀ {α : Type ?u.15432} [inst : HeytingAlgebra α] {a : α}, a a =
inf_compl_eq_bot
#align coheyting.boundary_eq_bot
Coheyting.boundary_eq_bot: ∀ {α : Type u_1} [inst : BooleanAlgebra α] (a : α), a =
Coheyting.boundary_eq_bot
end BooleanAlgebra