# HG changeset patch # User Cezary Kaliszyk # Date 1269512994 -3600 # Node ID bde8da26093edbd199b4887c463979efef3c7008 # Parent 0e705352bcef61afcf37a991bfcdb8fbf24ad5ea One more copy-and-paste in core-haskell. diff -r 0e705352bcef -r bde8da26093e Nominal/ExCoreHaskell.thy --- a/Nominal/ExCoreHaskell.thy Thu Mar 25 11:16:25 2010 +0100 +++ b/Nominal/ExCoreHaskell.thy Thu Mar 25 11:29:54 2010 +0100 @@ -242,7 +242,7 @@ P4 (d :: 'd :: pt) ty_lst \ P5 (e :: 'e :: {pt,fs}) co \ P6 (f :: 'f :: pt) co_lst \ - P7 (g :: 'g :: pt) trm \ + P7 (g :: 'g :: {pt,fs}) trm \ P8 (h :: 'h :: {pt,fs}) assoc_lst \ P9 (i :: 'i :: pt) pat \ P10 (j :: 'j :: pt) vt_lst \ @@ -334,6 +334,47 @@ apply (simp only: supp_Abs eqvts) apply blast + +(* GOAL3 a copy-and-paste of Goal2 with consts and variable names changed *) + apply(subgoal_tac "\pa. ((pa \ (atom (p \ tvar))) \ g \ + supp (Abs (p \ {atom tvar}) (p \ trm)) \* pa)") + apply clarify + apply (simp only: perm) + apply(rule_tac t="LAMT (p \ tvar) (p \ tkind) (p \ trm)" + and s="LAMT (pa \ p \ tvar) (p \ tkind) (pa \ p \ trm)" in subst) + apply (simp only: eq_iff) + apply (rule_tac x="-pa" in exI) + apply (simp add: alphas eqvts eqvts_raw supp_Abs fv_supp) + apply (rule_tac t="supp (pa \ p \ trm) - {atom (pa \ p \ tvar)}" + and s="pa \ (p \ supp trm - {p \ atom tvar})" in subst) + apply (simp add: eqvts) + apply (simp add: eqvts[symmetric]) + apply (rule conjI) + apply (rule supp_perm_eq) + apply (simp add: eqvts) + apply (subst supp_finite_atom_set) + apply (simp add: eqvts[symmetric] finite_eqvt[symmetric] finite_supp) + apply (simp add: eqvts) + apply (simp add: eqvts) + apply (subst supp_perm_eq) + apply (subst supp_finite_atom_set) + apply (simp add: eqvts[symmetric] finite_eqvt[symmetric] finite_supp) + apply (simp add: eqvts) + apply assumption + apply (simp add: fresh_star_minus_perm) + apply (rule a29) + apply simp + apply(rotate_tac 1) + apply(erule_tac x="(pa + p)" in allE) + apply simp + apply (simp add: eqvts eqvts_raw) + apply (rule at_set_avoiding2_atom) + apply (simp add: finite_supp) + apply (simp add: finite_supp) + apply (simp add: fresh_def) + apply (simp only: supp_Abs eqvts) + apply blast + prefer 5 (* using a38*) apply(subgoal_tac "\pa. ((pa \ (bv (p \ pat))) \* h \