{-# OPTIONS --allow-unsolved-metas #-} import Level open import Ordinals module generic-filter {n : Level.Level } (O : Ordinals {n}) where -- import filter open import zf open import logic -- open import partfunc {n} O import OD open import Relation.Nullary open import Relation.Binary open import Data.Empty open import Relation.Binary open import Relation.Binary.Core open import Relation.Binary.PropositionalEquality open import Data.Nat import BAlgebra open BAlgebra O open inOrdinal O open OD O open OD.OD open ODAxiom odAxiom import OrdUtil import ODUtil open Ordinals.Ordinals O open Ordinals.IsOrdinals isOrdinal open Ordinals.IsNext isNext open OrdUtil O open ODUtil O import ODC -- open filter O open _∧_ open _∨_ open Bool open HOD ------- -- the set of finite partial functions from ω to 2 -- -- open import Data.List hiding (filter) open import Data.Maybe open import ZProduct O record CountableModel : Set (Level.suc (Level.suc n)) where field ctl-M : HOD ctl→ : ℕ → Ordinal ctl ¬a ¬b c = ⊥-elim ( nat-≤> n≤m c ) record Expansion (p : HOD) (dense : HOD) : Set (Level.suc n) where field exp : HOD D∋exp : dense ∋ exp p⊆exp : p ⊆ exp record Dense (L : HOD ) : Set (Level.suc n) where field dense : HOD d⊆P : dense ⊆ L has-exp : {p : HOD} → (Lp : L ∋ p) → Expansion p dense record Exp2 (I : HOD) ( p q : HOD ) : Set (Level.suc n) where field exp : HOD I∋exp : I ∋ exp p⊆exp : p ⊆ exp q⊆exp : q ⊆ exp record ⊆-Ideal {L P : HOD } (LP : L ⊆ Power P) : Set (Level.suc n) where field ideal : HOD i⊆L : ideal ⊆ L ideal1 : { p q : HOD } → L ∋ q → ideal ∋ p → q ⊆ p → ideal ∋ q exp : { p q : HOD } → ideal ∋ p → ideal ∋ q → Exp2 ideal p q record GenericFilter {L P : HOD} (LP : L ⊆ Power P) (M : HOD) : Set (Level.suc n) where field genf : ⊆-Ideal {L} {P} LP generic : (D : Dense L ) → M ∋ Dense.dense D → ¬ ( (Dense.dense D ∩ ⊆-Ideal.ideal genf ) ≡ od∅ ) P-GenericFilter : (P L p0 : HOD ) → (LP : L ⊆ Power P) → L ∋ p0 → (C : CountableModel ) → GenericFilter {L} {P} LP ( ctl-M C ) P-GenericFilter P L p0 L⊆PP Lp0 C = record { genf = record { ideal = PDHOD L p0 C ; i⊆L = x∈PP ; ideal1 = ideal1 ; exp = λ ip iq → exp1 ip iq } ; generic = fdense } where ideal1 : {p q : HOD} → L ∋ q → PDHOD L p0 C ∋ p → q ⊆ p → PDHOD L p0 C ∋ q ideal1 {p} {q} Lq record { gr = gr ; pn ¬a ¬b c = record { exp = * (find-p L C (gr Pp) (& p0)) ; I∋exp = gf17 Pp ; q⊆exp = λ qx → gf15 _ qx ; p⊆exp = λ {x} px → ppn _ (subst (λ k → odef k x) (sym *iso) px) } where gf16 : gr Pq ≤ gr Pp gf16 = } -- val< : {x y p : Ordinal} → odef (* x) ( & < * y , * p > ) → y o< x val< {x} {y} {p} xyp = osucprev ( begin osuc y ≤⟨ osucc (odef< (subst (λ k → odef (* y , * y) k) &iso (v00 _ _ ) )) ⟩ & (* y , * y) <⟨ c<→o< (v01 _ _) ⟩ & < * y , * p > <⟨ odef< xyp ⟩ & (* x) ≡⟨ &iso ⟩ x ∎ ) where v00 : (x y : HOD) → odef (x , y) (& x) v00 _ _ = case1 refl v01 : (x y : HOD) → < x , y > ∋ (x , x) v01 _ _ = case1 refl open o≤-Reasoning O record valS (G : HOD) (x z : Ordinal) (val : (y : Ordinal) → y o< x → HOD): Set n where field y p : Ordinal G∋p : odef G p is-val : odef (* x) ( & < * y , * p > ) z=valy : z ≡ & (val y (val< is-val)) z