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 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) term TransSet = \x:set.!y:set.y iIn x -> Subq y x 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) axiom ReplI: !x:set.!f:set set.!y:set.y iIn x -> f y iIn Repl x f axiom binunionI2: !x:set.!y:set.!z:set.z iIn y -> z iIn binunion x y const binintersect : set set set axiom binintersectI: !x:set.!y:set.!z:set.z iIn x -> z iIn y -> z iIn binintersect x y axiom binintersectE1: !x:set.!y:set.!z:set.z iIn binintersect x y -> z iIn x axiom exactly1of2_I1: !P:prop.!Q:prop.P -> ~ Q -> ~(P <-> Q) 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 exactly1of2_E: !P:prop.!Q:prop.~(P <-> Q) -> !R:prop.(P -> ~ Q -> R) -> (~ P -> Q -> R) -> R const SNoLev : set set const SNo : set prop var x:set var y:set var z:set hyp SNo x hyp y iIn SNoLev x hyp !w:set.w iIn SNoLev x -> ~(SetAdjoin w (Sing (ordsucc Empty)) iIn x <-> w iIn x) hyp z iIn y claim z iIn SNoLev x -> ~(SetAdjoin z (Sing (ordsucc Empty)) iIn binintersect x (SNoElts_ y) <-> z iIn binintersect x (SNoElts_ y))