diff -r e0b172d01c37 -r f0200e91b272 src/ZF/Trancl.ML --- a/src/ZF/Trancl.ML Wed Dec 07 12:34:47 1994 +0100 +++ b/src/ZF/Trancl.ML Wed Dec 07 13:12:04 1994 +0100 @@ -12,13 +12,13 @@ by (rtac bnd_monoI 1); by (REPEAT (ares_tac [subset_refl, Un_mono, comp_mono] 2)); by (fast_tac comp_cs 1); -val rtrancl_bnd_mono = result(); +qed "rtrancl_bnd_mono"; val [prem] = goalw Trancl.thy [rtrancl_def] "r<=s ==> r^* <= s^*"; by (rtac lfp_mono 1); by (REPEAT (resolve_tac [rtrancl_bnd_mono, prem, subset_refl, id_mono, comp_mono, Un_mono, field_mono, Sigma_mono] 1)); -val rtrancl_mono = result(); +qed "rtrancl_mono"; (* r^* = id(field(r)) Un ( r O r^* ) *) val rtrancl_unfold = rtrancl_bnd_mono RS (rtrancl_def RS def_lfp_Tarski); @@ -31,7 +31,7 @@ val [prem] = goal Trancl.thy "[| a: field(r) |] ==> : r^*"; by (resolve_tac [rtrancl_unfold RS ssubst] 1); by (rtac (prem RS idI RS UnI1) 1); -val rtrancl_refl = result(); +qed "rtrancl_refl"; (*Closure under composition with r *) val prems = goal Trancl.thy @@ -40,24 +40,24 @@ by (rtac (compI RS UnI2) 1); by (resolve_tac prems 1); by (resolve_tac prems 1); -val rtrancl_into_rtrancl = result(); +qed "rtrancl_into_rtrancl"; (*rtrancl of r contains all pairs in r *) val prems = goal Trancl.thy " : r ==> : r^*"; by (resolve_tac [rtrancl_refl RS rtrancl_into_rtrancl] 1); by (REPEAT (resolve_tac (prems@[fieldI1]) 1)); -val r_into_rtrancl = result(); +qed "r_into_rtrancl"; (*The premise ensures that r consists entirely of pairs*) val prems = goal Trancl.thy "r <= Sigma(A,B) ==> r <= r^*"; by (cut_facts_tac prems 1); by (fast_tac (ZF_cs addIs [r_into_rtrancl]) 1); -val r_subset_rtrancl = result(); +qed "r_subset_rtrancl"; goal Trancl.thy "field(r^*) = field(r)"; by (fast_tac (eq_cs addIs [r_into_rtrancl] addSDs [rtrancl_type RS subsetD]) 1); -val rtrancl_field = result(); +qed "rtrancl_field"; (** standard induction rule **) @@ -69,7 +69,7 @@ \ ==> P()"; by (rtac ([rtrancl_def, rtrancl_bnd_mono, major] MRS def_induct) 1); by (fast_tac (ZF_cs addIs prems addSEs [idE,compE]) 1); -val rtrancl_full_induct = result(); +qed "rtrancl_full_induct"; (*nice induction rule. Tried adding the typing hypotheses y,z:field(r), but these @@ -86,14 +86,14 @@ (*now do the induction*) by (resolve_tac [major RS rtrancl_full_induct] 1); by (ALLGOALS (fast_tac (ZF_cs addIs prems))); -val rtrancl_induct = result(); +qed "rtrancl_induct"; (*transitivity of transitive closure!! -- by induction.*) goalw Trancl.thy [trans_def] "trans(r^*)"; by (REPEAT (resolve_tac [allI,impI] 1)); by (eres_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 @@ -104,7 +104,7 @@ (*see HOL/trancl*) by (rtac (major RS rtrancl_induct) 2); by (ALLGOALS (fast_tac (ZF_cs addSEs prems))); -val rtranclE = result(); +qed "rtranclE"; (**** The relation trancl ****) @@ -114,31 +114,31 @@ by (safe_tac comp_cs); 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"; (** Conversions between trancl and rtrancl **) val [major] = goalw Trancl.thy [trancl_def] " : 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 all pairs in r *) val [prem] = goalw Trancl.thy [trancl_def] " : r ==> : r^+"; by (REPEAT (ares_tac [prem,compI,rtrancl_refl,fieldI1] 1)); -val r_into_trancl = result(); +qed "r_into_trancl"; (*The premise ensures that r consists entirely of pairs*) val prems = goal Trancl.thy "r <= Sigma(A,B) ==> r <= r^+"; by (cut_facts_tac prems 1); by (fast_tac (ZF_cs addIs [r_into_trancl]) 1); -val r_subset_trancl = result(); +qed "r_subset_trancl"; (*intro rule by definition: from r^* 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 r^* *) val prems = goal Trancl.thy @@ -147,7 +147,7 @@ by (resolve_tac (prems RL [r_into_trancl]) 1); by (etac (trans_trancl RS transD) 1); by (etac r_into_trancl 1); -val rtrancl_into_trancl2 = result(); +qed "rtrancl_into_trancl2"; (*Nice induction rule for trancl*) val major::prems = goal Trancl.thy @@ -162,7 +162,7 @@ by (fast_tac ZF_cs 1); by (etac rtrancl_induct 1); by (ALLGOALS (fast_tac (ZF_cs addIs (rtrancl_into_trancl1::prems)))); -val trancl_induct = result(); +qed "trancl_induct"; (*elimination of r^+ -- NOT an induction rule*) val major::prems = goal Trancl.thy @@ -175,13 +175,13 @@ by (rtac (rewrite_rule [trancl_def] major RS compEpair) 1); by (etac rtranclE 1); by (ALLGOALS (fast_tac (ZF_cs addIs [rtrancl_into_trancl1]))); -val tranclE = result(); +qed "tranclE"; goalw Trancl.thy [trancl_def] "r^+ <= field(r)*field(r)"; by (fast_tac (ZF_cs addEs [compE, rtrancl_type RS subsetD RS SigmaE2]) 1); -val trancl_type = result(); +qed "trancl_type"; val [prem] = goalw Trancl.thy [trancl_def] "r<=s ==> r^+ <= s^+"; by (REPEAT (resolve_tac [prem, comp_mono, rtrancl_mono] 1)); -val trancl_mono = result(); +qed "trancl_mono";