ProgTutorial/Package/Ind_Code.thy
changeset 219 98d43270024f
parent 218 7ff7325e3b4e
child 224 647cab4a72c2
--- a/ProgTutorial/Package/Ind_Code.thy	Tue Mar 31 20:31:18 2009 +0100
+++ b/ProgTutorial/Package/Ind_Code.thy	Wed Apr 01 12:26:56 2009 +0100
@@ -1,5 +1,5 @@
 theory Ind_Code
-imports "../Base" "../FirstSteps" Ind_General_Scheme 
+imports "../Base" "../FirstSteps" Ind_Interface Ind_General_Scheme
 begin
 
 section {* The Gory Details\label{sec:code} *} 
@@ -798,7 +798,7 @@
 *}
 
 lemma accpartI:
-  shows "\<And>x. (\<And>y. R y x \<Longrightarrow> accpart R y) \<Longrightarrow> accpart R x"
+  shows "\<And>R x. (\<And>y. R y x \<Longrightarrow> accpart R y) \<Longrightarrow> accpart R x"
 apply(tactic {* expand_tac @{thms accpart_def} *})
 apply(tactic {* chop_test_tac [acc_pred] acc_rules @{context} *})
 apply(tactic {* apply_prem_tac 0 [acc_pred] acc_rules @{context} *})
@@ -879,7 +879,7 @@
 *}
 
 lemma accpartI:
-  shows "\<And>x. (\<And>y. R y x \<Longrightarrow> accpart R y) \<Longrightarrow> accpart R x"
+  shows "\<And>R x. (\<And>y. R y x \<Longrightarrow> accpart R y) \<Longrightarrow> accpart R x"
 apply(tactic {* expand_tac @{thms accpart_def} *})
 apply(tactic {* prove_intro_tac 0 [acc_pred] acc_rules @{context} 1 *})
 done
@@ -1058,7 +1058,7 @@
 
 ML{*val specification =
   spec_parser >>
-    (fn ((pred_specs), rule_specs) => add_inductive_cmd pred_specs rule_specs)*}
+    (fn (pred_specs, rule_specs) => add_inductive_cmd pred_specs rule_specs)*}
 
 ML{*val _ = OuterSyntax.local_theory "simple_inductive" 
               "define inductive predicates"
@@ -1083,6 +1083,7 @@
   
 *}
 
+(*
 simple_inductive
   Even and Odd
 where
@@ -1100,19 +1101,25 @@
 
 thm Even_def
 thm Odd_def
+*)
 
+(*
 text {* 
   Second, we want that the user can specify fixed parameters.
   Remember in the previous section we stated that the user can give the 
   specification for the transitive closure of a relation @{text R} as 
 *}
+*)
 
+(*
 simple_inductive
   trcl\<iota>\<iota> :: "('a \<Rightarrow> 'a \<Rightarrow> bool) \<Rightarrow> 'a \<Rightarrow> 'a \<Rightarrow> bool"
 where
   base: "trcl\<iota>\<iota> R x x"
 | step: "trcl\<iota>\<iota> R x y \<Longrightarrow> R y z \<Longrightarrow> trcl\<iota>\<iota> R x z"
+*)
 
+(*
 text {*
   Note that there is no locale given in this specification---the parameter
   @{text "R"} therefore needs to be included explicitly in @{term trcl\<iota>\<iota>}, but
@@ -1132,14 +1139,15 @@
   But this does not correspond to the induction principle we derived by hand, which
   was
   
-  \begin{center}\small
-  \mprset{flushleft}
-  \mbox{\inferrule{
-             @{thm_style prem1  trcl_induct[no_vars]}\\\\
-             @{thm_style prem2  trcl_induct[no_vars]}\\\\
-             @{thm_style prem3  trcl_induct[no_vars]}}
-            {@{thm_style concl  trcl_induct[no_vars]}}}  
-  \end{center}
+  
+  %\begin{center}\small
+  %\mprset{flushleft}
+  %\mbox{\inferrule{
+  %           @ { thm_style prem1  trcl_induct[no_vars]}\\\\
+  %           @ { thm_style prem2  trcl_induct[no_vars]}\\\\
+  %           @ { thm_style prem3  trcl_induct[no_vars]}}
+  %          {@ { thm_style concl  trcl_induct[no_vars]}}}  
+  %\end{center}
 
   The difference is that in the one derived by hand the relation @{term R} is not
   a parameter of the proposition @{term P} to be proved and it is also not universally
@@ -1151,7 +1159,7 @@
   to write 
 
 *}
-
+*)
 (*
 simple_inductive
   trcl'' for R :: "'a \<Rightarrow> 'a \<Rightarrow> bool"
@@ -1164,5 +1172,4 @@
 where
   accpartI: "(\<And>y. R y x \<Longrightarrow> accpart'' R y) \<Longrightarrow> accpart'' R x"
 *)
-
-end
+(*<*)end(*>*)
\ No newline at end of file