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 const bij : set set (set set) prop term equip = \x:set.\y:set.?f:set set.bij x y f const omega : set term finite = \x:set.?y:set.y iIn omega & equip x y term Subq = \x:set.\y:set.!z:set.z iIn x -> z iIn y term nIn = \x:set.\y:set.~ x iIn y const Repl : set (set set) set axiom ReplI: !x:set.!f:set set.!y:set.y iIn x -> f y iIn Repl x f const SNoLt : set set prop term < = SNoLt infix < 2020 2020 axiom SNoLtLe: !x:set.!y:set.x < y -> x <= y axiom SNoLe_tra: !x:set.!y:set.!z:set.SNo x -> SNo y -> SNo z -> x <= y -> y <= z -> x <= z axiom SNoLe_ref: !x:set.x <= x const ordsucc : set set axiom ordsuccE: !x:set.!y:set.y iIn ordsucc x -> y iIn x | y = x axiom SNoLtLe_or: !x:set.!y:set.SNo x -> SNo y -> x < y | y <= x var x:set var y:set var f:set set var z:set hyp !w:set.w iIn y -> SNo w hyp !w:set.w iIn y -> ?u:set.u iIn ordsucc (ordsucc x) & f u = w hyp Subq (Repl (ordsucc x) f) y hyp z iIn Repl (ordsucc x) \w:set.f w hyp SNo z hyp !w:set.w iIn Repl (ordsucc x) f -> SNo w -> w <= z hyp f (ordsucc x) iIn y claim SNo (f (ordsucc x)) -> ?w:set.SNo_max_of y w