changeset 1328:17a8e67ec124

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 13 Jun 2023 08:42:46 +0900
parents b8f02f27d8eb
children 75894c1665f7
files src/bijection.agda
diffstat 1 files changed, 60 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/bijection.agda	Mon Jun 12 08:51:26 2023 +0900
+++ b/src/bijection.agda	Tue Jun 13 08:42:46 2023 +0900
@@ -514,7 +514,7 @@
    } where
     --
     --     an     f     g     cn
-    --   ℕ →   A  →  B  →  C  →   ℕ
+    --   ℕ ↔   A  →  B  →  C  ↔   ℕ
     --
     open Bijection
     f = InjectiveF.f fi
@@ -545,12 +545,12 @@
     ... | yes isb = suc (count-A n)
     ... | no nisb = count-A n
 
-    count-A-homo : {i j : ℕ} → i ≤ j → count-A i ≤ count-A j
-    count-A-homo {i} {j} i≤j with ≤-∨ i≤j
+    count-A-mono : {i j : ℕ} → i ≤ j → count-A i ≤ count-A j
+    count-A-mono {i} {j} i≤j with ≤-∨ i≤j
     ... | case1 refl = ≤-refl
     ... | case2 i<j = lem00 _ _ i<j where
          lem00 : (i j : ℕ) → i < j → count-A i ≤ count-A j
-         lem00 i (suc j) (s≤s i<j) = ≤-trans (count-A-homo i<j) (lem01 j) where
+         lem00 i (suc j) (s≤s i<j) = ≤-trans (count-A-mono i<j) (lem01 j) where
              lem01 : (j : ℕ) → count-A j ≤ count-A (suc j) 
              lem01 zero with is-A (fun← cn (suc zero))
              ... | yes isb = refl-≤s
@@ -775,16 +775,62 @@
          fa = flany n
          fm = fla-max n
          cm = count-A fm
-         c : FL fm → ℕ 
-         c fl = ?
-         cn<fm : (fl : FL fm) → c fl < fla-max n
+         flen =  Data.List.Fresh.length 
+         len=n : flen (FLany.flist fa) ≡ suc n
+         len=n = ?
+         flist-top : (fl : FList fm) → 0 < flen fl  → ℕ
+         flist-top [] ()
+         flist-top (cons (ca<n i x₁) fl x) _ = fun→ cn (g (f (fun← an i)))
+         n<ca1 : ( fl : FList fm) → (0<fl : 0 < flen fl ) → flen fl + count-A (flist-top fl 0<fl ) ≤ count-A fm
+         n<ca1 [] _ = ≤-trans ? ( count-A-mono {0} {fm} z≤n )
+         n<ca1 (cons (ca<n i ci≤fm) [] fr) 0<fl = ?
+         n<ca1 (cons (ca<n i ci≤fm) (cons a fl fr0) fr) 0<fl = ? where
+            lem10 : flen fl + count-A (flist-top fl ? ) ≤ count-A fm
+            lem10 = n<ca1 fl ?
+            lem11 : suc (suc ? + count-A (fun→ cn (g (f (fun← an i))))) ≤ count-A fm
+            lem11 = begin
+               ? ≡⟨ ? ⟩ 
+               suc (flen fl + count-A (fun→ cn (g (f (fun← an i))))) ≡⟨ refl ⟩ 
+               (1 + flen fl ) + count-A (fun→ cn (g (f (fun← an i)))) ≡⟨ cong (λ k → k + count-A (fun→ cn (g (f (fun← an i))))) (+-comm 1 _) ⟩ 
+               (flen fl + 1) + count-A (fun→ cn (g (f (fun← an i)))) ≡⟨ ( +-assoc ( flen fl) 1  _ ) ⟩ 
+               flen fl + (suc (count-A (fun→ cn (g (f (fun← an i)))))) ≡⟨ ? ⟩ 
+               flen fl + count-A (suc (fun→ cn (g (f (fun← an i))))) ≤⟨ ≤-plus-0 ( count-A-mono (lem12 fl ? )) ⟩ 
+               flen fl + count-A (flist-top fl ? ) ≤⟨ n<ca1 fl ? ⟩
+               count-A fm ∎ where
+                  open ≤-Reasoning
+                  lem12 : (fl : FList fm) → fresh (FL fm) ⌊ _f<?_ ⌋  _ fl  → suc (fun→ cn (g (f (fun← an i)))) ≤ flist-top fl ?
+                  lem12 (cons (ca<n j x₂) fl1 x1) (lift lt1 , fr2) = begin
+                     suc (fun→ cn (g (f (fun← an i)))) ≤⟨ ttf1 lt1  ⟩
+                     fun→ cn (g (f (fun← an j))) ∎ where 
+                        open ≤-Reasoning 
+                        ttf1 : True (ca<n i ci≤fm f<? ca<n j x₂) 
+                          →  suc (fun→ cn (g (f (fun← an i)))) ≤ fun→ cn (g (f (fun← an j)))
+                        ttf1 t = toWitness t
+                  lem12 [] (lift tt) = ?
+
+                  
+
+         c : {i : ℕ} → i < suc n → ℕ 
+         c {i} i<n = ?
+         cn<fm : { i : ℕ} → (i<n : i < suc n ) → c i<n < fla-max n
          cn<fm = ?
-         c-inc : (fl : FL fm) → suc (count-A (c fl)) ≡  count-A (suc (c fl)) 
+         c-inc :  { i : ℕ} → (i<n : i < suc n ) → suc (count-A (c i<n)) ≡  count-A (suc (c i<n)) 
          c-inc = ?
-         len=n : (x : FList fm) → Data.List.Fresh.length x ≡ suc n
-         len=n = ?
-         n<ca : (i j : ℕ) → j + i ≡ n → count-A j + i < count-A (fla-max n) 
-         n<ca i j j+i=n = ?
+         n<ca : (i : ℕ) →  (i<n : i < suc n ) → i + count-A (suc (c i<n)) ≤ n + count-A (fla-max n)
+         n<ca zero i<n = lem00 where
+            lem00 : 0 + count-A (c i<n) ≤ n + count-A (fla-max n)
+            lem00 = ?
+         n<ca (suc i) i<n  = lem03 where
+            lem01 : i + count-A (c i<n) ≤ n + count-A (fla-max n)
+            lem01 = n<ca i (<-trans a<sa i<n)
+            lem04 : i + count-A (suc (c i<n)) ≤ n + count-A (fla-max n) 
+            lem04 = ?
+            lem03 : suc (i + count-A (c i<n)) ≤ n + count-A (fla-max n) 
+            lem03 = begin
+                suc (i + count-A (c i<n)) ≤⟨ ? ⟩
+                suc (n + count-A (fla-max n)) ≤⟨ ? ⟩
+                n + count-A (fla-max n) ∎ where
+                   open ≤-Reasoning
 
     record CountB (n : ℕ) : Set where
        field
@@ -835,6 +881,8 @@
 open import Data.List.Properties
 open import Data.Maybe.Properties
 
+---   ℕ ⊆ List A ⊆ List (Maybe A) ⊆ List A ∧ List Bool ⊆ ℕ
+
 LMℕ : (A : Set ) → Bijection (List A) ℕ → Bijection (List (Maybe A)) ℕ
 LMℕ A Ln = Countable-Bernstein (List A) (List (Maybe A)) (List A ∧ List Bool) Ln (LM1 A Ln)  fi gi ? ? where
    f : List A → List (Maybe A)