equal
deleted
inserted
replaced
1648 done |
1648 done |
1649 |
1649 |
1650 lemma replicate_add: "replicate (n + m) x = replicate n x @ replicate m x" |
1650 lemma replicate_add: "replicate (n + m) x = replicate n x @ replicate m x" |
1651 by (induct n) auto |
1651 by (induct n) auto |
1652 |
1652 |
|
1653 text{* Courtesy of Matthias Daum: *} |
|
1654 lemma append_replicate_commute: |
|
1655 "replicate n x @ replicate k x = replicate k x @ replicate n x" |
|
1656 apply (simp add: replicate_add [THEN sym]) |
|
1657 apply (simp add: add_commute) |
|
1658 done |
|
1659 |
1653 lemma hd_replicate [simp]: "n \<noteq> 0 ==> hd (replicate n x) = x" |
1660 lemma hd_replicate [simp]: "n \<noteq> 0 ==> hd (replicate n x) = x" |
1654 by (induct n) auto |
1661 by (induct n) auto |
1655 |
1662 |
1656 lemma tl_replicate [simp]: "n \<noteq> 0 ==> tl (replicate n x) = replicate (n - 1) x" |
1663 lemma tl_replicate [simp]: "n \<noteq> 0 ==> tl (replicate n x) = replicate (n - 1) x" |
1657 by (induct n) auto |
1664 by (induct n) auto |
1661 |
1668 |
1662 lemma nth_replicate[simp]: "!!i. i < n ==> (replicate n x)!i = x" |
1669 lemma nth_replicate[simp]: "!!i. i < n ==> (replicate n x)!i = x" |
1663 apply (induct n, simp) |
1670 apply (induct n, simp) |
1664 apply (simp add: nth_Cons split: nat.split) |
1671 apply (simp add: nth_Cons split: nat.split) |
1665 done |
1672 done |
|
1673 |
|
1674 text{* Courtesy of Matthias Daum (2 lemmas): *} |
|
1675 lemma take_replicate[simp]: "take i (replicate k x) = replicate (min i k) x" |
|
1676 apply (case_tac "k \<le> i") |
|
1677 apply (simp add: min_def) |
|
1678 apply (drule not_leE) |
|
1679 apply (simp add: min_def) |
|
1680 apply (subgoal_tac "replicate k x = replicate i x @ replicate (k - i) x") |
|
1681 apply simp |
|
1682 apply (simp add: replicate_add [symmetric]) |
|
1683 done |
|
1684 |
|
1685 lemma drop_replicate[simp]: "!!i. drop i (replicate k x) = replicate (k-i) x" |
|
1686 apply (induct k) |
|
1687 apply simp |
|
1688 apply clarsimp |
|
1689 apply (case_tac i) |
|
1690 apply simp |
|
1691 apply clarsimp |
|
1692 done |
|
1693 |
1666 |
1694 |
1667 lemma set_replicate_Suc: "set (replicate (Suc n) x) = {x}" |
1695 lemma set_replicate_Suc: "set (replicate (Suc n) x) = {x}" |
1668 by (induct n) auto |
1696 by (induct n) auto |
1669 |
1697 |
1670 lemma set_replicate [simp]: "n \<noteq> 0 ==> set (replicate n x) = {x}" |
1698 lemma set_replicate [simp]: "n \<noteq> 0 ==> set (replicate n x) = {x}" |