Martin Escardo, 1-7 November 2023.
We prove the main results of [1] and [2] about automorphisms of Ω.
[1] Peter T. Johnstone. Automorphisms of Ω. Algebra Universalis,
9 (1979) 1-7.
https://doi.org/10.1007/BF02488012
[2] Peter Freyd. Choice and well-ordering. Annals of Pure and Applied
Logic 35 (1987) 149-166.
https://doi.org/10.1016/0168-0072(87)90060-1
https://core.ac.uk/download/pdf/81927529.pdf
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import Groups.Type
open import MLTT.Spartan
open import UF.Embeddings
open import UF.Equiv hiding (_≅_)
open import UF.Equiv-FunExt
open import UF.FunExt
open import UF.Logic
open import UF.Sets
open import UF.Sets-Properties
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.SubtypeClassifier hiding (Ω)
open import UF.SubtypeClassifier-Properties
module Higgs.AutomorphismsOfOmega
{𝓤 : Universe}
(fe : Fun-Ext)
(pe : propext 𝓤)
where
private
𝓤⁺ = 𝓤 ⁺
open import Higgs.InvolutionTheorem fe pe
open import Higgs.Rigidity fe pe
open Conjunction
open Implication fe
open Universal fe
can-recover-automorphism-from-its-value-at-⊤
: (𝕗 : Aut Ω)
(p : Ω)
→ ⌜ 𝕗 ⌝ p = (p ⇔ ⌜ 𝕗 ⌝ ⊤)
can-recover-automorphism-from-its-value-at-⊤ 𝕗@(f , _) p =
Ω-ext' pe fe
((f p = ⊤) ≃⟨ Ω-automorphism-swap-≃ 𝕗 ⟩
(f ⊤ = p) ≃⟨ ≃-sym (⇔-equiv-to-= pe (f ⊤) p) ⟩
((f ⊤ ⇔ p) = ⊤) ≃⟨ transport-≃ (_= ⊤) (⇔-sym pe (f ⊤) p) ⟩
((p ⇔ f ⊤) = ⊤) ■)
\end{code}
The Higgs object ℍ as defined by Johnstone in [1].
\begin{code}
is-widespread : Ω → 𝓤⁺ ̇
is-widespread r = (p : Ω) → ((p ⇔ r) ⇔ r) = p
being-widespread-is-prop : (r : Ω) → is-prop (is-widespread r)
being-widespread-is-prop r = Π-is-prop fe (λ p → Ω-is-set fe pe)
ℍ : 𝓤⁺ ̇
ℍ = Σ r ꞉ Ω , is-widespread r
⟪_⟫ : ℍ → Ω
⟪ r , _ ⟫ = r
⟪_⟫-is-widespread : (x : ℍ) → is-widespread ⟪ x ⟫
⟪ _ , i ⟫-is-widespread = i
ℍ-is-set : is-set ℍ
ℍ-is-set = subsets-of-sets-are-sets
Ω
is-widespread
(Ω-is-set fe pe)
(λ {r} → being-widespread-is-prop r)
to-ℍ-= : (r s : Ω) {i : is-widespread r} {j : is-widespread s}
→ r = s
→ (r , i) =[ ℍ ] (s , j)
to-ℍ-= r s {i} {j} = to-subtype-= being-widespread-is-prop
to-ℍ-=' : (x@(r , i) y@(s , j) : ℍ)
→ (r holds ↔ s holds)
→ x = y
to-ℍ-=' (r , i) (s , j) (f , g) = to-ℍ-= r s (Ω-extensionality pe fe f g)
\end{code}
The equality of the Higgs object has values in 𝓤⁺, but is equivalent
to an equality with values in 𝓤 and hence in Ω.
\begin{code}
_=ₕ_ : ℍ → ℍ → Ω
(p , p-is-ws) =ₕ (q , q-is-ws) = p ⇔ q
infix 4 _=ₕ_
=ₕ-agrees-with-= : (x y : ℍ) → ((x =ₕ y) holds) ≃ (x = y)
=ₕ-agrees-with-= x@(p , p-is-ws) y@(q , q-is-ws)
= logically-equivalent-props-are-equivalent
(holds-is-prop (x =ₕ y))
ℍ-is-set
(to-ℍ-=' x y)
(λ (e : x = y) → idtofun _ _ (ap (_holds ∘ ⟪_⟫) e) ,
idtofun _ _ (ap (_holds ∘ ⟪_⟫) (e ⁻¹)))
Ω-automorphisms-are-⇔-embeddings : (𝕗 : Aut Ω)
(p q : Ω)
→ (p ⇔ q) = (⌜ 𝕗 ⌝ p ⇔ ⌜ 𝕗 ⌝ q)
Ω-automorphisms-are-⇔-embeddings 𝕗@(f , f-is-equiv) p q =
Ω-ext' pe fe
(((p ⇔ q) = ⊤) ≃⟨ I ⟩
(p = q) ≃⟨ II ⟩
(f p = f q) ≃⟨ III ⟩
((f p ⇔ f q) = ⊤) ■)
where
I = ⇔-equiv-to-= pe p q
II = embedding-criterion-converse' f (equivs-are-embeddings' 𝕗) p q
III = ≃-sym (⇔-equiv-to-= pe (f p) (f q))
eval-at-⊤-is-widespread : (𝕗 : Aut Ω) → is-widespread (eval-at-⊤ 𝕗)
eval-at-⊤-is-widespread 𝕗@(f , _) p = II
where
I = p ⇔ ⊤ =⟨ I₀ ⟩
f p ⇔ f ⊤ =⟨ I₁ ⟩
(p ⇔ f ⊤) ⇔ f ⊤ ∎
where
I₀ = Ω-automorphisms-are-⇔-embeddings 𝕗 p ⊤
I₁ = ap (_⇔ f ⊤) (can-recover-automorphism-from-its-value-at-⊤ 𝕗 p)
II : ((p ⇔ f ⊤) ⇔ f ⊤) = p
II = transport (_= p) I (⊤-⇔-neutral pe p)
Aut-Ω-to-ℍ : Aut Ω → ℍ
Aut-Ω-to-ℍ 𝕗 = eval-at-⊤ 𝕗 , eval-at-⊤-is-widespread 𝕗
ℍ-to-Aut-Ω : ℍ → Aut Ω
ℍ-to-Aut-Ω (r , i) = (λ p → p ⇔ r) , involutions-are-equivs _ i
η-ℍ : ℍ-to-Aut-Ω ∘ Aut-Ω-to-ℍ ∼ id
η-ℍ 𝕗@(f , f-is-equiv) = to-≃-= fe h
where
h : (λ p → p ⇔ f ⊤) ∼ f
h p = (can-recover-automorphism-from-its-value-at-⊤ 𝕗 p)⁻¹
ε-ℍ : Aut-Ω-to-ℍ ∘ ℍ-to-Aut-Ω ∼ id
ε-ℍ (r , i) = to-ℍ-= (⊤ ⇔ r) r (⊤-⇔-neutral' pe r)
ℍ-to-Aut-Ω-is-equiv : is-equiv ℍ-to-Aut-Ω
ℍ-to-Aut-Ω-is-equiv = qinvs-are-equivs ℍ-to-Aut-Ω (Aut-Ω-to-ℍ , ε-ℍ , η-ℍ)
Aut-Ω-to-ℍ-is-equiv : is-equiv Aut-Ω-to-ℍ
Aut-Ω-to-ℍ-is-equiv = inverses-are-equivs ℍ-to-Aut-Ω ℍ-to-Aut-Ω-is-equiv
opaque
ℍ-to-Aut-Ω-equivalence : ℍ ≃ Aut Ω
ℍ-to-Aut-Ω-equivalence = ℍ-to-Aut-Ω , ℍ-to-Aut-Ω-is-equiv
\end{code}
The type Aut Ω is a group under composition, the symmetric group on Ω,
where the neutral element is the identity automorphism and the inverse
of any element is itself. That is, Aut Ω is a boolean group, or a
group of order 2. We now show that the group structure on ℍ induced by
the above equivalence is given by logical equivalence _⇔_ with neutral
element ⊤.
\begin{code}
open import Groups.Type
open import Groups.Symmetric fe
Ωₛ : Group 𝓤⁺
Ωₛ = symmetric-group Ω (Ω-is-set fe pe)
opaque
𝓗-construction : Σ s ꞉ Group-structure ℍ , is-hom (ℍ , s) Ωₛ ℍ-to-Aut-Ω
𝓗-construction = transport-Group-structure Ωₛ ℍ ℍ-to-Aut-Ω ℍ-to-Aut-Ω-is-equiv
𝓗 : Group 𝓤⁺
𝓗 = ℍ , pr₁ 𝓗-construction
𝓗-to-Ωₛ-isomorphism : 𝓗 ≅ Ωₛ
𝓗-to-Ωₛ-isomorphism = ℍ-to-Aut-Ω , ℍ-to-Aut-Ω-is-equiv , pr₂ 𝓗-construction
𝓚-isomorphism-explicitly : (x : ℍ) (p : Ω)
→ ⌜ ℍ-to-Aut-Ω x ⌝ p = (p ⇔ ⟪ x ⟫)
𝓚-isomorphism-explicitly x p = refl
\end{code}
The unit of 𝓗 is ⊤ and its multiplication is logical equivalence.
\begin{code}
opaque
unfolding 𝓗-construction
𝓗-unit : ⟪ unit 𝓗 ⟫ = ⊤
𝓗-unit = refl
𝓗-multiplication : (x y : ℍ) → ⟪ x ·⟨ 𝓗 ⟩ y ⟫ = (⟪ x ⟫ ⇔ ⟪ y ⟫)
𝓗-multiplication x y =
⟪ x ·⟨ 𝓗 ⟩ y ⟫ =⟨ refl ⟩
(⊤ ⇔ ⟪ x ⟫) ⇔ ⟪ y ⟫ =⟨ ap (_⇔ ⟪ y ⟫) (⊤-⇔-neutral' pe ⟪ x ⟫) ⟩
⟪ x ⟫ ⇔ ⟪ y ⟫ ∎
corollary-⊤ : is-widespread ⊤
corollary-⊤ = ⟪ unit 𝓗 ⟫-is-widespread
𝕥 : ℍ
𝕥 = ⊤ , corollary-⊤
corollary-⇔ : (r s : Ω)
→ is-widespread r
→ is-widespread s
→ is-widespread (r ⇔ s)
corollary-⇔ r s i j = II
where
x y : ℍ
x = (r , i)
y = (s , j)
I : ⟪ x ·⟨ 𝓗 ⟩ y ⟫ = (r ⇔ s)
I = 𝓗-multiplication x y
II : is-widespread (r ⇔ s)
II = transport is-widespread I ⟪ x ·⟨ 𝓗 ⟩ y ⟫-is-widespread
corollary-⇔-assoc : (r s t : Ω)
→ is-widespread r
→ is-widespread s
→ is-widespread t
→ (r ⇔ s) ⇔ t = r ⇔ (s ⇔ t)
corollary-⇔-assoc r s t i j k = I
where
_·_ : ℍ → ℍ → ℍ
x · y = x ·⟨ 𝓗 ⟩ y
x y z : ℍ
x = (r , i)
y = (s , j)
z = (t , k)
I = (r ⇔ s) ⇔ t =⟨ refl ⟩
(⟪ x ⟫ ⇔ ⟪ y ⟫) ⇔ ⟪ z ⟫ =⟨ ap (_⇔ ⟪ z ⟫) ((𝓗-multiplication _ _)⁻¹) ⟩
⟪ x · y ⟫ ⇔ ⟪ z ⟫ =⟨ (𝓗-multiplication _ _)⁻¹ ⟩
⟪ (x · y) · z ⟫ =⟨ ap ⟪_⟫ (assoc 𝓗 x y z) ⟩
⟪ x · (y · z) ⟫ =⟨ 𝓗-multiplication _ _ ⟩
⟪ x ⟫ ⇔ ⟪ y · z ⟫ =⟨ ap (⟪ x ⟫ ⇔_) (𝓗-multiplication _ _) ⟩
⟪ x ⟫ ⇔ (⟪ y ⟫ ⇔ ⟪ z ⟫) =⟨ refl ⟩
r ⇔ (s ⇔ t) ∎
\end{code}
Alternative characterization of the widespread property, as stated in
Johnstone's Elephant.
\begin{code}
open import UF.PropTrunc
module _ (pt : propositional-truncations-exist) where
open PropositionalTruncation pt hiding (_∨_ ; ∨-elim)
open Disjunction pt
is-widespread' : Ω → 𝓤⁺ ̇
is-widespread' r = (p : Ω) → (p ∨ (p ⇒ r)) holds
widespread'-gives-widespread : (r : Ω)
→ is-widespread' r
→ is-widespread r
widespread'-gives-widespread r w' = w
where
I : (p : Ω)
→ (p holds + (p holds → r holds))
→ ((p ⇔ r) ⇔ r) = p
I p (inl h) =
(p ⇔ r) ⇔ r =⟨ ap (λ - → (- ⇔ r) ⇔ r) I₀ ⟩
(⊤ ⇔ r) ⇔ r =⟨ ap (_⇔ r) (⊤-⇔-neutral' pe r) ⟩
r ⇔ r =⟨ ⇔-refl pe r ⟩
⊤ =⟨ I₀ ⁻¹ ⟩
p ∎
where
I₀ : p = ⊤
I₀ = holds-gives-equal-⊤ pe fe p h
I p (inr f) = Ω-ext pe fe I₁ I₂
where
have-f : (p ⇒ r) holds
have-f = f
I₁ : (p ⇔ r) ⇔ r = ⊤ → p = ⊤
I₁ e₁ =
p =⟨ I₄ ⟩
r =⟨ (⇔-gives-= pe _ _ e₁)⁻¹ ⟩
p ⇔ r =⟨ =-gives-⇔ pe _ _ I₄ ⟩
⊤ ∎
where
I₂ : r ⇒ (p ⇔ r) = ⊤
I₂ = ∧-elim-R pe fe _ _ e₁
I₃ : (r ⇒ (p ⇔ r)) holds
I₃ = equal-⊤-gives-holds _ I₂
g : (r ⇒ p) holds
g r-holds = ∧-Elim-R (p ⇒ r) (r ⇒ p) (I₃ r-holds) r-holds
I₄ : p = r
I₄ = Ω-extensionality pe fe f g
I₂ : p = ⊤ → (p ⇔ r) ⇔ r = ⊤
I₂ e₂ =
(p ⇔ r) ⇔ r =⟨ ap (λ - → (- ⇔ r) ⇔ r) e₂ ⟩
(⊤ ⇔ r) ⇔ r =⟨ ap (_⇔ r) (⊤-⇔-neutral' pe r) ⟩
r ⇔ r =⟨ ⇔-refl pe r ⟩
⊤ ∎
w : is-widespread r
w p = ∥∥-rec (Ω-is-set fe pe) (I p) (w' p)
\end{code}
TODO. Write the above proof purely equationally. In order to do this,
first formulate and prove the equational definition of Heyting algebra
in other modules. Or to begin with, for simplicity, just prove in
UF.Logic that Ω satisfies the equations that define a lattice to be a
Heyting algebra.
\begin{code}
widespread-gives-widespread' : (r : Ω)
→ is-widespread r
→ is-widespread' r
widespread-gives-widespread' r@(R , R-is-prop) w = IV
where
have-w : (p : Ω) → ((p ⇔ r) ⇔ r) = p
have-w = w
module _ (p@(P , P-is-prop) : Ω) where
P' : 𝓤 ̇
P' = ∥ P + (P → R) ∥
I : ((P' ↔ R) ↔ R) ↔ P'
I = equal-⊤-gives-holds _ (=-gives-⇔ pe _ _ (w (P' , ∥∥-is-prop)))
II : (P' → R) → R
II f = f ∣ inr (λ (π : P) → f ∣ inl π ∣) ∣
III : P'
III = lr-implication I
((λ (e : P' ↔ R) → II (lr-implication e)) ,
(λ (ρ : R) → (λ (_ : P') → ρ) ,
(λ (_ : R) → ∣ inr (λ (_ : P) → ρ) ∣)))
IV : (p ∨ (p ⇒ r)) holds
IV = III
\end{code}