equal
deleted
inserted
replaced
2063 apply (case_tac xs, auto) |
2063 apply (case_tac xs, auto) |
2064 done |
2064 done |
2065 |
2065 |
2066 lemma butlast_take: |
2066 lemma butlast_take: |
2067 "n <= length xs ==> butlast (take n xs) = take (n - 1) xs" |
2067 "n <= length xs ==> butlast (take n xs) = take (n - 1) xs" |
2068 by (simp add: butlast_conv_take min_max.inf_absorb1 min_max.inf_absorb2) |
2068 by (simp add: butlast_conv_take min.absorb1 min.absorb2) |
2069 |
2069 |
2070 lemma butlast_drop: "butlast (drop n xs) = drop n (butlast xs)" |
2070 lemma butlast_drop: "butlast (drop n xs) = drop n (butlast xs)" |
2071 by (simp add: butlast_conv_take drop_take add_ac) |
2071 by (simp add: butlast_conv_take drop_take add_ac) |
2072 |
2072 |
2073 lemma take_butlast: "n < length xs ==> take n (butlast xs) = take n xs" |
2073 lemma take_butlast: "n < length xs ==> take n (butlast xs) = take n xs" |
2074 by (simp add: butlast_conv_take min_max.inf_absorb1) |
2074 by (simp add: butlast_conv_take min.absorb1) |
2075 |
2075 |
2076 lemma drop_butlast: "drop n (butlast xs) = butlast (drop n xs)" |
2076 lemma drop_butlast: "drop n (butlast xs) = butlast (drop n xs)" |
2077 by (simp add: butlast_conv_take drop_take add_ac) |
2077 by (simp add: butlast_conv_take drop_take add_ac) |
2078 |
2078 |
2079 lemma hd_drop_conv_nth: "n < length xs \<Longrightarrow> hd(drop n xs) = xs!n" |
2079 lemma hd_drop_conv_nth: "n < length xs \<Longrightarrow> hd(drop n xs) = xs!n" |