| author | wenzelm | 
| Wed, 12 Feb 2025 20:21:33 +0100 | |
| changeset 82151 | a42414afe05f | 
| parent 71934 | 914baafb3da4 | 
| permissions | -rw-r--r-- | 
| 71925 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 1 | (* Title: HOL/Examples/Seq.thy | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 2 | Author: Makarius | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 3 | *) | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 4 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 5 | section \<open>Finite sequences\<close> | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 6 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 7 | theory Seq | 
| 71934 | 8 | imports Main | 
| 71925 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 9 | begin | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 10 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 11 | datatype 'a seq = Empty | Seq 'a "'a seq" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 12 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 13 | fun conc :: "'a seq \<Rightarrow> 'a seq \<Rightarrow> 'a seq" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 14 | where | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 15 | "conc Empty ys = ys" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 16 | | "conc (Seq x xs) ys = Seq x (conc xs ys)" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 17 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 18 | fun reverse :: "'a seq \<Rightarrow> 'a seq" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 19 | where | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 20 | "reverse Empty = Empty" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 21 | | "reverse (Seq x xs) = conc (reverse xs) (Seq x Empty)" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 22 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 23 | lemma conc_empty: "conc xs Empty = xs" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 24 | by (induct xs) simp_all | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 25 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 26 | lemma conc_assoc: "conc (conc xs ys) zs = conc xs (conc ys zs)" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 27 | by (induct xs) simp_all | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 28 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 29 | lemma reverse_conc: "reverse (conc xs ys) = conc (reverse ys) (reverse xs)" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 30 | by (induct xs) (simp_all add: conc_empty conc_assoc) | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 31 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 32 | lemma reverse_reverse: "reverse (reverse xs) = xs" | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 33 | by (induct xs) (simp_all add: reverse_conc) | 
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 34 | |
| 
bf085daea304
clarified sessions: "Notable Examples in Isabelle/HOL";
 wenzelm parents: diff
changeset | 35 | end |