diff -r 4b03e3586f7f -r 31781b2de73d src/HOL/Nominal/Examples/Crary.thy --- a/src/HOL/Nominal/Examples/Crary.thy Thu Jun 14 22:59:42 2007 +0200 +++ b/src/HOL/Nominal/Examples/Crary.thy Thu Jun 14 23:04:36 2007 +0200 @@ -168,7 +168,7 @@ using assms proof (nominal_induct t avoiding: x u \ rule: trm.induct) case (Lam y t x u) - have fs: "y\\" "y\x" "y\u" by fact + have fs: "y\\" "y\x" "y\u" by fact+ moreover have "x\ Lam [y].t" by fact ultimately have "x\t" by (simp add: abs_fresh fresh_atm) moreover have ih:"\n T. n\t \ ((n,T)#\) = \" by fact @@ -244,7 +244,7 @@ ultimately show ?case by auto next case (Lam n t x u \) - have fs:"n\x" "n\u" "n\\" "x\\" by fact + have fs:"n\x" "n\u" "n\\" "x\\" by fact+ have ih:"\ y s \. y\\ \ ((\<(t[y::=s])>) = ((\)[y::=(\)]))" by fact have "\ <(Lam [n].t)[x::=u]> = \" using fs by auto then have "\ <(Lam [n].t)[x::=u]> = Lam [n]. \" using fs by auto @@ -436,7 +436,7 @@ using assms proof (induct arbitrary: b) case (QAN_Reduce x t a b) - have h:"x \ t" "t \ a" by fact + have h:"x \ t" "t \ a" by fact+ have ih:"\b. t \ b \ a = b" by fact have "x \ b" by fact then obtain t' where "x \ t'" and hl:"t' \ b" using h by auto @@ -519,14 +519,14 @@ case (QAP_Var \ x T u T') have "\ \ Var x \ u : T'" by fact then have "u=Var x" and "(x,T') \ set \" by auto - moreover have "valid \" "(x,T) \ set \" by fact + moreover have "valid \" "(x,T) \ set \" by fact+ ultimately show "T=T'" using type_unicity_in_context by auto next case (QAP_App \ p q T\<^isub>1 T\<^isub>2 s t u T\<^isub>2') - have ih:"\u T. \ \ p \ u : T \ T\<^isub>1\T\<^isub>2 = T" by fact + have ih: "\u T. \ \ p \ u : T \ T\<^isub>1\T\<^isub>2 = T" by fact have "\ \ App p s \ u : T\<^isub>2'" by fact then obtain r t T\<^isub>1' where "u = App r t" "\ \ p \ r : T\<^isub>1' \ T\<^isub>2'" by auto - then have "T\<^isub>1\T\<^isub>2 = T\<^isub>1' \ T\<^isub>2'" by auto + with ih have "T\<^isub>1\T\<^isub>2 = T\<^isub>1' \ T\<^isub>2'" by auto then show "T\<^isub>2=T\<^isub>2'" using ty.inject by auto qed (auto) @@ -559,7 +559,7 @@ case (QAT_Arrow x \ s t T\<^isub>1 T\<^isub>2 u) have ih:"(x,T\<^isub>1)#\ \ App t (Var x) \ App u (Var x) : T\<^isub>2 \ (x,T\<^isub>1)#\ \ App s (Var x) \ App u (Var x) : T\<^isub>2" by fact - have fs: "x\\" "x\s" "x\t" "x\u" by fact + have fs: "x\\" "x\s" "x\t" "x\u" by fact+ have "\ \ t \ u : T\<^isub>1\T\<^isub>2" by fact then have "(x,T\<^isub>1)#\ \ App t (Var x) \ App u (Var x) : T\<^isub>2" using fs by (simp add: Q_Arrow_strong_inversion) @@ -592,7 +592,7 @@ and "\ \ s \ t : T \ \ \ \' \ valid \' \ \' \ s \ t : T" proof (nominal_induct \ s t T and \ s t T avoiding: \' rule: alg_equiv_alg_path_equiv.strong_inducts) case (QAT_Arrow x \ s t T\<^isub>1 T\<^isub>2 \') - have fs:"x\\" "x\s" "x\t" "x\\'"by fact + have fs:"x\\" "x\s" "x\t" "x\\'"by fact+ have h2:"\ \ \'" by fact have ih:"\\'. \(x,T\<^isub>1)#\ \ \'; valid \'\ \ \' \ App s (Var x) \ App t (Var x) : T\<^isub>2" by fact have "valid \'" by fact @@ -640,8 +640,8 @@ next case (3 \ s t T\<^isub>1 T\<^isub>2 \') have "\ \ s is t : T\<^isub>1\T\<^isub>2" - and "\ \ \'" - and "valid \'" by fact + and "\ \ \'" + and "valid \'" by fact+ then show "\' \ s is t : T\<^isub>1\T\<^isub>2" by simp qed (auto) @@ -797,7 +797,7 @@ moreover { assume "(y,U) \ set [(x,T)]" - then have "\' \ (x,s)#\ is (x,t)#\' : U" by auto + with h2 have "\' \ (x,s)#\ is (x,t)#\' : U" by auto } moreover { @@ -821,7 +821,7 @@ using h1 h2 h3 proof (nominal_induct \ t T avoiding: \' \ \' rule: typing.strong_induct) case (t_Lam x \ T\<^isub>1 t\<^isub>2 T\<^isub>2 \' \ \') - have fs:"x\\" "x\\'" "x\\" by fact + have fs:"x\\" "x\\'" "x\\" by fact+ have h:"\' \ \ is \' over \" by fact have ih:"\ \' \ \'. \\' \ \ is \' over (x,T\<^isub>1)#\; valid \'\ \ \' \ \2> is \'2> : T\<^isub>2" by fact { @@ -848,14 +848,14 @@ proof (nominal_induct \ s t T avoiding: \' \ \' rule: def_equiv.strong_induct) case (Q_Refl \ t T \' \ \') have "\ \ t : T" - and "valid \'" by fact + and "valid \'" by fact+ moreover have "\' \ \ is \' over \" by fact ultimately show "\' \ \ is \' : T" using fundamental_theorem_1 by blast next case (Q_Symm \ t s T \' \ \') have "\' \ \ is \' over \" - and "valid \'" by fact + and "valid \'" by fact+ moreover have ih: "\ \' \ \'. \\' \ \ is \' over \; valid \'\ \ \' \ \ is \' : T" by fact ultimately show "\' \ \ is \' : T" using logical_symmetry by blast @@ -864,7 +864,7 @@ have ih1: "\ \' \ \'. \\' \ \ is \' over \; valid \'\ \ \' \ \ is \' : T" by fact have ih2: "\ \' \ \'. \\' \ \ is \' over \; valid \'\ \ \' \ \ is \' : T" by fact have h: "\' \ \ is \' over \" - and v: "valid \'" by fact + and v: "valid \'" by fact+ then have "\' \ \' is \' over \" using logical_pseudo_reflexivity by auto then have "\' \ \' is \' : T" using ih2 v by auto moreover have "\' \ \ is \' : T" using ih1 h v by auto @@ -872,9 +872,9 @@ next case (Q_Abs x \ T\<^isub>1 s\<^isub>2 t\<^isub>2 T\<^isub>2 \' \ \') have fs:"x\\" by fact - have fs2: "x\\" "x\\'" by fact + have fs2: "x\\" "x\\'" by fact+ have h2: "\' \ \ is \' over \" - and h3: "valid \'" by fact + and h3: "valid \'" by fact+ have ih:"\\' \ \'. \\' \ \ is \' over (x,T\<^isub>1)#\; valid \'\ \ \' \ \2> is \'2> : T\<^isub>2" by fact { fix \'' s' t' @@ -888,7 +888,7 @@ ultimately have "\'' \ App (Lam [x]. \2>) s' is App (Lam [x].\'2>) t' : T\<^isub>2" using logical_weak_head_closure by auto } - moreover have "valid \'" using h2 by auto + moreover have "valid \'" using h3 by auto ultimately have "\' \ Lam [x].\2> is Lam [x].\'2> : T\<^isub>1\T\<^isub>2" by auto then show "\' \ \2> is \'2> : T\<^isub>1\T\<^isub>2" using fs2 by auto next @@ -897,9 +897,9 @@ next case (Q_Beta x \ s\<^isub>2 t\<^isub>2 T\<^isub>1 s12 t12 T\<^isub>2 \' \ \') have h: "\' \ \ is \' over \" - and h': "valid \'" by fact + and h': "valid \'" by fact+ have fs: "x\\" by fact - have fs2: " x\\" "x\\'" by fact + have fs2: " x\\" "x\\'" by fact+ have ih1: "\\' \ \'. \\' \ \ is \' over \; valid \'\ \ \' \ \2> is \'2> : T\<^isub>1" by fact have ih2: "\\' \ \'. \\' \ \ is \' over (x,T\<^isub>1)#\; valid \'\ \ \' \ \ is \' : T\<^isub>2" by fact have "\' \ \2> is \'2> : T\<^isub>1" using ih1 h' h by auto @@ -914,8 +914,8 @@ next case (Q_Ext x \ s t T\<^isub>1 T\<^isub>2 \' \ \') have h2: "\' \ \ is \' over \" - and h2': "valid \'" by fact - have fs:"x\\" "x\s" "x\t" by fact + and h2': "valid \'" by fact+ + have fs:"x\\" "x\s" "x\t" by fact+ have ih:"\\' \ \'. \\' \ \ is \' over (x,T\<^isub>1)#\; valid \'\ \ \' \ \ is \' : T\<^isub>2" by fact { @@ -930,7 +930,7 @@ then have "\'' \ App ((x,s')#\) s' is App ((x,t')#\') t' : T\<^isub>2" by auto then have "\'' \ App (\) s' is App (\') t' : T\<^isub>2" using fs fresh_psubst_simp by auto } - moreover have "valid \'" using h2 by auto + moreover have "valid \'" using h2' by auto ultimately show "\' \ \ is \' : T\<^isub>1\T\<^isub>2" by auto next case (Q_Unit \ s t \' \ \')