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);
--- a/doc-src/ROOT Mon Jul 30 17:25:45 2012 +0200
+++ b/doc-src/ROOT Mon Jul 30 17:37:34 2012 +0200
@@ -177,6 +177,10 @@
"Sets/Relations"
"Sets/Recur"
+session ToyList2 (doc) in "TutorialI/ToyList2" = HOL +
+ options [browser_info = false, document = false, print_mode = "brackets"]
+ theories ToyList
+
session examples (doc) in "ZF" = ZF +
options [browser_info = false, document = false,
document_dump = document, document_dump_mode = "tex",
--- a/doc-src/TutorialI/Makefile Mon Jul 30 17:25:45 2012 +0200
+++ b/doc-src/TutorialI/Makefile Mon Jul 30 17:37:34 2012 +0200
@@ -23,9 +23,13 @@
../../lib/texinputs/isabelle.sty \
../../lib/texinputs/isabellesym.sty ../pdfsetup.sty
+ToyList2/ToyList.thy: ToyList2/ToyList1 ToyList2/ToyList2
+ cat ToyList2/ToyList1 ToyList2/ToyList2 > ToyList2/ToyList.thy
+
+
dvi: $(NAME).dvi
-$(NAME).dvi: $(FILES) isabelle_hol.eps typedef.ps
+$(NAME).dvi: $(FILES) isabelle_hol.eps typedef.ps ToyList2/ToyList.thy
$(LATEX) $(NAME)
$(BIBTEX) $(NAME)
$(LATEX) $(NAME)
@@ -35,7 +39,7 @@
pdf: $(NAME).pdf
-$(NAME).pdf: $(FILES) isabelle_hol.pdf typedef.pdf
+$(NAME).pdf: $(FILES) isabelle_hol.pdf typedef.pdf ToyList2/ToyList.thy
$(PDFLATEX) $(NAME)
$(BIBTEX) $(NAME)
$(PDFLATEX) $(NAME)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/TutorialI/ToyList2/ToyList.thy Mon Jul 30 17:37:34 2012 +0200
@@ -0,0 +1,37 @@
+theory ToyList
+imports Datatype
+begin
+
+datatype 'a list = Nil ("[]")
+ | Cons 'a "'a list" (infixr "#" 65)
+
+(* This is the append function: *)
+primrec app :: "'a list => 'a list => 'a list" (infixr "@" 65)
+where
+"[] @ ys = ys" |
+"(x # xs) @ ys = x # (xs @ ys)"
+
+primrec rev :: "'a list => 'a list" where
+"rev [] = []" |
+"rev (x # xs) = (rev xs) @ (x # [])"
+lemma app_Nil2 [simp]: "xs @ [] = xs"
+apply(induct_tac xs)
+apply(auto)
+done
+
+lemma app_assoc [simp]: "(xs @ ys) @ zs = xs @ (ys @ zs)"
+apply(induct_tac xs)
+apply(auto)
+done
+
+lemma rev_app [simp]: "rev(xs @ ys) = (rev ys) @ (rev xs)"
+apply(induct_tac xs)
+apply(auto)
+done
+
+theorem rev_rev [simp]: "rev(rev xs) = xs"
+apply(induct_tac xs)
+apply(auto)
+done
+
+end