annotate sym3.agda @ 122:61310d395c1b

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Sep 2020 17:05:15 +0900
parents 54035eed6b9b
children 465c42c9a99e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 open import Level hiding ( suc ; zero )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Algebra
70
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
3 module sym3 where
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Symmetric
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Data.Unit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Function.Inverse as Inverse using (_↔_; Inverse; _InverseOf_)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Function
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open import Data.Nat hiding (_⊔_) -- using (ℕ; suc; zero)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 open import Relation.Nullary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Data.Empty
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Data.Product
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import Gutil
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Putil
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 open import Solvable using (solvable)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 open import Relation.Binary.PropositionalEquality hiding ( [_] )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 open import Data.Fin
121
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
20 open import Data.Fin.Permutation hiding (_∘ₚ_)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
21
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
22 infixr 200 _∘ₚ_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
23 _∘ₚ_ = Data.Fin.Permutation._∘ₚ_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
24
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
70
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
26 sym3solvable : solvable (Symmetric 3)
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
27 solvable.dervied-length sym3solvable = 2
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
28 solvable.end sym3solvable x d = solved1 x d where
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
70
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
30 open import Data.List using ( List ; [] ; _∷_ )
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
31
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
32 open Solvable (Symmetric 3)
111
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
33
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
34 p0id : FL→perm ((# 0) :: ((# 0) :: ((# 0 ) :: f0))) =p= pid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
35 p0id = pleq _ _ refl
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
111
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
37 p0 = FL→perm ((# 0) :: ((# 0) :: ((# 0 ) :: f0)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
38 p1 = FL→perm ((# 0) :: ((# 1) :: ((# 0 ) :: f0)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
39 p2 = FL→perm ((# 1) :: ((# 0) :: ((# 0 ) :: f0)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
40 p3 = FL→perm ((# 1) :: ((# 1) :: ((# 0 ) :: f0)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
41 p4 = FL→perm ((# 2) :: ((# 0) :: ((# 0 ) :: f0)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
42 p5 = FL→perm ((# 2) :: ((# 1) :: ((# 0 ) :: f0)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
43 t0 = plist p0 ∷ plist p1 ∷ plist p2 ∷ plist p3 ∷ plist p4 ∷ plist p5 ∷ []
88
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 70
diff changeset
44
119
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
45 t1 = plist [ p0 , p0 ] ∷ plist [ p1 , p0 ] ∷ plist [ p2 , p0 ] ∷ plist [ p3 , p0 ] ∷ plist [ p4 , p0 ] ∷ plist [ p5 , p1 ] ∷
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
46 plist [ p0 , p1 ] ∷ plist [ p1 , p1 ] ∷ plist [ p2 , p1 ] ∷ plist [ p3 , p1 ] ∷ plist [ p4 , p1 ] ∷ plist [ p5 , p1 ] ∷
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
47 plist [ p0 , p2 ] ∷ plist [ p1 , p2 ] ∷ plist [ p2 , p2 ] ∷ plist [ p3 , p2 ] ∷ plist [ p4 , p2 ] ∷ plist [ p5 , p2 ] ∷
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
48 plist [ p0 , p3 ] ∷ plist [ p1 , p3 ] ∷ plist [ p3 , p3 ] ∷ plist [ p3 , p3 ] ∷ plist [ p4 , p3 ] ∷ plist [ p5 , p3 ] ∷
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
49 plist [ p0 , p4 ] ∷ plist [ p1 , p4 ] ∷ plist [ p3 , p4 ] ∷ plist [ p3 , p4 ] ∷ plist [ p4 , p4 ] ∷ plist [ p5 , p4 ] ∷
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
50 plist [ p0 , p5 ] ∷ plist [ p1 , p5 ] ∷ plist [ p3 , p5 ] ∷ plist [ p3 , p5 ] ∷ plist [ p4 , p4 ] ∷ plist [ p5 , p5 ] ∷
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
51 []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
52
70
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
53 open _=p=_
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
54
119
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
55 stage1 : (x : Permutation 3 3) → Set (Level.suc Level.zero)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
56 stage1 x = Commutator (λ x₂ → Lift (Level.suc Level.zero) ⊤) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
57
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
58 open import logic
121
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
59
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
60 p33=4 : ( p3 ∘ₚ p3 ) =p= p4
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
61 p33=4 = pleq _ _ refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
62
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
63 p44=3 : ( p4 ∘ₚ p4 ) =p= p3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
64 p44=3 = pleq _ _ refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
65
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
66 p34=0 : ( p3 ∘ₚ p4 ) =p= pid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
67 p34=0 = pleq _ _ refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
69 p43=0 : ( p4 ∘ₚ p3 ) =p= pid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
70 p43=0 = pleq _ _ refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
71
122
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
72 pFL : ( g : Permutation 3 3) → { x : FL 3 } → perm→FL g ≡ x → g =p= FL→perm x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
73 pFL g {x} refl = ptrans (psym (FL←iso g)) ( FL-inject refl )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
74
121
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
75 open ≡-Reasoning
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
76
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
77 st01 : ( x y : Permutation 3 3) → x =p= p3 → y =p= p3 → x ∘ₚ y =p= p4
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
78 st01 x y s t = record { peq = λ q → ( begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
79 (x ∘ₚ y) ⟨$⟩ʳ q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
80 ≡⟨ peq ( presp s t ) q ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
81 ( p3 ∘ₚ p3 ) ⟨$⟩ʳ q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
82 ≡⟨ peq p33=4 q ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
83 p4 ⟨$⟩ʳ q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
84 ∎ ) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
85
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
86 st02 : ( g h : Permutation 3 3) → ([ g , h ] =p= pid) ∨ ([ g , h ] =p= p3) ∨ ([ g , h ] =p= p4)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
87 st02 g h with perm→FL g | perm→FL h | inspect perm→FL g | inspect perm→FL h
122
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
88 ... | (zero :: (zero :: (zero :: f0))) | t | record { eq = ge } | te = case1 (ptrans (comm-resp {g} {h} {pid} (FL-inject ge ) prefl ) (idcomtl h) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
89 ... | s | (zero :: (zero :: (zero :: f0))) | se | record { eq = he } = case1 (ptrans (comm-resp {g} {h} {_} {pid} prefl (FL-inject he ))(idcomtr g) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
90 ... | (zero :: (suc zero) :: (zero :: f0 )) | (zero :: (suc zero) :: (zero :: f0 )) | record { eq = ge } | record { eq = he } =
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
91 case1 (ptrans (comm-resp (pFL g ge) (pFL h he) ) (comm-refl {FL→perm (zero :: (suc zero) :: (zero :: f0 ))} prefl ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
92 ... | (suc zero) :: (zero :: (zero :: f0 )) | (suc zero) :: (zero :: (zero :: f0 )) | record { eq = ge } | record { eq = he } =
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
93 case1 (ptrans (comm-resp (pFL g ge) (pFL h he) ) (comm-refl {FL→perm ((suc zero) :: (zero :: (zero :: f0 )))} prefl ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
94 ... | (suc zero) :: (suc zero :: (zero :: f0 )) | (suc zero) :: (suc zero :: (zero :: f0 )) | record { eq = ge } | record { eq = he } =
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
95 case1 (ptrans (comm-resp (pFL g ge) (pFL h he) ) (comm-refl {FL→perm ((suc zero) :: (suc zero :: (zero :: f0 )))} prefl ))
121
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
96 ... | (zero :: (suc zero) :: (zero :: f0 )) | t | se | te = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
97 ... | (suc zero) :: (zero :: (zero :: f0 )) | t | se | te = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
98 ... | (suc zero) :: (suc zero :: (zero :: f0 )) | t | se | te = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
99 ... | (suc (suc zero)) :: (zero :: (zero :: f0 )) | t | se | te = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
100 ... | (suc (suc zero)) :: (suc zero) :: (zero :: f0) | t | se | te = {!!}
119
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
101
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
102 stage12 : (x : Permutation 3 3) → stage1 x → ( x =p= pid ) ∨ ( x =p= p3 ) ∨ ( x =p= p4 )
120
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 119
diff changeset
103 stage12 x uni = case1 prefl
121
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
104 stage12 x (comm {g} {h} x1 y1 ) = st02 g h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
105 stage12 _ (gen {x} {y} sx sy) with stage12 x sx | stage12 y sy
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
106 ... | case1 t | case1 s = case1 ( record { peq = λ q → peq (presp t s) q} )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
107 ... | case1 t | case2 (case1 s) = case2 (case1 ( record { peq = λ q → peq (presp t s ) q } ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
108 ... | case1 t | case2 (case2 s) = case2 (case2 ( record { peq = λ q → peq (presp t s ) q } ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
109 ... | case2 (case1 t) | case1 s = case2 (case1 ( record { peq = λ q → peq (presp t s ) q } ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
110 ... | case2 (case2 t) | case1 s = case2 (case2 ( record { peq = λ q → peq (presp t s ) q } ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
111 ... | case2 (case1 s) | case2 (case1 t) = case2 (case2 record { peq = λ q → trans (peq ( presp s t ) q) ( peq p33=4 q) } )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
112 ... | case2 (case1 s) | case2 (case2 t) = case1 record { peq = λ q → trans (peq ( presp s t ) q) ( peq p34=0 q) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
113 ... | case2 (case2 s) | case2 (case1 t) = case1 record { peq = λ q → trans (peq ( presp s t ) q) ( peq p43=0 q) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
114 ... | case2 (case2 s) | case2 (case2 t) = case2 (case1 record { peq = λ q → trans (peq ( presp s t ) q) ( peq p44=3 q) } )
120
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 119
diff changeset
115 stage12 _ (ccong {y} x=y sx) with stage12 y sx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 119
diff changeset
116 ... | case1 id = case1 ( ptrans (psym x=y ) id )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 119
diff changeset
117 ... | case2 (case1 x₁) = case2 (case1 ( ptrans (psym x=y ) x₁ ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 119
diff changeset
118 ... | case2 (case2 x₁) = case2 (case2 ( ptrans (psym x=y ) x₁ ))
119
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 111
diff changeset
119
70
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
120 solved1 : (x : Permutation 3 3) → Commutator (λ x₁ → Commutator (λ x₂ → Lift (Level.suc Level.zero) ⊤) x₁) x → x =p= pid
32004c9a70b1 sym2 done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
121 solved1 = {!!}