changeset 91:482ef04890f8

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 29 Aug 2020 07:48:45 +0900
parents bb8c5b366219
children 2e5d0b142eca
files Putil.agda fin.agda nat.agda
diffstat 3 files changed, 57 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/Putil.agda	Fri Aug 28 22:20:39 2020 +0900
+++ b/Putil.agda	Sat Aug 29 07:48:45 2020 +0900
@@ -131,9 +131,10 @@
     pins1 : (i j : ℕ ) → j ≤ suc (suc n)  → Permutation (suc (suc (suc n ))) (suc (suc (suc n)))
     pins1 _ zero _ = pid
     pins1 zero _ _ = pid
-    pins1 (suc i) (suc j) (s≤s si≤n) = psawpim {suc (suc (suc n))} {j}  (s≤s (s≤s si≤n))  ∘ₚ  pins1 i j (≤-trans si≤n refl-≤s ) 
+    pins1 (suc i) (suc j) (s≤s si≤n) = psawpim {suc (suc (suc n))} {j}  (s≤s (s≤s si≤n))  ∘ₚ  pins1 i j (≤-trans si≤n a≤sa ) 
 
 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ )
+open ≡-Reasoning
 
 pins'  : {n m : ℕ} → m ≤ n → Permutation (suc n) (suc n)
 pins' {_} {zero} _ = pid
@@ -141,7 +142,7 @@
 
    next : Fin (suc (suc n)) → Fin (suc (suc n))
    next zero = suc zero
-   next (suc x) = fromℕ< (≤-trans (fin<n {_} {x} ) refl-≤s )
+   next (suc x) = fromℕ< (≤-trans (fin<n {_} {x} ) a≤sa )
 
    p→ : Fin (suc (suc n)) → Fin (suc (suc n)) 
    p→ x with <-cmp (toℕ x) (suc m)
@@ -152,51 +153,56 @@
    p← : Fin (suc (suc n)) → Fin (suc (suc n)) 
    p← zero = fromℕ< (s≤s (s≤s m≤n))
    p← (suc x) with <-cmp (toℕ x) (suc m)
-   ... | tri< a ¬b ¬c = fromℕ< (≤-trans (fin<n {_} {x}) refl-≤s )
+   ... | tri< a ¬b ¬c = fromℕ< (≤-trans (fin<n {_} {x}) a≤sa )
    ... | tri≈ ¬a b ¬c = suc x
    ... | tri> ¬a ¬b c = suc x
 
    mm : toℕ (fromℕ< {suc m} {suc (suc n)} (s≤s (s≤s m≤n))) ≡ suc m 
    mm = toℕ-fromℕ< (s≤s (s≤s  m≤n)) 
 
-   mma : (x : Fin (suc n) ) → suc (toℕ x) ≤ suc m → toℕ ( fromℕ< (≤-trans (fin<n {_} {x}) refl-≤s ) ) ≤ m
-   mma x (s≤s x<sm) = subst (λ k → k ≤ m) (sym (toℕ-fromℕ< (≤-trans fin<n refl-≤s ) )) x<sm
+   mma : (x : Fin (suc n) ) → suc (toℕ x) ≤ suc m → toℕ ( fromℕ< (≤-trans (fin<n {_} {x}) a≤sa ) ) ≤ m
+   mma x (s≤s x<sm) = subst (λ k → k ≤ m) (sym (toℕ-fromℕ< (≤-trans fin<n a≤sa ) )) x<sm
    
+   p3 : (x : Fin (suc n) ) →  toℕ (fromℕ< (≤-trans (fin<n {_} {suc x} ) (s≤s a≤sa))) ≡ suc (toℕ x)
+   p3 x = begin
+            toℕ (fromℕ< (≤-trans (fin<n {_} {suc x} ) (s≤s a≤sa)))
+          ≡⟨ toℕ-fromℕ< ( s≤s ( ≤-trans fin<n  a≤sa ) ) ⟩
+            suc (toℕ x)
+          ∎ 
    piso← : (x : Fin (suc (suc n)) ) → p→ ( p← x ) ≡ x
    piso← zero with <-cmp (toℕ (fromℕ< (s≤s (s≤s m≤n)))) (suc m) | mm
    ... | tri< a ¬b ¬c | t = ⊥-elim ( ¬b t )
    ... | tri≈ ¬a b ¬c | t = refl
    ... | tri> ¬a ¬b c | t = ⊥-elim ( ¬b t )
    piso← (suc x) with <-cmp (toℕ x) (suc m)
-   ... | tri≈ ¬a b ¬c = ?
-   ... | tri> ¬a ¬b c = {!!}
-   ... | tri< a ¬b ¬c with <-cmp (toℕ ( fromℕ< (≤-trans (fin<n {_} {x}) refl-≤s ) )) (suc m)
+   ... | tri> ¬a ¬b c with <-cmp (toℕ (suc x)) (suc m)
+   ... | tri< a ¬b₁ ¬c = ⊥-elim ( nat-<> a (<-trans c a<sa ) )
+   ... | tri≈ ¬a₁ b ¬c = ⊥-elim (  nat-≡< (sym b) (<-trans c a<sa ))
+   ... | tri> ¬a₁ ¬b₁ c₁ = refl
+   piso← (suc x) | tri≈ ¬a b ¬c with <-cmp (toℕ (suc x)) (suc m)
+   ... | tri< a ¬b ¬c₁ = ⊥-elim (  nat-≡< b (<-trans a<sa a) ) 
+   ... | tri≈ ¬a₁ refl ¬c₁ = ⊥-elim ( nat-≡< b a<sa )
+   ... | tri> ¬a₁ ¬b c = refl
+   piso← (suc x) | tri< a ¬b ¬c with <-cmp (toℕ ( fromℕ< (≤-trans (fin<n {_} {x}) a≤sa ) )) (suc m)
    ... | tri≈ ¬a b ¬c₁ = ⊥-elim ( ¬a (s≤s (mma x a)))
    ... | tri> ¬a ¬b₁ c = ⊥-elim ( ¬a (s≤s (mma x a)))
    ... | tri< a₁ ¬b₁ ¬c₁ = p0 where
        p2 : suc (suc (toℕ x)) ≤ suc (suc n)
        p2 = s≤s (fin<n {suc n} {x})
-       p6 : suc (toℕ (fromℕ< (≤-trans (fin<n {_} {suc x}) (s≤s refl-≤s)))) ≤ suc (suc n)
+       p6 : suc (toℕ (fromℕ< (≤-trans (fin<n {_} {suc x}) (s≤s a≤sa)))) ≤ suc (suc n)
        p6 = s≤s (≤-trans a₁ (s≤s m≤n))
-
-       p3 :   toℕ (fromℕ< (≤-trans (fin<n {_} {suc x} ) (s≤s refl-≤s))) ≡ suc (toℕ x)
-       p3 = begin
-            toℕ (fromℕ< (≤-trans (fin<n {_} {suc x} ) (s≤s refl-≤s)))
-          ≡⟨ toℕ-fromℕ< ( s≤s ( ≤-trans fin<n  refl-≤s ) ) ⟩
-            suc (toℕ x)
-          ∎ where open ≡-Reasoning
        p0 : fromℕ< (≤-trans (s≤s  a₁) (s≤s (s≤s  m≤n) ))  ≡ suc x
        p0 = begin
              fromℕ< (≤-trans (s≤s  a₁) (s≤s (s≤s  m≤n) ))
           ≡⟨⟩
              fromℕ< (s≤s (≤-trans a₁ (s≤s m≤n))) 
-          ≡⟨ lemma10 p3 {p6} {p2} ⟩
+          ≡⟨ lemma10 (p3 x) {p6} {p2} ⟩
              fromℕ< ( s≤s (fin<n {suc n} {x}) )
-          ≡⟨ lemma3 {toℕ x} {suc n} (fin<n {suc (n)} {x})  ⟩
+          ≡⟨⟩
              suc (fromℕ< (fin<n {suc n} {x} )) 
-          ≡⟨ cong suc (fromℕ<-toℕ x (fin<n {suc n} {x}) ) ⟩
+          ≡⟨ cong suc (fromℕ<-toℕ x _ ) ⟩
              suc x
-          ∎ where open ≡-Reasoning
+          ∎ 
 
 
    piso→ : (x : Fin (suc (suc n)) ) → p← ( p→ x ) ≡ x
@@ -252,8 +258,7 @@
           y ⟨$⟩ʳ zero
        ≡⟨ cong ( λ k → y ⟨$⟩ʳ k ) (sym (toℕ-injective b )) ⟩
           y ⟨$⟩ʳ q
-       ∎ where
-          open ≡-Reasoning
+       ∎ 
   pleq1 (suc i) (s≤s i<sn) eq q q<i with <-cmp (toℕ q) (suc i)
   ... | tri< a ¬b ¬c = pleq1 i (<-trans i<sn a<sa ) (taileq eq) q a
   ... | tri> ¬a ¬b c = ⊥-elim (nat-≤> c q<i )
@@ -266,7 +271,6 @@
        ≡⟨ cong (λ k → y ⟨$⟩ʳ k) (sym (pleq3 b)) ⟩
             y ⟨$⟩ʳ q
        ∎ where
-          open ≡-Reasoning
           pleq3 : toℕ q ≡ suc i → q ≡ suc (fromℕ< i<sn)
           pleq3 tq=si = toℕ-injective ( begin
                   toℕ  q
@@ -276,7 +280,7 @@
                   toℕ (fromℕ< (s≤s i<sn))
                ≡⟨⟩
                   toℕ (suc (fromℕ< i<sn))
-               ∎ ) where open ≡-Reasoning
+               ∎ ) 
           pleq2 : toℕ ( x ⟨$⟩ʳ (suc (fromℕ< i<sn)) ) ≡ toℕ ( y ⟨$⟩ʳ (suc (fromℕ< i<sn)) )
           pleq2 = headeq eq
 
@@ -292,7 +296,7 @@
           suc ( y ⟨$⟩ʳ q )
         ≡⟨⟩
           pprep y ⟨$⟩ʳ suc q
-        ∎  where open ≡-Reasoning
+        ∎  
 
 pprep-dist : {n  : ℕ} → {x y : Permutation n n } → pprep (x ∘ₚ y) =p= (pprep x ∘ₚ pprep y)
 pprep-dist {n} {x} {y} = record { peq = pprep-dist1 } where
@@ -313,7 +317,7 @@
           suc (suc (y ⟨$⟩ʳ q))
         ≡⟨⟩
           pswap y ⟨$⟩ʳ suc (suc q)
-        ∎  where open ≡-Reasoning
+        ∎  
  
 pswap-dist : {n  : ℕ} → {x y : Permutation n n } → pprep (pprep (x ∘ₚ y)) =p= (pswap x ∘ₚ pswap y)
 pswap-dist {n} {x} {y} = record { peq = pswap-dist1 } where
@@ -473,13 +477,13 @@
 -- FL←iso {suc n} perm = {!!}
 
 lem2 : {i n : ℕ } → i ≤ n → i ≤ suc n
-lem2 i≤n = ≤-trans i≤n ( refl-≤s )
+lem2 i≤n = ≤-trans i≤n ( a≤sa )
 
 ∀-FL : (n : ℕ ) → List (FL (suc n))
 ∀-FL  x  = fls6 x  where
    fls4 :  ( i n : ℕ ) → (i<n : i ≤ n ) → FL  n → List (FL  (suc n))  → List (FL  (suc n)) 
    fls4 zero n i≤n perm x = (zero :: perm ) ∷ x
-   fls4 (suc i) n i≤n  perm x = fls4 i n (≤-trans refl-≤s i≤n ) perm ((fromℕ< (s≤s i≤n) :: perm ) ∷ x)
+   fls4 (suc i) n i≤n  perm x = fls4 i n (≤-trans a≤sa i≤n ) perm ((fromℕ< (s≤s i≤n) :: perm ) ∷ x)
    fls5 :  ( n : ℕ ) → List (FL n) → List (FL  (suc n))  → List (FL (suc n)) 
    fls5 n [] x = x
    fls5 n (h ∷ x) y = fls5  n x (fls4 n n lem0 h y)
@@ -494,7 +498,7 @@
    lem1 (s≤s lt) = s≤s (lem1 lt)
    pls4 :  ( i n : ℕ ) → (i<n : i ≤ n ) → Permutation n n → List (Permutation (suc n) (suc n))  → List (Permutation (suc n) (suc n)) 
    pls4 zero n i≤n perm x = (pprep perm ∘ₚ pins i≤n ) ∷ x
-   pls4 (suc i) n i≤n  perm x = pls4 i n (≤-trans refl-≤s i≤n ) perm (pprep perm ∘ₚ pins {n} {suc i} i≤n  ∷ x)
+   pls4 (suc i) n i≤n  perm x = pls4 i n (≤-trans a≤sa i≤n ) perm (pprep perm ∘ₚ pins {n} {suc i} i≤n  ∷ x)
    pls5 :  ( n : ℕ ) → List (Permutation n n) → List (Permutation (suc n) (suc n))  → List (Permutation (suc n) (suc n)) 
    pls5 n [] x = x
    pls5 n (h ∷ x) y = pls5  n x (pls4 n n lem0 h y)
--- a/fin.agda	Fri Aug 28 22:20:39 2020 +0900
+++ b/fin.agda	Sat Aug 29 07:48:45 2020 +0900
@@ -18,10 +18,12 @@
 <→m≤n {suc m} {zero} ()
 <→m≤n {suc m} {suc n} (s≤s lt) = s≤s (<→m≤n lt)
 
+-- toℕ<n
 fin<n : {n : ℕ} {f : Fin n} → toℕ f < n
 fin<n {_} {zero} = s≤s z≤n
 fin<n {suc n} {suc f} = s≤s (fin<n {n} {f})
 
+-- toℕ≤n
 fin≤n : {n : ℕ} (f : Fin (suc n)) → toℕ f ≤ n
 fin≤n {_} zero = z≤n
 fin≤n {suc n} (suc f) = s≤s (fin≤n {n} f)
@@ -30,14 +32,17 @@
 pred<n {suc n} {zero} (s≤s z≤n) = s≤s z≤n
 pred<n {suc n} {suc f} (s≤s z≤n) = fin<n
 
+-- fromℕ<-toℕ
 toℕ→from : {n : ℕ} {x : Fin (suc n)} → toℕ x ≡ n → fromℕ n ≡ x
 toℕ→from {0} {zero} refl = refl
 toℕ→from {suc n} {suc x} eq = cong (λ k → suc k ) ( toℕ→from {n} {x} (cong (λ k → Data.Nat.pred k ) eq ))
 
+-- toℕ-injective
 i=j : {n : ℕ} (i j : Fin n) → toℕ i ≡ toℕ j → i ≡ j
 i=j {suc n} zero zero refl = refl
 i=j {suc n} (suc i) (suc j) eq = cong ( λ k → suc k ) ( i=j i j (cong ( λ k → Data.Nat.pred k ) eq) )
 
+-- raise 1
 fin+1 :  { n : ℕ } → Fin n → Fin (suc n)
 fin+1  zero = zero 
 fin+1  (suc x) = suc (fin+1 x)
@@ -67,25 +72,39 @@
 fin-1-xs zero ne = ⊥-elim ( ne refl )
 fin-1-xs (suc x) ne = refl
 
+-- suc-injective
 -- suc-eq : {n : ℕ } {x y : Fin n} → Fin.suc x ≡ Fin.suc y  → x ≡ y
 -- suc-eq {n} {x} {y} eq = subst₂ (λ j k → j ≡ k ) {!!} {!!} (cong (λ k → Data.Fin.pred k ) eq )
 
+-- this is refl
 lemma3 : {a b : ℕ } → (lt : a < b ) → fromℕ< (s≤s lt) ≡ suc (fromℕ< lt)
 lemma3 (s≤s lt) = refl
+
+-- fromℕ<-toℕ 
 lemma12 : {n m : ℕ } → (n<m : n < m ) → (f : Fin m )  → toℕ f ≡ n → f ≡ fromℕ< n<m 
 lemma12 {zero} {suc m} (s≤s z≤n) zero refl = refl
-lemma12 {suc n} {suc m} (s≤s n<m) (suc f) refl = subst ( λ k → suc f ≡ k ) (sym (lemma3 n<m) ) ( cong ( λ k → suc k ) ( lemma12 {n} {m} n<m f refl  ) )
+lemma12 {suc n} {suc m} (s≤s n<m) (suc f) refl =  cong suc ( lemma12 {n} {m} n<m f refl  ) 
 
 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) 
 open import Data.Fin.Properties
 
+-- <-irrelevant
+<-nat=irr : {i j n : ℕ } → ( i ≡ j ) → {i<n : i < n } → {j<n : j < n } → i<n ≅ j<n  
+<-nat=irr {zero} {zero} {suc n} refl {s≤s z≤n} {s≤s z≤n} = HE.refl
+<-nat=irr {suc i} {suc i} {suc n} refl {s≤s i<n} {s≤s j<n} = HE.cong (λ k → s≤s k ) ( <-nat=irr {i} {i} {n} refl  )
+
 lemma8 : {i j n : ℕ } → ( i ≡ j ) → {i<n : i < n } → {j<n : j < n } → i<n ≅ j<n  
 lemma8 {zero} {zero} {suc n} refl {s≤s z≤n} {s≤s z≤n} = HE.refl
 lemma8 {suc i} {suc i} {suc n} refl {s≤s i<n} {s≤s j<n} = HE.cong (λ k → s≤s k ) ( lemma8 {i} {i} {n} refl  )
+
+-- fromℕ<-irrelevant 
 lemma10 : {n i j  : ℕ } → ( i ≡ j ) → {i<n : i < n } → {j<n : j < n }  → fromℕ< i<n ≡ fromℕ< j<n
 lemma10 {n} refl  = HE.≅-to-≡ (HE.cong (λ k → fromℕ< k ) (lemma8 refl  ))
+
 lemma31 : {a b c : ℕ } → { a<b : a < b } { b<c : b < c } { a<c : a < c } → NatP.<-trans a<b b<c ≡ a<c
 lemma31 {a} {b} {c} {a<b} {b<c} {a<c} = HE.≅-to-≡ (lemma8 refl) 
+
+-- toℕ-fromℕ<
 lemma11 : {n m : ℕ } {x : Fin n } → (n<m : n < m ) → toℕ (fromℕ< (NatP.<-trans (toℕ<n x) n<m)) ≡ toℕ x
 lemma11 {n} {m} {x} n<m  = begin
               toℕ (fromℕ< (NatP.<-trans (toℕ<n x) n<m))
--- a/nat.agda	Fri Aug 28 22:20:39 2020 +0900
+++ b/nat.agda	Sat Aug 29 07:48:45 2020 +0900
@@ -34,6 +34,10 @@
 refl-≤s {zero} = z≤n
 refl-≤s {suc x} = s≤s (refl-≤s {x})
 
+a≤sa : {x : ℕ } → x ≤ suc x
+a≤sa {zero} = z≤n
+a≤sa {suc x} = s≤s (a≤sa {x})
+
 =→¬< : {x : ℕ  } → ¬ ( x < x )
 =→¬< {zero} ()
 =→¬< {suc x} (s≤s lt) = =→¬< lt