equal
deleted
inserted
replaced
36 |
36 |
37 Goal "!!M. (!x. P(x) --> Q(x)) ==> (countm M P <= countm M Q)"; |
37 Goal "!!M. (!x. P(x) --> Q(x)) ==> (countm M P <= countm M Q)"; |
38 by (res_inst_tac [("M","M")] Multiset.induction 1); |
38 by (res_inst_tac [("M","M")] Multiset.induction 1); |
39 by (simp_tac (simpset() addsimps [Multiset.countm_empty_def]) 1); |
39 by (simp_tac (simpset() addsimps [Multiset.countm_empty_def]) 1); |
40 by (simp_tac (simpset() addsimps[Multiset.countm_nonempty_def]) 1); |
40 by (simp_tac (simpset() addsimps[Multiset.countm_nonempty_def]) 1); |
41 auto(); |
41 by Auto_tac; |
42 qed "countm_props"; |
42 qed "countm_props"; |
43 |
43 |
44 Goal "!!P. ~P(obj) ==> countm M P = countm (delm M obj) P"; |
44 Goal "!!P. ~P(obj) ==> countm M P = countm (delm M obj) P"; |
45 by (res_inst_tac [("M","M")] Multiset.induction 1); |
45 by (res_inst_tac [("M","M")] Multiset.induction 1); |
46 by (simp_tac (simpset() addsimps [Multiset.delm_empty_def, |
46 by (simp_tac (simpset() addsimps [Multiset.delm_empty_def, |