# HG changeset patch # User Christian Urban # Date 1272252001 -7200 # Node ID e79563b14b0fd2168b53f8026f9dcfda054b7c3b # Parent 620a24bf954ae8e96a837ffa6de175f0a483716b updated to new Isabelle diff -r 620a24bf954a -r e79563b14b0f ProgTutorial/Helper/Command/Command.thy --- a/ProgTutorial/Helper/Command/Command.thy Sat Apr 24 22:55:50 2010 +0200 +++ b/ProgTutorial/Helper/Command/Command.thy Mon Apr 26 05:20:01 2010 +0200 @@ -29,7 +29,7 @@ let val prop = Syntax.read_prop lthy str in - Proof.theorem_i NONE (K I) [[(prop,[])]] lthy + Proof.theorem NONE (K I) [[(prop,[])]] lthy end; val prove_prop_parser = OuterParse.prop >> prove_prop val kind = OuterKeyword.thy_goal @@ -51,7 +51,7 @@ let val trm = ML_Context.evaluate lthy true ("r", r) txt in - Proof.theorem_i NONE (after_qed thm_name) [[(trm,[])]] lthy + Proof.theorem NONE (after_qed thm_name) [[(trm,[])]] lthy end val parser = SpecParse.opt_thm_name ":" -- OuterParse.ML_source diff -r 620a24bf954a -r e79563b14b0f ProgTutorial/Parsing.thy --- a/ProgTutorial/Parsing.thy Sat Apr 24 22:55:50 2010 +0200 +++ b/ProgTutorial/Parsing.thy Mon Apr 26 05:20:01 2010 +0200 @@ -1160,7 +1160,7 @@ let val prop = Syntax.read_prop lthy str in - Proof.theorem_i NONE (K I) [[(prop,[])]] lthy + Proof.theorem NONE (K I) [[(prop, [])]] lthy end val kind = OuterKeyword.thy_goal @@ -1173,7 +1173,7 @@ The function @{text goal_prop} in Lines 2 to 7 takes a string (the proposition to be proved) and a context as argument. The context is necessary in order to be able to use @{ML_ind read_prop in Syntax}, which converts a string into a proper proposition. - In Line 6 the function @{ML_ind theorem_i in Proof} starts the proof for the + In Line 6 the function @{ML_ind theorem in Proof} starts the proof for the proposition. Its argument @{ML NONE} stands for a locale (which we chose to omit); the argument @{ML "(K I)"} stands for a function that determines what should be done with the theorem once it is proved (we chose to just forget @@ -1211,7 +1211,7 @@ let val trm = ML_Context.evaluate lthy true ("r", r) txt in - Proof.theorem_i NONE (after_qed thm_name) [[(trm,[])]] lthy + Proof.theorem NONE (after_qed thm_name) [[(trm,[])]] lthy end val parser = SpecParse.opt_thm_name ":" -- OuterParse.ML_source diff -r 620a24bf954a -r e79563b14b0f ProgTutorial/Tactical.thy --- a/ProgTutorial/Tactical.thy Sat Apr 24 22:55:50 2010 +0200 +++ b/ProgTutorial/Tactical.thy Mon Apr 26 05:20:01 2010 +0200 @@ -365,16 +365,15 @@ where "EQ_TRUE X \ (X = True)" -lemma test: +schematic_lemma test: shows "EQ_TRUE ?X" unfolding EQ_TRUE_def by (rule refl) text {* - Although Isabelle issues a warning message when stating goals involving - meta-variables, it is possible to prove this theorem. The reason for the warning - message is that the proved theorem is not @{text "EQ_TRUE ?X"}, as one might - expect, but @{thm test}. We can test this with: + By using \isacommand{schematic\_lemma} it is possible to prove lemmas including + meta-variables on the user level. However, the proved theorem is not @{text "EQ_TRUE ?X"}, + as one might expect, but @{thm test}. We can test this with: \begin{isabelle} \isacommand{thm}~@{thm [source] test}\\ @@ -391,6 +390,7 @@ *} + section {* Simple Tactics\label{sec:simpletacs} *} text {* @@ -568,7 +568,7 @@ \end{figure} *} -lemma +schematic_lemma shows "\x y. A x y \ B y x \ C (?z y) x" apply(tactic {* Subgoal.FOCUS foc_tac @{context} 1 *}) diff -r 620a24bf954a -r e79563b14b0f progtutorial.pdf Binary file progtutorial.pdf has changed