equal
deleted
inserted
replaced
36 |
36 |
37 |
37 |
38 (*--------------------------------------------------------------------------- |
38 (*--------------------------------------------------------------------------- |
39 * The non-nested TC plus the wellfoundedness of unifyRel. |
39 * The non-nested TC plus the wellfoundedness of unifyRel. |
40 *---------------------------------------------------------------------------*) |
40 *---------------------------------------------------------------------------*) |
41 Tfl.tgoalw Unify.thy [] unify.rules; |
41 Tfl.tgoalw Unify.thy [] unify.simps; |
42 (* Wellfoundedness of unifyRel *) |
42 (* Wellfoundedness of unifyRel *) |
43 by (simp_tac (simpset() addsimps [unifyRel_def, |
43 by (simp_tac (simpset() addsimps [unifyRel_def, |
44 wf_inv_image, wf_lex_prod, wf_finite_psubset, |
44 wf_inv_image, wf_lex_prod, wf_finite_psubset, |
45 wf_measure]) 1); |
45 wf_measure]) 1); |
46 (* TC *) |
46 (* TC *) |
127 * Eliminate tc0 from the recursion equations and the induction theorem. |
127 * Eliminate tc0 from the recursion equations and the induction theorem. |
128 *---------------------------------------------------------------------------*) |
128 *---------------------------------------------------------------------------*) |
129 val wfr = tc0 RS conjunct1 |
129 val wfr = tc0 RS conjunct1 |
130 and tc = tc0 RS conjunct2; |
130 and tc = tc0 RS conjunct2; |
131 val unifyRules0 = map (normalize_thm [fn th => wfr RS th, fn th => tc RS th]) |
131 val unifyRules0 = map (normalize_thm [fn th => wfr RS th, fn th => tc RS th]) |
132 unify.rules; |
132 unify.simps; |
133 |
133 |
134 val unifyInduct0 = [wfr,tc] MRS unify.induct; |
134 val unifyInduct0 = [wfr,tc] MRS unify.induct; |
135 |
135 |
136 |
136 |
137 (*--------------------------------------------------------------------------- |
137 (*--------------------------------------------------------------------------- |
168 by (Blast_tac 1); |
168 by (Blast_tac 1); |
169 qed_spec_mp "unify_TC"; |
169 qed_spec_mp "unify_TC"; |
170 |
170 |
171 |
171 |
172 (*--------------------------------------------------------------------------- |
172 (*--------------------------------------------------------------------------- |
173 * Now for elimination of nested TC from unify.rules and induction. |
173 * Now for elimination of nested TC from unify.simps and induction. |
174 *---------------------------------------------------------------------------*) |
174 *---------------------------------------------------------------------------*) |
175 |
175 |
176 (*Desired rule, copied from the theory file. Could it be made available?*) |
176 (*Desired rule, copied from the theory file. Could it be made available?*) |
177 Goal "unify(Comb M1 N1, Comb M2 N2) = \ |
177 Goal "unify(Comb M1 N1, Comb M2 N2) = \ |
178 \ (case unify(M1,M2) \ |
178 \ (case unify(M1,M2) \ |