1 (* Title: ZF/AC/AC1_AC17.ML |
1 (* Title: ZF/AC/AC1_AC17.ML |
2 ID: $Id$ |
2 ID: $Id$ |
3 Author: Krzysztof Gr`abczewski |
3 Author: Krzysztof Grabczewski |
4 |
4 |
5 The proof of AC1 ==> AC17 |
5 The proof of AC1 ==> AC17 |
6 *) |
6 *) |
7 |
7 |
8 goal thy "!!f. f : (PROD X:Pow(A) - {0}. X) ==> f : (Pow(A) - {0} -> A)"; |
8 goal thy "!!f. f : (PROD X:Pow(A) - {0}. X) ==> f : (Pow(A) - {0} -> A)"; |
9 by (resolve_tac [Pi_type] 1 THEN (assume_tac 1)); |
9 by (rtac Pi_type 1 THEN (assume_tac 1)); |
10 by (dresolve_tac [apply_type] 1 THEN (assume_tac 1)); |
10 by (dtac apply_type 1 THEN (assume_tac 1)); |
11 by (fast_tac AC_cs 1); |
11 by (fast_tac AC_cs 1); |
12 val lemma1 = result(); |
12 val lemma1 = result(); |
13 |
13 |
14 goalw thy AC_defs "!!Z. AC1 ==> AC17"; |
14 goalw thy AC_defs "!!Z. AC1 ==> AC17"; |
15 by (resolve_tac [allI] 1); |
15 by (rtac allI 1); |
16 by (resolve_tac [ballI] 1); |
16 by (rtac ballI 1); |
17 by (eres_inst_tac [("x","Pow(A)-{0}")] allE 1); |
17 by (eres_inst_tac [("x","Pow(A)-{0}")] allE 1); |
18 by (eresolve_tac [impE] 1); |
18 by (etac impE 1); |
19 by (fast_tac AC_cs 1); |
19 by (fast_tac AC_cs 1); |
20 by (eresolve_tac [exE] 1); |
20 by (etac exE 1); |
21 by (resolve_tac [bexI] 1); |
21 by (rtac bexI 1); |
22 by (eresolve_tac [lemma1] 2); |
22 by (etac lemma1 2); |
23 by (resolve_tac [apply_type] 1 THEN (assume_tac 1)); |
23 by (rtac apply_type 1 THEN (assume_tac 1)); |
24 by (fast_tac (AC_cs addSDs [lemma1] addSEs [apply_type]) 1); |
24 by (fast_tac (AC_cs addSDs [lemma1] addSEs [apply_type]) 1); |
25 qed "AC1_AC17"; |
25 qed "AC1_AC17"; |