src/ZF/AC/AC18_AC19.ML
changeset 3731 71366483323b
parent 2845 b4f8df0efa6c
child 3840 e0baea4d485a
equal deleted inserted replaced
3730:6933d20f335f 3731:71366483323b
    16 by (rtac lam_type 1);
    16 by (rtac lam_type 1);
    17 by (dtac apply_type 1);
    17 by (dtac apply_type 1);
    18 by (rtac RepFunI 1 THEN (assume_tac 1));
    18 by (rtac RepFunI 1 THEN (assume_tac 1));
    19 by (dtac bspec 1 THEN (assume_tac 1));
    19 by (dtac bspec 1 THEN (assume_tac 1));
    20 by (etac subsetD 1 THEN (assume_tac 1));
    20 by (etac subsetD 1 THEN (assume_tac 1));
    21 val PROD_subsets = result();
    21 qed "PROD_subsets";
    22 
    22 
    23 goal thy "!!X. [| ALL A. 0 ~: A --> (EX f. f : (PROD X:A. X)); A ~= 0 |] ==>  \
    23 goal thy "!!X. [| 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);
    31 by (rtac UN_I 1);
    31 by (rtac UN_I 1);
    32 by (fast_tac (!claset addSEs [PROD_subsets]) 1);
    32 by (fast_tac (!claset addSEs [PROD_subsets]) 1);
    33 by (Simp_tac 1);
    33 by (Simp_tac 1);
    34 by (fast_tac (!claset addSEs [not_emptyE] addDs [RepFunI RSN (2, apply_type)]
    34 by (fast_tac (!claset addSEs [not_emptyE] addDs [RepFunI RSN (2, apply_type)]
    35                 addEs [CollectD2] addSIs [INT_I]) 1);
    35                 addEs [CollectD2] addSIs [INT_I]) 1);
    36 val lemma_AC18 = result();
    36 qed "lemma_AC18";
    37 
    37 
    38 val [prem] = goalw thy (AC18_def::AC_defs) "AC1 ==> AC18";
    38 val [prem] = goalw thy (AC18_def::AC_defs) "AC1 ==> AC18";
    39 by (resolve_tac [prem RS revcut_rl] 1);
    39 by (resolve_tac [prem RS revcut_rl] 1);
    40 by (fast_tac (!claset addSEs [lemma_AC18, not_emptyE, apply_type]
    40 by (fast_tac (!claset addSEs [lemma_AC18, not_emptyE, apply_type]
    41                 addSIs [equalityI, INT_I, UN_I]) 1);
    41                 addSIs [equalityI, INT_I, UN_I]) 1);
    58 goalw thy [u_def]
    58 goalw thy [u_def]
    59         "!!A. [| A ~= 0; 0 ~: A |] ==> {u_(a). a:A} ~= 0 & 0 ~: {u_(a). a:A}";
    59         "!!A. [| A ~= 0; 0 ~: A |] ==> {u_(a). a:A} ~= 0 & 0 ~: {u_(a). a:A}";
    60 by (fast_tac (!claset addSIs [not_emptyI, RepFunI]
    60 by (fast_tac (!claset addSIs [not_emptyI, RepFunI]
    61                 addSEs [not_emptyE, RepFunE]
    61                 addSEs [not_emptyE, RepFunE]
    62                 addSDs [sym RS (RepFun_eq_0_iff RS iffD1)]) 1);
    62                 addSDs [sym RS (RepFun_eq_0_iff RS iffD1)]) 1);
    63 val RepRep_conj = result();
    63 qed "RepRep_conj";
    64 
    64 
    65 goal thy "!!c. [|c : a; x = c Un {0}; x ~: a |] ==> x - {0} : a";
    65 goal thy "!!c. [|c : a; x = c Un {0}; x ~: a |] ==> x - {0} : a";
    66 by (hyp_subst_tac 1);
    66 by (hyp_subst_tac 1);
    67 by (rtac subst_elem 1 THEN (assume_tac 1));
    67 by (rtac subst_elem 1 THEN (assume_tac 1));
    68 by (rtac equalityI 1);
    68 by (rtac equalityI 1);