const In : set set prop term iIn = In infix iIn 2000 2000 term nIn = \x:set.\y:set.~ x iIn y term Subq = \x:set.\y:set.!z:set.z iIn x -> z iIn y const binunion : set set set const Repl : set (set set) set const Sing : set set term SetAdjoin = \x:set.\y:set.binunion x (Sing y) const ordsucc : set set const Empty : set term SNoElts_ = \x:set.binunion x (Repl x \y:set.SetAdjoin y (Sing (ordsucc Empty))) 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) const ordinal : set prop axiom ordinal_Hered: !x:set.ordinal x -> !y:set.y iIn x -> ordinal y axiom ReplE_impred: !x:set.!f:set set.!y:set.y iIn Repl x f -> !P:prop.(!z:set.z iIn x -> 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 FalseE: ~ False const SNo : set prop const SNoLev : set set axiom SNoLev_prop: !x:set.SNo x -> ordinal (SNoLev x) & SNo_ (SNoLev x) x lemma !x:set.!y:set.Sing (ordsucc (ordsucc Empty)) iIn y -> ordinal (SNoLev x) -> y iIn SNoLev x -> ~ ordinal y lemma !x:set.!y:set.!z:set.Sing (ordsucc (ordsucc Empty)) iIn y -> ordinal (SNoLev x) -> z iIn SNoLev x -> y = SetAdjoin z (Sing (ordsucc Empty)) -> ~ ordinal z var x:set var y:set var z:set hyp SNo x hyp y iIn x hyp z iIn y hyp z = Sing (ordsucc (ordsucc Empty)) claim ~ Sing (ordsucc (ordsucc Empty)) iIn y