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) axiom binunionI1: !x:set.!y:set.!z:set.z iIn x -> z iIn binunion x y const SNo : set prop lemma !x:set.!y:set.!z:set.!w:set.SNo x -> y iIn x -> SetAdjoin y (Sing (ordsucc (ordsucc Empty))) = SetAdjoin z (Sing (ordsucc (ordsucc Empty))) -> w iIn y -> w iIn SetAdjoin z (Sing (ordsucc (ordsucc Empty))) -> w iIn z claim !x:set.!y:set.SNo x -> SNo y -> !z:set.z iIn x -> !w:set.w iIn y -> SetAdjoin z (Sing (ordsucc (ordsucc Empty))) = SetAdjoin w (Sing (ordsucc (ordsucc Empty))) -> !u:set.u iIn z -> u iIn w