src/ZF/AC/AC1_AC17.ML
changeset 1206 30df104ceb91
parent 1196 d43c1f7a53fe
child 1461 6bcb44e4d6e5
equal deleted inserted replaced
1205:f87457b1ce5e 1206:30df104ceb91
     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";