diff -r 4b4742aa43f2 -r 11f6a561eb4b Nominal/Ex/Multi_Recs2.thy --- a/Nominal/Ex/Multi_Recs2.thy Sat Dec 17 17:03:01 2011 +0000 +++ b/Nominal/Ex/Multi_Recs2.thy Sat Dec 17 17:08:47 2011 +0000 @@ -83,44 +83,6 @@ thm fun_recs.fsupp thm fun_recs.supp -lemma - fixes c::"'a::fs" - assumes "\name c. P1 c (Var name)" - and "\c. P1 c Unit" - and "\exp1 exp2 c. \\c. P1 c exp1; \c. P1 c exp2\ \ P1 c (Multi_Recs2.Pair exp1 exp2)" - and "\lrbs exp c. \b_lrbs lrbs \* c; \c. P5 c lrbs; \c. P1 c exp\ \ P1 c (LetRec lrbs exp)" - and "\name pat exp c. \b_pat pat \* c; \c. P6 c pat; \c. P1 c exp\ \ P2 c (K name pat exp)" - and "\fnclause c. (\c. P2 c fnclause) \ P3 c (S fnclause)" - and "\fnclause fnclauses c. \\c. P2 c fnclause; \c. P3 c fnclauses\ \ - P3 c (ORs fnclause fnclauses)" - and "\fnclauses c. (\c. P3 c fnclauses) \ P4 c (Clause fnclauses)" - and "\lrb c. (\c. P4 c lrb) \ P5 c (Single lrb)" - and "\lrb lrbs c. \\c. P4 c lrb; \c. P5 c lrbs\ \ P5 c (More lrb lrbs)" - and "\name c. P6 c (PVar name)" - and "\c. P6 c PUnit" - and "\pat1 pat2 c. \\c. P6 c pat1; \c. P6 c pat2\ \ P6 c (PPair pat1 pat2)" - shows "P1 c exp" and "P2 c fnclause" and "P3 c fnclauses" and "P4 c lrb" and "P5 c lrbs" and "P6 c pat" - apply(raw_tactic {* Induction_Schema.induction_schema_tac @{context} @{thms assms} *}) - apply(rule_tac y="exp" and c="c" in fun_recs.strong_exhaust(1)) - apply(simp_all)[4] - apply(blast) - apply(rule_tac ya="fnclause" and c="c" in fun_recs.strong_exhaust(2)) - apply(blast) - apply(rule_tac yb="fnclauses" in fun_recs.strong_exhaust(3)) - apply(blast) - apply(blast) - apply(rule_tac yc="lrb" in fun_recs.strong_exhaust(4)) - apply(blast) - apply(rule_tac yd="lrbs" in fun_recs.strong_exhaust(5)) - apply(blast) - apply(blast) - apply(rule_tac ye="pat" in fun_recs.strong_exhaust(6)) - apply(blast) - apply(blast) - apply(blast) - apply(tactic {* prove_termination_ind @{context} 1 *}) - apply(simp_all add: fun_recs.size) - done end