annotate FLComm.agda @ 236:f8bfda8d0669

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 09 Dec 2020 11:33:43 +0900
parents d204b7f9b89a
children 3aafd76f21c1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 {-# OPTIONS --allow-unsolved-metas #-}
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Data.Nat -- using (ℕ; suc; zero; s≤s ; z≤n )
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 module FLComm (n : ℕ) where
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Level renaming ( suc to Suc ; zero to Zero ) hiding (lift)
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Data.Fin hiding ( _<_ ; _≤_ ; _-_ ; _+_ ; _≟_)
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Data.Fin.Properties hiding ( <-trans ; ≤-refl ; ≤-trans ; ≤-irrelevant ; _≟_ ) renaming ( <-cmp to <-fcmp )
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Data.Fin.Permutation
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open import Data.Nat.Properties
186
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
10 open import Relation.Binary.PropositionalEquality hiding ( [_] ) renaming ( sym to ≡-sym )
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Data.List using (List; []; _∷_ ; length ; _++_ ; tail ) renaming (reverse to rev )
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Data.Product hiding (_,_ )
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import Relation.Nullary
232
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 231
diff changeset
14 open import Data.Unit hiding (_≤_)
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Data.Empty
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 open import Relation.Binary.Core
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 open import Relation.Binary.Definitions hiding (Symmetric )
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 open import logic
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 open import nat
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 open import FLutil
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 open import Putil
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 import Solvable
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 open import Symmetric
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 -- infixr 100 _::_
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
188
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 187
diff changeset
28 open import Relation.Nary using (⌊_⌋)
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 open import Data.List.Fresh hiding ([_])
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 open import Data.List.Fresh.Relation.Unary.Any
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
32 open import Algebra
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
33 open Group (Symmetric n) hiding (refl)
186
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
34 open Solvable (Symmetric n)
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
35 open _∧_
211
08166685ed2c anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 210
diff changeset
36 -- open import Relation.Nary using (⌊_⌋)
08166685ed2c anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 210
diff changeset
37 open import Relation.Nullary.Decidable hiding (⌊_⌋)
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
38
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
39 -- Flist : {n : ℕ } (i : ℕ) → i < suc n → FList n → FList n → FList (suc n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
40 -- Flist zero i<n [] _ = []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
41 -- Flist zero i<n (a ∷# x ) z = FLinsert ( zero :: a ) (Flist zero i<n x z )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
42 -- Flist (suc i) (s≤s i<n) [] z = Flist i (<-trans i<n a<sa) z z
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
43 -- Flist (suc i) i<n (a ∷# x ) z = FLinsert ((fromℕ< i<n ) :: a ) (Flist (suc i) i<n x z )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
44 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
45 -- ∀Flist : {n : ℕ } → FL n → FList n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
46 -- ∀Flist {zero} f0 = f0 ∷# []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
47 -- Flist {suc n} (x :: y) = Flist n a<sa (∀Flist y) (∀Flist y)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
48
229
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 228
diff changeset
49 -------------
233
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
50 -- # 0 : # 0 : .... # 0 : # 0 :: f0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
51 -- # 0 : # 0 : .... # 1 : # 0 :: f0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
52 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
53 -- # sn: # 0 : .... # 0 : # 0 :: f0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
54 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
55 -- # sn: # n : .... # 1 : # 0 :: f0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
56 --
229
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 228
diff changeset
57
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
58 -- all FL
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
59 record AnyFL (n : ℕ) (y : FL n) : Set where
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
60 field
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
61 allFL : FList n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
62 anyP : (x : FL n) → Any (x ≡_ ) allFL
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
63
210
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 209
diff changeset
64 open import fin
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
65 open AnyFL
231
5a06df3e05d7 allListFL
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 230
diff changeset
66
233
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
67 -- {-# TERMINATING #-}
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
68 anyFL0 : (n : ℕ) → AnyFL (suc n) fmax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
69 anyFL0 zero = record { allFL = (zero :: f0) ∷# [] ; anyP = anyFL2 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
70 anyFL2 : (x : FL 1) → Any (_≡_ x) (cons (zero :: f0) [] (Level.lift tt))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
71 anyFL2 (zero :: f0) = here refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
72 anyFL0 (suc n) = record { allFL = allListF a<sa []; anyP = λ x → anyFL3 a<sa x (fin≤n (FLpos x)) [] } where
233
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
73 allListFL : (x : Fin (suc (suc n))) → FList (suc n) → FList (suc (suc n)) → FList (suc (suc n))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
74 allListFL _ [] y = y
234
3c3619b196dc allListF
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 233
diff changeset
75 allListFL x (cons y L yr) z = FLinsert (x :: y) (allListFL x L z)
233
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 232
diff changeset
76 allListF : {i : ℕ} → (i<n : i < suc (suc n)) → FList (suc (suc n)) → FList (suc (suc n))
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
77 allListF (s≤s z≤n) z = allListFL zero (allFL (anyFL0 n)) z
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
78 allListF (s≤s (s≤s i<n)) z = allListFL (suc (fromℕ< (s≤s i<n ))) (allFL (anyFL0 n)) (allListF (<-trans (s≤s i<n) a<sa) z)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
79 anyFL3 : {i : ℕ} → (i<n : i < suc (suc n)) (x : FL (suc (suc n))) → (toℕ (FLpos x ) ≤ i) → (z : FList (suc (suc n))) → Any (_≡_ x) (allListF i<n z)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
80 anyFL3 {zero} (s≤s z≤n) (x :: y) x<i z = {!!} where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
81 anyFL5 : toℕ x ≤ zero → x ≡ zero
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
82 anyFL5 lt with <-fcmp x zero
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
83 ... | tri≈ ¬a b ¬c = b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
84 ... | tri> ¬a ¬b c = ⊥-elim (nat-≤> x<i c)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
85 anyFL3 {suc i} (s≤s i<n) (x :: y) x<i z with <-cmp (toℕ x) (suc i)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
86 ... | tri< a ¬b ¬c = anyFL1 i<n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
87 anyFL1 : {i : ℕ } → (i<n : i < suc n) → Any (_≡_ (x :: y)) (allListF (s≤s i<n) z)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
88 anyFL1 L = {!!}
235
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 234
diff changeset
89 ... | tri≈ ¬a b ¬c = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 234
diff changeset
90 ... | tri> ¬a ¬b c = ⊥-elim (nat-≤> x<i c)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 234
diff changeset
91
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
92 anyFL : (n : ℕ) → AnyFL n fmax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
93 anyFL zero = record { allFL = f0 ∷# [] ; anyP = anyFL4 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
94 anyFL4 : (x : FL zero) → Any (_≡_ x) ( f0 ∷# [] )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
95 anyFL4 f0 = here refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
96 anyFL (suc n) = anyFL0 n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 235
diff changeset
97
235
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 234
diff changeset
98 at1 = allFL (anyFL 1)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 234
diff changeset
99 at2 = allFL (anyFL 2)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 234
diff changeset
100 at3 = allFL (anyFL 3)
208
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 207
diff changeset
101
186
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
102 tl3 : (FL n) → ( z : FList n) → FList n → FList n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
103 tl3 h [] w = w
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
104 tl3 h (x ∷# z) w = tl3 h z (FLinsert ( perm→FL [ FL→perm h , FL→perm x ] ) w )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
105 tl2 : ( x z : FList n) → FList n → FList n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
106 tl2 [] _ x = x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
107 tl2 (h ∷# x) z w = tl2 x z (tl3 h z w)
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 CommFList : FList n → FList n
186
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
110 CommFList x = tl2 x x []
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 CommFListN : ℕ → FList n
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 CommFListN 0 = ∀Flist fmax
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 CommFListN (suc i) = CommFList (CommFListN i)
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115
229
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 228
diff changeset
116 -- all cobmbination in P and Q
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
117 record AnyComm (P Q : FList n) (fpq : (p q : FL n) → FL n) : Set where
211
08166685ed2c anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 210
diff changeset
118 field
08166685ed2c anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 210
diff changeset
119 commList : FList n
224
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 223
diff changeset
120 commAny : (p q : FL n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 223
diff changeset
121 → Any ( p ≡_ ) P → Any ( q ≡_ ) Q
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
122 → Any (fpq p q ≡_) commList
211
08166685ed2c anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 210
diff changeset
123
225
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
124 -------------
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
125 -- (p,q) (p,qn) .... (p,q0)
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
126 -- pn,q
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
127 -- : AnyComm FL0 FL0 P Q
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
128 -- p0,q
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
129
226
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
130 p<anyL : {p p₁ : FL n} {P : FList n} → {pr : fresh (FL n) ⌊ _f<?_ ⌋ p P } → Any (_≡_ p₁) (cons p P pr) → p f≤ p₁
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
131 p<anyL {p} {p₁} {P} {pr} (here refl) = case1 refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
132 p<anyL {p} {p₁} {cons a P x} { Data.Product._,_ (Level.lift p<a) snd} (there any) with p<anyL any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
133 ... | case1 refl = case2 (toWitness p<a)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
134 ... | case2 a<p₁ = case2 (f<-trans (toWitness p<a) a<p₁)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
135
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
136 p<anyL1 : {p p₁ : FL n} {P : FList n} → {pr : fresh (FL n) ⌊ _f<?_ ⌋ p P } → Any (_≡_ p₁) (cons p P pr) → ¬ (p ≡ p₁) → p f< p₁
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
137 p<anyL1 {p} {p₁} {P} {pr} any neq with p<anyL any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
138 ... | case1 eq = ⊥-elim ( neq eq )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
139 ... | case2 x = x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
140
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
141 open AnyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
142 anyComm : (P Q : FList n) → (fpq : (p q : FL n) → FL n) → AnyComm P Q fpq
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
143 anyComm [] [] _ = record { commList = [] ; commAny = λ _ _ () }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
144 anyComm [] (cons q Q qr) _ = record { commList = [] ; commAny = λ _ _ () }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
145 anyComm (cons p P pr) [] _ = record { commList = [] ; commAny = λ _ _ _ () }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
146 anyComm (cons p P pr) (cons q Q qr) fpq = record { commList = FLinsert (fpq p q) (commListQ Q) ; commAny = anyc0n } where
225
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
147 commListP : (P1 : FList n) → FList n
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
148 commListP [] = commList (anyComm P Q fpq)
225
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
149 commListP (cons p₁ P1 x) = FLinsert (fpq p₁ q) (commListP P1)
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
150 commListQ : (Q1 : FList n) → FList n
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
151 commListQ [] = commListP P
08a99237e56e restart anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 224
diff changeset
152 commListQ (cons q₁ Q1 qr₁) = FLinsert (fpq p q₁) (commListQ Q1)
226
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 225
diff changeset
153 anyc0n : (p₁ q₁ : FL n) → Any (_≡_ p₁) (cons p P pr) → Any (_≡_ q₁) (cons q Q qr)
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
154 → Any (_≡_ (fpq p₁ q₁)) (FLinsert (fpq p q) (commListQ Q))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
155 anyc0n p₁ q₁ (here refl) (here refl) = x∈FLins _ (commListQ Q )
227
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
156 anyc0n p₁ q₁ (here refl) (there anyq) = insAny (commListQ Q) (anyc01 Q anyq) where
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
157 anyc01 : (Q1 : FList n) → Any (_≡_ q₁) Q1 → Any (_≡_ (fpq p₁ q₁)) (commListQ Q1)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
158 anyc01 (cons q Q1 qr₂) (here refl) = x∈FLins _ _
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
159 anyc01 (cons q₂ Q1 qr₂) (there any) = insAny _ (anyc01 Q1 any)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
160 anyc0n p₁ q₁ (there anyp) (here refl) = insAny _ (anyc02 Q) where
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
161 anyc03 : (P1 : FList n) → Any (_≡_ p₁) P1 → Any (_≡_ (fpq p₁ q₁)) (commListP P1)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
162 anyc03 (cons a P1 x) (here refl) = x∈FLins _ _
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
163 anyc03 (cons a P1 x) (there any) = insAny _ ( anyc03 P1 any)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
164 anyc02 : (Q1 : FList n) → Any (_≡_ (fpq p₁ q₁)) (commListQ Q1)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
165 anyc02 [] = anyc03 P anyp
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
166 anyc02 (cons a Q1 x) = insAny _ (anyc02 Q1)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
167 anyc0n p₁ q₁ (there anyp) (there anyq) = insAny (commListQ Q) (anyc04 Q) where
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
168 anyc05 : (P1 : FList n) → Any (_≡_ (fpq p₁ q₁)) (commListP P1)
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 227
diff changeset
169 anyc05 [] = commAny (anyComm P Q fpq) p₁ q₁ anyp anyq
227
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
170 anyc05 (cons a P1 x) = insAny _ (anyc05 P1)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
171 anyc04 : (Q1 : FList n) → Any (_≡_ (fpq p₁ q₁)) (commListQ Q1)
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
172 anyc04 [] = anyc05 P
8c20b6710f1d anyComm done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 226
diff changeset
173 anyc04 (cons a Q1 x) = insAny _ (anyc04 Q1)
211
08166685ed2c anyComm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 210
diff changeset
174
200
b5b4ee29cbe4 TERMINATING AnyFList
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 198
diff changeset
175 -- {-# TERMINATING #-}
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 CommStage→ : (i : ℕ) → (x : Permutation n n ) → deriving i x → Any (perm→FL x ≡_) ( CommFListN i )
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 CommStage→ zero x (Level.lift tt) = AnyFList (perm→FL x)
188
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 187
diff changeset
178 CommStage→ (suc i) .( [ g , h ] ) (comm {g} {h} p q) = comm2 (CommFListN i) (CommFListN i) (CommStage→ i g p) (CommStage→ i h q) [] where
186
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
179 G = perm→FL g
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
180 H = perm→FL h
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
181
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
182 -- tl3 case
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
183 commc : (L3 L1 : FList n) → Any ((perm→FL [ FL→perm G , FL→perm H ]) ≡_) L3
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
184 → Any ((perm→FL [ FL→perm G , FL→perm H ]) ≡_) (tl3 G L1 L3)
197
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 196
diff changeset
185 commc L3 [] any = any
198
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 197
diff changeset
186 commc L3 (cons a L1 _) any = commc (FLinsert (perm→FL [ FL→perm G , FL→perm a ]) L3) L1 (insAny _ any)
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
187 comm6 : perm→FL [ FL→perm G , FL→perm H ] ≡ perm→FL [ g , h ]
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
188 comm6 = pcong-pF (comm-resp (FL←iso _) (FL←iso _))
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
189 comm3 : (L1 : FList n) → Any (H ≡_) L1 → (L3 : FList n) → Any ((perm→FL [ g , h ]) ≡_) (tl3 G L1 L3)
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
190 comm3 (H ∷# []) (here refl) L3 = subst (λ k → Any (k ≡_) (FLinsert (perm→FL [ FL→perm G , FL→perm H ]) L3 ) )
189
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 188
diff changeset
191 comm6 (x∈FLins ( perm→FL [ FL→perm G , FL→perm H ] ) L3 )
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
192 comm3 (cons H L1 x₁) (here refl) L3 = subst (λ k → Any (k ≡_) (tl3 G L1 (FLinsert (perm→FL [ FL→perm G , FL→perm H ]) L3))) comm6
197
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 196
diff changeset
193 (commc (FLinsert (perm→FL [ FL→perm G , FL→perm H ]) L3 ) L1 (x∈FLins ( perm→FL [ FL→perm G , FL→perm H ] ) L3))
190
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 189
diff changeset
194 comm3 (cons a L _) (there b) L3 = comm3 L b (FLinsert (perm→FL [ FL→perm G , FL→perm a ]) L3)
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
195
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
196 -- tl2 case
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
197 comm2 : (L L1 : FList n) → Any (G ≡_) L → Any (H ≡_) L1 → (L3 : FList n) → Any (perm→FL [ g , h ] ≡_ ) (tl2 L L1 L3)
189
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 188
diff changeset
198 comm2 (cons G L xr) L1 (here refl) b L3 = comm7 L L3 where
203
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
199 comm8 : (L L4 L2 : FList n) → (a : FL n)
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
200 → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 L2)
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
201 → Any ((perm→FL [ g , h ]) ≡_ ) (tl2 L4 L1 (tl3 a L L2))
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
202 comm8← : (L L4 L2 : FList n) → (a : FL n) → ¬ ( a ≡ perm→FL g )
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
203 → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 (tl3 a L L2))
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
204 → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 L2)
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
205 comm9← : (L4 L2 : FList n) → (a a₁ : FL n) → ¬ ( a ≡ perm→FL g )
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
206 → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2))
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
207 → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 L2)
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
208 -- Any (_≡ (perm→FL [ g , h ])) (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2) → Any ((perm→FL [ g , h ]) ≡_) L2
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
209 comm9← [] L2 a a₁ not any = {!!}
206
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
210 comm9← (cons a₂ L4 x) L2 a a₁ not any = comm8 L1 L4 L2 a₂
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 206
diff changeset
211 (comm9← L4 L2 a a₁ not
206
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
212 (comm8← L1 L4 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2 ) a₂ {!!} any))
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
213 -- Any (_≡ (perm→FL [ g , h ])) (tl2 L4 L1 (tl3 a₂ L1 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2))) →
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
214 -- Any (_≡ (perm→FL [ g , h ])) (tl2 L4 L1 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2))
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
215 -- Any (_≡ (perm→FL [ g , h ])) (tl2 L4 L1 L2)
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
216 -- Any (_≡ (perm→FL [ g , h ])) (tl2 L4 L1 (tl3 a₂ L1 L2))
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
217 comm8← [] L4 L2 a _ any = any
206
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
218 comm8← (cons a₁ L x) L4 L2 a not any = comm8← L L4 L2 a not
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
219 (comm9← L4 (tl3 a L L2 ) a a₁ not (subst (λ k → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 k )) {!!} any ))
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
220 -- Any (_≡ (perm→FL [ g , h ])) (tl2 L4 L1 (tl3 a L (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2))) →
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
221 -- Any (_≡ (perm→FL [ g , h ])) (tl2 L4 L1 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) (tl3 a L L2)))
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
222 comm9 : (L4 L2 : FList n) → (a a₁ : FL n) → Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 L2) →
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
223 Any ((perm→FL [ g , h ]) ≡_) (tl2 L4 L1 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2))
203
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
224 comm8 [] L4 L2 a any = any
204
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
225 comm8 (cons a₁ L x) L4 L2 a any = comm8 L L4 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2) a (comm9 L4 L2 a a₁ any)
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
226 comm9 [] L2 a a₁ any = insAny _ any
84795e6638ce commutativity of Any _ (tl2 L4 L1 L2) and Any _ (tl2 L4 L1 (tl3 a L L2))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 203
diff changeset
227 comm9 (cons a₂ L4 x) L2 a a₁ any = comm8 L1 L4 (FLinsert (perm→FL [ FL→perm a , FL→perm a₁ ]) L2) a₂ (comm9 L4 L2 a a₁ (comm8← L1 L4 L2 a₂ {!!} any))
201
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 200
diff changeset
228 -- found g, we have to walk thru till the end
222
9f86424a09b1 fix to ≡_ in Any
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 221
diff changeset
229 comm7 : (L L3 : FList n) → Any ((perm→FL [ g , h ]) ≡_) (tl2 L L1 (tl3 G L1 L3))
201
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 200
diff changeset
230 -- at the end, find h
189
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 188
diff changeset
231 comm7 [] L3 = comm3 L1 b L3
201
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 200
diff changeset
232 -- add n path
203
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
233 comm7 (cons a L4 xr) L3 = comm8 L1 L4 (tl3 G L1 L3) a (comm7 L4 L3)
201
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 200
diff changeset
234 -- accumerate tl3
200
b5b4ee29cbe4 TERMINATING AnyFList
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 198
diff changeset
235 comm2 (cons x L xr) L1 (there a) b L3 = comm2 L L1 a b (tl3 x L1 L3)
186
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
236 CommStage→ (suc i) x (ccong {f} {x} eq p) = subst (λ k → Any (k ≡_) (tl2 (CommFListN i) (CommFListN i) [])) (comm4 eq) (CommStage→ (suc i) f p ) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
237 comm4 : f =p= x → perm→FL f ≡ perm→FL x
187
c22ef5bc695a remove gen/uni from Commutator
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 186
diff changeset
238 comm4 = pcong-pF
182
eb94265d2a39 Any based proof computation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239
184
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 182
diff changeset
240 CommSolved : (x : Permutation n n) → (y : FList n) → y ≡ FL0 ∷# [] → (FL→perm (FL0 {n}) =p= pid ) → Any (perm→FL x ≡_) y → x =p= pid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 182
diff changeset
241 CommSolved x .(cons FL0 [] (Level.lift tt)) refl eq0 (here eq) = FLpid _ eq eq0