const In : set set prop term iIn = In infix iIn 2000 2000 const SNo : set prop const SNoLe : set set prop term <= = SNoLe infix <= 2020 2020 term SNo_max_of = \x:set.\y:set.y iIn x & SNo y & !z:set.z iIn x -> SNo z -> z <= y term nIn = \x:set.\y:set.~ x iIn y term SNo_min_of = \x:set.\y:set.y iIn x & SNo y & !z:set.z iIn x -> SNo z -> y <= z term Subq = \x:set.\y:set.!z:set.z iIn x -> z iIn y term TransSet = \x:set.!y:set.y iIn x -> Subq y x const add_SNo : set set set term + = add_SNo infix + 2281 2280 axiom SNo_add_SNo: !x:set.!y:set.SNo x -> SNo y -> SNo (x + y) const SNoR : set set const SNoLev : set set const SNoLt : set set prop term < = SNoLt infix < 2020 2020 axiom SNoR_E: !x:set.SNo x -> !y:set.y iIn SNoR x -> !P:prop.(SNo y -> SNoLev y iIn SNoLev x -> x < y -> P) -> P const SNoL : set set axiom SNoL_E: !x:set.SNo x -> !y:set.y iIn SNoL x -> !P:prop.(SNo y -> SNoLev y iIn SNoLev x -> y < x -> P) -> P const nat_p : set prop const diadic_rational_p : set prop lemma !x:set.!y:set.!z:set.!w:set.nat_p x -> (!u:set.u iIn x -> !v:set.SNo v -> SNoLev v = u -> diadic_rational_p v) -> SNo y -> SNoLev y = x -> ~ diadic_rational_p y -> SNo_max_of (SNoL y) z -> SNo z -> SNoLev z iIn SNoLev y -> z < y -> SNo_min_of (SNoR y) w -> SNo w -> SNoLev w iIn SNoLev y -> y < w -> ~ SNo (y + y) const SNoS_ : set set const omega : set var x:set var y:set hyp nat_p x hyp !z:set.z iIn x -> !w:set.SNo w -> SNoLev w = z -> diadic_rational_p w hyp SNo y hyp SNoLev y = x hyp ~ diadic_rational_p y hyp y iIn SNoS_ omega hyp ?z:set.SNo_max_of (SNoL y) z claim ~ ?z:set.SNo_min_of (SNoR y) z