| 1478 |      1 | (*  Title:      ZF/AC/AC_Equiv.thy
 | 
| 991 |      2 |     ID:         $Id$
 | 
| 1478 |      3 |     Author:     Krzysztof Grabczewski
 | 
| 991 |      4 | 
 | 
|  |      5 | Axioms AC1 -- AC19 come from "Equivalents of the Axiom of Choice, II"
 | 
|  |      6 | by H. Rubin and J.E. Rubin, 1985.
 | 
|  |      7 | 
 | 
|  |      8 | Axiom AC0 comes from "Axiomatic Set Theory" by P. Suppes, 1972.
 | 
|  |      9 | 
 | 
|  |     10 | Some Isabelle proofs of equivalences of these axioms are formalizations of
 | 
| 1123 |     11 | proofs presented by the Rubins.  The others are based on the Rubins' proofs,
 | 
|  |     12 | but slightly changed.
 | 
| 991 |     13 | *)
 | 
|  |     14 | 
 | 
| 2469 |     15 | AC_Equiv = CardinalArith + Univ + 
 | 
| 991 |     16 | 
 | 
|  |     17 | consts
 | 
|  |     18 |   
 | 
|  |     19 | (* Well Ordering Theorems *)
 | 
| 1401 |     20 |   WO1, WO2, WO3, WO5, WO6, WO7, WO8 :: o
 | 
|  |     21 |   WO4                               :: i => o
 | 
| 991 |     22 | 
 | 
|  |     23 | (* Axioms of Choice *)  
 | 
|  |     24 |   AC0, AC1, AC2, AC3, AC4, AC5, AC6, AC7, AC8, AC9,
 | 
| 1401 |     25 |   AC11, AC12, AC14, AC15, AC17, AC19 :: o
 | 
|  |     26 |   AC10, AC13              :: i => o
 | 
|  |     27 |   AC16                    :: [i, i] => o
 | 
|  |     28 |   AC18                    :: prop       ("AC18")
 | 
| 1123 |     29 | 
 | 
|  |     30 | (* Auxiliary definitions used in definitions *)
 | 
| 1401 |     31 |   pairwise_disjoint       :: i => o
 | 
|  |     32 |   sets_of_size_between    :: [i, i, i] => o
 | 
| 991 |     33 | 
 | 
|  |     34 | defs
 | 
|  |     35 | 
 | 
|  |     36 | (* Well Ordering Theorems *)
 | 
|  |     37 | 
 | 
|  |     38 |   WO1_def "WO1 == ALL A. EX R. well_ord(A,R)"
 | 
|  |     39 | 
 | 
|  |     40 |   WO2_def "WO2 == ALL A. EX a. Ord(a) & A eqpoll a"
 | 
|  |     41 | 
 | 
|  |     42 |   WO3_def "WO3 == ALL A. EX a. Ord(a) & (EX b. b <= a & A eqpoll b)"
 | 
|  |     43 | 
 | 
| 1155 |     44 |   WO4_def "WO4(m) == ALL A. EX a f. Ord(a) & domain(f)=a &   
 | 
| 1478 |     45 |                      (UN b<a. f`b) = A & (ALL b<a. f`b lepoll m)"
 | 
| 991 |     46 | 
 | 
|  |     47 |   WO5_def "WO5 == EX m:nat. 1 le m & WO4(m)"
 | 
|  |     48 | 
 | 
| 1155 |     49 |   WO6_def "WO6 == ALL A. EX m:nat. 1 le m & (EX a f. Ord(a) & domain(f)=a   
 | 
| 1478 |     50 |                     & (UN b<a. f`b) = A & (ALL b<a. f`b lepoll m))"
 | 
| 991 |     51 | 
 | 
| 1155 |     52 |   WO7_def "WO7 == ALL A. Finite(A) <-> (ALL R. well_ord(A,R) -->   
 | 
| 1478 |     53 |                     well_ord(A,converse(R)))"
 | 
| 991 |     54 | 
 | 
| 1155 |     55 |   WO8_def "WO8 == ALL A. (EX f. f : (PROD X:A. X)) -->  
 | 
| 1478 |     56 |                     (EX R. well_ord(A,R))"
 | 
| 991 |     57 | 
 | 
|  |     58 | (* Axioms of Choice *)  
 | 
|  |     59 | 
 | 
|  |     60 |   AC0_def "AC0 == ALL A. EX f. f:(PROD X:Pow(A)-{0}. X)"
 | 
|  |     61 | 
 | 
|  |     62 |   AC1_def "AC1 == ALL A. 0~:A --> (EX f. f:(PROD X:A. X))"
 | 
|  |     63 | 
 | 
| 1155 |     64 |   AC2_def "AC2 == ALL A. 0~:A & pairwise_disjoint(A)   
 | 
| 1478 |     65 |                     --> (EX C. ALL B:A. EX y. B Int C = {y})"
 | 
| 991 |     66 | 
 | 
|  |     67 |   AC3_def "AC3 == ALL A B. ALL f:A->B. EX g. g:(PROD x:{a:A. f`a~=0}. f`x)"
 | 
|  |     68 | 
 | 
|  |     69 |   AC4_def "AC4 == ALL R A B. (R<=A*B --> (EX f. f:(PROD x:domain(R). R``{x})))"
 | 
|  |     70 | 
 | 
| 1155 |     71 |   AC5_def "AC5 == ALL A B. ALL f:A->B. EX g:range(f)->A.   
 | 
| 1478 |     72 |                     ALL x:domain(g). f`(g`x) = x"
 | 
| 991 |     73 | 
 | 
|  |     74 |   AC6_def "AC6 == ALL A. 0~:A --> (PROD B:A. B)~=0"
 | 
|  |     75 | 
 | 
| 1155 |     76 |   AC7_def "AC7 == ALL A. 0~:A & (ALL B1:A. ALL B2:A. B1 eqpoll B2)   
 | 
| 1478 |     77 |                     --> (PROD B:A. B)~=0"
 | 
| 991 |     78 | 
 | 
| 1155 |     79 |   AC8_def "AC8 == ALL A. (ALL B:A. EX B1 B2. B=<B1,B2> & B1 eqpoll B2)   
 | 
| 1478 |     80 |                     --> (EX f. ALL B:A. f`B : bij(fst(B),snd(B)))"
 | 
| 991 |     81 | 
 | 
| 1155 |     82 |   AC9_def "AC9 == ALL A. (ALL B1:A. ALL B2:A. B1 eqpoll B2) -->   
 | 
| 1478 |     83 |                     (EX f. ALL B1:A. ALL B2:A. f`<B1,B2> : bij(B1,B2))"
 | 
| 991 |     84 | 
 | 
| 1155 |     85 |   AC10_def "AC10(n) ==  ALL A. (ALL B:A. ~Finite(B)) -->   
 | 
| 1478 |     86 |                     (EX f. ALL B:A. (pairwise_disjoint(f`B) &   
 | 
|  |     87 |                     sets_of_size_between(f`B, 2, succ(n)) & Union(f`B)=B))"
 | 
| 991 |     88 | 
 | 
|  |     89 |   AC11_def "AC11 == EX n:nat. 1 le n & AC10(n)"
 | 
|  |     90 | 
 | 
| 1155 |     91 |   AC12_def "AC12 == ALL A. (ALL B:A. ~Finite(B)) -->   
 | 
| 1478 |     92 |             (EX n:nat. 1 le n & (EX f. ALL B:A. (pairwise_disjoint(f`B) &   
 | 
|  |     93 |             sets_of_size_between(f`B, 2, succ(n)) & Union(f`B)=B)))"
 | 
| 991 |     94 | 
 | 
| 1155 |     95 |   AC13_def "AC13(m) == ALL A. 0~:A --> (EX f. ALL B:A. f`B~=0 &   
 | 
| 1478 |     96 |                                           f`B <= B & f`B lepoll m)"
 | 
| 991 |     97 | 
 | 
|  |     98 |   AC14_def "AC14 == EX m:nat. 1 le m & AC13(m)"
 | 
|  |     99 | 
 | 
| 1155 |    100 |   AC15_def "AC15 == ALL A. 0~:A --> (EX m:nat. 1 le m & (EX f. ALL B:A.   
 | 
| 1478 |    101 |                                       f`B~=0 & f`B <= B & f`B lepoll m))"
 | 
| 991 |    102 | 
 | 
| 1155 |    103 |   AC16_def "AC16(n, k)  == ALL A. ~Finite(A) -->   
 | 
| 1478 |    104 |             (EX T. T <= {X:Pow(A). X eqpoll succ(n)} &   
 | 
|  |    105 |             (ALL X:{X:Pow(A). X eqpoll succ(k)}. EX! Y. Y:T & X <= Y))"
 | 
| 991 |    106 | 
 | 
| 1155 |    107 |   AC17_def "AC17 == ALL A. ALL g: (Pow(A)-{0} -> A) -> Pow(A)-{0}.   
 | 
| 1478 |    108 |                     EX f: Pow(A)-{0} -> A. f`(g`f) : g`f"
 | 
| 991 |    109 | 
 | 
| 1155 |    110 |   AC18_def "AC18 == (!!X A B. A~=0 & (ALL a:A. B(a) ~= 0) -->   
 | 
|  |    111 |                  ((INT a:A. UN b:B(a). X(a,b)) =   
 | 
|  |    112 |                  (UN f: PROD a:A. B(a). INT a:A. X(a, f`a))))"
 | 
| 991 |    113 | 
 | 
| 1155 |    114 |   AC19_def "AC19 == ALL A. A~=0 & 0~:A --> ((INT a:A. UN b:a. b) =   
 | 
| 1478 |    115 |                     (UN f:(PROD B:A. B). INT a:A. f`a))"
 | 
| 991 |    116 | 
 | 
| 1123 |    117 | (* Auxiliary definitions used in the above definitions *)
 | 
| 991 |    118 | 
 | 
| 1155 |    119 |   pairwise_disjoint_def    "pairwise_disjoint(A)   
 | 
| 1478 |    120 |                             == ALL A1:A. ALL A2:A. A1 Int A2 ~= 0 --> A1=A2"
 | 
| 991 |    121 | 
 | 
| 1155 |    122 |   sets_of_size_between_def "sets_of_size_between(A,m,n)   
 | 
| 1478 |    123 |                             == ALL B:A. m lepoll B & B lepoll n"
 | 
| 991 |    124 |   
 | 
|  |    125 | end
 |