THEOREM

*******

 

On any set x, there exists a function f: x --> x such that f(a)=a (the identity function on set x).

 

Formally stated in DC Proof notation: ALL(x):[Set(x) => EXIST(f):[Function(f,x,x) & ALL(a):[a e x => f(a)=a]]]

 

This theorem is usually presented as a "definition" in textbooks as it is thought to be so "intuitively obvious."

 

Here, we will not simply define this function, but actually prove its existence using the axioms of set theory.

 

By Dan Christensen

2022-11-17

 

This machine-verified formal proof was written with the aid of the author's DC Proof 2.0 freeware available at http://www.dcproof.com

 

   

    Suppose...

 

      1     Set(x)

            Premise

 

    Apply Cartesian Product Axiom

 

      2     ALL(a1):ALL(a2):[Set(a1) & Set(a2) => EXIST(b):[Set'(b) & ALL(c1):ALL(c2):[(c1,c2) e b <=> c1 e a1 & c2 e a2]]]

            Cart Prod

 

      3     ALL(a2):[Set(x) & Set(a2) => EXIST(b):[Set'(b) & ALL(c1):ALL(c2):[(c1,c2) e b <=> c1 e x & c2 e a2]]]

            U Spec, 2

 

      4     Set(x) & Set(x) => EXIST(b):[Set'(b) & ALL(c1):ALL(c2):[(c1,c2) e b <=> c1 e x & c2 e x]]

            U Spec, 3

 

      5     Set(x) & Set(x)

            Join, 1, 1

 

      6     EXIST(b):[Set'(b) & ALL(c1):ALL(c2):[(c1,c2) e b <=> c1 e x & c2 e x]]

            Detach, 4, 5

 

      7     Set'(x2) & ALL(c1):ALL(c2):[(c1,c2) e x2 <=> c1 e x & c2 e x]

            E Spec, 6

 

    Define: x2

 

      8     Set'(x2)

            Split, 7

 

      9     ALL(c1):ALL(c2):[(c1,c2) e x2 <=> c1 e x & c2 e x]

            Split, 7

 

    Apply Subset Axiom

 

      10   EXIST(sub):[Set'(sub) & ALL(a):ALL(b):[(a,b) e sub <=> (a,b) e x2 & a=b]]

            Subset, 8

 

      11   Set'(g) & ALL(a):ALL(b):[(a,b) e g <=> (a,b) e x2 & a=b]

            E Spec, 10

 

    Define: g

 

      12   Set'(g)

            Split, 11

 

      13   ALL(a):ALL(b):[(a,b) e g <=> (a,b) e x2 & a=b]

            Split, 11

 

    Apply Function Axiom

 

      14   ALL(dom):ALL(cod):ALL(gra):[Set(dom) & Set(cod) & Set'(gra)

         => [ALL(a1):ALL(b):[(a1,b) e gra => a1 e dom & b e cod]

         & ALL(a1):[a1 e dom => EXIST(b):[b e cod & (a1,b) e gra]]

         & ALL(a1):ALL(b1):ALL(b2):[a1 e dom & b1 e cod & b2 e cod

         => [(a1,b1) e gra & (a1,b2) e gra => b1=b2]]

         => EXIST(fun):[Function(fun,dom,cod) & ALL(a1):ALL(b):[a1 e dom & b e cod

         => [fun(a1)=b <=> (a1,b) e gra]]]]]

            Function

 

      15   ALL(cod):ALL(gra):[Set(x) & Set(cod) & Set'(gra)

         => [ALL(a1):ALL(b):[(a1,b) e gra => a1 e x & b e cod]

         & ALL(a1):[a1 e x => EXIST(b):[b e cod & (a1,b) e gra]]

         & ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e cod & b2 e cod

         => [(a1,b1) e gra & (a1,b2) e gra => b1=b2]]

         => EXIST(fun):[Function(fun,x,cod) & ALL(a1):ALL(b):[a1 e x & b e cod

         => [fun(a1)=b <=> (a1,b) e gra]]]]]

            U Spec, 14

 

      16   ALL(gra):[Set(x) & Set(x) & Set'(gra)

         => [ALL(a1):ALL(b):[(a1,b) e gra => a1 e x & b e x]

         & ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e gra]]

         & ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e x & b2 e x

         => [(a1,b1) e gra & (a1,b2) e gra => b1=b2]]

         => EXIST(fun):[Function(fun,x,x) & ALL(a1):ALL(b):[a1 e x & b e x

         => [fun(a1)=b <=> (a1,b) e gra]]]]]

            U Spec, 15

 

      17   Set(x) & Set(x) & Set'(g)

         => [ALL(a1):ALL(b):[(a1,b) e g => a1 e x & b e x]

         & ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e g]]

         & ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e x & b2 e x

         => [(a1,b1) e g & (a1,b2) e g => b1=b2]]

         => EXIST(fun):[Function(fun,x,x) & ALL(a1):ALL(b):[a1 e x & b e x

         => [fun(a1)=b <=> (a1,b) e g]]]]

            U Spec, 16

 

      18   Set(x) & Set(x)

            Join, 1, 1

 

      19   Set(x) & Set(x) & Set'(g)

            Join, 18, 12

 

    Sufficient: For functionality of g

 

      20   ALL(a1):ALL(b):[(a1,b) e g => a1 e x & b e x]

         & ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e g]]

         & ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e x & b2 e x

         => [(a1,b1) e g & (a1,b2) e g => b1=b2]]

         => EXIST(fun):[Function(fun,x,x) & ALL(a1):ALL(b):[a1 e x & b e x

         => [fun(a1)=b <=> (a1,b) e g]]]

            Detach, 17, 19

 

         Part 1

        

         Prove: ALL(a1):ALL(b):[(a1,b) e g => a1 e x & b e x]

        

         Suppose...

 

            21   (t,u) e g

                  Premise

 

            22   ALL(b):[(t,b) e g <=> (t,b) e x2 & t=b]

                  U Spec, 13

 

            23   (t,u) e g <=> (t,u) e x2 & t=u

                  U Spec, 22

 

            24   [(t,u) e g => (t,u) e x2 & t=u]

             & [(t,u) e x2 & t=u => (t,u) e g]

                  Iff-And, 23

 

            25   (t,u) e g => (t,u) e x2 & t=u

                  Split, 24

 

            26   (t,u) e x2 & t=u

                  Detach, 25, 21

 

            27   (t,u) e x2

                  Split, 26

 

            28   ALL(c2):[(t,c2) e x2 <=> t e x & c2 e x]

                  U Spec, 9

 

            29   (t,u) e x2 <=> t e x & u e x

                  U Spec, 28

 

            30   [(t,u) e x2 => t e x & u e x]

             & [t e x & u e x => (t,u) e x2]

                  Iff-And, 29

 

            31   (t,u) e x2 => t e x & u e x

                  Split, 30

 

            32   t e x & u e x

                  Detach, 31, 27

 

    Part 1

   

    As Required:

 

      33   ALL(a1):ALL(b):[(a1,b) e g => a1 e x & b e x]

            4 Conclusion, 21

 

        

         Part 2

        

         Prove: ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e g]]

        

         Suppose...

 

            34   t e x

                  Premise

 

            35   ALL(b):[(t,b) e g <=> (t,b) e x2 & t=b]

                  U Spec, 13

 

            36   (t,t) e g <=> (t,t) e x2 & t=t

                  U Spec, 35

 

            37   [(t,t) e g => (t,t) e x2 & t=t]

             & [(t,t) e x2 & t=t => (t,t) e g]

                  Iff-And, 36

 

            38   (t,t) e x2 & t=t => (t,t) e g

                  Split, 37

 

            39   ALL(c2):[(t,c2) e x2 <=> t e x & c2 e x]

                  U Spec, 9

 

            40   (t,t) e x2 <=> t e x & t e x

                  U Spec, 39

 

            41   [(t,t) e x2 => t e x & t e x]

             & [t e x & t e x => (t,t) e x2]

                  Iff-And, 40

 

            42   (t,t) e x2 => t e x & t e x

                  Split, 41

 

            43   t e x & t e x => (t,t) e x2

                  Split, 41

 

            44   t e x & t e x

                  Join, 34, 34

 

            45   (t,t) e x2

                  Detach, 43, 44

 

            46   t=t

                  Reflex

 

            47   (t,t) e x2 & t=t

                  Join, 45, 46

 

            48   (t,t) e g

                  Detach, 38, 47

 

            49   t e x & (t,t) e g

                  Join, 34, 48

 

            50   EXIST(b):[b e x & (t,b) e g]

                  E Gen, 49

 

    Part 2

   

    As Required:

 

      51   ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e g]]

            4 Conclusion, 34

 

        

         Part 3

        

         Prove: ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e x & b2 e x => [(a1,b1) e g & (a1,b2) e g => b1=b2]]

        

         Suppose...

 

            52   t e x & u e x & v e x

                  Premise

 

            53   t e x

                  Split, 52

 

            54   u e x

                  Split, 52

 

            55   v e x

                  Split, 52

 

             Prove: (t,u) e g & (t,v) e g => u=v

            

             Suppose...

 

                  56   (t,u) e g & (t,v) e g

                        Premise

 

                  57   (t,u) e g

                        Split, 56

 

                  58   (t,v) e g

                        Split, 56

 

                  59   ALL(b):[(t,b) e g <=> (t,b) e x2 & t=b]

                        U Spec, 13

 

                  60   (t,u) e g <=> (t,u) e x2 & t=u

                        U Spec, 59

 

                  61   [(t,u) e g => (t,u) e x2 & t=u]

                 & [(t,u) e x2 & t=u => (t,u) e g]

                        Iff-And, 60

 

                  62   (t,u) e g => (t,u) e x2 & t=u

                        Split, 61

 

                  63   (t,u) e x2 & t=u

                        Detach, 62, 57

 

                  64   t=u

                        Split, 63

 

                  65   (t,v) e g <=> (t,v) e x2 & t=v

                        U Spec, 59

 

                  66   [(t,v) e g => (t,v) e x2 & t=v]

                 & [(t,v) e x2 & t=v => (t,v) e g]

                        Iff-And, 65

 

                  67   (t,v) e g => (t,v) e x2 & t=v

                        Split, 66

 

                  68   (t,v) e x2 & t=v

                        Detach, 67, 58

 

                  69   t=v

                        Split, 68

 

                  70   u=v

                        Substitute, 64, 69

 

         As Required:

 

            71   (t,u) e g & (t,v) e g => u=v

                  4 Conclusion, 56

 

    Part 3

   

    As Required:

 

      72   ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e x & b2 e x => [(a1,b1) e g & (a1,b2) e g => b1=b2]]

            4 Conclusion, 52

 

    Joining results...

 

      73   ALL(a1):ALL(b):[(a1,b) e g => a1 e x & b e x]

         & ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e g]]

            Join, 33, 51

 

      74   ALL(a1):ALL(b):[(a1,b) e g => a1 e x & b e x]

         & ALL(a1):[a1 e x => EXIST(b):[b e x & (a1,b) e g]]

         & ALL(a1):ALL(b1):ALL(b2):[a1 e x & b1 e x & b2 e x => [(a1,b1) e g & (a1,b2) e g => b1=b2]]

            Join, 73, 72

 

      75   EXIST(fun):[Function(fun,x,x) & ALL(a1):ALL(b):[a1 e x & b e x

         => [fun(a1)=b <=> (a1,b) e g]]]

            Detach, 20, 74

 

      76   Function(f,x,x) & ALL(a1):ALL(b):[a1 e x & b e x

         => [f(a1)=b <=> (a1,b) e g]]

            E Spec, 75

 

   

    We have function f: x --> x

   

    As Required:

 

      77   Function(f,x,x)

            Split, 76

 

   

    Function f defined in terms of its graph set:

 

      78   ALL(a1):ALL(b):[a1 e x & b e x

         => [f(a1)=b <=> (a1,b) e g]]

            Split, 76

 

        

         Prove: ALL(a):[a e x => f(a)=a]

        

         Suppose...

 

            79   t e x

                  Premise

 

            80   t e x => EXIST(b):[b e x & (t,b) e g]

                  U Spec, 51

 

            81   EXIST(b):[b e x & (t,b) e g]

                  Detach, 80, 79

 

            82   u e x & (t,u) e g

                  E Spec, 81

 

            83   u e x

                  Split, 82

 

            84   (t,u) e g

                  Split, 82

 

            85   ALL(b):[t e x & b e x

             => [f(t)=b <=> (t,b) e g]]

                  U Spec, 78

 

            86   t e x & u e x

             => [f(t)=u <=> (t,u) e g]

                  U Spec, 85

 

            87   t e x & u e x

                  Join, 79, 83

 

            88   f(t)=u <=> (t,u) e g

                  Detach, 86, 87

 

            89   [f(t)=u => (t,u) e g] & [(t,u) e g => f(t)=u]

                  Iff-And, 88

 

            90   (t,u) e g => f(t)=u

                  Split, 89

 

            91   f(t)=u

                  Detach, 90, 84

 

            92   ALL(b):[(t,b) e g <=> (t,b) e x2 & t=b]

                  U Spec, 13

 

            93   (t,u) e g <=> (t,u) e x2 & t=u

                  U Spec, 92

 

            94   [(t,u) e g => (t,u) e x2 & t=u]

             & [(t,u) e x2 & t=u => (t,u) e g]

                  Iff-And, 93

 

            95   (t,u) e g => (t,u) e x2 & t=u

                  Split, 94

 

            96   (t,u) e x2 & t=u

                  Detach, 95, 84

 

            97   t=u

                  Split, 96

 

            98   f(t)=t

                  Substitute, 97, 91

 

    As Required:

 

      99   ALL(a):[a e x => f(a)=a]

            4 Conclusion, 79

 

      100  Function(f,x,x) & ALL(a):[a e x => f(a)=a]

            Join, 77, 99

 

As Required:

 

101  ALL(x):[Set(x)

    => EXIST(f):[Function(f,x,x) & ALL(a):[a e x => f(a)=a]]]

      4 Conclusion, 1