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);
authorwenzelm
Mon, 30 Jul 2012 17:37:34 +0200
changeset 48612 795d38a6dab3
parent 48611 b34ff75c23a7
child 48613 232652ac346e
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);
doc-src/ROOT
doc-src/TutorialI/Makefile
doc-src/TutorialI/ToyList2/ToyList.thy
--- 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