@@ -33,7 +33,11 @@ module _ (G : Group ℓ) where
3333 GroupHasHeapStr : HeapStr ⟨ G ⟩
3434 GroupHasHeapStr .[_,_,_] a b c = a · inv b · c
3535 GroupHasHeapStr .isHeap .is-set = G-is-set
36- GroupHasHeapStr .isHeap .assoc a b c d e = ·Assoc a (inv b) (c · inv d · e) ∙∙ ·Assoc (a · inv b) c (inv d · e) ∙∙ congL _·_ (sym (·Assoc a (inv b) c))
36+ GroupHasHeapStr .isHeap .assoc a b c d e =
37+ a · inv b · c · inv d · e ≡⟨ ·Assoc a (inv b) (c · inv d · e) ⟩
38+ (a · inv b) · c · inv d · e ≡⟨ ·Assoc (a · inv b) c (inv d · e) ⟩
39+ ((a · inv b) · c) · inv d · e ≡⟨ congL _·_ (sym (·Assoc a (inv b) c)) ⟩
40+ (a · inv b · c) · inv d · e ∎
3741 GroupHasHeapStr .isHeap .idl a b = ·GroupAutomorphismL G a .Iso.rightInv b
3842 GroupHasHeapStr .isHeap .idr a b = congR _·_ (·InvL b) ∙ ·IdR a
3943 GroupHasHeapStr .isHeap .inhab = ∣ 1g ∣₁
@@ -56,10 +60,12 @@ module HeapTheory (H : Heap ℓ) where
5660 -- Wagner's theory of generalized heaps, theorem 8.2.13
5761 assocl : ∀ a b c d e → [ a , [ d , c , b ] , e ] ≡ [ [ a , b , c ] , d , e ]
5862 assocl a b c d e =
59- [ a , [ d , c , b ] , e ] ≡⟨ cong [_, [ d , c , b ] , e ] (sym (wriggle a b c d)) ⟩
60- [ [ [ a , b , c ] , d , [ d , c , b ] ] , [ d , c , b ] , e ] ≡⟨ sym (assoc [ a , b , c ] d [ d , c , b ] [ d , c , b ] e) ⟩
61- [ [ a , b , c ] , d , [ [ d , c , b ] , [ d , c , b ] , e ] ] ≡⟨ cong [ [ a , b , c ] , d ,_] (idl [ d , c , b ] e) ⟩
62- [ [ a , b , c ] , d , e ] ∎
63+ [ a , [ d , c , b ] , e ] ≡⟨ cong [_, [ d , c , b ] , e ] (sym (wriggle a b c d)) ⟩
64+ [ [ [ a , b , c ] , d , [ d , c , b ] ] , [ d , c , b ] , e ]
65+ ≡⟨ sym (assoc [ a , b , c ] d [ d , c , b ] [ d , c , b ] e) ⟩
66+ [ [ a , b , c ] , d , [ [ d , c , b ] , [ d , c , b ] , e ] ]
67+ ≡⟨ cong [ [ a , b , c ] , d ,_] (idl [ d , c , b ] e) ⟩
68+ [ [ a , b , c ] , d , e ] ∎
6369
6470 assocr : ∀ a b c d e → [ a , [ d , c , b ] , e ] ≡ [ a , b , [ c , d , e ] ]
6571 assocr a b c d e =
@@ -75,7 +81,8 @@ module HeapTheory (H : Heap ℓ) where
7581 c ∎
7682
7783StructureGroup : Heap ℓ → Group ℓ
78- StructureGroup H = toldYaSo inhab module StructureGroup where
84+ StructureGroup H = go inhab
85+ module StructureGroup where
7986 open GroupStr hiding (is-set)
8087 open HeapTheory H
8188
@@ -86,7 +93,7 @@ StructureGroup H = toldYaSo inhab module StructureGroup where
8693 fromPoint e .snd .inv a = [ e , a , e ]
8794 fromPoint e .snd .isGroup = makeIsGroup is-set
8895 (λ x y z → assoc x e y e z)
89- (λ x → idr x e) -- is that a maybeJosiah reference
96+ (λ x → idr x e)
9097 (λ x → idl e x)
9198 (λ x → assoc x e e x e ∙∙ cong [_, x , e ] (idr x e) ∙∙ idl x e)
9299 (λ x → sym (assoc e x e e x) ∙∙ cong [ e , x ,_] (idl e x) ∙∙ idr e x)
@@ -95,7 +102,7 @@ StructureGroup H = toldYaSo inhab module StructureGroup where
95102 φ e e' .fst x = [ e' , e , x ]
96103 φ e e' .snd = makeIsGroupHom λ x y →
97104 [ e' , e , [ x , e , y ] ] ≡⟨ assoc e' e x e y ⟩
98- [ [ e' , e , x ] , e , y ] ≡⟨ cong [ [ e' , e , x ] ,_, y ] (sym (idr e e')) ⟩
105+ [ [ e' , e , x ] , e , y ] ≡⟨ congR [_ ,_, y ] (sym (idr e e')) ⟩
99106 [ [ e' , e , x ] , [ e , e' , e' ] , y ] ≡⟨ assocr [ e' , e , x ] e' e' e y ⟩
100107 [ [ e' , e , x ] , e' , [ e' , e , y ] ] ∎
101108
@@ -111,15 +118,24 @@ StructureGroup H = toldYaSo inhab module StructureGroup where
111118 lemma : ∀ e e' x → φ e e' .fst (φ e' e .fst x) ≡ x
112119 lemma e e' x = φ-coh e' e e' x ∙ idl e' x
113120
114- toldYaSo : ∥ ⟨ H ⟩ ∥₁ → Group _
115- toldYaSo = PropTrunc→Group fromPoint (λ e e' → (φ e e' .fst , φ-eqv e e') , φ e e' .snd) φ-coh
121+ go : ∥ ⟨ H ⟩ ∥₁ → Group _
122+ go = PropTrunc→Group fromPoint (λ e e' → (φ e e' .fst , φ-eqv e e') , φ e e' .snd) φ-coh
116123
117124StructureGroupOfGroupHeap : (G : Group ℓ) → GroupEquiv (StructureGroup (GroupHeap G)) G
118- StructureGroupOfGroupHeap G = idEquiv _ , makeIsGroupHom λ x y → congR _·_ $ congL _·_ inv1g ∙ ·IdL y
119- where open GroupStr (G .snd); open GroupTheory G
120-
121- GroupHeapOfStructureGroup : (H : Heap ℓ) → ∥ HeapEquiv (GroupHeap (StructureGroup H)) H ∥₁ -- unnatural isomorphism
122- GroupHeapOfStructureGroup H = go inhab module GroupHeapOfStructureGroup where
125+ StructureGroupOfGroupHeap G = idEquiv _ , makeIsGroupHom λ x y →
126+ [ x , 1g , y ] ≡⟨⟩
127+ x · inv 1g · y ≡⟨ congR _·_ (congL _·_ inv1g) ⟩
128+ x · 1g · y ≡⟨ congR _·_ (·IdL y) ⟩
129+ x · y ∎
130+ where
131+ open GroupStr (G .snd)
132+ open GroupTheory G
133+ open HeapTheory (GroupHeap G)
134+
135+ GroupHeapOfStructureGroup : (H : Heap ℓ)
136+ → ∥ HeapEquiv (GroupHeap (StructureGroup H)) H ∥₁ -- unnatural isomorphism
137+ GroupHeapOfStructureGroup H = go inhab
138+ module GroupHeapOfStructureGroup where
123139 open HeapTheory H
124140
125141 fromPoint : (e : ⟨ H ⟩) → HeapEquiv (GroupHeap (StructureGroup.fromPoint H e)) H
@@ -130,13 +146,14 @@ GroupHeapOfStructureGroup H = go inhab module GroupHeapOfStructureGroup where
130146 [ [ a , e , e ] , b , c ] ≡⟨ cong [_, b , c ] (idr a e) ⟩
131147 [ a , b , c ] ∎
132148
133- go : (p : ∥ ⟨ H ⟩ ∥₁) → ∥ HeapEquiv (GroupHeap (StructureGroup.toldYaSo H p)) H ∥₁
149+ go : (p : ∥ ⟨ H ⟩ ∥₁) → ∥ HeapEquiv (GroupHeap (StructureGroup.go H p)) H ∥₁
134150 go = PT.elim (λ _ → isPropPropTrunc) λ e → ∣ fromPoint e ∣₁
135151
136152PointedHeap : ∀ ℓ → Type (ℓ-suc ℓ)
137153PointedHeap ℓ = Σ[ H ∈ Heap ℓ ] ⟨ H ⟩
138154
139- PointedHeap≡ : {(H , e) (H' , e') : PointedHeap ℓ} (eqv : HeapEquiv H H') (p : eqv .fst .fst e ≡ e') → (H , e) ≡ (H' , e')
155+ PointedHeap≡ : {(H , e) (H' , e') : PointedHeap ℓ} (eqv : HeapEquiv H H') (p : eqv .fst .fst e ≡ e')
156+ → (H , e) ≡ (H' , e')
140157PointedHeap≡ eqv p = cong₂ _,_ (uaHeap eqv) (ua-gluePath _ p)
141158
142159GroupsArePointedHeaps : Group ℓ ≃ PointedHeap ℓ
0 commit comments