Heyting regular elements #
This file defines Heyting regular elements, elements of a Heyting algebra that are their own double complement, and proves that they form a boolean algebra.
From a logic standpoint, this means that we can perform classical logic within intuitionistic logic by simply double-negating all propositions. This is practical for synthetic computability theory.
Main declarations #
IsRegular
:a
is Heyting-regular ifaᶜᶜ = a
.Regular
: The subtype of Heyting-regular elements.Regular.BooleanAlgebra
: Heyting-regular elements form a boolean algebra.
References #
An element of a Heyting algebra is regular if its double complement is itself.
Equations
- Heyting.IsRegular a = (aᶜᶜ = a)
Instances For
Equations
- Heyting.IsRegular.decidablePred x✝ = inst✝ x✝ᶜᶜ x✝
theorem
Heyting.IsRegular.inf
{α : Type u_1}
[HeytingAlgebra α]
{a b : α}
(ha : IsRegular a)
(hb : IsRegular b)
:
theorem
Heyting.IsRegular.himp
{α : Type u_1}
[HeytingAlgebra α]
{a b : α}
(ha : IsRegular a)
(hb : IsRegular b)
:
theorem
Heyting.IsRegular.disjoint_compl_left_iff
{α : Type u_1}
[HeytingAlgebra α]
{a b : α}
(ha : IsRegular a)
:
theorem
Heyting.IsRegular.disjoint_compl_right_iff
{α : Type u_1}
[HeytingAlgebra α]
{a b : α}
(hb : IsRegular b)
:
@[reducible, inline]
abbrev
BooleanAlgebra.ofRegular
{α : Type u_1}
[HeytingAlgebra α]
(h : ∀ (a : α), Heyting.IsRegular (a ⊔ aᶜ))
:
A Heyting algebra with regular excluded middle is a boolean algebra.
Equations
- BooleanAlgebra.ofRegular h = BooleanAlgebra.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
The boolean algebra of Heyting regular elements.
Equations
- Heyting.Regular α = { a : α // Heyting.IsRegular a }
Instances For
Equations
- Heyting.Regular.instCoeOut = { coe := Heyting.Regular.val }
@[simp]
Equations
- Heyting.Regular.top = { top := ⟨⊤, ⋯⟩ }
Equations
- Heyting.Regular.bot = { bot := ⟨⊥, ⋯⟩ }
Equations
- Heyting.Regular.inf = { min := fun (a b : Heyting.Regular α) => ⟨↑a ⊓ ↑b, ⋯⟩ }
Equations
- Heyting.Regular.himp = { himp := fun (a b : Heyting.Regular α) => ⟨↑a ⇨ ↑b, ⋯⟩ }
Equations
- Heyting.Regular.hasCompl = { compl := fun (a : Heyting.Regular α) => ⟨(↑a)ᶜ, ⋯⟩ }
@[simp]
@[simp]
@[simp]
Equations
- Heyting.Regular.instInhabited = { default := ⊥ }
Equations
@[simp]
@[simp]
Regularization of a
. The smallest regular element greater than a
.
Equations
- Heyting.Regular.toRegular = { toFun := fun (a : α) => ⟨aᶜᶜ, ⋯⟩, monotone' := ⋯ }
Instances For
@[simp]
@[simp]
theorem
Heyting.Regular.toRegular_coe
{α : Type u_1}
[HeytingAlgebra α]
(a : Regular α)
:
toRegular ↑a = a
The Galois insertion between Regular.toRegular
and coe
.
Equations
- Heyting.Regular.gi = { choice := fun (a : α) (ha : ↑(Heyting.Regular.toRegular a) ≤ a) => ⟨a, ⋯⟩, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
Equations
- Heyting.Regular.lattice = Heyting.Regular.gi.liftLattice
@[simp]
Equations
- Heyting.Regular.instBooleanAlgebra = BooleanAlgebra.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
@[simp]
A decidable proposition is intuitionistically Heyting-regular.