src/ZF/AC/WO1_WO6.ML
changeset 2469 b50b8c0eec01
parent 1932 cc9f1ba8f29a
child 2496 40efb87985b5
equal deleted inserted replaced
2468:428efffe8599 2469:b50b8c0eec01
     3     Author:     Krzysztof Grabczewski
     3     Author:     Krzysztof Grabczewski
     4 
     4 
     5   Proofs needed to state that formulations WO1,...,WO6 are all equivalent.
     5   Proofs needed to state that formulations WO1,...,WO6 are all equivalent.
     6   All but one WO6 ==> WO1 (placed in separate file WO6_WO1.ML)
     6   All but one WO6 ==> WO1 (placed in separate file WO6_WO1.ML)
     7 
     7 
     8   Every proofs (exept one) presented in this file are referred as clear
     8   Every proof (exept one) presented in this file are referred as "clear"
     9   by Rubin & Rubin (page 2). 
     9   by Rubin & Rubin (page 2). 
    10   They refer reader to a book by G"odel to see the proof WO1 ==> WO2.
    10   They refer reader to a book by Gödel to see the proof WO1 ==> WO2.
    11   Fortunately order types made this proof also very easy.
    11   Fortunately order types made this proof also very easy.
    12 *)
    12 *)
    13 
    13 
    14 (* ********************************************************************** *)
    14 (* ********************************************************************** *)
    15 
    15 
    16 goalw thy WO_defs "!!Z. WO2 ==> WO3";
    16 goalw thy WO_defs "!!Z. WO2 ==> WO3";
    17 by (fast_tac ZF_cs 1);
    17 by (Fast_tac 1);
    18 qed "WO2_WO3";
    18 qed "WO2_WO3";
    19 
    19 
    20 (* ********************************************************************** *)
    20 (* ********************************************************************** *)
    21 
    21 
    22 goalw thy (eqpoll_def::WO_defs) "!!Z. WO3 ==> WO1";
    22 goalw thy (eqpoll_def::WO_defs) "!!Z. WO3 ==> WO1";
    23 by (fast_tac (ZF_cs addSEs [bij_is_inj RS well_ord_rvimage, 
    23 by (fast_tac (!claset addSEs [bij_is_inj RS well_ord_rvimage, 
    24                         well_ord_Memrel RS well_ord_subset]) 1);
    24 			      well_ord_Memrel RS well_ord_subset]) 1);
    25 qed "WO3_WO1";
    25 qed "WO3_WO1";
    26 
    26 
    27 (* ********************************************************************** *)
    27 (* ********************************************************************** *)
    28 
    28 
    29 goalw thy (eqpoll_def::WO_defs) "!!Z. WO1 ==> WO2";
    29 goalw thy (eqpoll_def::WO_defs) "!!Z. WO1 ==> WO2";
    30 by (fast_tac (ZF_cs addSIs [Ord_ordertype, ordermap_bij]) 1);
    30 by (fast_tac (!claset addSIs [Ord_ordertype, ordermap_bij]) 1);
    31 qed "WO1_WO2";
    31 qed "WO1_WO2";
    32 
    32 
    33 (* ********************************************************************** *)
    33 (* ********************************************************************** *)
    34 
    34 
    35 goal thy "!!f. f: A->B ==> (lam x:A. {f`x}): A -> {{b}. b:B}";
    35 goal thy "!!f. f: A->B ==> (lam x:A. {f`x}): A -> {{b}. b:B}";
    36 by (fast_tac (ZF_cs addSIs [lam_type, apply_type]) 1);
    36 by (fast_tac (!claset addSIs [lam_type, apply_type]) 1);
    37 val lam_sets = result();
    37 val lam_sets = result();
    38 
    38 
    39 goalw thy [surj_def] "!!f. f:surj(A,B) ==> (UN a:A. {f`a}) = B";
    39 goalw thy [surj_def] "!!f. f:surj(A,B) ==> (UN a:A. {f`a}) = B";
    40 by (fast_tac (ZF_cs addSIs [equalityI] addSEs [apply_type]) 1);
    40 by (fast_tac (!claset addSIs [equalityI] addSEs [apply_type]) 1);
    41 val surj_imp_eq_ = result();
    41 val surj_imp_eq_ = result();
    42 
    42 
    43 goal thy "!!f. [| f:surj(A,B); Ord(A) |] ==> (UN a<A. {f`a}) = B";
    43 goal thy "!!f. [| f:surj(A,B); Ord(A) |] ==> (UN a<A. {f`a}) = B";
    44 by (fast_tac (AC_cs addSDs [surj_imp_eq_]
    44 by (fast_tac (!claset addSDs [surj_imp_eq_]
    45                 addSIs [equalityI, ltI] addSEs [ltE]) 1);
    45                 addSIs [equalityI, ltI] addSEs [ltE]) 1);
    46 val surj_imp_eq = result();
    46 val surj_imp_eq = result();
    47 
    47 
    48 goalw thy WO_defs "!!Z. WO1 ==> WO4(1)";
    48 goalw thy WO_defs "!!Z. WO1 ==> WO4(1)";
    49 by (rtac allI 1);
    49 by (rtac allI 1);
    52 by (REPEAT (resolve_tac [exI, conjI] 1));
    52 by (REPEAT (resolve_tac [exI, conjI] 1));
    53 by (etac Ord_ordertype 1);
    53 by (etac Ord_ordertype 1);
    54 by (rtac conjI 1);
    54 by (rtac conjI 1);
    55 by (eresolve_tac [ordermap_bij RS bij_converse_bij RS bij_is_fun RS
    55 by (eresolve_tac [ordermap_bij RS bij_converse_bij RS bij_is_fun RS
    56                 lam_sets RS domain_of_fun] 1);
    56                 lam_sets RS domain_of_fun] 1);
    57 by (asm_simp_tac (AC_ss addsimps [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
    57 by (asm_simp_tac (!simpset addsimps [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
    58                   Ord_ordertype RSN (2, ordermap_bij RS bij_converse_bij RS
    58                   Ord_ordertype RSN (2, ordermap_bij RS bij_converse_bij RS
    59                         bij_is_surj RS surj_imp_eq)]) 1);
    59                         bij_is_surj RS surj_imp_eq)]) 1);
    60 qed "WO1_WO4";
    60 qed "WO1_WO4";
    61 
    61 
    62 (* ********************************************************************** *)
    62 (* ********************************************************************** *)
    63 
    63 
    64 goalw thy WO_defs "!!Z. [| m:nat; n:nat; m le n; WO4(m) |] ==> WO4(n)";
    64 goalw thy WO_defs "!!Z. [| m:nat; n:nat; m le n; WO4(m) |] ==> WO4(n)";
    65 by (fast_tac (AC_cs addIs [nat_le_imp_lepoll RSN (2, lepoll_trans)]) 1);
    65 by (fast_tac (!claset addIs [nat_le_imp_lepoll RSN (2, lepoll_trans)]) 1);
    66 qed "WO4_mono";
    66 qed "WO4_mono";
    67 
    67 
    68 (* ********************************************************************** *)
    68 (* ********************************************************************** *)
    69 
    69 
    70 goalw thy WO_defs "!!Z. [| m:nat; 1 le m; WO4(m) |] ==> WO5";
    70 goalw thy WO_defs "!!Z. [| m:nat; 1 le m; WO4(m) |] ==> WO5";
       
    71     (*ZF_cs is essential: default claset's too slow*)
    71 by (fast_tac ZF_cs 1);
    72 by (fast_tac ZF_cs 1);
    72 qed "WO4_WO5";
    73 qed "WO4_WO5";
    73 
    74 
    74 (* ********************************************************************** *)
    75 (* ********************************************************************** *)
    75 
    76 
    76 goalw thy WO_defs "!!Z. WO5 ==> WO6";
    77 goalw thy WO_defs "!!Z. WO5 ==> WO6";
       
    78     (*ZF_cs is essential: default claset's too slow*)
    77 by (fast_tac ZF_cs 1);
    79 by (fast_tac ZF_cs 1);
    78 qed "WO5_WO6";
    80 qed "WO5_WO6";
    79 
    81