# HG changeset patch # User Cezary Kaliszyk # Date 1267002534 -3600 # Node ID ca3c69545a7819fb239ba599c30894349d6b63c9 # Parent 2daa5549579ede0873f198879d0c2a6c38f91eef LF renaming part 2 (proper fv functions) diff -r 2daa5549579e -r ca3c69545a78 Quot/Nominal/LFex.thy --- a/Quot/Nominal/LFex.thy Wed Feb 24 09:58:44 2010 +0100 +++ b/Quot/Nominal/LFex.thy Wed Feb 24 10:08:54 2010 +0100 @@ -92,19 +92,19 @@ *) primrec - rfv_rkind :: "rkind \ atom set" -and rfv_rty :: "rty \ atom set" -and rfv_rtrm :: "rtrm \ atom set" + fv_rkind :: "rkind \ atom set" +and fv_rty :: "rty \ atom set" +and fv_rtrm :: "rtrm \ atom set" where - "rfv_rkind (Type) = {}" -| "rfv_rkind (KPi A x K) = (rfv_rty A) \ ((rfv_rkind K) - {atom x})" -| "rfv_rty (TConst i) = {atom i}" -| "rfv_rty (TApp A M) = (rfv_rty A) \ (rfv_rtrm M)" -| "rfv_rty (TPi A x B) = (rfv_rty A) \ ((rfv_rty B) - {atom x})" -| "rfv_rtrm (Const i) = {atom i}" -| "rfv_rtrm (Var x) = {atom x}" -| "rfv_rtrm (App M N) = (rfv_rtrm M) \ (rfv_rtrm N)" -| "rfv_rtrm (Lam A x M) = (rfv_rty A) \ ((rfv_rtrm M) - {atom x})" + "fv_rkind (Type) = {}" +| "fv_rkind (KPi A x K) = (fv_rty A) \ ((fv_rkind K) - {atom x})" +| "fv_rty (TConst i) = {atom i}" +| "fv_rty (TApp A M) = (fv_rty A) \ (fv_rtrm M)" +| "fv_rty (TPi A x B) = (fv_rty A) \ ((fv_rty B) - {atom x})" +| "fv_rtrm (Const i) = {atom i}" +| "fv_rtrm (Var x) = {atom x}" +| "fv_rtrm (App M N) = (fv_rtrm M) \ (fv_rtrm N)" +| "fv_rtrm (Lam A x M) = (fv_rty A) \ ((fv_rtrm M) - {atom x})" inductive arkind :: "rkind \ rkind \ bool" ("_ \ki _" [100, 100] 100) @@ -112,25 +112,25 @@ and artrm :: "rtrm \ rtrm \ bool" ("_ \tr _" [100, 100] 100) where a1: "(Type) \ki (Type)" -| a2: "\A \rty A'; \pi. (({atom a}, K) \gen arkind rfv_rkind pi ({atom b}, K'))\ \ (KPi A a K) \ki (KPi A' b K')" +| a2: "\A \rty A'; \pi. (({atom a}, K) \gen arkind fv_rkind pi ({atom b}, K'))\ \ (KPi A a K) \ki (KPi A' b K')" | a3: "i = j \ (TConst i) \rty (TConst j)" | a4: "\A \rty A'; M \tr M'\ \ (TApp A M) \rty (TApp A' M')" -| a5: "\A \rty A'; \pi. (({atom a}, B) \gen arty rfv_rty pi ({atom b}, B'))\ \ (TPi A a B) \rty (TPi A' b B')" +| a5: "\A \rty A'; \pi. (({atom a}, B) \gen arty fv_rty pi ({atom b}, B'))\ \ (TPi A a B) \rty (TPi A' b B')" | a6: "i = j \ (Const i) \tr (Const j)" | a7: "x = y \ (Var x) \tr (Var y)" | a8: "\M \tr M'; N \tr N'\ \ (App M N) \tr (App M' N')" -| a9: "\A \rty A'; \pi. (({atom a}, M) \gen artrm rfv_rtrm pi ({atom b}, M'))\ \ (Lam A a M) \tr (Lam A' b M')" +| a9: "\A \rty A'; \pi. (({atom a}, M) \gen artrm fv_rtrm pi ({atom b}, M'))\ \ (Lam A a M) \tr (Lam A' b M')" lemma arkind_arty_artrm_inj: "(Type) \ki (Type) = True" - "((KPi A a K) \ki (KPi A' b K')) = ((A \rty A') \ (\pi. ({atom a}, K) \gen arkind rfv_rkind pi ({atom b}, K')))" + "((KPi A a K) \ki (KPi A' b K')) = ((A \rty A') \ (\pi. ({atom a}, K) \gen arkind fv_rkind pi ({atom b}, K')))" "(TConst i) \rty (TConst j) = (i = j)" "(TApp A M) \rty (TApp A' M') = (A \rty A' \ M \tr M')" - "((TPi A a B) \rty (TPi A' b B')) = ((A \rty A') \ (\pi. (({atom a}, B) \gen arty rfv_rty pi ({atom b}, B'))))" + "((TPi A a B) \rty (TPi A' b B')) = ((A \rty A') \ (\pi. (({atom a}, B) \gen arty fv_rty pi ({atom b}, B'))))" "(Const i) \tr (Const j) = (i = j)" "(Var x) \tr (Var y) = (x = y)" "(App M N) \tr (App M' N') = (M \tr M' \ N \tr N')" - "((Lam A a M) \tr (Lam A' b M')) = ((A \rty A') \ (\pi. (({atom a}, M) \gen artrm rfv_rtrm pi ({atom b}, M'))))" + "((Lam A a M) \tr (Lam A' b M')) = ((A \rty A') \ (\pi. (({atom a}, M) \gen artrm fv_rtrm pi ({atom b}, M'))))" apply - apply (simp add: arkind_arty_artrm.intros) @@ -160,9 +160,9 @@ done lemma rfv_eqvt[eqvt]: - "((pi\rfv_rkind t1) = rfv_rkind (pi\t1))" - "((pi\rfv_rty t2) = rfv_rty (pi\t2))" - "((pi\rfv_rtrm t3) = rfv_rtrm (pi\t3))" + "((pi\fv_rkind t1) = fv_rkind (pi\t1))" + "((pi\fv_rty t2) = fv_rty (pi\t2))" + "((pi\fv_rtrm t3) = fv_rtrm (pi\t3))" apply(induct t1 and t2 and t3 rule: rkind_rty_rtrm.inducts) apply(simp_all add: union_eqvt Diff_eqvt) apply(simp_all add: permute_set_eq atom_eqvt) @@ -331,24 +331,24 @@ (* FIXME: print out a warning if the type contains a liftet type, like rkind \ name set *) quotient_definition - "fv_rkind :: RKIND \ atom set" + "fv_kind :: RKIND \ atom set" is - "rfv_rkind" + "fv_rkind" quotient_definition - "fv_rty :: RTY \ atom set" + "fv_ty :: RTY \ atom set" is - "rfv_rty" + "fv_rty" quotient_definition - "fv_rtrm :: RTRM \ atom set" + "fv_trm :: RTRM \ atom set" is - "rfv_rtrm" + "fv_rtrm" lemma alpha_rfv: - shows "(t \ki s \ rfv_rkind t = rfv_rkind s) \ - (t1 \rty s1 \ rfv_rty t1 = rfv_rty s1) \ - (t2 \tr s2 \ rfv_rtrm t2 = rfv_rtrm s2)" + shows "(t \ki s \ fv_rkind t = fv_rkind s) \ + (t1 \rty s1 \ fv_rty t1 = fv_rty s1) \ + (t2 \tr s2 \ fv_rtrm t2 = fv_rtrm s2)" apply(rule arkind_arty_artrm.induct) apply(simp_all add: alpha_gen) done @@ -398,14 +398,14 @@ apply (simp add: fresh_star_def fresh_zero_perm alpha_rfv alpha_gen) done -lemma rfv_rty_rsp[quot_respect]: - "(arty ===> op =) rfv_rty rfv_rty" +lemma fv_rty_rsp[quot_respect]: + "(arty ===> op =) fv_rty fv_rty" by (simp add: alpha_rfv) -lemma rfv_rkind_rsp[quot_respect]: - "(arkind ===> op =) rfv_rkind rfv_rkind" +lemma fv_rkind_rsp[quot_respect]: + "(arkind ===> op =) fv_rkind fv_rkind" by (simp add: alpha_rfv) -lemma rfv_rtrm_rsp[quot_respect]: - "(artrm ===> op =) rfv_rtrm rfv_rtrm" +lemma fv_rtrm_rsp[quot_respect]: + "(artrm ===> op =) fv_rtrm fv_rtrm" by (simp add: alpha_rfv) thm rkind_rty_rtrm.induct @@ -458,7 +458,7 @@ lemmas RKIND_RTY_RTRM_INJECT = arkind_arty_artrm_inj[unfolded alpha_gen, quot_lifted, folded alpha_gen] -lemmas fv_rkind_rty_rtrm = rfv_rkind_rfv_rty_rfv_rtrm.simps[quot_lifted] +lemmas fv_kind_ty_trm = fv_rkind_fv_rty_fv_rtrm.simps[quot_lifted] lemmas fv_eqvt = rfv_eqvt[quot_lifted] @@ -515,12 +515,12 @@ done lemma supp_fv: - "supp t1 = fv_rkind t1" - "supp t2 = fv_rty t2" - "supp t3 = fv_rtrm t3" + "supp t1 = fv_kind t1" + "supp t2 = fv_ty t2" + "supp t3 = fv_trm t3" apply(induct t1 and t2 and t3 rule: RKIND_RTY_RTRM_inducts) apply (simp_all add: supp_rkind_rty_rtrm_easy) -apply (simp_all add: fv_rkind_rty_rtrm) +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 add: supp_Abs Set.Un_commute) apply(simp (no_asm) add: supp_def) @@ -565,7 +565,7 @@ "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_rkind_rty_rtrm) +apply (simp_all only: supp_fv fv_kind_ty_trm) done end