Integrated PL0.thy into PL.thy
authornipkow
Fri, 08 Jul 1994 17:39:02 +0200
changeset 93 8c9be2e9236d
parent 92 bcd0ee8d71aa
child 94 8bb25bc98a27
Integrated PL0.thy into PL.thy
ex/PL.ML
ex/PL.thy
--- a/ex/PL.ML	Fri Jul 08 17:22:58 1994 +0200
+++ b/ex/PL.ML	Fri Jul 08 17:39:02 1994 +0200
@@ -135,7 +135,7 @@
 
 (** The function eval **)
 
-val pl_ss = set_ss addsimps [pl_rec_var,pl_rec_false,pl_rec_imp] @ PL0.pl.simps;
+val pl_ss = set_ss addsimps [pl_rec_var,pl_rec_false,pl_rec_imp] @ PL.pl.simps;
 
 goalw PL.thy [eval_def] "tt[false] = False";
 by (simp_tac pl_ss 1);
@@ -157,7 +157,7 @@
 by (simp_tac pl_ss 1);
 val hyps_false = result();
 
-goalw PL.thy [hyps_def] "hyps(#v,tt) = {if(v:tt, #v, (#v)->false)}";
+goalw PL.thy [hyps_def] "hyps(#v,tt) = {if(v:tt, #v, #v->false)}";
 by (simp_tac pl_ss 1);
 val hyps_var = result();
 
@@ -212,7 +212,7 @@
 (*This formulation is required for strong induction hypotheses*)
 goal PL.thy "hyps(p,tt) |- if(tt[p], p, p->false)";
 by (rtac (expand_if RS iffD2) 1);
-by(PL0.pl.induct_tac "p" 1);
+by(PL.pl.induct_tac "p" 1);
 by (ALLGOALS (simp_tac (pl_ss addsimps [conseq_I, conseq_H])));
 by (fast_tac (set_cs addIs [weaken_left_Un1, weaken_left_Un2, 
 			   weaken_right, imp_false]
@@ -248,8 +248,8 @@
 
 (*For the case hyps(p,t)-insert(#v,Y) |- p;
   we also have hyps(p,t)-{#v} <= hyps(p, t-{v}) *)
-goal PL.thy "hyps(p, t-{v}) <= insert((#v)->false, hyps(p,t)-{#v})";
-by (PL0.pl.induct_tac "p" 1);
+goal PL.thy "hyps(p, t-{v}) <= insert(#v->false, hyps(p,t)-{#v})";
+by (PL.pl.induct_tac "p" 1);
 by (simp_tac pl_ss 1);
 by (simp_tac (pl_ss setloop (split_tac [expand_if])) 1);
 by (simp_tac pl_ss 1);
@@ -257,9 +257,9 @@
 val hyps_Diff = result();
 
 (*For the case hyps(p,t)-insert(#v -> false,Y) |- p;
-  we also have hyps(p,t)-{(#v)->false} <= hyps(p, insert(v,t)) *)
-goal PL.thy "hyps(p, insert(v,t)) <= insert(#v, hyps(p,t)-{(#v)->false})";
-by (PL0.pl.induct_tac "p" 1);
+  we also have hyps(p,t)-{#v->false} <= hyps(p, insert(v,t)) *)
+goal PL.thy "hyps(p, insert(v,t)) <= insert(#v, hyps(p,t)-{#v->false})";
+by (PL.pl.induct_tac "p" 1);
 by (simp_tac pl_ss 1);
 by (simp_tac (pl_ss setloop (split_tac [expand_if])) 1);
 by (simp_tac pl_ss 1);
@@ -278,8 +278,8 @@
 
 (*The set hyps(p,t) is finite, and elements have the form #v or #v->false;
  could probably prove the stronger hyps(p,t) : Fin(hyps(p,{}) Un hyps(p,nat))*)
-goal PL.thy "hyps(p,t) : Fin(UN v:{x.True}. {#v, (#v)->false})";
-by (PL0.pl.induct_tac "p" 1);
+goal PL.thy "hyps(p,t) : Fin(UN v:{x.True}. {#v, #v->false})";
+by (PL.pl.induct_tac "p" 1);
 by (ALLGOALS (simp_tac (pl_ss setloop (split_tac [expand_if])) THEN'
               fast_tac (set_cs addSIs [Fin_0I, Fin_insertI, Fin_UnI])));
 val hyps_finite = result();
--- a/ex/PL.thy	Fri Jul 08 17:22:58 1994 +0200
+++ b/ex/PL.thy	Fri Jul 08 17:39:02 1994 +0200
@@ -6,7 +6,9 @@
 Inductive definition of propositional logic.
 *)
 
-PL = Finite + PL0 +
+PL = Finite +
+datatype
+    'a pl = false | var ('a) ("#_" [1000]) | "->" ('a pl,'a pl) (infixr 90)
 consts
     axK,axS,axDN:: "'a pl set"
     ruleMP,thms :: "'a pl set => 'a pl set"
@@ -40,6 +42,6 @@
     eval_def "tt[p] == pl_rec(p, %v.v:tt, False, op -->)"
 
     hyps_def
-      "hyps(p,tt) == pl_rec(p, %a. {if(a:tt, #a, (#a)->false)}, {}, op Un)"
+      "hyps(p,tt) == pl_rec(p, %a. {if(a:tt, #a, #a->false)}, {}, op Un)"
 
 end