src/ZF/UNITY/MultisetSum.ML
changeset 14071 373806545656
parent 14052 e9c9f69e4f63
child 14092 68da54626309
equal deleted inserted replaced
14070:86c56794b641 14071:373806545656
    20 \ general_setsum(cons(a, C), B, e, f, g) = \
    20 \ general_setsum(cons(a, C), B, e, f, g) = \
    21 \   f(g(a), general_setsum(C, B, e, f,g))";
    21 \   f(g(a), general_setsum(C, B, e, f,g))";
    22 by  (auto_tac (claset(), simpset() addsimps [Fin_into_Finite RS Finite_cons, 
    22 by  (auto_tac (claset(), simpset() addsimps [Fin_into_Finite RS Finite_cons, 
    23                                              cons_absorb]));
    23                                              cons_absorb]));
    24 by (blast_tac (claset() addDs [Fin_into_Finite]) 2);
    24 by (blast_tac (claset() addDs [Fin_into_Finite]) 2);
    25 by (resolve_tac [fold_cons] 1);
    25 by (resolve_tac [thm"fold_typing.fold_cons"] 1);
    26 by (auto_tac (claset(), simpset() addsimps [lcomm_def]));
    26 by (auto_tac (claset(), simpset() addsimps [thm "fold_typing_def", lcomm_def]));
    27 qed "general_setsum_cons";
    27 qed "general_setsum_cons";
    28 Addsimps [general_setsum_cons];
    28 Addsimps [general_setsum_cons];
    29 
    29 
    30 (** lcomm **)
    30 (** lcomm **)
    31 
    31 
   183 
   183 
   184 Goalw [nsetsum_def, general_setsum_def] 
   184 Goalw [nsetsum_def, general_setsum_def] 
   185 "[| Finite(C); x~:C |] \
   185 "[| Finite(C); x~:C |] \
   186 \  ==> nsetsum(g, cons(x, C))= g(x) #+ nsetsum(g, C)";
   186 \  ==> nsetsum(g, cons(x, C))= g(x) #+ nsetsum(g, C)";
   187 by (auto_tac (claset(), simpset() addsimps [Finite_cons]));
   187 by (auto_tac (claset(), simpset() addsimps [Finite_cons]));
   188 by (res_inst_tac [("A", "cons(x, C)")] fold_cons 1);
   188 by (res_inst_tac [("A", "cons(x, C)")] (thm"fold_typing.fold_cons") 1);
   189 by (auto_tac (claset() addIs [Finite_cons_lemma], simpset()));
   189 by (auto_tac (claset() addIs [thm"Finite_cons_lemma"], 
       
   190               simpset() addsimps [thm "fold_typing_def"]));
   190 qed "nsetsum_cons";
   191 qed "nsetsum_cons";
   191 Addsimps [nsetsum_cons];
   192 Addsimps [nsetsum_cons];
   192 
   193 
   193 Goal "nsetsum(g, C):nat";
   194 Goal "nsetsum(g, C):nat";
   194 by (case_tac "Finite(C)" 1);
   195 by (case_tac "Finite(C)" 1);