equal
deleted
inserted
replaced
23 Goal "[| ALL A. 0 ~: A --> (EX f. f : (PROD X:A. X)); A ~= 0 |] ==> \ |
23 Goal "[| ALL A. 0 ~: A --> (EX f. f : (PROD X:A. X)); A ~= 0 |] ==> \ |
24 \ (INT a:A. UN b:B(a). X(a, b)) <= (UN f:PROD a:A. B(a). INT a:A. X(a, f`a))"; |
24 \ (INT a:A. UN b:B(a). X(a, b)) <= (UN f:PROD a:A. B(a). INT a:A. X(a, f`a))"; |
25 by (rtac subsetI 1); |
25 by (rtac subsetI 1); |
26 by (eres_inst_tac [("x","{{b:B(a). x:X(a,b)}. a:A}")] allE 1); |
26 by (eres_inst_tac [("x","{{b:B(a). x:X(a,b)}. a:A}")] allE 1); |
27 by (etac impE 1); |
27 by (etac impE 1); |
28 by (fast_tac (claset() addEs [sym RS equals0E]) 1); |
28 by (Fast_tac 1); |
29 by (etac exE 1); |
29 by (etac exE 1); |
30 by (rtac UN_I 1); |
30 by (rtac UN_I 1); |
31 by (fast_tac (claset() addSEs [PROD_subsets]) 1); |
31 by (fast_tac (claset() addSEs [PROD_subsets]) 1); |
32 by (Simp_tac 1); |
32 by (Simp_tac 1); |
33 by (fast_tac (claset() addSEs [not_emptyE] addDs [RepFunI RSN (2, apply_type)] |
33 by (fast_tac (claset() addSEs [not_emptyE] |
34 ) 1); |
34 addDs [RepFunI RSN (2, apply_type)]) 1); |
35 qed "lemma_AC18"; |
35 qed "lemma_AC18"; |
36 |
36 |
37 val [prem] = goalw thy (AC18_def::AC_defs) "AC1 ==> AC18"; |
37 val [prem] = goalw thy (AC18_def::AC_defs) "AC1 ==> AC18"; |
38 by (resolve_tac [prem RS revcut_rl] 1); |
38 by (resolve_tac [prem RS revcut_rl] 1); |
39 by (fast_tac (claset() addSEs [lemma_AC18, not_emptyE, apply_type] |
39 by (fast_tac (claset() addSEs [lemma_AC18, not_emptyE, apply_type] |