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); |