const In : set set prop term iIn = In infix iIn 2000 2000 term Subq = \x:set.\y:set.!z:set.z iIn x -> z iIn y term nIn = \x:set.\y:set.~ x iIn y const binunion : set set set const Repl : set (set set) set const SetAdjoin : set set set const Sing : set set const ordsucc : set set const Empty : set term SNoElts_ = \x:set.binunion x (Repl x \y:set.SetAdjoin y (Sing (ordsucc Empty))) term SNo_ = \x:set.\y:set.Subq y (SNoElts_ x) & !z:set.z iIn x -> ~(SetAdjoin z (Sing (ordsucc Empty)) iIn y <-> z iIn y) axiom binunionE: !x:set.!y:set.!z:set.z iIn binunion x y -> z iIn x | z iIn y const ordinal : set prop lemma !x:set.!y:set.ordinal x -> ordinal y -> SetAdjoin y (Sing (ordsucc Empty)) iIn binunion x (Repl x \z:set.SetAdjoin z (Sing (ordsucc Empty))) -> SetAdjoin y (Sing (ordsucc Empty)) iIn x | SetAdjoin y (Sing (ordsucc Empty)) iIn Repl x (\z:set.SetAdjoin z (Sing (ordsucc Empty))) -> y iIn x var x:set var y:set var z:set hyp ordinal y hyp Subq x (SNoElts_ y) hyp ordinal z hyp (\w:set.SetAdjoin w (Sing (ordsucc Empty))) z iIn x claim SetAdjoin z (Sing (ordsucc Empty)) iIn binunion y (Repl y \w:set.SetAdjoin w (Sing (ordsucc Empty))) -> z iIn y