src/ZF/Finite.ML
changeset 4152 451104c223e2
parent 4091 771b1f6422a8
child 5067 62b6288e6005
equal deleted inserted replaced
4151:5c19cd418c33 4152:451104c223e2
    58 (*Every subset of a finite set is finite.*)
    58 (*Every subset of a finite set is finite.*)
    59 goal Finite.thy "!!b A. b: Fin(A) ==> ALL z. z<=b --> z: Fin(A)";
    59 goal Finite.thy "!!b A. b: Fin(A) ==> ALL z. z<=b --> z: Fin(A)";
    60 by (etac Fin_induct 1);
    60 by (etac Fin_induct 1);
    61 by (simp_tac (simpset() addsimps [subset_empty_iff]) 1);
    61 by (simp_tac (simpset() addsimps [subset_empty_iff]) 1);
    62 by (asm_simp_tac (simpset() addsimps subset_cons_iff::distrib_simps) 1);
    62 by (asm_simp_tac (simpset() addsimps subset_cons_iff::distrib_simps) 1);
    63 by (safe_tac (claset()));
    63 by Safe_tac;
    64 by (eres_inst_tac [("b","z")] (cons_Diff RS subst) 1);
    64 by (eres_inst_tac [("b","z")] (cons_Diff RS subst) 1);
    65 by (Asm_simp_tac 1);
    65 by (Asm_simp_tac 1);
    66 qed "Fin_subset_lemma";
    66 qed "Fin_subset_lemma";
    67 
    67 
    68 goal Finite.thy "!!c b A. [| c<=b;  b: Fin(A) |] ==> c: Fin(A)";
    68 goal Finite.thy "!!c b A. [| c<=b;  b: Fin(A) |] ==> c: Fin(A)";
   129 (*Every subset of a finite function is a finite function.*)
   129 (*Every subset of a finite function is a finite function.*)
   130 goal Finite.thy "!!b A. b: A-||>B ==> ALL z. z<=b --> z: A-||>B";
   130 goal Finite.thy "!!b A. b: A-||>B ==> ALL z. z<=b --> z: A-||>B";
   131 by (etac FiniteFun.induct 1);
   131 by (etac FiniteFun.induct 1);
   132 by (simp_tac (simpset() addsimps subset_empty_iff::FiniteFun.intrs) 1);
   132 by (simp_tac (simpset() addsimps subset_empty_iff::FiniteFun.intrs) 1);
   133 by (asm_simp_tac (simpset() addsimps subset_cons_iff::distrib_simps) 1);
   133 by (asm_simp_tac (simpset() addsimps subset_cons_iff::distrib_simps) 1);
   134 by (safe_tac (claset()));
   134 by Safe_tac;
   135 by (eres_inst_tac [("b","z")] (cons_Diff RS subst) 1);
   135 by (eres_inst_tac [("b","z")] (cons_Diff RS subst) 1);
   136 by (dtac (spec RS mp) 1 THEN assume_tac 1);
   136 by (dtac (spec RS mp) 1 THEN assume_tac 1);
   137 by (fast_tac (claset() addSIs FiniteFun.intrs) 1);
   137 by (fast_tac (claset() addSIs FiniteFun.intrs) 1);
   138 qed "FiniteFun_subset_lemma";
   138 qed "FiniteFun_subset_lemma";
   139 
   139