equal
deleted
inserted
replaced
2102 lemma butlast_take: |
2102 lemma butlast_take: |
2103 "n <= length xs ==> butlast (take n xs) = take (n - 1) xs" |
2103 "n <= length xs ==> butlast (take n xs) = take (n - 1) xs" |
2104 by (simp add: butlast_conv_take min.absorb1 min.absorb2) |
2104 by (simp add: butlast_conv_take min.absorb1 min.absorb2) |
2105 |
2105 |
2106 lemma butlast_drop: "butlast (drop n xs) = drop n (butlast xs)" |
2106 lemma butlast_drop: "butlast (drop n xs) = drop n (butlast xs)" |
2107 by (simp add: butlast_conv_take drop_take add_ac) |
2107 by (simp add: butlast_conv_take drop_take ac_simps) |
2108 |
2108 |
2109 lemma take_butlast: "n < length xs ==> take n (butlast xs) = take n xs" |
2109 lemma take_butlast: "n < length xs ==> take n (butlast xs) = take n xs" |
2110 by (simp add: butlast_conv_take min.absorb1) |
2110 by (simp add: butlast_conv_take min.absorb1) |
2111 |
2111 |
2112 lemma drop_butlast: "drop n (butlast xs) = butlast (drop n xs)" |
2112 lemma drop_butlast: "drop n (butlast xs) = butlast (drop n xs)" |
2113 by (simp add: butlast_conv_take drop_take add_ac) |
2113 by (simp add: butlast_conv_take drop_take ac_simps) |
2114 |
2114 |
2115 lemma hd_drop_conv_nth: "n < length xs \<Longrightarrow> hd(drop n xs) = xs!n" |
2115 lemma hd_drop_conv_nth: "n < length xs \<Longrightarrow> hd(drop n xs) = xs!n" |
2116 by(simp add: hd_conv_nth) |
2116 by(simp add: hd_conv_nth) |
2117 |
2117 |
2118 lemma set_take_subset_set_take: |
2118 lemma set_take_subset_set_take: |
3469 "listsum (xs @ ys) = listsum xs + listsum ys" |
3469 "listsum (xs @ ys) = listsum xs + listsum ys" |
3470 by (induct xs) (simp_all add: add.assoc) |
3470 by (induct xs) (simp_all add: add.assoc) |
3471 |
3471 |
3472 lemma (in comm_monoid_add) listsum_rev [simp]: |
3472 lemma (in comm_monoid_add) listsum_rev [simp]: |
3473 "listsum (rev xs) = listsum xs" |
3473 "listsum (rev xs) = listsum xs" |
3474 by (simp add: listsum_def foldr_fold fold_rev fun_eq_iff add_ac) |
3474 by (simp add: listsum_def foldr_fold fold_rev fun_eq_iff ac_simps) |
3475 |
3475 |
3476 lemma (in monoid_add) fold_plus_listsum_rev: |
3476 lemma (in monoid_add) fold_plus_listsum_rev: |
3477 "fold plus xs = plus (listsum (rev xs))" |
3477 "fold plus xs = plus (listsum (rev xs))" |
3478 proof |
3478 proof |
3479 fix x |
3479 fix x |