[Agda] Recursion on transfinite numbers.
Serge Leblanc
33dbqnxpy7if at gmail.com
Wed Feb 19 12:46:44 CET 2025
Dear All,
Can someone help me to realize the principle of recursion on transfinite
numbers ?
I based it on the work of Fredrik Nordvall Forsberg but he uses an old
version of the Cubical libraries.
Cordialement,
--
Serge Leblanc
------------------------------------------------------------------------
gpg --search-keys 0xD2B8A2825F8DABB7
GnuPG Fingerprint = 123E 9312 453A 8F8E 7FDB ABD7 D2B8 A282 5F8D ABB7
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20250219/1bc88571/attachment.html>
-------------- next part --------------
{-# OPTIONS --cubical --safe #-}
module HITOrdinal where
open import Cubical.Core.Primitives using (_≡_; Level; Type)
open import Cubical.Foundations.Prelude using (_∙_; refl; isSet; isProp; cong; PathP; toPathP; isProp→isSet)
open import Cubical.Foundations.HLevels using (isOfHLevel→isOfHLevelDep)
open import Cubical.Data.Nat using (ℕ; zero; suc)
open import Cubical.Foundations.Everything public
variable ℓ ℓ' ℓ'' : Level
private
variable
A : Type ℓ
x y z : A
infix 1 begin_
infixr 2 _≡⟨_⟩_
infix 3 _∎
begin_ : x ≡ y → x ≡ y
begin x≡y = x≡y
_≡⟨_⟩_ : (x : A) → x ≡ y → y ≡ z → x ≡ z
x ≡⟨ x≡y ⟩ y≡z = x≡y ∙ y≡z
_∎ : (x : A) → x ≡ x
_ ∎ = refl
infixr 40 ω^_⊕_
data HITOrd : Type₀ where
𝟎 : HITOrd
ω^_⊕_ : HITOrd → HITOrd → HITOrd
swap : ∀ a b c → ω^ a ⊕ ω^ b ⊕ c ≡ ω^ b ⊕ ω^ a ⊕ c
trunc : isSet HITOrd
fromNat : ℕ → HITOrd
fromNat zero = 𝟎
fromNat (suc n) = ω^ 𝟎 ⊕ (fromNat n)
ind : (A : HITOrd → Type ℓ)
→ (a₀ : A 𝟎)
→ (_⋆_ : ∀ {x y} → A x → A y → A (ω^ x ⊕ y))
→ (⋆swap : ∀ {x y z} (a : A x) (b : A y) (c : A z)
→ PathP _ (a ⋆ (b ⋆ c)) (b ⋆ (a ⋆ c)))
→ (sv : ∀ {x} → isSet (A x))
→ ∀ x → A x
ind A a₀ _⋆_ ⋆swap sv 𝟎 = a₀
ind A a₀ _⋆_ ⋆swap sv (ω^ x ⊕ y) = ind A a₀ _⋆_ ⋆swap sv x ⋆ ind A a₀ _⋆_ ⋆swap sv y
ind A a₀ _⋆_ ⋆swap sv (swap x y z i) = ⋆swap
(ind A a₀ _⋆_ ⋆swap sv x)
(ind A a₀ _⋆_ ⋆swap sv y)
(ind A a₀ _⋆_ ⋆swap sv z) i
ind A a₀ _⋆_ ⋆swap sv (trunc a b p q i₁ i₂) = {! isOfHLevel→isOfHLevelDep 2 !}
{-
indProp : {P : HITOrd → Type ℓ}
→ (∀ {x} → isProp (P x))
→ P 𝟎
→ (∀ {x y} → P x → P y → P (ω^ x ⊕ y))
→ ∀ x → P x
indProp pv p₀ _⋆_ =
ind _ p₀ _⋆_ (λ a b c → toPathP (pv _ _)) (isProp→isSet pv _ _)
-}
example : (a b c : HITOrd) → ω^ a ⊕ ω^ b ⊕ ω^ c ⊕ 𝟎 ≡ ω^ c ⊕ ω^ b ⊕ ω^ a ⊕ 𝟎
example a b c = begin
ω^ a ⊕ ω^ b ⊕ ω^ c ⊕ 𝟎 ≡⟨ swap a b _ ⟩
ω^ b ⊕ ω^ a ⊕ ω^ c ⊕ 𝟎 ≡⟨ cong (ω^ b ⊕_) (swap a c _) ⟩
ω^ b ⊕ ω^ c ⊕ ω^ a ⊕ 𝟎 ≡⟨ swap b c _ ⟩
ω^ c ⊕ ω^ b ⊕ ω^ a ⊕ 𝟎 ∎
ω^⟨_⟩ : HITOrd → HITOrd
ω^⟨ a ⟩ = ω^ a ⊕ 𝟎
𝟏 ω : HITOrd
𝟏 = ω^⟨ 𝟎 ⟩
ω = ω^⟨ 𝟏 ⟩
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xD2B8A2825F8DABB7.asc
Type: application/pgp-keys
Size: 1400 bytes
Desc: OpenPGP public key
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20250219/1bc88571/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 236 bytes
Desc: OpenPGP digital signature
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20250219/1bc88571/attachment.sig>
More information about the Agda
mailing list