added lemmas
authornipkow
Wed, 15 Jun 2005 11:54:13 +0200
changeset 16397c047008f88d4
parent 16396 d9d2a0cadd5e
child 16398 7f0faa30f602
added lemmas
src/HOL/List.thy
     1.1 --- a/src/HOL/List.thy	Wed Jun 15 09:01:48 2005 +0200
     1.2 +++ b/src/HOL/List.thy	Wed Jun 15 11:54:13 2005 +0200
     1.3 @@ -1650,6 +1650,13 @@
     1.4  lemma replicate_add: "replicate (n + m) x = replicate n x @ replicate m x"
     1.5  by (induct n) auto
     1.6  
     1.7 +text{* Courtesy of Matthias Daum: *}
     1.8 +lemma append_replicate_commute:
     1.9 +  "replicate n x @ replicate k x = replicate k x @ replicate n x"
    1.10 +apply (simp add: replicate_add [THEN sym])
    1.11 +apply (simp add: add_commute)
    1.12 +done
    1.13 +
    1.14  lemma hd_replicate [simp]: "n \<noteq> 0 ==> hd (replicate n x) = x"
    1.15  by (induct n) auto
    1.16  
    1.17 @@ -1664,6 +1671,27 @@
    1.18  apply (simp add: nth_Cons split: nat.split)
    1.19  done
    1.20  
    1.21 +text{* Courtesy of Matthias Daum (2 lemmas): *}
    1.22 +lemma take_replicate[simp]: "take i (replicate k x) = replicate (min i k) x"
    1.23 +apply (case_tac "k \<le> i")
    1.24 + apply  (simp add: min_def)
    1.25 +apply (drule not_leE)
    1.26 +apply (simp add: min_def)
    1.27 +apply (subgoal_tac "replicate k x = replicate i x @ replicate (k - i) x")
    1.28 + apply  simp
    1.29 +apply (simp add: replicate_add [symmetric])
    1.30 +done
    1.31 +
    1.32 +lemma drop_replicate[simp]: "!!i. drop i (replicate k x) = replicate (k-i) x"
    1.33 +apply (induct k)
    1.34 + apply simp
    1.35 +apply clarsimp
    1.36 +apply (case_tac i)
    1.37 + apply simp
    1.38 +apply clarsimp
    1.39 +done
    1.40 +
    1.41 +
    1.42  lemma set_replicate_Suc: "set (replicate (Suc n) x) = {x}"
    1.43  by (induct n) auto
    1.44