diff -r 3c981d009fe5 -r 186ec672cc51 Nominal/Ex/CPS/CPS3_DanvyFilinski.thy --- a/Nominal/Ex/CPS/CPS3_DanvyFilinski.thy Tue Jun 21 10:39:25 2011 +0900 +++ b/Nominal/Ex/CPS/CPS3_DanvyFilinski.thy Tue Jun 21 23:59:36 2011 +0900 @@ -215,25 +215,32 @@ by lexicographic_order definition psi:: "lt => lt" - where "psi V == V*(\x. x)" + where [simp]: "psi V == V*(\x. x)" section {* Simple consequence of CPS *} +lemma [simp]: "eqvt (\x\lt. x)" + by (simp add: eqvt_def eqvt_bound eqvt_lambda) + lemma value_eq1 : "isValue V \ eqvt k \ V*k = k (psi V)" apply (cases V rule: lt.exhaust) - apply (auto simp add: psi_def) - apply (subst CPS1.simps) - apply (simp add: eqvt_def eqvt_bound eqvt_lambda) - apply rule + apply simp_all apply (rule_tac x="(name, lt)" and ?'a="name" in obtain_fresh) - apply (subst CPS1.simps(3)) - apply assumption+ - apply (subst CPS1.simps(3)) - apply (simp add: eqvt_def eqvt_bound eqvt_lambda) - apply assumption - apply rule + apply simp done +lemma value_eq2 : "isValue V \ V^K = K $ (psi V)" + apply (cases V rule: lt.exhaust) + apply simp_all + apply (rule_tac x="(name, lt)" and ?'a="name" in obtain_fresh) + apply simp + done + +lemma value_eq3' : "~isValue M \ eqvt k \ M*k = (M^(Abs n (k (Var n))))" + by (cases M rule: lt.exhaust) auto + + + end