{-# OPTIONS --allow-unsolved-metas #-} open import Level open import Ordinals module Tychonoff {n : Level } (O : Ordinals {n}) where open import zf open import logic open _∧_ open _∨_ open Bool import OD open import Relation.Nullary open import Data.Empty open import Relation.Binary.Core open import Relation.Binary.Definitions open import Relation.Binary.PropositionalEquality 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 ODC O open import filter O open import OPair O open import Topology O open import maximum-filter O open Filter open Topology -- FIP is UFL -- filter Base record FBase (P : HOD )(X : Ordinal ) (u : Ordinal) : Set n where field b x : Ordinal b⊆X : * b ⊆ * X sb : Subbase (* b) x u⊆P : * u ⊆ P x⊆u : * x ⊆ * u record UFLP {P : HOD} (TP : Topology P) (F : Filter {Power P} {P} (λ x → x) ) (ultra : ultra-filter F ) : Set (suc (suc n)) where field limit : Ordinal P∋limit : odef P limit is-limit : {v : Ordinal} → Neighbor TP limit v → (* v) ⊆ filter F UFLP→FIP : {P : HOD} (TP : Topology P) → ((F : Filter {Power P} {P} (λ x → x) ) (UF : ultra-filter F ) → UFLP TP F UF ) → FIP TP UFLP→FIP {P} TP uflp with trio< (& P) o∅ ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a ) ... | tri≈ ¬a b ¬c = record { limit = ? ; is-limit = {!!} } where -- P is empty fip02 : {x : Ordinal } → ¬ odef P x fip02 {x} Px = ⊥-elim ( o<¬≡ (sym b) (∈∅< Px) ) ... | tri> ¬a ¬b 0

; P∋limit = Pf ; is-limit = isL } where FP : Filter {Power P} {P} (λ x → x) FP = record { filter = Proj1 (filter F) (Power P) (Power Q) ; f⊆L = ty00 ; filter1 = ? ; filter2 = ? } where ty00 : Proj1 (filter F) (Power P) (Power Q) ⊆ Power P ty00 {x} ⟪ PPx , ppf ⟫ = PPx UFP : ultra-filter FP UFP = record { proper = ? ; ultra = ? } uflp : UFLP TP FP UFP uflp = FIP→UFLP TP (Compact→FIP TP CP) FP UFP FQ : Filter {Power Q} {Q} (λ x → x) FQ = record { filter = Proj2 (filter F) (Power P) (Power Q) ; f⊆L = ty00 ; filter1 = ? ; filter2 = ? } where ty00 : Proj2 (filter F) (Power P) (Power Q) ⊆ Power Q ty00 {x} ⟪ QPx , ppf ⟫ = QPx UFQ : ultra-filter FQ UFQ = record { proper = ? ; ultra = ? } uflq : UFLP TQ FQ UFQ uflq = FIP→UFLP TQ (Compact→FIP TQ CQ) FQ UFQ Pf : odef (ZFP P Q) (& < * (UFLP.limit uflp) , * (UFLP.limit uflq) >) Pf = ? pq⊆F : {p q : HOD} → Neighbor TP (& p) (UFLP.limit uflp) → Neighbor TP (& q) (UFLP.limit uflq) → ? ⊆ filter F pq⊆F = ? isL : {v : Ordinal} → Neighbor (ProductTopology TP TQ) (& < * (UFLP.limit uflp) , * (UFLP.limit uflq) >) v → * v ⊆ filter F isL {v} npq {x} fx = ? where bpq : Base (ZFP P Q) (pbase TP TQ) (Neighbor.u npq) (& < * (UFLP.limit uflp) , * (UFLP.limit uflq) >) bpq = Neighbor.ou npq (Neighbor.ux npq) pqb : Subbase (pbase TP TQ) (Base.b bpq ) pqb = Base.sb bpq pqb⊆opq : * (Base.b bpq) ⊆ * ( Neighbor.u npq ) pqb⊆opq = Base.b⊆u bpq base⊆F : {b : Ordinal } → Subbase (pbase TP TQ) b → * b ⊆ * (Neighbor.u npq) → * b ⊆ filter F base⊆F (gi (case1 px)) b⊆u {z} bz = fz where -- F contains no od∅, because it projection contains no od∅ -- x is an element of BaseP, which is a subset of Neighbor npq -- x is also an elment of Proj1 F because Proj1 F has UFLP (uflp) -- BaseP ∩ F is not empty -- (Base P ∩ F) ⊆ F , (Base P ) ⊆ F , il1 : odef (Power P) z ∧ ZProj1 (filter F) z il1 = UFLP.is-limit uflp ? bz nei1 : HOD nei1 = Proj1 (* (Neighbor.u npq)) (Power P) (Power Q) plimit : Ordinal plimit = UFLP.limit uflp nproper : {b : Ordinal } → * b ⊆ nei1 → o∅ o< b nproper = ? b∋z : odef nei1 z b∋z = ? bp : BaseP {P} TP Q z bp = record { b = ? ; op = ? ; prod = ? } neip : {p : Ordinal } → ( bp : BaseP TP Q p ) → * p ⊆ filter F neip = ? il2 : * z ⊆ ZFP (Power P) (Power Q) il2 = ? il3 : filter F ∋ ? il3 = ? fz : odef (filter F) z fz = subst (λ k → odef (filter F) k) &iso (filter1 F ? ? ?) base⊆F (gi (case2 qx)) b⊆u {z} bz = ? base⊆F (g∩ b1 b2) b⊆u {z} bz = ?