changeset 1315:08cd04cc33fe

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 10 Jun 2023 16:22:47 +0900
parents 8cd195679686
children a6e3fa2ded00 579f1bf9122c
files src/bijection.agda
diffstat 1 files changed, 18 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/bijection.agda	Sat Jun 10 12:37:13 2023 +0900
+++ b/src/bijection.agda	Sat Jun 10 16:22:47 2023 +0900
@@ -589,6 +589,7 @@
        field
            ac : ℕ
            n<ca : n < count-A ac
+           full : ac < count-A n → n ≡ ac 
 
     record maxACN (n : ℕ) : Set where
        field
@@ -611,34 +612,42 @@
             lem10 zero = lem12 _ refl  where
                 lem12 : (i : ℕ) → i ≡ fun→ cn (g (f (fun← an zero))) → maxAC zero
                 lem12 zero i=z with is-A (fun← cn  zero) | inspect ( count-A ) zero
-                ... | yes isa | record { eq = eq1 } = record { ac = zero ; n<ca = subst (λ k → 0 < k) (sym eq1) (s≤s z≤n) }
+                ... | yes isa | record { eq = eq1 } = record { ac = zero ; n<ca = subst (λ k → 0 < k) (sym eq1) (s≤s z≤n) ; full = λ _ → refl }
                 ... | no nisa | record { eq = eq1 } = ⊥-elim ( nisa record { a = fun← an 0 ; fa=c = trans (sym (fiso←  cn _)) (sym (cong (fun← cn) i=z))  } ) 
                 lem12 (suc i) i=z with is-A (fun← cn  (suc i)) | inspect ( count-A ) (suc i)
-                ... | yes isa | record { eq = eq1 } = record { ac = suc i ; n<ca = subst (λ k → 0 < k) (sym eq1) 0<s }
+                ... | yes isa | record { eq = eq1 } = record { ac = suc i ; n<ca = subst (λ k → 0 < k) (sym eq1) 0<s ; full = ? }
                 ... | no nisa | record { eq = eq1 } = ⊥-elim ( nisa record { a = fun← an zero ; fa=c = trans (sym (fiso←  cn _)) (sym (cong (fun← cn) i=z))  } ) 
             lem10 (suc j) with <-cmp (suc j) (count-A (maxAC.ac (lem10 j)))
-            ... | tri< a ¬b ¬c = record { ac = maxAC.ac (lem10 j) ; n<ca = a } -- if suc j < count-A (maxAC.ac lem14) , we can reuse lem10 j
+            ... | tri< a ¬b ¬c = record { ac = maxAC.ac (lem10 j) ; n<ca = a ; full = ? } -- if suc j < count-A (maxAC.ac lem14) , we can reuse lem10 j
             ... | tri> ¬a ¬b (s≤s c) = ⊥-elim ( nat-≤> c (maxAC.n<ca (lem10 j)))
-            ... | tri≈ ¬a sj=ca ¬c = record { ac = fun→ cn (g (f (fun← an (suc j)))) ; n<ca = lem31 } where
+            ... | tri≈ ¬a sj=ca ¬c = record { ac = fun→ cn (g (f (fun← an (suc j)))) ; n<ca = lem31 ; full = ? } where
                 -- 
                 -- then suc j ≡ count-A (maxAC.ac (lem10 j))
                 --   it means count-A is full
                 --      the new one must be above
                 --
+                lem40 : (j : ℕ) → maxAC.ac (lem10 j) < count-A j → j ≡ maxAC.ac (lem10 j)
+                lem40 j j<ca = maxAC.full (lem10 j) j<ca
                 lem31 :  suc j < count-A (fun→ cn (g (f (fun← an (suc j))))) 
-                lem31 with <∨≤  (suc j) (fun→ cn (g (f (fun← an (suc j)))))
+                lem31 with <∨≤  j (fun→ cn (g (f (fun← an (suc j)))))
                 ... | case1 lt = lem12 _ lt ≤-refl  where
-                     lem13 : suc j < fun→ cn (g (f (fun← an (suc j))))
+                     lem13 : j < fun→ cn (g (f (fun← an (suc j))))
                      lem13 = lt
                      -- suc j is current count of A
                      -- it increase at fun→ cn (g (f (fun← an (suc j))))
                      -- otherwise ≤
-                     lem12 : (i : ℕ) → suc j < i  → i ≤ fun→ cn (g (f (fun← an (suc j)))) → suc j < count-A i
+                     lem12 : (i : ℕ) → j < i  → i ≤ fun→ cn (g (f (fun← an (suc j)))) → suc j < count-A i
                      lem12 (suc i) (s≤s sj<i) i≤fj with ≤-∨ sj<i
-                     ... | case1 eq = ?
-                     ... | case2 lt = ? where
+                     ... | case1 refl = lem16 where -- subst (λ k → k < count-A (suc i)) (sym eq) lem16 where
+                         lem17 : i < count-A i
+                         lem17 = subst (λ k → i  < k ) ? a<sa
+                         lem16 : suc i < count-A (suc i)
+                         lem16 = ?
+                     ... | case2 lt = ≤-trans lem14 lem15  where
                          lem14 : suc j < count-A i
                          lem14 = lem12 i lt (≤-trans refl-≤s i≤fj)
+                         lem15 : count-A i ≤ count-A (suc i)
+                         lem15 = count-A-≤cong refl-≤s 
                 ... | case2 le = ? where
                      -- count-A<i : (i : ℕ) → count-A i ≤ suc i
                      lem33 : (i : ℕ) → i ≡ fun→ cn (g (f (fun← an (suc j)))) →  ¬ (i ≤ maxAC.ac (lem10 j))