src/HOL/List.thy
changeset 57514 bdc2c6b40bf2
parent 57512 cc97b347b301
child 57537 810bc6c41ebd
equal deleted inserted replaced
57513:55b2afc5ddfc 57514:bdc2c6b40bf2
  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