\import Function.Meta \import Logic \import Logic.Meta \import Order.Lattice \import Order.PartialOrder \import Set.Subset \import Topology.CoverSpace \import Topology.TopSpace \open Bounded(top) \func TopCover {X : TopSpace} (Xr : X.IsRegular) : CoverSpace X \cowith | isCauchy C => \Pi (x : X) -> ∃ (U : C) (V : X.isOpen) (V x) (V ⊆ U) | cauchy-cover c x => \case c x \with { | inP (U,CU,V,_,Vx,V<=U) => inP (U, CU, V<=U Vx) } | cauchy-top x => inP (top, idp, top, open-top, (), <=-refl) | cauchy-refine f e x => \case f x \with { | inP (U,CU,V,Vo,Vx,V<=U) => \case e CU \with { | inP (W,DW,U<=W) => inP (W, DW, V, Vo, Vx, \lam c => U<=W $ V<=U c) } } | cauchy-glue f e x => \case f x \with { | inP (U,CU,V,Vo,Vx,V<=U) => \case e CU x \with { | inP (U',DUU',V',V'o,V'x,V'<=U') => inP (U ∧ U', inP (U, U', CU, DUU', idp), V ∧ V', open-inter Vo V'o, (Vx, V'x), MeetSemilattice.meet-monotone V<=U V'<=U') } } | isRegular c x => \case c x \with { | inP (U,CU,V,Vo,Vx,V<=U) => \case Xr Vo Vx \with { | inP (W,Wo,Wx,W<=<V) => inP (W, inP (U, CU, \lam y => \case W<=<V y \with { | inP (W',W'o,W'y,h) => inP (W', \lam s d => V<=U $ h s d, W', W'o, W'y, <=-refl) }), W, Wo, Wx, <=-refl) } } \lemma top-cover-unit {X : TopSpace} {Xr : X.IsRegular} : ContMap X (TopCover Xr) (\lam x => x) \cowith | func-cont c => X.cover-open \lam {x} Ux => \case c Ux x \with { | inP (W,h,V,Vo,Vx,V<=W) => inP (V, Vo, Vx, \lam {y} Vy => h (V<=W Vx) (V<=W Vy)) }