const binunion : set set set const Sep : set (set prop) set const ReplSep : set (set prop) (set set) set const SetAdjoin : set set set const Sing : set set const ordsucc : set set const Empty : set term PSNo = \x:set.\p:set prop.binunion (Sep x p) (ReplSep x (\y:set.~ p y) \y:set.SetAdjoin y (Sing (ordsucc Empty))) 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 const Repl : set (set set) set term SNoElts_ = \x:set.binunion x (Repl x \y:set.SetAdjoin y (Sing (ordsucc Empty))) term nIn = \x:set.\y:set.~ x iIn y 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) const ordinal : set prop axiom ordinal_Hered: !x:set.ordinal x -> !y:set.y iIn x -> ordinal y axiom tagged_not_ordinal: !x:set.~ ordinal (SetAdjoin x (Sing (ordsucc Empty))) axiom SepE: !x:set.!p:set prop.!y:set.y iIn Sep x p -> y iIn x & p y axiom ReplSepE_impred: !x:set.!p:set prop.!f:set set.!y:set.y iIn ReplSep x p f -> !P:prop.(!z:set.z iIn x -> p z -> y = f z -> P) -> P axiom binunionE: !x:set.!y:set.!z:set.z iIn binunion x y -> z iIn x | z iIn y axiom SepI: !x:set.!p:set prop.!y:set.y iIn x -> p y -> y iIn Sep x p axiom binunionI1: !x:set.!y:set.!z:set.z iIn x -> z iIn binunion x y axiom exactly1of2_I2: !P:prop.!Q:prop.~ P -> Q -> ~(P <-> Q) axiom ReplSepI: !x:set.!p:set prop.!f:set set.!y:set.y iIn x -> p y -> f y iIn ReplSep x p f axiom binunionI2: !x:set.!y:set.!z:set.z iIn y -> z iIn binunion x y axiom exactly1of2_I1: !P:prop.!Q:prop.P -> ~ Q -> ~(P <-> Q) axiom xm: !P:prop.P | ~ P lemma !x:set.!p:set prop.!y:set.!z:set.ordinal x -> ordinal y -> p y -> z iIn x -> ~ p z -> SetAdjoin y (Sing (ordsucc Empty)) = SetAdjoin z (Sing (ordsucc Empty)) -> ~ ordinal z var x:set var p:set prop var y:set hyp ordinal x hyp y iIn x claim ordinal y -> ~(SetAdjoin y (Sing (ordsucc Empty)) iIn PSNo x p <-> y iIn PSNo x p)