equal
deleted
inserted
replaced
85 |
85 |
86 val pred_sexp_trans1 = pred_sexp_t1 RSN (2, trans_trancl RS transD) |
86 val pred_sexp_trans1 = pred_sexp_t1 RSN (2, trans_trancl RS transD) |
87 and pred_sexp_trans2 = pred_sexp_t2 RSN (2, trans_trancl RS transD); |
87 and pred_sexp_trans2 = pred_sexp_t2 RSN (2, trans_trancl RS transD); |
88 |
88 |
89 (*Proves goals of the form (M,N):pred_sexp^+ provided M,N:sexp*) |
89 (*Proves goals of the form (M,N):pred_sexp^+ provided M,N:sexp*) |
90 val pred_sexp_simps = |
90 Addsimps (sexp.intrs @ [pred_sexp_t1, pred_sexp_t2, |
91 sexp.intrs @ |
91 pred_sexp_trans1, pred_sexp_trans2, cut_apply]); |
92 [pred_sexp_t1, pred_sexp_t2, |
|
93 pred_sexp_trans1, pred_sexp_trans2, cut_apply]; |
|
94 val pred_sexp_ss = HOL_ss addsimps pred_sexp_simps; |
|
95 |
92 |
96 val major::prems = goalw Sexp.thy [pred_sexp_def] |
93 val major::prems = goalw Sexp.thy [pred_sexp_def] |
97 "[| p : pred_sexp; \ |
94 "[| p : pred_sexp; \ |
98 \ !!M N. [| p = (M, M$N); M: sexp; N: sexp |] ==> R; \ |
95 \ !!M N. [| p = (M, M$N); M: sexp; N: sexp |] ==> R; \ |
99 \ !!M N. [| p = (N, M$N); M: sexp; N: sexp |] ==> R \ |
96 \ !!M N. [| p = (N, M$N); M: sexp; N: sexp |] ==> R \ |
128 qed "sexp_rec_Numb"; |
125 qed "sexp_rec_Numb"; |
129 |
126 |
130 goal Sexp.thy "!!M. [| M: sexp; N: sexp |] ==> \ |
127 goal Sexp.thy "!!M. [| M: sexp; N: sexp |] ==> \ |
131 \ sexp_rec (M$N) c d h = h M N (sexp_rec M c d h) (sexp_rec N c d h)"; |
128 \ sexp_rec (M$N) c d h = h M N (sexp_rec M c d h) (sexp_rec N c d h)"; |
132 by (rtac (sexp_rec_unfold RS trans) 1); |
129 by (rtac (sexp_rec_unfold RS trans) 1); |
133 by (asm_simp_tac(HOL_ss addsimps |
130 by (asm_simp_tac (!simpset addsimps [sexp_case_Scons,pred_sexpI1,pred_sexpI2]) |
134 [sexp_case_Scons,pred_sexpI1,pred_sexpI2,cut_apply])1); |
131 1); |
135 qed "sexp_rec_Scons"; |
132 qed "sexp_rec_Scons"; |