changeset 1125:edef8810a023

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 10 Jan 2023 02:19:08 +0900
parents d122d0c1b094
children 3091ac71a999
files src/filter.agda
diffstat 1 files changed, 59 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/filter.agda	Mon Jan 09 13:09:30 2023 +0900
+++ b/src/filter.agda	Tue Jan 10 02:19:08 2023 +0900
@@ -177,29 +177,75 @@
        proper  : ¬ (filter mf ∋ od∅)
        is-maximum : ( f : Filter {L} {P} LP ) →  ¬ (filter f ∋ od∅)  →  ¬ ( filter mf  ⊂ filter f  )
 
-max→ultra : {L P : HOD} (LP : L ⊆ Power P) → (mx : MaximumFilter {L} {P} LP ) → ultra-filter ( MaximumFilter.mf mx )
-max→ultra {L} {P} LP mx = record { proper = MaximumFilter.proper mx ; ultra = ultra } where
+record Fp {L P : HOD} (LP : L ⊆ Power P)  (mx : MaximumFilter {L} {P} LP ) (p x : Ordinal ) : Set n where
+    field 
+       y : Ordinal 
+       mfy : odef (filter (MaximumFilter.mf mx)) y
+       x=y∪p : x ≡ & ( * y ∪ * p )
+
+max→ultra : {L P : HOD} (LP : L ⊆ Power P) 
+       → ({p q : HOD} → L ∋ p → L ∋ q → L ∋ (p \ q)) 
+       → ({p q : HOD} → L ∋ p → L ∋ q → L ∋ (p ∪ q))
+       → (mx : MaximumFilter {L} {P} LP ) → ultra-filter ( MaximumFilter.mf mx )
+max→ultra {L} {P} LP NEG CUP mx = record { proper = MaximumFilter.proper mx ; ultra = ultra } where
     mf = MaximumFilter.mf mx
     ultra : {p : HOD} → L ∋ p → L ∋ (P \ p) → (filter mf ∋ p) ∨ (filter mf ∋ (P \ p))
-    ultra {p} lp lnp with ∋-p (filter mf) p
+    ultra {p} Lp lnp with ∋-p (filter mf) p
     ... | yes y = case1 y
     ... | no np with ∋-p (filter mf) (P \ p) 
     ... | yes y = case2 y
     ... | no n-p = ⊥-elim (MaximumFilter.is-maximum mx FisFilter FisProper  ⟪ F< , FisGreater ⟫  ) where
-         F⊆L : {y : Ordinal } → (y ≡ & p) ∨ odef (filter mf) y → odef L y
-         F⊆L (case1 refl) = lp
+         F⊆L : {x : Ordinal } →  Fp {L} {P} LP mx (& p) x ∨ odef (filter mf) x → odef L x
          F⊆L (case2 mfx) = f⊆L mf mfx
-         F : HOD
-         F = record { od = record { def = λ x → (x ≡ & p) ∨ odef (filter mf) x  } ; odmax = & L ; <odmax = λ lt → odef< (F⊆L lt) } where
+         F⊆L {x} (case1 pmf) = mu04 pmf where
+             mu05 : (fp : Fp LP mx (& p) x ) → odef L (Fp.y fp )
+             mu05 fp = f⊆L mf ( Fp.mfy fp )
+             mu04 :  Fp LP mx (& p) x → odef L x
+             mu04 fp = subst (λ k → odef L k ) (sym (trans (Fp.x=y∪p fp ) mu06  )) 
+              ( CUP (subst (λ k → odef L k ) (sym &iso) (mu05 fp)) Lp ) where
+                 mu06 :  & (* (Fp.y fp) ∪ * (& p)) ≡ & (* (Fp.y fp) ∪ p) 
+                 mu06 = cong (λ k → & (* (Fp.y fp) ∪ k))  *iso
+         F : HOD  -- Replace (filter mf) (λ y → y ∪ p ) ∪ filter mf
+         F = record { od = record { def = λ x →  Fp {L} {P} LP mx (& p) x ∨ odef (filter mf) x  } 
+            ; odmax = & L ; <odmax = λ lt → odef< (F⊆L lt) } 
          mu01 :  {r : HOD} {q : HOD} → L ∋ q → F ∋ r → r ⊆ q → F ∋ q
-         mu01 {r} {q} Lq (case1 eq) r⊆q = mu03 where
-             r=p : r ≡ p
-             r=p = subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) eq )
-             mu03 : odef F (& q)
-             mu03 = ?
+         mu01 {r} {q} Lq (case1 record { y = y ; mfy = mfy ; x=y∪p = x=y∪p }) r⊆q = mu03 where
+             y+q-r : HOD
+             y+q-r = * y ∪ ( q \ r )
+             Ly : L ∋ * y
+             Ly = subst (λ k → odef L k) (sym &iso) (f⊆L mf mfy)
+             mu08 : L ∋ y+q-r
+             mu08 = CUP Ly (NEG Lq (subst (λ k → odef L k) 
+               (trans (cong (λ k → & (* y ∪ k)) (sym *iso)) (sym x=y∪p) ) (CUP Ly Lp )) ) where
+             mu09 : * y ⊆ y+q-r
+             mu09 {x} yx = case1 yx
+             mu07 : filter mf  ∋ y+q-r
+             mu07 = filter1 mf {_} {y+q-r} mu08 (subst (λ k → odef (filter mf) k) (sym &iso) mfy) mu09
+             mu03 : odef F (& q) -- y+q-r + p  ≡ y+q-(y+p)+ p = q  so it is in F
+             mu03 = case1 record { y = _  ; mfy = mu07 ; x=y∪p = cong (&) (==→o≡ record { eq→ = mu10 ; eq← = mu11 } ) } where
+                mu12 : r ≡ (* y ∪ p)
+                mu12 = subst₂ (λ j k → j ≡ k ) *iso (trans *iso (cong (λ k → (* y ∪ k)) *iso)) (cong (*) x=y∪p )
+                mu10 : {x : Ordinal} → odef q x → odef (* (& y+q-r) ∪ * (& p)) x
+                mu10 {x} qx with ODC.∋-p O r (* x)
+                ... | no nrx = case1 (subst (λ k → odef k x) (sym *iso) mu13) where
+                      mu13 : odef (* y ∪ (q \ r)) x 
+                      mu13 = case2 ⟪ qx , (λ rx → nrx (subst (λ k → odef r k ) (sym &iso) rx))  ⟫ 
+                ... | yes rx with subst₂ (λ j k → odef j k ) mu12 (sym &iso) rx
+                ... | case1 yx = case1 (subst (λ k → odef k x) (sym *iso) (case1 (subst (λ k → odef (* y) k) (trans &iso &iso) yx) ) )
+                ... | case2 px = case2 (subst₂ (λ j k → odef j k ) (sym *iso) (trans &iso &iso) px )
+                mu11 : {x : Ordinal} → odef (* (& y+q-r) ∪ * (& p)) x → odef q x
+                mu11 {x} (case2 px) = r⊆q (subst (λ k → odef k x) (sym mu12) (case2 (subst (λ k → odef k x) *iso px) )) 
+                mu11 {x} (case1 m06x) with subst (λ k → odef k x) *iso m06x
+                ... | case1 yx = r⊆q (subst (λ k → odef k x) (sym mu12) (case1 yx))
+                ... | case2 q-rx = proj1 q-rx
          mu01 {r} {q} Lq (case2 mfr) r⊆q = case2 ( filter1 mf Lq mfr r⊆q)  
+         mu02 : {r : HOD} {q : HOD} → F ∋ r → F ∋ q → L ∋ (r ∩ q) → F ∋ (r ∩ q)
+         mu02 {r} {q} (case1 record { y = y₁ ; mfy = mfy₁ ; x=y∪p = x=y∪p₁ }) (case1 record { y = y ; mfy = mfy ; x=y∪p = x=y∪p }) Lrq = ?
+         mu02 {r} {q} (case1 record { y = y ; mfy = mfy ; x=y∪p = x=y∪p }) (case2 mfq) Lrq = ?
+         mu02 {r} {q} (case2 mfr) (case1 record { y = y ; mfy = mfp ; x=y∪p = x=y∪p }) Lrq = ?
+         mu02 {r} {q} (case2 mfr) (case2 mfq ) Lrq = ?
          FisFilter : Filter {L} {P} LP
-         FisFilter = record { filter = F ; f⊆L = F⊆L ; filter1 = mu01 ; filter2 = {!!} }
+         FisFilter = record { filter = F ; f⊆L = F⊆L ; filter1 = mu01 ; filter2 = mu02 }
          FisGreater : {x : Ordinal } → odef (filter (MaximumFilter.mf mx))  x → odef (filter FisFilter ) x
          FisGreater {x} mfx = case2 mfx
          F< : & (filter (MaximumFilter.mf mx)) o< & F