src/ZF/OrderType.ML
changeset 7499 23e090051cb8
parent 6153 bff90585cce5
child 8127 68c6159440f1
equal deleted inserted replaced
7498:1e5585fd3632 7499:23e090051cb8
    37       "x:A ==> pred(A, x, Memrel(A)) = A Int x";
    37       "x:A ==> pred(A, x, Memrel(A)) = A Int x";
    38 by (Blast_tac 1);
    38 by (Blast_tac 1);
    39 qed "pred_Memrel";
    39 qed "pred_Memrel";
    40 
    40 
    41 Goal "[| j<i;  f: ord_iso(i,Memrel(i),j,Memrel(j)) |] ==> R";
    41 Goal "[| j<i;  f: ord_iso(i,Memrel(i),j,Memrel(j)) |] ==> R";
    42 by (forward_tac [lt_pred_Memrel] 1);
    42 by (ftac lt_pred_Memrel 1);
    43 by (etac ltE 1);
    43 by (etac ltE 1);
    44 by (rtac (well_ord_Memrel RS well_ord_iso_predE) 1 THEN
    44 by (rtac (well_ord_Memrel RS well_ord_iso_predE) 1 THEN
    45     assume_tac 3 THEN assume_tac 1);
    45     assume_tac 3 THEN assume_tac 1);
    46 by (asm_full_simp_tac (simpset() addsimps [ord_iso_def]) 1);
    46 by (asm_full_simp_tac (simpset() addsimps [ord_iso_def]) 1);
    47 (*Combining the two simplifications causes looping*)
    47 (*Combining the two simplifications causes looping*)
   165 by (blast_tac (claset() addSDs [converse_ordermap_mono]) 1);
   165 by (blast_tac (claset() addSDs [converse_ordermap_mono]) 1);
   166 qed "ordertype_ord_iso";
   166 qed "ordertype_ord_iso";
   167 
   167 
   168 Goal "[| f: ord_iso(A,r,B,s);  well_ord(B,s) |] ==> \
   168 Goal "[| f: ord_iso(A,r,B,s);  well_ord(B,s) |] ==> \
   169 \    ordertype(A,r) = ordertype(B,s)";
   169 \    ordertype(A,r) = ordertype(B,s)";
   170 by (forward_tac [well_ord_ord_iso] 1 THEN assume_tac 1);
   170 by (ftac well_ord_ord_iso 1 THEN assume_tac 1);
   171 by (rtac Ord_iso_implies_eq 1
   171 by (rtac Ord_iso_implies_eq 1
   172     THEN REPEAT (etac Ord_ordertype 1));
   172     THEN REPEAT (etac Ord_ordertype 1));
   173 by (deepen_tac (claset() addIs  [ord_iso_trans, ord_iso_sym]
   173 by (deepen_tac (claset() addIs  [ord_iso_trans, ord_iso_sym]
   174                       addSEs [ordertype_ord_iso]) 0 1);
   174                       addSEs [ordertype_ord_iso]) 0 1);
   175 qed "ordertype_eq";
   175 qed "ordertype_eq";
   533 by (asm_simp_tac (simpset() addsimps [Union_eq_UN RS sym, Limit_Union_eq, 
   533 by (asm_simp_tac (simpset() addsimps [Union_eq_UN RS sym, Limit_Union_eq, 
   534                                      le_refl, Limit_is_Ord]) 1);
   534                                      le_refl, Limit_is_Ord]) 1);
   535 qed "oadd_le_self2";
   535 qed "oadd_le_self2";
   536 
   536 
   537 Goal "[| k le j;  Ord(i) |] ==> k++i le j++i";
   537 Goal "[| k le j;  Ord(i) |] ==> k++i le j++i";
   538 by (forward_tac [lt_Ord] 1);
   538 by (ftac lt_Ord 1);
   539 by (forward_tac [le_Ord2] 1);
   539 by (ftac le_Ord2 1);
   540 by (etac trans_induct3 1);
   540 by (etac trans_induct3 1);
   541 by (Asm_simp_tac 1);
   541 by (Asm_simp_tac 1);
   542 by (asm_simp_tac (simpset() addsimps [oadd_succ, succ_le_iff]) 1);
   542 by (asm_simp_tac (simpset() addsimps [oadd_succ, succ_le_iff]) 1);
   543 by (asm_simp_tac (simpset() addsimps [oadd_Limit]) 1);
   543 by (asm_simp_tac (simpset() addsimps [oadd_Limit]) 1);
   544 by (rtac le_implies_UN_le_UN 1);
   544 by (rtac le_implies_UN_le_UN 1);
   816 by (rtac all_lt_imp_le 1);
   816 by (rtac all_lt_imp_le 1);
   817 by (REPEAT (ares_tac [Ord_omult, lt_omult1, lt_Ord2] 1));
   817 by (REPEAT (ares_tac [Ord_omult, lt_omult1, lt_Ord2] 1));
   818 qed "omult_le_self";
   818 qed "omult_le_self";
   819 
   819 
   820 Goal "[| k le j;  Ord(i) |] ==> k**i le j**i";
   820 Goal "[| k le j;  Ord(i) |] ==> k**i le j**i";
   821 by (forward_tac [lt_Ord] 1);
   821 by (ftac lt_Ord 1);
   822 by (forward_tac [le_Ord2] 1);
   822 by (ftac le_Ord2 1);
   823 by (etac trans_induct3 1);
   823 by (etac trans_induct3 1);
   824 by (asm_simp_tac (simpset() addsimps [le_refl, Ord_0]) 1);
   824 by (asm_simp_tac (simpset() addsimps [le_refl, Ord_0]) 1);
   825 by (asm_simp_tac (simpset() addsimps [omult_succ, oadd_le_mono]) 1);
   825 by (asm_simp_tac (simpset() addsimps [omult_succ, oadd_le_mono]) 1);
   826 by (asm_simp_tac (simpset() addsimps [omult_Limit]) 1);
   826 by (asm_simp_tac (simpset() addsimps [omult_Limit]) 1);
   827 by (rtac le_implies_UN_le_UN 1);
   827 by (rtac le_implies_UN_le_UN 1);
   854 by (REPEAT (eresolve_tac [asm_rl, omult_le_mono1, omult_lt_mono2, ltE,
   854 by (REPEAT (eresolve_tac [asm_rl, omult_le_mono1, omult_lt_mono2, ltE,
   855                           Ord_succD] 1));
   855                           Ord_succD] 1));
   856 qed "omult_lt_mono";
   856 qed "omult_lt_mono";
   857 
   857 
   858 Goal "[| Ord(i);  0<j |] ==> i le j**i";
   858 Goal "[| Ord(i);  0<j |] ==> i le j**i";
   859 by (forward_tac [lt_Ord2] 1);
   859 by (ftac lt_Ord2 1);
   860 by (eres_inst_tac [("i","i")] trans_induct3 1);
   860 by (eres_inst_tac [("i","i")] trans_induct3 1);
   861 by (asm_simp_tac (simpset() addsimps [omult_0, Ord_0 RS le_refl]) 1);
   861 by (asm_simp_tac (simpset() addsimps [omult_0, Ord_0 RS le_refl]) 1);
   862 by (asm_simp_tac (simpset() addsimps [omult_succ, succ_le_iff]) 1);
   862 by (asm_simp_tac (simpset() addsimps [omult_succ, succ_le_iff]) 1);
   863 by (etac lt_trans1 1);
   863 by (etac lt_trans1 1);
   864 by (res_inst_tac [("b", "j**x")] (oadd_0 RS subst) 1 THEN 
   864 by (res_inst_tac [("b", "j**x")] (oadd_0 RS subst) 1 THEN