diff -r de6b601c8d3d -r 2eeb75cccb8d Nominal/Ex/TypeSchemes.thy --- a/Nominal/Ex/TypeSchemes.thy Wed Jun 15 22:36:59 2011 +0100 +++ b/Nominal/Ex/TypeSchemes.thy Thu Jun 16 11:03:01 2011 +0100 @@ -295,11 +295,11 @@ by (induct Ts T rule: lookup2.induct) simp_all nominal_primrec - subst :: "(name \ ty2) list \ ty2 \ ty2" + subst2 :: "(name \ ty2) list \ ty2 \ ty2" where - "subst \ (Var2 X) = lookup2 \ X" -| "subst \ (Fun2 T1 T2) = Fun2 (subst \ T1) (subst \ T2)" - unfolding eqvt_def subst_graph_def + "subst2 \ (Var2 X) = lookup2 \ X" +| "subst2 \ (Fun2 T1 T2) = Fun2 (subst2 \ T1) (subst2 \ T2)" + unfolding eqvt_def subst2_graph_def apply (rule, perm_simp, rule) apply(rule TrueI) apply(case_tac x) @@ -310,11 +310,11 @@ done termination - by (relation "measure (size o snd)") (simp_all add: ty2.size) + by lexicographic_order lemma subst_eqvt[eqvt]: - shows "(p \ subst \ T) = subst (p \ \) (p \ T)" - by (induct \ T rule: subst.induct) (simp_all add: lookup2_eqvt) + shows "(p \ subst2 \ T) = subst2 (p \ \) (p \ T)" + by (induct \ T rule: subst2.induct) (simp_all add: lookup2_eqvt) lemma supp_fun_app2_eqvt: assumes e: "eqvt f" @@ -323,7 +323,7 @@ by blast lemma supp_subst: - "supp (subst \ t) \ supp \ \ supp t" + "supp (subst2 \ t) \ supp \ \ supp t" apply (rule supp_fun_app2_eqvt) unfolding eqvt_def by (simp add: eqvts_raw) @@ -332,10 +332,10 @@ unfolding fresh_star_def by blast nominal_primrec - substs :: "(name \ ty2) list \ tys2 \ tys2" + substs2 :: "(name \ ty2) list \ tys2 \ tys2" where - "fset (map_fset atom xs) \* \ \ substs \ (All2 xs t) = All2 xs (subst \ t)" - unfolding eqvt_def substs_graph_def + "fset (map_fset atom xs) \* \ \ substs2 \ (All2 xs t) = All2 xs (subst2 \ t)" + unfolding eqvt_def substs2_graph_def apply (rule, perm_simp, rule) apply auto[2] apply (rule_tac y="b" and c="a" in tys2.strong_exhaust) @@ -354,7 +354,7 @@ apply (rule_tac x="0::perm" in exI) apply (subgoal_tac "p \ \' = \'") apply (simp add: alphas fresh_star_zero) - apply (subgoal_tac "\x. x \ supp (subst \' (p \ t)) \ x \ p \ atom ` fset xs \ x \ atom ` fset xsa") + apply (subgoal_tac "\x. x \ supp (subst2 \' (p \ t)) \ x \ p \ atom ` fset xs \ x \ atom ` fset xsa") apply blast apply (subgoal_tac "x \ supp(p \ \', p \ t)") apply (simp add: supp_Pair eqvts eqvts_raw)