diff -r 3a8d722fd3ff -r 16c4ea954511 Trancl.ML --- a/Trancl.ML Fri Nov 11 10:35:03 1994 +0100 +++ b/Trancl.ML Mon Nov 21 17:50:34 1994 +0100 @@ -13,13 +13,13 @@ val prems = goalw Trancl.thy [trans_def] "(!! x y z. [| :r; :r |] ==> :r) ==> trans(r)"; by (REPEAT (ares_tac (prems@[allI,impI]) 1)); -val transI = result(); +qed "transI"; val major::prems = goalw Trancl.thy [trans_def] "[| trans(r); :r; :r |] ==> :r"; by (cut_facts_tac [major] 1); by (fast_tac (HOL_cs addIs prems) 1); -val transD = result(); +qed "transD"; (** Identity relation **) @@ -27,7 +27,7 @@ by (rtac CollectI 1); by (rtac exI 1); by (rtac refl 1); -val idI = result(); +qed "idI"; val major::prems = goalw Trancl.thy [id_def] "[| p: id; !!x.[| p = |] ==> P \ @@ -35,14 +35,14 @@ by (rtac (major RS CollectE) 1); by (etac exE 1); by (eresolve_tac prems 1); -val idE = result(); +qed "idE"; (** Composition of two relations **) val prems = goalw Trancl.thy [comp_def] "[| :s; :r |] ==> : r O s"; by (fast_tac (set_cs addIs prems) 1); -val compI = result(); +qed "compI"; (*proof requires higher-level assumptions or a delaying of hyp_subst_tac*) val prems = goalw Trancl.thy [comp_def] @@ -51,7 +51,7 @@ \ |] ==> P"; by (cut_facts_tac prems 1); by (REPEAT (eresolve_tac [CollectE, exE, conjE] 1 ORELSE ares_tac prems 1)); -val compE = result(); +qed "compE"; val prems = goal Trancl.thy "[| : r O s; \ @@ -59,19 +59,19 @@ \ |] ==> P"; by (rtac compE 1); by (REPEAT (ares_tac prems 1 ORELSE eresolve_tac [Pair_inject,ssubst] 1)); -val compEpair = result(); +qed "compEpair"; val comp_cs = prod_cs addIs [compI, idI] addSEs [compE, idE]; goal Trancl.thy "!!r s. [| r'<=r; s'<=s |] ==> (r' O s') <= (r O s)"; by (fast_tac comp_cs 1); -val comp_mono = result(); +qed "comp_mono"; goal Trancl.thy "!!r s. [| s <= Sigma(A,%x.B); r <= Sigma(B,%x.C) |] ==> \ \ (r O s) <= Sigma(A,%x.C)"; by (fast_tac comp_cs 1); -val comp_subset_Sigma = result(); +qed "comp_subset_Sigma"; (** The relation rtrancl **) @@ -79,7 +79,7 @@ goal Trancl.thy "mono(%s. id Un (r O s))"; by (rtac monoI 1); by (REPEAT (ares_tac [monoI, subset_refl, comp_mono, Un_mono] 1)); -val rtrancl_fun_mono = result(); +qed "rtrancl_fun_mono"; val rtrancl_unfold = rtrancl_fun_mono RS (rtrancl_def RS def_lfp_Tarski); @@ -87,25 +87,25 @@ goal Trancl.thy " : r^*"; by (stac rtrancl_unfold 1); by (fast_tac comp_cs 1); -val rtrancl_refl = result(); +qed "rtrancl_refl"; (*Closure under composition with r*) val prems = goal Trancl.thy "[| : r^*; : r |] ==> : r^*"; by (stac rtrancl_unfold 1); by (fast_tac (comp_cs addIs prems) 1); -val rtrancl_into_rtrancl = result(); +qed "rtrancl_into_rtrancl"; (*rtrancl of r contains r*) val [prem] = goal Trancl.thy "[| : r |] ==> : r^*"; by (rtac (rtrancl_refl RS rtrancl_into_rtrancl) 1); by (rtac prem 1); -val r_into_rtrancl = result(); +qed "r_into_rtrancl"; (*monotonicity of rtrancl*) goalw Trancl.thy [rtrancl_def] "!!r s. r <= s ==> r^* <= s^*"; by(REPEAT(ares_tac [lfp_mono,Un_mono,comp_mono,subset_refl] 1)); -val rtrancl_mono = result(); +qed "rtrancl_mono"; (** standard induction rule **) @@ -116,7 +116,7 @@ \ ==> P()"; by (rtac ([rtrancl_def, rtrancl_fun_mono, major] MRS def_induct) 1); by (fast_tac (comp_cs addIs prems) 1); -val rtrancl_full_induct = result(); +qed "rtrancl_full_induct"; (*nice induction rule*) val major::prems = goal Trancl.thy @@ -132,14 +132,14 @@ by (resolve_tac [major RS rtrancl_full_induct] 1); by (fast_tac (comp_cs addIs prems) 1); by (fast_tac (comp_cs addIs prems) 1); -val rtrancl_induct = result(); +qed "rtrancl_induct"; (*transitivity of transitive closure!! -- by induction.*) goal Trancl.thy "trans(r^*)"; by (rtac transI 1); by (res_inst_tac [("b","z")] rtrancl_induct 1); by (DEPTH_SOLVE (eresolve_tac [asm_rl, rtrancl_into_rtrancl] 1)); -val trans_rtrancl = result(); +qed "trans_rtrancl"; (*elimination of rtrancl -- by induction on a special formula*) val major::prems = goal Trancl.thy @@ -151,7 +151,7 @@ by (fast_tac (set_cs addIs prems) 2); by (fast_tac (set_cs addIs prems) 2); by (REPEAT (eresolve_tac ([asm_rl,exE,disjE,conjE]@prems) 1)); -val rtranclE = result(); +qed "rtranclE"; (**** The relation trancl ****) @@ -162,19 +162,19 @@ " : r^+ ==> : r^*"; by (resolve_tac [major RS compEpair] 1); by (REPEAT (ares_tac [rtrancl_into_rtrancl] 1)); -val trancl_into_rtrancl = result(); +qed "trancl_into_rtrancl"; (*r^+ contains r*) val [prem] = goalw Trancl.thy [trancl_def] "[| : r |] ==> : r^+"; by (REPEAT (ares_tac [prem,compI,rtrancl_refl] 1)); -val r_into_trancl = result(); +qed "r_into_trancl"; (*intro rule by definition: from rtrancl and r*) val prems = goalw Trancl.thy [trancl_def] "[| : r^*; : r |] ==> : r^+"; by (REPEAT (resolve_tac ([compI]@prems) 1)); -val rtrancl_into_trancl1 = result(); +qed "rtrancl_into_trancl1"; (*intro rule from r and rtrancl*) val prems = goal Trancl.thy @@ -184,7 +184,7 @@ by (resolve_tac (prems RL [r_into_trancl]) 1); by (rtac (trans_rtrancl RS transD RS rtrancl_into_trancl1) 1); by (REPEAT (ares_tac (prems@[r_into_rtrancl]) 1)); -val rtrancl_into_trancl2 = result(); +qed "rtrancl_into_trancl2"; (*elimination of r^+ -- NOT an induction rule*) val major::prems = goal Trancl.thy @@ -198,7 +198,7 @@ by (etac rtranclE 1); by (fast_tac comp_cs 1); by (fast_tac (comp_cs addSIs [rtrancl_into_trancl1]) 1); -val tranclE = result(); +qed "tranclE"; (*Transitivity of r^+. Proved by unfolding since it uses transitivity of rtrancl. *) @@ -207,14 +207,14 @@ by (REPEAT (etac compEpair 1)); by (rtac (rtrancl_into_rtrancl RS (trans_rtrancl RS transD RS compI)) 1); by (REPEAT (assume_tac 1)); -val trans_trancl = result(); +qed "trans_trancl"; val prems = goal Trancl.thy "[| : r; : r^+ |] ==> : r^+"; by (rtac (r_into_trancl RS (trans_trancl RS transD)) 1); by (resolve_tac prems 1); by (resolve_tac prems 1); -val trancl_into_trancl2 = result(); +qed "trancl_into_trancl2"; val major::prems = goal Trancl.thy @@ -223,10 +223,10 @@ by (rtac (major RS rtrancl_induct) 1); by (rtac (refl RS disjI1) 1); by (fast_tac (comp_cs addSEs [SigmaE2]) 1); -val trancl_subset_Sigma_lemma = result(); +qed "trancl_subset_Sigma_lemma"; goalw Trancl.thy [trancl_def] "!!r. r <= Sigma(A,%x.A) ==> trancl(r) <= Sigma(A,%x.A)"; by (fast_tac (comp_cs addSDs [trancl_subset_Sigma_lemma]) 1); -val trancl_subset_Sigma = result(); +qed "trancl_subset_Sigma";