proved: f(1)≡id in EMSpace

This commit is contained in:
Michael Zhang 2024-12-12 15:14:18 -06:00
parent 7e55ae9b79
commit 4bbcf990d2
2 changed files with 93 additions and 34 deletions

View file

@ -152,16 +152,21 @@ postulate
part2 : {e : term} {τ : type} term-rel τ e safe e
part2 t s with res decide-irred {! !} = {! !}
fundamental type-`unit = λ γ x e-term f where
fundamental type-`unit γ x = e-term f where
f : {n : } (e' : term) steps n `unit e' irreducible e' value-rel unit e'
f e' zero i = v-`unit
fundamental type-`true = λ γ x e-term f where
fundamental type-`true γ x = e-term f where
f : {n : } (e' : term) steps n `true e' irreducible e' value-rel bool e'
f e' zero i = v-`true
fundamental type-`false = λ γ x e-term f where
fundamental type-`false γ x = e-term f where
f : {n : } (e' : term) steps n `false e' irreducible e' value-rel bool e'
f e' zero i = v-`false
fundamental (type-`ifthenelse p p₁ p₂) = {! !}
fundamental {τ = τ} (type-`ifthenelse {e = e} {e₁ = e₁} {e₂ = e₂} p p₁ p₂) γ x = e-term (f e) where
f : (e : term) {n : } (e' : term) steps n (`if e then e₁ else e₂) e' irreducible e' value-rel τ e'
f e e' zero i = ⊥-elim {! e !}
f e e' (suc n x s) i = {! !}
fundamental (type-`x p) γ (cons {v = v} γ-good v-value) = e-term (λ e' s i {! !})
fundamental (type-`λ p) = λ γ x {! !}
fundamental (type-∙ p p₁) = {! !}
fundamental (type-`λ p) γ x = e-term (λ e' steps irred {! v-`λ[_]_ !})
fundamental {τ = τ} (type-∙ {e₁ = e₁} {e₂ = e₂} p p₁) γ γ-good = e-term f where
f : {n : } (e' : term) steps n (e₁ e₂) e' irreducible e' value-rel τ e'
f e' s i = {! !}

View file

@ -7,12 +7,13 @@ open import Cubical.Algebra.Group.Base
open import Cubical.Algebra.Monoid
open import Cubical.Algebra.Semigroup
open import Cubical.Algebra.Group.Morphisms
open import Cubical.Data.Nat
open import Cubical.Data.Nat hiding (_·_)
open import Cubical.Foundations.Function
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.GroupoidLaws
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Isomorphism
open import Cubical.Foundations.Univalence
open import Cubical.Foundations.Pointed
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Structure
@ -20,19 +21,53 @@ open import Cubical.Homotopy.Loopspace
open import Cubical.Homotopy.Group.Base
open import Cubical.HITs.SetTruncation as ST hiding (rec)
open import Cubical.HITs.GroupoidTruncation as GT hiding (rec)
open import Cubical.HITs.Truncation
variable
' : Level
data K1 { : Level} (G : Group ) : Type where
base : K1 G
data K[_,1] { : Level} (G : Group ) : Type where
base : K[ G ,1]
loop : G base base
loop-1g : loop (str G .GroupStr.1g) refl
loop-∙ : (x y : G ) loop (str G .GroupStr._·_ x y) loop y loop x
loop-∙ : (x y : G ) loop (G .snd .GroupStr._·_ x y) loop y loop x
squash : (x y : K[ G ,1]) (p q : x y) (r s : p q) r s
module _ where
open import Cubical.HITs.S1 renaming (base to S¹-base; loop to S¹-loop)
open import Cubical.Data.Int
open import Cubical.Algebra.Group.Instances.Int
test : K[ Group ,1]
test = isoToEquiv (iso f g {! !} {! !}) where
loop^_ : S¹-base S¹-base
loop^ pos (suc n) = (loop^ (pos n)) S¹-loop
loop^ pos zero = refl
loop^ negsuc zero = sym S¹-loop
loop^ negsuc (suc n) = (loop^ (negsuc n)) sym S¹-loop
Code1 : Type
Code1 S¹-base =
Code1 (S¹-loop i) = sucPath i
-- f : S¹ → K[ Group ,1]
-- f S¹-base = base
-- f (S¹-loop i) = loop (subst Code1 {! !} {! !}) i
f : K[ Group ,1]
f S¹-base = base
f (S¹-loop i) = loop (subst Code1 {! !} {! !}) i
g : K[ Group ,1]
g base = S¹-base
g (loop x i) = {! !}
g (loop-1g i i₁) = {! !}
g (loop-∙ x y i i₁) = {! !}
g (squash x x₁ p q r s i i₁ i₂) = {! !}
module _ (G : Group ) where
open GroupStr (G .snd)
K[_,1] : (G : Group ) Type
K[ G ,1] = K1 G ∥₃
-------------------------------------------------------------------------------
-- Properties
@ -42,37 +77,56 @@ K[ G ,1] = ∥ K1 G ∥₃
module _ (G : Group ) where
open GroupStr (G .snd)
_⊙_ = _·_
K[G,1] = K[ G ,1]
K[G,1]∙ : Pointed
K[G,1]∙ = K[G,1] , base ∣₃
K[G,1]∙ = K[G,1] , base
ΩK[G,1] = Ω K[G,1]∙
π1K[G,1] = π 1 K[G,1]∙
-- Since K[G, 1] is a 1-type, then all loops in K[G, 1] are identical
lemma1 : isOfHLevel 3 K[ G ,1]
lemma1 = {! !}
lemma1 : isOfHLevel 3 K[G,1]
lemma1 = squash
lemma2 : isOfHLevel 2 ΩK[G,1]
lemma2 x y p q i j k = {! !}
lemma2 = squash base base
ΩSetG : Pointed (-suc )
ΩSetG = (hSet ) , (fst G) , is-set
module Codes-aux where
f : (g : G ) G G
f x = isoToEquiv (iso (λ y y x) (λ y y inv x) fg gf) where
fg : section (λ y y x) (λ y y inv x)
fg b = sym (·Assoc b (inv x) x) cong (b ⊙_) (·InvL x) ·IdR b
gf : retract (λ y y x) (λ y y inv x)
gf a = sym (·Assoc a x (inv x)) cong (a ⊙_) (·InvR x) ·IdR a
f1≡id : f 1g idEquiv G
f1≡id i = fnEq i , isEquivEq i where
fnEq : f 1g .fst idEquiv G .fst
fnEq i x = ·IdR x i
isEquivEq : PathP (λ i isEquiv (fnEq i)) (f 1g .snd) (idEquiv G .snd)
isEquivEq = toPathP (isPropIsEquiv (idfun G ) (subst isEquiv fnEq (f 1g .snd)) (idEquiv G .snd))
Codes : K[G,1] hSet
Codes = GT.rec isGroupoidHSet Codes' where
CodesFunc : G G G
CodesFunc g = {! g !}
Codes base = G , is-set
Codes (loop x i) = {! !}
Codes (loop-1g i i₁) = {! !}
Codes (loop-∙ x y i i₁) = {! !}
Codes (squash x x₁ p q r s i i₁ i₂) = {! !}
Codes' : K1 G hSet
Codes' base = G , is-set
Codes' (loop x i) = G , is-set
Codes' (loop-1g i i₁) = {! !}
Codes' (loop-∙ x y i i₁) = {! !}
encode : (z : K[G,1]) base ∣₃ z Codes z
encode z p = {! !}
encode : (z : K[G,1]) base z Codes z
encode z p = subst (λ x Codes x .fst) p 1g
decode : G base base
decode = loop
decode x = loop x
encode-decode : (z : G ) encode base (decode z) z
encode-decode z = {! !}
ΩKG1≃G' : GroupIso {! ΩK[G,1] !} G
@ -81,12 +135,12 @@ module _ (G : Group ) where
f : ΩK[G,1] G
f p = {! !}
ΩKG1-idem-trunc : π 1 (K[ G ,1] , base ∣₃) ΩK[G,1]
ΩKG1-idem-trunc : π 1 (K[G,1]∙) ΩK[G,1]
ΩKG1-idem-trunc = isoToEquiv (setTruncIdempotentIso lemma2)
π₁KG1≃G : πGr 0 (K[ G ,1] , base ∣₃) G
π₁KG1≃G : πGr 0 (K[G,1]∙) G
π₁KG1≃G = compEquiv ΩKG1-idem-trunc ΩKG1≃G
-- Uniqueness
module _ (n : ) (X Y : Pointed ) where