const bij : set set (set set) prop term equip = \x:set.\y:set.?f:set set.bij x y f const In : set set prop term iIn = In infix iIn 2000 2000 term nIn = \x:set.\y:set.~ x iIn y term inj = \x:set.\y:set.\f:set set.(!z:set.z iIn x -> f z iIn y) & !z:set.z iIn x -> !w:set.w iIn x -> f z = f w -> z = w const setminus : set set set axiom setminusI: !x:set.!y:set.!z:set.z iIn x -> nIn z y -> z iIn setminus x y const Repl : set (set set) set axiom ReplI: !x:set.!f:set set.!y:set.y iIn x -> f y iIn Repl x f axiom FalseE: ~ False const inv : set (set set) set set axiom inj_linv: !x:set.!f:set set.(!y:set.y iIn x -> !z:set.z iIn x -> f y = f z -> y = z) -> !y:set.y iIn x -> inv x f (f y) = y axiom setminusE: !x:set.!y:set.!z:set.z iIn setminus x y -> z iIn x & nIn z 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 var x:set var y:set var f:set set var f2:set set var z:set var w:set var u:set hyp !v:set.v iIn y -> !x2:set.x2 iIn y -> f2 v = f2 x2 -> v = x2 hyp (\v:set.Repl (setminus y (Repl (setminus x v) \x2:set.f x2)) \x2:set.f2 x2) z = z hyp w iIn x hyp nIn w z hyp u iIn z claim u iIn Repl (setminus y (Repl (setminus x z) f)) f2 -> f w = inv y f2 u -> w = u