src/HOL/ex/Sorting.ML
changeset 5069 3ea049f7979d
parent 4686 74a12e86b20b
child 5184 9b8547a9496a
equal deleted inserted replaced
5068:fb28eaa07e01 5069:3ea049f7979d
     4     Copyright   1994 TU Muenchen
     4     Copyright   1994 TU Muenchen
     5 
     5 
     6 Some general lemmas
     6 Some general lemmas
     7 *)
     7 *)
     8 
     8 
     9 goal Sorting.thy "!x. mset (xs@ys) x = mset xs x + mset ys x";
     9 Goal "!x. mset (xs@ys) x = mset xs x + mset ys x";
    10 by (list.induct_tac "xs" 1);
    10 by (list.induct_tac "xs" 1);
    11 by (ALLGOALS Asm_simp_tac);
    11 by (ALLGOALS Asm_simp_tac);
    12 qed "mset_append";
    12 qed "mset_append";
    13 
    13 
    14 goal Sorting.thy "!x. mset [x:xs. ~p(x)] x + mset [x:xs. p(x)] x = \
    14 Goal "!x. mset [x:xs. ~p(x)] x + mset [x:xs. p(x)] x = \
    15 \                     mset xs x";
    15 \                     mset xs x";
    16 by (list.induct_tac "xs" 1);
    16 by (list.induct_tac "xs" 1);
    17 by (ALLGOALS Asm_simp_tac);
    17 by (ALLGOALS Asm_simp_tac);
    18 qed "mset_compl_add";
    18 qed "mset_compl_add";
    19 
    19 
    20 Addsimps [mset_append, mset_compl_add];
    20 Addsimps [mset_append, mset_compl_add];
    21 
    21 
    22 goal Sorting.thy "set xs = {x. mset xs x ~= 0}";
    22 Goal "set xs = {x. mset xs x ~= 0}";
    23 by (list.induct_tac "xs" 1);
    23 by (list.induct_tac "xs" 1);
    24 by (ALLGOALS Asm_simp_tac);
    24 by (ALLGOALS Asm_simp_tac);
    25 by (Fast_tac 1);
    25 by (Fast_tac 1);
    26 qed "set_via_mset";
    26 qed "set_via_mset";
    27 
    27