tried to witness the hom-lemma with the recursion combinator from rlam....does not work yet completely
authorChristian Urban <urbanc@in.tum.de>
Fri, 15 Jan 2010 16:13:49 +0100
changeset 894 1d80641a4302
parent 893 1fc2b6f6ea2a
child 895 92c43c96027e
tried to witness the hom-lemma with the recursion combinator from rlam....does not work yet completely
Quot/Examples/LamEx.thy
--- a/Quot/Examples/LamEx.thy	Fri Jan 15 15:56:25 2010 +0100
+++ b/Quot/Examples/LamEx.thy	Fri Jan 15 16:13:49 2010 +0100
@@ -362,12 +362,17 @@
 
 (* lemma hom_reg: *)
 
-lemma hom: "
-  \<exists>hom\<in>Respects (alpha ===> op =). (
-    (\<forall>x. hom (rVar x) = f_var x) \<and>
-    (\<forall>l r. hom (rApp l r) = f_app l r (hom l) (hom r)) \<and>
-    (\<forall>x a. hom (rLam a x) = f_lam (\<lambda>b. ([(a,b)]\<bullet> x)) (\<lambda>b. hom ([(a,b)] \<bullet> x)))
-  )"
+lemma hom: 
+  "\<exists>hom\<in>Respects (alpha ===> op =). 
+    ((\<forall>x. hom (rVar x) = f_var x) \<and>
+     (\<forall>l r. hom (rApp l r) = f_app l r (hom l) (hom r)) \<and>
+     (\<forall>x a. hom (rLam a x) = f_lam (\<lambda>b. ([(a,b)]\<bullet> x)) (\<lambda>b. hom ([(a,b)] \<bullet> x))))"
+apply(rule_tac x="rlam_rec f_var f_app XX" in bexI)
+apply(rule conjI)
+apply(simp)
+apply(rule conjI)
+apply(simp)
+apply(simp)
 sorry
 
 lemma hom_reg:"
@@ -381,7 +386,6 @@
  (\<forall>xa a. hom (rLam a xa) = f_lam (\<lambda>b. [(a, b)] \<bullet> xa) (\<lambda>b. hom ([(a, b)] \<bullet> xa))))"
 by(regularize)
 
-thm impE[OF hom_reg]
 lemma hom_pre:"
 (\<exists>hom.
  (\<forall>x. hom (rVar x) = f_var x) \<and>
@@ -393,11 +397,10 @@
 done
 
 lemma hom':
-"\<exists>hom. (
-    (\<forall>x. hom (Var x) = f_var x) \<and>
-    (\<forall>l r. hom (App l r) = f_app l r (hom l) (hom r)) \<and>
-    (\<forall>x a. hom (Lam a x) = f_lam (\<lambda>b. ([(a,b)] \<bullet> x)) (\<lambda>b. hom ([(a,b)] \<bullet> x)))
-  )"
+"\<exists>hom. 
+  ((\<forall>x. hom (Var x) = f_var x) \<and>
+   (\<forall>l r. hom (App l r) = f_app l r (hom l) (hom r)) \<and>
+   (\<forall>x a. hom (Lam a x) = f_lam (\<lambda>b. ([(a,b)] \<bullet> x)) (\<lambda>b. hom ([(a,b)] \<bullet> x))))"
 apply (lifting hom)
 done