diff -r ffb5a181844b -r 8268b277d240 Nominal/Ex/Foo1.thy --- a/Nominal/Ex/Foo1.thy Tue Dec 28 00:20:50 2010 +0000 +++ b/Nominal/Ex/Foo1.thy Tue Dec 28 19:51:25 2010 +0000 @@ -44,6 +44,7 @@ thm foo.induct thm foo.inducts thm foo.exhaust +thm foo.strong_induct thm foo.strong_exhaust thm foo.fv_defs thm foo.bn_defs @@ -57,32 +58,6 @@ thm foo.fresh thm foo.bn_finite -lemma - fixes t::trm - and as::assg - and as'::assg' - and c::"'a::fs" - assumes a1: "\x c. P1 c (Var x)" - and a2: "\t1 t2 c. \\d. P1 d t1; \d. P1 d t2\ \ P1 c (App t1 t2)" - and a3: "\x t c. \{atom x} \* c; \d. P1 d t\ \ P1 c (Lam x t)" - and a4: "\as t c. \set (bn1 as) \* c; \d. P2 d as; \d. P1 d t\ \ P1 c (Let1 as t)" - and a5: "\as t c. \set (bn2 as) \* c; \d. P2 d as; \d. P1 d t\ \ P1 c (Let2 as t)" - and a6: "\as t c. \set (bn3 as) \* c; \d. P2 d as; \d. P1 d t\ \ P1 c (Let3 as t)" - and a7: "\as' t c. \(bn4 as') \* c; \d. P3 d as'; \d. P1 d t\ \ P1 c (Let4 as' t)" - and a8: "\x y t c. \d. P1 d t \ P2 c (As x y t)" - and a9: "\c. P3 c (BNil)" - and a10: "\c a as. \d. P3 d as \ P3 c (BAs a as)" - shows "P1 c t" "P2 c as" "P3 c as'" -apply(raw_tactic {* Induction_Schema.induction_schema_tac @{context} @{thms assms} *}) -apply(rule_tac y="t" and c="c" in foo.strong_exhaust(1)) -apply(simp_all)[7] -apply(rule_tac ya="as"in foo.strong_exhaust(2)) -apply(simp_all)[1] -apply(rule_tac yb="as'" in foo.strong_exhaust(3)) -apply(simp_all)[2] -apply(relation "measure (sum_case (size o snd) (sum_case (size o snd) (size o snd)))") -apply(simp_all add: foo.size) -done end