diff -r 58eaa7fbf0e8 -r c55aa6cb1518 Nominal/Ex/Lambda.thy --- a/Nominal/Ex/Lambda.thy Wed Jun 01 11:01:39 2011 +0900 +++ b/Nominal/Ex/Lambda.thy Wed Jun 01 13:35:37 2011 +0900 @@ -541,19 +541,6 @@ nominal_primrec map_term :: "(lam \ lam) \ lam \ lam" where - "map_term f (Var x) = f (Var x)" -| "map_term f (App t1 t2) = App (f t1) (f t2)" -| "map_term f (Lam [x].t) = Lam [x].(f t)" -unfolding eqvt_def map_term_graph_def -apply (rule, perm_simp, rule) -apply (case_tac x, case_tac b rule: lam.exhaust) -apply auto -(*apply (erule Abs1_eq_fdest)*) -oops - -nominal_primrec - map_term :: "(lam \ lam) \ lam \ lam" -where "eqvt f \ map_term f (Var x) = f (Var x)" | "eqvt f \ map_term f (App t1 t2) = App (f t1) (f t2)" | "eqvt f \ map_term f (Lam [x].t) = Lam [x].(f t)" @@ -615,6 +602,17 @@ | "CPS (App M N) k = CPS M (\m. CPS N (\n. n))" oops +(* Problem: nominal_primrec generates non-quantified free variable "x" *) +consts b :: name +nominal_primrec + Z :: "lam \ (lam \ lam) \ lam" +where + "Z (App M N) k = Z M (%m. (Z N (%n.(App m n))))" +unfolding eqvt_def Z_graph_def +apply (rule, perm_simp, rule) +prefer 2 +ML_prf {* prop_of (hd (#prems (fst (Subgoal.focus @{context} 1 (#goal (Isar.goal ())))))) *} +oops (* function tests *)