Heyting regular elements #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines Heyting regular elements, elements of an 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 #
is_regular
:a
is Heyting-regular ifaᶜᶜ = a
.regular
: The subtype of Heyting-regular elements.regular.boolean_algebra
: Heyting-regular elements form a boolean algebra.
References #
An element of an Heyting algebra is regular if its double complement is itself.
Equations
- heyting.is_regular a = (aᶜᶜ = a)
Instances for heyting.is_regular
Equations
- heyting.is_regular.decidable_pred = λ (_x : α), _inst_2 _xᶜᶜ _x
A Heyting algebra with regular excluded middle is a boolean algebra.
Equations
- boolean_algebra.of_regular h = have this : ∀ (a : α), is_compl a aᶜ, from _, {sup := heyting_algebra.sup _inst_1, le := heyting_algebra.le _inst_1, lt := heyting_algebra.lt _inst_1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := heyting_algebra.inf _inst_1, inf_le_left := _, inf_le_right := _, le_inf := _, le_sup_inf := _, compl := heyting_algebra.compl _inst_1, sdiff := λ (x y : α), distrib_lattice.inf x (heyting_algebra.compl y), himp := heyting_algebra.himp _inst_1, top := heyting_algebra.top _inst_1, bot := heyting_algebra.bot _inst_1, inf_compl_le_bot := _, top_le_sup_compl := _, le_top := _, bot_le := _, sdiff_eq := _, himp_eq := _}
The boolean algebra of Heyting regular elements.
Equations
- heyting.regular α = {a // heyting.is_regular a}
Instances for heyting.regular
Equations
Equations
- heyting.regular.has_inf = {inf := λ (a b : heyting.regular α), ⟨↑a ⊓ ↑b, _⟩}
Equations
- heyting.regular.has_himp = {himp := λ (a b : heyting.regular α), ⟨↑a ⇨ ↑b, _⟩}
Equations
- heyting.regular.has_compl = {compl := λ (a : heyting.regular α), ⟨(↑a)ᶜ, _⟩}
Equations
Equations
- heyting.regular.bounded_order = bounded_order.lift coe heyting.regular.bounded_order._proof_1 heyting.regular.coe_top heyting.regular.coe_bot
Regularization of a
. The smallest regular element greater than a
.
The Galois insertion between regular.to_regular
and coe
.
Equations
- heyting.regular.boolean_algebra = {sup := lattice.sup heyting.regular.lattice, le := lattice.le heyting.regular.lattice, lt := lattice.lt heyting.regular.lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := lattice.inf heyting.regular.lattice, inf_le_left := _, inf_le_right := _, le_inf := _, le_sup_inf := _, compl := has_compl.compl heyting.regular.has_compl, sdiff := λ (x y : heyting.regular α), distrib_lattice.inf x yᶜ, himp := has_himp.himp heyting.regular.has_himp, top := bounded_order.top heyting.regular.bounded_order, bot := bounded_order.bot heyting.regular.bounded_order, inf_compl_le_bot := _, top_le_sup_compl := _, le_top := _, bot_le := _, sdiff_eq := _, himp_eq := _}
A decidable proposition is intuitionistically Heyting-regular.