1 (* Title: ZF/AC/WO1_WO8.ML |
1 (* Title: ZF/AC/WO1_WO8.ML |
2 ID: $Id$ |
2 ID: $Id$ |
3 Author: Krzysztof Grabczewski |
3 Author: Krzysztof Grabczewski |
4 |
4 |
5 The proof of WO8 <-> WO1 (Rubin & Rubin p. 6) |
5 The proof of WO8 <-> WO1 (Rubin & Rubin p. 6) |
6 *) |
6 *) |
7 |
7 |
8 (* ********************************************************************** *) |
8 (* ********************************************************************** *) |
9 (* Trivial implication "WO1 ==> WO8" *) |
9 (* Trivial implication "WO1 ==> WO8" *) |
10 (* ********************************************************************** *) |
10 (* ********************************************************************** *) |
11 |
11 |
12 goalw thy WO_defs "!!Z. WO1 ==> WO8"; |
12 goalw thy WO_defs "!!Z. WO1 ==> WO8"; |
13 by (fast_tac ZF_cs 1); |
13 by (fast_tac ZF_cs 1); |
14 qed "WO1_WO8"; |
14 qed "WO1_WO8"; |
15 |
15 |
16 (* ********************************************************************** *) |
16 (* ********************************************************************** *) |
17 (* The proof of "WO8 ==> WO1" - faithful image of Rubin & Rubin's proof *) |
17 (* The proof of "WO8 ==> WO1" - faithful image of Rubin & Rubin's proof *) |
18 (* ********************************************************************** *) |
18 (* ********************************************************************** *) |
19 |
19 |
20 goalw thy WO_defs "!!Z. WO8 ==> WO1"; |
20 goalw thy WO_defs "!!Z. WO8 ==> WO1"; |
21 by (rtac allI 1); |
21 by (rtac allI 1); |
22 by (eres_inst_tac [("x","{{x}. x:A}")] allE 1); |
22 by (eres_inst_tac [("x","{{x}. x:A}")] allE 1); |
23 by (etac impE 1); |
23 by (etac impE 1); |
24 by (fast_tac (AC_cs addSEs [lam_sing_bij RS bij_is_inj RS |
24 by (fast_tac (AC_cs addSEs [lam_sing_bij RS bij_is_inj RS |
25 well_ord_rvimage]) 2); |
25 well_ord_rvimage]) 2); |
26 by (res_inst_tac [("x","lam a:{{x}. x:A}. THE x. a={x}")] exI 1); |
26 by (res_inst_tac [("x","lam a:{{x}. x:A}. THE x. a={x}")] exI 1); |
27 by (fast_tac (ZF_cs addSEs [RepFunE, singleton_eq_iff RS iffD1 RS sym] |
27 by (fast_tac (ZF_cs addSEs [RepFunE, singleton_eq_iff RS iffD1 RS sym] |
28 addSIs [lam_type, singletonI] |
28 addSIs [lam_type, singletonI] |
29 addIs [the_equality RS ssubst]) 1); |
29 addIs [the_equality RS ssubst]) 1); |
30 qed "WO8_WO1"; |
30 qed "WO8_WO1"; |