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 If_i : prop set set set axiom If_i_1: !P:prop.!x:set.!y:set.P -> If_i P x y = x axiom If_i_0: !P:prop.!x:set.!y:set.~ P -> If_i P x y = y axiom xm: !P:prop.P | ~ P const setminus : set set set axiom setminusE: !x:set.!y:set.!z:set.z iIn setminus x y -> z iIn x & nIn z y const Repl : set (set set) set 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 setminusI: !x:set.!y:set.!z:set.z iIn x -> nIn z y -> z iIn setminus x y axiom ReplI: !x:set.!f:set set.!y:set.y iIn x -> f y iIn Repl x f axiom bijI: !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) -> (!z:set.z iIn y -> ?w:set.w iIn x & f w = z) -> bij x y f const Power : set set const Subq : set set prop axiom KnasterTarski_set: !x:set.!f:set set.(!y:set.y iIn Power x -> f y iIn Power x) -> (!y:set.y iIn Power x -> !z:set.z iIn Power x -> Subq y z -> Subq (f y) (f z)) -> ?y:set.y iIn Power x & f y = y const inv : set (set set) set set lemma !x:set.!y:set.!f:set set.!f2:set set.!z:set.!w:set.(!u:set.u iIn y -> !v:set.v iIn y -> f2 u = f2 v -> u = v) -> (\u:set.Repl (setminus y (Repl (setminus x u) \v:set.f v)) \v:set.f2 v) z = z -> w iIn z -> w iIn Repl (setminus y (Repl (setminus x z) f)) f2 -> inv y f2 w iIn y lemma !x:set.!y:set.!f:set set.!f2:set set.!z:set.!w:set.!u:set.(!v:set.v iIn y -> !x2:set.x2 iIn y -> f2 v = f2 x2 -> v = x2) -> (\v:set.Repl (setminus y (Repl (setminus x v) \x2:set.f x2)) \x2:set.f2 x2) z = z -> u iIn x -> w iIn z -> w iIn Repl (setminus y (Repl (setminus x z) f)) f2 -> inv y f2 w = If_i (u iIn z) (inv y f2 u) (f u) -> w = u lemma !x:set.!y:set.!f:set set.!f2:set set.!z:set.!w:set.!u:set.(!v:set.v iIn y -> !x2:set.x2 iIn y -> f2 v = f2 x2 -> v = x2) -> (\v:set.Repl (setminus y (Repl (setminus x v) \x2:set.f x2)) \x2:set.f2 x2) z = z -> w iIn x -> nIn w z -> u iIn z -> u iIn Repl (setminus y (Repl (setminus x z) f)) f2 -> f w = inv y f2 u -> w = u lemma !x:set.!y:set.!f:set set.!f2:set set.!z:set.!w:set.(!u:set.u iIn y -> f2 u iIn x) -> (!u:set.u iIn y -> !v:set.v iIn y -> f2 u = f2 v -> u = v) -> (\u:set.Repl (setminus y (Repl (setminus x u) \v:set.f v)) \v:set.f2 v) z = z -> w iIn y -> nIn w (Repl (setminus x z) \u:set.f u) -> f2 w iIn z -> ?u:set.u iIn x & If_i (u iIn z) (inv y f2 u) (f u) = w var x:set var y:set var f:set set var f2:set set hyp !z:set.z iIn x -> f z iIn y hyp !z:set.z iIn x -> !w:set.w iIn x -> f z = f w -> z = w hyp !z:set.z iIn y -> f2 z iIn x hyp !z:set.z iIn y -> !w:set.w iIn y -> f2 z = f2 w -> z = w hyp !z:set.z iIn Power x -> Repl (setminus y (Repl (setminus x z) f)) f2 iIn Power x claim (!z:set.z iIn Power x -> !w:set.w iIn Power x -> Subq z w -> Subq (Repl (setminus y (Repl (setminus x z) f)) f2) (Repl (setminus y (Repl (setminus x w) f)) f2)) -> ?f3:set set.bij x y f3