1123
|
1 |
(* Title: ZF/AC/AC0_AC1.ML
|
|
2 |
ID: $Id$
|
1204
|
3 |
Author: Krzysztof Grabczewski
|
1123
|
4 |
|
|
5 |
AC0 is equivalent to AC1
|
|
6 |
AC0 comes from Suppes, AC1 from Rubin & Rubin
|
|
7 |
*)
|
|
8 |
|
|
9 |
goal thy "!!A. 0~:A ==> A <= Pow(Union(A))-{0}";
|
|
10 |
by (fast_tac AC_cs 1);
|
|
11 |
val subset_Pow_Union = result();
|
|
12 |
|
|
13 |
goal thy "!!f. [| f:(PROD X:A. X); D<=A |] ==> EX g. g:(PROD X:D. X)";
|
|
14 |
by (fast_tac (AC_cs addSIs [restrict_type, apply_type]) 1);
|
|
15 |
val lemma1 = result();
|
|
16 |
|
1196
|
17 |
goalw thy AC_defs "!!Z. AC0 ==> AC1";
|
1123
|
18 |
by (fast_tac (FOL_cs addSEs [lemma1, subset_Pow_Union]) 1);
|
1196
|
19 |
qed "AC0_AC1";
|
1123
|
20 |
|
1196
|
21 |
goalw thy AC_defs "!!Z. AC1 ==> AC0";
|
1123
|
22 |
by (fast_tac (FOL_cs addSIs [notI, singletonI] addSEs [notE, DiffE]) 1);
|
1196
|
23 |
qed "AC1_AC0";
|