diff -r 16ffbc8442ca -r ffb5a181844b Nominal/Ex/Multi_Recs2.thy --- a/Nominal/Ex/Multi_Recs2.thy Sun Dec 26 16:35:16 2010 +0000 +++ b/Nominal/Ex/Multi_Recs2.thy Tue Dec 28 00:20:50 2010 +0000 @@ -84,6 +84,44 @@ 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} *}) +oops + +ML {* + val trm1 = @{prop "P1 &&& P2 &&& P3"} + val trm2 = @{prop "(P1 &&& P2) &&& P3 &&& P4"} +*} + +ML {* + Logic.dest_conjunction_list trm1; + Logic.dest_conjunction_list trm2 +*} + +ML {* + Logic.dest_conjunctions trm1; + Logic.dest_conjunctions trm2 +*} + + end