{-# OPTIONS --allow-unsolved-metas #-} import Level open import Ordinals module generic-filter {n : Level.Level } (O : Ordinals {n}) where open import logic 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 -- L : definable HOD in Agda -- L Countable -- Dense in Ordinal --- Dense L -- x : Ord → ∃ l ∈ L → x ⊆ l -- -- ω =c= Power ω ∩ L c< Power ω -- ω c< Power ω ∩ G[L] c< Power ω -- CH counter example -- Power (G[L]) -- 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∅ ) ---- -- Generic Filter on L ⊆ Power P from HOD's Countable Ordinal (G ⊆ Power P ≡ G i.e. ℕ → P → Set ) -- -- p 0 ≡ p0 -- p (suc n) = if ∃ q ∈ M ∧ p n ⊆ q → q (by axiom of choice) ( q = * ( ctl→ n ) ) --- else p n 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 = } -- -- We can define the valuation, but to use this, we need V=L, which makes things complicated. 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