diff -r 605a0ebe87da -r 18310dff4e3a Quot/Nominal/LFex.thy --- a/Quot/Nominal/LFex.thy Wed Feb 24 12:06:55 2010 +0100 +++ b/Quot/Nominal/LFex.thy Wed Feb 24 14:09:34 2010 +0100 @@ -196,72 +196,49 @@ apply(simp_all only: kind_ty_trm_fs) done -lemma supp_rkind_rty_rtrm_easy: - "supp TYP = {}" - "supp (TCONST i) = {atom i}" - "supp (TAPP A M) = supp A \ supp M" - "supp (CONS i) = {atom i}" - "supp (VAR x) = {atom x}" - "supp (APP M N) = supp M \ supp N" -apply (simp_all add: supp_def permute_ktt) -apply (simp_all only: kind_ty_trm_INJECT) -apply (simp_all only: supp_at_base[simplified supp_def]) -apply (simp_all add: Collect_imp_eq Collect_neg_eq) -done +lemma supp_eqs: + "supp TYP = {}" + "supp rkind = fv_kind rkind \ supp (KPI rty name rkind) = supp rty \ supp (Abs {atom name} rkind)" + "supp (TCONST i) = {atom i}" + "supp (TAPP A M) = supp A \ supp M" + "supp rty2 = fv_ty rty2 \ supp (TPI rty1 name rty2) = supp rty1 \ supp (Abs {atom name} rty2)" + "supp (CONS i) = {atom i}" + "supp (VAR x) = {atom x}" + "supp (APP M N) = supp M \ supp N" + "supp rtrm = fv_trm rtrm \ supp (LAM rty name rtrm) = supp rty \ supp (Abs {atom name} rtrm)" + apply(simp_all (no_asm) add: supp_def) + apply(simp_all only: kind_ty_trm_INJECT Abs_eq_iff alpha_gen) + apply(simp_all only: insert_eqvt empty_eqvt atom_eqvt supp_eqvt[symmetric] fv_eqvt[symmetric]) + apply(simp_all add: Collect_imp_eq Collect_neg_eq[symmetric] Set.Un_commute) + apply(simp_all add: supp_at_base[simplified supp_def]) + done lemma supp_fv: - "supp t1 = fv_kind t1" - "supp t2 = fv_ty t2" - "supp t3 = fv_trm t3" -apply(induct t1 and t2 and t3 rule: kind_ty_trm_inducts) -apply (simp_all add: supp_rkind_rty_rtrm_easy) -apply (simp_all add: fv_kind_ty_trm) -apply(subgoal_tac "supp (KPI rty name rkind) = supp rty \ supp (Abs {atom name} rkind)") -apply(simp only: supp_Abs) -apply(simp (no_asm) add: supp_def) -apply(simp add: kind_ty_trm_INJECT) -apply(simp add: Abs_eq_iff) -apply(simp add: alpha_gen) -apply(simp add: Collect_imp_eq Collect_neg_eq Set.Un_commute insert_eqvt empty_eqvt atom_eqvt) -apply(simp add: supp_eqvt[symmetric] fv_eqvt[symmetric]) -apply(subgoal_tac "supp (TPI rty1 name rty2) = supp rty1 \ supp (Abs {atom name} rty2)") -apply(simp add: supp_Abs) -apply(simp (no_asm) add: supp_def) -apply(simp add: kind_ty_trm_INJECT) -apply(simp add: Abs_eq_iff) -apply(simp add: alpha_gen) -apply(simp add: supp_eqvt[symmetric] fv_eqvt[symmetric] insert_eqvt empty_eqvt atom_eqvt) -apply(simp add: Collect_imp_eq Collect_neg_eq Set.Un_commute) -apply(subgoal_tac "supp (LAM rty name rtrm) = supp rty \ supp (Abs {atom name} rtrm)") -apply(simp add: supp_Abs) -apply(simp (no_asm) add: supp_def) -apply(simp add: kind_ty_trm_INJECT) -apply(simp add: Abs_eq_iff) -apply(simp add: alpha_gen) -apply(simp add: supp_eqvt[symmetric] fv_eqvt[symmetric] insert_eqvt empty_eqvt atom_eqvt) -apply(simp add: Collect_imp_eq Collect_neg_eq Set.Un_commute) -done - -(* Not needed anymore *) -lemma supp_kpi: "supp (KPI rty name rkind) = supp rty \ supp (Abs {atom name} rkind)" -apply (simp add: permute_set_eq supp_def Abs_eq_iff kind_ty_trm_INJECT) -apply (simp add: alpha_gen supp_fv) -apply (simp add: Collect_imp_eq Collect_neg_eq add: atom_eqvt Set.Un_commute) -done + "supp t1 = fv_kind t1" + "supp t2 = fv_ty t2" + "supp t3 = fv_trm t3" + apply(induct t1 and t2 and t3 rule: kind_ty_trm_inducts) + apply(simp_all (no_asm) only: supp_eqs fv_kind_ty_trm) + apply(simp_all) + apply(subst supp_eqs) + apply(simp_all add: supp_Abs) + apply(subst supp_eqs) + apply(simp_all add: supp_Abs) + apply(subst supp_eqs) + apply(simp_all add: supp_Abs) + done lemma supp_rkind_rty_rtrm: - "supp TYP = {}" - "supp (KPI A x K) = supp A \ (supp K - {atom x})" - "supp (TCONST i) = {atom i}" - "supp (TAPP A M) = supp A \ supp M" - "supp (TPI A x B) = supp A \ (supp B - {atom x})" - "supp (CONS i) = {atom i}" - "supp (VAR x) = {atom x}" - "supp (APP M N) = supp M \ supp N" - "supp (LAM A x M) = supp A \ (supp M - {atom x})" -apply (simp_all only: supp_rkind_rty_rtrm_easy) -apply (simp_all only: supp_fv fv_kind_ty_trm) -done + "supp TYP = {}" + "supp (KPI A x K) = supp A \ (supp K - {atom x})" + "supp (TCONST i) = {atom i}" + "supp (TAPP A M) = supp A \ supp M" + "supp (TPI A x B) = supp A \ (supp B - {atom x})" + "supp (CONS i) = {atom i}" + "supp (VAR x) = {atom x}" + "supp (APP M N) = supp M \ supp N" + "supp (LAM A x M) = supp A \ (supp M - {atom x})" + by (simp_all only: supp_fv fv_kind_ty_trm) end