diff -r 693aecde755d -r 1fc2b6f6ea2a Quot/Examples/LamEx.thy --- a/Quot/Examples/LamEx.thy Fri Jan 15 15:56:06 2010 +0100 +++ b/Quot/Examples/LamEx.thy Fri Jan 15 15:56:25 2010 +0100 @@ -360,26 +360,49 @@ apply(simp add: var_supp1) done +(* lemma hom_reg: *) lemma hom: " -\f_lam \ Respects((op = ===> alpha) ===> op =). -\f_app \ Respects(alpha ===> alpha ===> op =). - \hom \ Respects(alpha ===> op =). ( + \hom\Respects (alpha ===> op =). ( (\x. hom (rVar x) = f_var x) \ (\l r. hom (rApp l r) = f_app l r (hom l) (hom r)) \ (\x a. hom (rLam a x) = f_lam (\b. ([(a,b)]\ x)) (\b. hom ([(a,b)] \ x))) )" sorry +lemma hom_reg:" +(\hom\Respects (alpha ===> op =). + (\x. hom (rVar x) = f_var x) \ + (\l r. hom (rApp l r) = f_app l r (hom l) (hom r)) \ + (\xa a. hom (rLam a xa) = f_lam (\b. [(a, b)] \ xa) (\b. hom ([(a, b)] \ xa)))) \ +(\hom. + (\x. hom (rVar x) = f_var x) \ + (\l r. hom (rApp l r) = f_app l r (hom l) (hom r)) \ + (\xa a. hom (rLam a xa) = f_lam (\b. [(a, b)] \ xa) (\b. hom ([(a, b)] \ xa))))" +by(regularize) + +thm impE[OF hom_reg] +lemma hom_pre:" +(\hom. + (\x. hom (rVar x) = f_var x) \ + (\l r. hom (rApp l r) = f_app l r (hom l) (hom r)) \ + (\xa a. hom (rLam a xa) = f_lam (\b. [(a, b)] \ xa) (\b. hom ([(a, b)] \ xa))))" +apply (rule impE[OF hom_reg]) +apply (rule hom) +apply (assumption) +done + lemma hom': -"\f_lam. \f_app. \hom. ( +"\hom. ( (\x. hom (Var x) = f_var x) \ (\l r. hom (App l r) = f_app l r (hom l) (hom r)) \ (\x a. hom (Lam a x) = f_lam (\b. ([(a,b)] \ x)) (\b. hom ([(a,b)] \ x))) )" -(*apply (lifting hom)*) -sorry +apply (lifting hom) +done -thm rlam.recs +thm bex_reg_eqv_range[OF identity_equivp, of "alpha"] + end +