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:ais 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
@[instance_reducible]
Equations
- Heyting.IsRegular.decidablePred x✝ = inst✝ x✝ᶜᶜ x✝
theorem Heyting.IsRegular.inf {α : Type u_1} [HeytingAlgebra α] {a b : α} (ha : IsRegular a) (hb : IsRegular b) :
IsRegular (a ⊓ 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
- One or more equations did not get rendered due to their size.
Instances For
The Boolean algebra of Heyting regular elements.
Equations
- Heyting.Regular α = { a : α // Heyting.IsRegular a }
Instances For
@[instance_reducible]
Equations
@[simp]
@[instance_reducible]
@[instance_reducible]
@[instance_reducible]
Equations
- Heyting.Regular.inf = { min := fun (a b : Heyting.Regular α) => ⟨↑a ⊓ ↑b, ⋯⟩ }
@[instance_reducible]
Equations
- Heyting.Regular.himp = { himp := fun (a b : Heyting.Regular α) => ⟨↑a ⇨ ↑b, ⋯⟩ }
@[instance_reducible]
Equations
- Heyting.Regular.instCompl = { compl := fun (a : Heyting.Regular α) => ⟨(↑a)ᶜ, ⋯⟩ }
@[simp]
@[simp]
@[simp]
@[instance_reducible]
Equations
- Heyting.Regular.instInhabited = { default := ⊥ }
@[instance_reducible]
instance Heyting.Regular.instPartialOrder {α : Type u_1} [HeytingAlgebra α] :
PartialOrder (Regular α)
@[instance_reducible]
Equations
@[simp]
@[simp]
Regularization of a. The smallest regular element greater than a.
Instances For
@[simp]
@[simp]
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
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[simp]
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[simp]
A decidable proposition is intuitionistically Heyting-regular.