diff -r 8f51702e1f2e -r 52730e5ec8cb Nominal/Ex/SFT/Theorem.thy --- a/Nominal/Ex/SFT/Theorem.thy Wed May 23 23:57:27 2012 +0100 +++ b/Nominal/Ex/SFT/Theorem.thy Thu May 24 10:17:32 2012 +0200 @@ -1,15 +1,15 @@ -header {* The main lemma about Num and the Second Fixed Point Theorem *} +header {* The main lemma about NUM and the Second Fixed Point Theorem *} theory Theorem imports Consts begin -lemmas [simp] = b3[OF bI] b1 b4 b5 supp_Num[unfolded Num_def supp_ltgt] Num_def lam.fresh[unfolded fresh_def] fresh_def b6 +lemmas [simp] = b3[OF bI] b1 b4 b5 supp_NUM[unfolded NUM_def supp_ltgt] NUM_def lam.fresh[unfolded fresh_def] fresh_def b6 lemmas app = Ltgt1_app -lemma Num: - shows "Num \ \M\ \ \\M\\" +lemma NUM: + shows "NUM \ \M\ \ \\M\\" proof (induct M rule: lam.induct) case (Var n) - have "Num \ \Var n\ = Num \ (VAR \ Var n)" by simp + have "NUM \ \Var n\ = NUM \ (VAR \ Var n)" by simp also have "... = \[\[A1,A2,A3]\]\ \ (VAR \ Var n)" by simp also have "... \ VAR \ Var n \ \[A1,A2,A3]\" using app . also have "... \ \[A1,A2,A3]\ \ Umn 2 2 \ Var n \ \[A1,A2,A3]\" using VAR_app . @@ -17,50 +17,50 @@ also have "... \ F1 \ Var n" using A_app(1) . also have "... \ APP \ \VAR\ \ (VAR \ Var n)" using F_app(1) . also have "... = \\Var n\\" by simp - finally show "Num \ \Var n\ \ \\Var n\\". + finally show "NUM \ \Var n\ \ \\Var n\\". next case (App M N) - assume IH: "Num \ \M\ \ \\M\\" "Num \ \N\ \ \\N\\" - have "Num \ \M \ N\ = Num \ (APP \ \M\ \ \N\)" by simp + assume IH: "NUM \ \M\ \ \\M\\" "NUM \ \N\ \ \\N\\" + have "NUM \ \M \ N\ = NUM \ (APP \ \M\ \ \N\)" by simp also have "... = \[\[A1,A2,A3]\]\ \ (APP \ \M\ \ \N\)" by simp also have "... \ APP \ \M\ \ \N\ \ \[A1,A2,A3]\" using app . also have "... \ \[A1,A2,A3]\ \ Umn 2 1 \ \M\ \ \N\ \ \[A1,A2,A3]\" using APP_app . also have "... \ A2 \ \M\ \ \N\ \ \[A1,A2,A3]\" using U_app by simp - also have "... \ F2 \ \M\ \ \N\ \ Num" using A_app(2) by simp - also have "... \ APP \ (APP \ \APP\ \ (Num \ \M\)) \ (Num \ \N\)" using F_app(2) . - also have "... \ APP \ (APP \ \APP\ \ (\\M\\)) \ (Num \ \N\)" using IH by simp + also have "... \ F2 \ \M\ \ \N\ \ NUM" using A_app(2) by simp + also have "... \ APP \ (APP \ \APP\ \ (NUM \ \M\)) \ (NUM \ \N\)" using F_app(2) . + also have "... \ APP \ (APP \ \APP\ \ (\\M\\)) \ (NUM \ \N\)" using IH by simp also have "... \ \\M \ N\\" using IH by simp - finally show "Num \ \M \ N\ \ \\M \ N\\". + finally show "NUM \ \M \ N\ \ \\M \ N\\". next case (Lam x P) - assume IH: "Num \ \P\ \ \\P\\" - have "Num \ \\ x. P\ = Num \ (Abs \ \ x. \P\)" by simp + assume IH: "NUM \ \P\ \ \\P\\" + have "NUM \ \\ x. P\ = NUM \ (Abs \ \ x. \P\)" by simp also have "... = \[\[A1,A2,A3]\]\ \ (Abs \ \ x. \P\)" by simp also have "... \ Abs \ (\ x. \P\) \ \[A1,A2,A3]\" using app . also have "... \ \[A1,A2,A3]\ \ Umn 2 0 \ (\ x. \P\) \ \[A1,A2,A3]\" using Abs_app . also have "... \ A3 \ (\ x. \P\) \ \[A1,A2,A3]\" using U_app by simp also have "... \ F3 \ (\ x. \P\) \ \[\[A1,A2,A3]\]\" using A_app(3) . - also have "... = F3 \ (\ x. \P\) \ Num" by simp - also have "... \ APP \ \Abs\ \ (Abs \ \ x. (Num \ ((\ x. \P\) \ Var x)))" by (rule F3_app) simp_all - also have "... \ APP \ \Abs\ \ (Abs \ \ x. (Num \ \P\))" using beta_app by simp + also have "... = F3 \ (\ x. \P\) \ NUM" by simp + also have "... \ APP \ \Abs\ \ (Abs \ \ x. (NUM \ ((\ x. \P\) \ Var x)))" by (rule F3_app) simp_all + also have "... \ APP \ \Abs\ \ (Abs \ \ x. (NUM \ \P\))" using beta_app by simp also have "... \ APP \ \Abs\ \ (Abs \ \ x. \\P\\)" using IH by simp also have "... = \\\ x. P\\" by simp - finally show "Num \ \\ x. P\ \ \\\ x. P\\" . + finally show "NUM \ \\ x. P\ \ \\\ x. P\\" . qed -lemmas [simp] = Ap Num -lemmas [simp del] = fresh_def Num_def +lemmas [simp] = Ap NUM +lemmas [simp del] = fresh_def NUM_def theorem SFP: fixes F :: lam shows "\X. X \ F \ \X\" proof - obtain x :: name where [simp]:"atom x \ F" using obtain_fresh by blast - def W \ "\x. (F \ (APP \ Var x \ (Num \ Var x)))" + def W \ "\x. (F \ (APP \ Var x \ (NUM \ Var x)))" def X \ "W \ \W\" have a: "X = W \ \W\" unfolding X_def .. - also have "... = (\x. (F \ (APP \ Var x \ (Num \ Var x)))) \ \W\" unfolding W_def .. - also have "... \ F \ (APP \ \W\ \ (Num \ \W\))" by simp + also have "... = (\x. (F \ (APP \ Var x \ (NUM \ Var x)))) \ \W\" unfolding W_def .. + also have "... \ F \ (APP \ \W\ \ (NUM \ \W\))" by simp also have "... \ F \ (APP \ \W\ \ \\W\\)" by simp also have "... \ F \ \W \ \W\\" by simp also have "... = F \ \X\" unfolding X_def ..