# HG changeset patch # User nipkow # Date 773681942 -7200 # Node ID 8c9be2e9236dab272e66e32ec2360cdc4fde2d31 # Parent bcd0ee8d71aa321d9708d126e3ede102ac95b755 Integrated PL0.thy into PL.thy diff -r bcd0ee8d71aa -r 8c9be2e9236d ex/PL.ML --- 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(); diff -r bcd0ee8d71aa -r 8c9be2e9236d ex/PL.thy --- 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