| author | wenzelm | 
| Fri, 24 Aug 2012 19:35:44 +0200 | |
| changeset 48922 | 6f3ccfa7818d | 
| parent 48612 | 795d38a6dab3 | 
| permissions | -rw-r--r-- | 
| 48612 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 1 | theory ToyList | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 2 | imports Datatype | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 3 | begin | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 4 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 5 | datatype 'a list = Nil                          ("[]")
 | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 6 | | Cons 'a "'a list" (infixr "#" 65) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 7 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 8 | (* This is the append function: *) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 9 | primrec app :: "'a list => 'a list => 'a list" (infixr "@" 65) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 10 | where | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 11 | "[] @ ys = ys" | | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 12 | "(x # xs) @ ys = x # (xs @ ys)" | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 13 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 14 | primrec rev :: "'a list => 'a list" where | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 15 | "rev [] = []" | | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 16 | "rev (x # xs) = (rev xs) @ (x # [])" | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 17 | lemma app_Nil2 [simp]: "xs @ [] = xs" | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 18 | apply(induct_tac xs) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 19 | apply(auto) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 20 | done | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 21 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 22 | lemma app_assoc [simp]: "(xs @ ys) @ zs = xs @ (ys @ zs)" | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 23 | apply(induct_tac xs) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 24 | apply(auto) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 25 | done | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 26 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 27 | lemma rev_app [simp]: "rev(xs @ ys) = (rev ys) @ (rev xs)" | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 28 | apply(induct_tac xs) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 29 | apply(auto) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 30 | done | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 31 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 32 | theorem rev_rev [simp]: "rev(rev xs) = xs" | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 33 | apply(induct_tac xs) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 34 | apply(auto) | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 35 | done | 
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 36 | |
| 
795d38a6dab3
regenerate ToyList2/ToyList.thy during raw make *after* session build, to ensure that it is updated sporadically (NB: isabelle build does not support generated sources);
 wenzelm parents: diff
changeset | 37 | end |