
diff -r 1ca2f41770cc -r 79202e2eab6a ProgTutorial/Tactical.thy
--- a/ProgTutorial/Tactical.thy	Wed Aug 19 09:25:49 2009 +0200
+++ b/ProgTutorial/Tactical.thy	Thu Aug 20 10:38:26 2009 +0200
@@ -1065,9 +1065,61 @@
   Most tactic combinators described in this section are defined in @{ML_file "Pure/tactical.ML"}.
   Some combinators for the purpose of proof search are implemented in @{ML_file "Pure/search.ML"}.
   \end{readmore}
+*}
 
+text {*
   \begin{exercise}\label{ex:dyckhoff}
+  Dyckhoff presents in \cite{Dyckhoff92} inference rules for a sequent
+  calculus, called G4ip, in which no contraction rule is needed in order to be
+  complete. As a result the rules applied in any order give a simple decision
+  procedure for propositional intuitionistic logic. His rules are
+
+  \begin{center}
+  \def\arraystretch{2.3}
+  \begin{tabular}{cc}
+  \infer[Ax]{A,\varGamma \Rightarrow A}{} &
+  \infer[False]{False,\varGamma \Rightarrow G}{}\\
+
+  \infer[\wedge_L]{A \wedge B, \varGamma \Rightarrow G}{A, B, \varGamma \Rightarrow G} &
+  \infer[\wedge_R]
+  {\varGamma \Rightarrow A\wedge B}{\varGamma \Rightarrow A & \varGamma \Rightarrow B}\\
   
+  \infer[\vee_L]
+  {A\vee B, \varGamma \Rightarrow G}{A,\varGamma \Rightarrow G & B,\varGamma \Rightarrow G} &
+  \infer[\vee_{R_1}]
+  {\varGamma \Rightarrow A \vee B}{\varGamma \Rightarrow A} \hspace{3mm}
+  \infer[\vee_{R_2}]
+  {\varGamma \Rightarrow A \vee B}{\varGamma \Rightarrow B}\\
+  
+  \infer[\longrightarrow_{L_1}]
+  {A\longrightarrow B, A, \varGamma \Rightarrow G}{B, A, \varGamma \Rightarrow G} &
+  \infer[\longrightarrow_R]
+  {\varGamma \Rightarrow A\longrightarrow B}{A,\varGamma \Rightarrow B}\\
+
+  \infer[\longrightarrow_{L_2}]
+  {(C \wedge D)\longrightarrow B, \varGamma \Rightarrow G}
+  {C\longrightarrow (D \longrightarrow B), \varGamma \Rightarrow G} &
+  
+  \infer[\longrightarrow_{L_3}]
+  {(C \vee D)\longrightarrow B, \varGamma \Rightarrow G}
+  {C\longrightarrow B, D\longrightarrow B, \varGamma \Rightarrow G}\\
+
+  \multicolumn{2}{c}{
+  \infer[\longrightarrow_{L_4}]
+  {(C \longrightarrow D)\longrightarrow B, \varGamma \Rightarrow G}
+  {D\longrightarrow B, \varGamma \Rightarrow C \longrightarrow D &
+  B, \varGamma \Rightarrow G}}\\
+  \end{tabular}
+  \end{center}
+
+  Implement a tactic that explores all possibilites of applying these rules to
+  a propositional formula until a goal state is reached in which all subgoals
+  are discharged.  Note that in Isabelle the left-rules need to be implemented
+  as elimination rules. You need to prove separate lemmas corresponding to
+  $\longrightarrow_{L_{1..4}}$.  In order to explore all possibilities of applying 
+  the rules, use the tactic combinator @{ML [index] DEPTH_SOLVE}, which searches 
+  for a state in which all subgoals are solved. Add also rules for equality and
+  run your tactic on the de Bruijn formulae discussed in Exercise~\ref{ex:debruijn}. 
   \end{exercise}
 
 *}




