11 (rew_ord':rew_ord',erls,ca) |
11 (rew_ord':rew_ord',erls,ca) |
12 | rew_info (Seq {erls,rew_ord=(rew_ord',_),calc=ca, ...}) = |
12 | rew_info (Seq {erls,rew_ord=(rew_ord',_),calc=ca, ...}) = |
13 (rew_ord',erls,ca) |
13 (rew_ord',erls,ca) |
14 | rew_info (Rrls {erls,rew_ord=(rew_ord',_),calc=ca, ...}) = |
14 | rew_info (Rrls {erls,rew_ord=(rew_ord',_),calc=ca, ...}) = |
15 (rew_ord',erls, ca) |
15 (rew_ord',erls, ca) |
16 | rew_info rls = raise error ("rew_info called with '"^rls2str rls^"'"); |
16 | rew_info rls = error ("rew_info called with '"^rls2str rls^"'"); |
17 |
17 |
18 (*FIXME.3.4.03:re-organize from_pblobj_or_detail_thm after rls' --> rls*) |
18 (*FIXME.3.4.03:re-organize from_pblobj_or_detail_thm after rls' --> rls*) |
19 fun from_pblobj_or_detail_thm thm' p pt = |
19 fun from_pblobj_or_detail_thm thm' p pt = |
20 let val (pbl,p',rls') = par_pbl_det pt p |
20 let val (pbl,p',rls') = par_pbl_det pt p |
21 in if pbl |
21 in if pbl |
105 then [pred] |
105 then [pred] |
106 else (map fst) (get_assumptions_ pt (p,Res)) |
106 else (map fst) (get_assumptions_ pt (p,Res)) |
107 in (bdv, pred) end |
107 in (bdv, pred) end |
108 |
108 |
109 | mk_set thy _ _ l _ = |
109 | mk_set thy _ _ l _ = |
110 raise error ("check_elementwise: no set "^ |
110 error ("check_elementwise: no set "^ |
111 (Syntax.string_of_term (thy2ctxt thy) l)); |
111 (Syntax.string_of_term (thy2ctxt thy) l)); |
112 (*> val consts = str2term "[x=#4]"; |
112 (*> val consts = str2term "[x=#4]"; |
113 > val pred = str2term "Assumptions"; |
113 > val pred = str2term "Assumptions"; |
114 > val pt = union_asm pt p |
114 > val pt = union_asm pt p |
115 [("#0 <= sqrt x + sqrt (#5 + x)",[11]),("#0 <= #9 + #4 * x",[22]), |
115 [("#0 <= sqrt x + sqrt (#5 + x)",[11]),("#0 <= #9 + #4 * x",[22]), |
371 val {rew_ord'=ro',erls=erls,...} = |
371 val {rew_ord'=ro',erls=erls,...} = |
372 get_met (get_obj g_metID pt pp); |
372 get_met (get_obj g_metID pt pp); |
373 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
373 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
374 Frm => (get_obj g_form pt p, p) |
374 Frm => (get_obj g_form pt p, p) |
375 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
375 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
376 | _ => raise error ("applicable_in: call by "^ |
376 | _ => error ("applicable_in: call by "^ |
377 (pos'2str (p,p_))); |
377 (pos'2str (p,p_))); |
378 in |
378 in |
379 let val subst = subs2subst thy subs; |
379 let val subst = subs2subst thy subs; |
380 val subs' = subst2subs' subst; |
380 val subs' = subst2subs' subst; |
381 in case rewrite_inst_ thy (assoc_rew_ord ro') erls |
381 in case rewrite_inst_ thy (assoc_rew_ord ro') erls |
398 let val (msg,thy',ro,rls',(*put_asm*)_)= from_pblobj_or_detail_thm thm' p pt; |
398 let val (msg,thy',ro,rls',(*put_asm*)_)= from_pblobj_or_detail_thm thm' p pt; |
399 val thy = assoc_thy thy'; |
399 val thy = assoc_thy thy'; |
400 val f = case p_ of |
400 val f = case p_ of |
401 Frm => get_obj g_form pt p |
401 Frm => get_obj g_form pt p |
402 | Res => (fst o (get_obj g_result pt)) p |
402 | Res => (fst o (get_obj g_result pt)) p |
403 | _ => raise error ("applicable_in Rewrite: call by "^ |
403 | _ => error ("applicable_in Rewrite: call by "^ |
404 (pos'2str (p,p_))); |
404 (pos'2str (p,p_))); |
405 in if msg = "OK" |
405 in if msg = "OK" |
406 then |
406 then |
407 ((*tracing("### applicable_in rls'= "^rls');*) |
407 ((*tracing("### applicable_in rls'= "^rls');*) |
408 (* val SOME (f',asm)=rewrite thy' ro (id_rls rls') put_asm thm' f; |
408 (* val SOME (f',asm)=rewrite thy' ro (id_rls rls') put_asm thm' f; |
427 get_met (get_obj g_metID pt pp); |
427 get_met (get_obj g_metID pt pp); |
428 (*val put_asm = true;*) |
428 (*val put_asm = true;*) |
429 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
429 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
430 Frm => (get_obj g_form pt p, p) |
430 Frm => (get_obj g_form pt p, p) |
431 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
431 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
432 | _ => raise error ("applicable_in: call by "^ |
432 | _ => error ("applicable_in: call by "^ |
433 (pos'2str (p,p_))); |
433 (pos'2str (p,p_))); |
434 in case rewrite_ thy (assoc_rew_ord ro') erls |
434 in case rewrite_ thy (assoc_rew_ord ro') erls |
435 (*put_asm*)false (assoc_thm' thy thm') f of |
435 (*put_asm*)false (assoc_thm' thy thm') f of |
436 SOME (f',asm) => Appl ( |
436 SOME (f',asm) => Appl ( |
437 Rewrite' (thy',ro',erls,(*put_asm*)false,thm', f, (f', asm))) |
437 Rewrite' (thy',ro',erls,(*put_asm*)false,thm', f, (f', asm))) |
446 val thy' = (get_obj g_domID pt pp):theory'; |
446 val thy' = (get_obj g_domID pt pp):theory'; |
447 val thy = assoc_thy thy'; |
447 val thy = assoc_thy thy'; |
448 val {rew_ord'=ro',...} = get_met (get_obj g_metID pt pp); |
448 val {rew_ord'=ro',...} = get_met (get_obj g_metID pt pp); |
449 val f = case p_ of Frm => get_obj g_form pt p |
449 val f = case p_ of Frm => get_obj g_form pt p |
450 | Res => (fst o (get_obj g_result pt)) p |
450 | Res => (fst o (get_obj g_result pt)) p |
451 | _ => raise error ("applicable_in: call by "^ |
451 | _ => error ("applicable_in: call by "^ |
452 (pos'2str (p,p_))); |
452 (pos'2str (p,p_))); |
453 in |
453 in |
454 let val subst = subs2subst thy subs |
454 let val subst = subs2subst thy subs |
455 val subs' = subst2subs' subst |
455 val subs' = subst2subs' subst |
456 in case rewrite_set_inst_ thy false subst (assoc_rls rls) f of |
456 in case rewrite_set_inst_ thy false subst (assoc_rls rls) f of |
470 val {rew_ord'=ro',(*asm_rls=asm_rls,*)...} = |
470 val {rew_ord'=ro',(*asm_rls=asm_rls,*)...} = |
471 get_met (get_obj g_metID pt pp); |
471 get_met (get_obj g_metID pt pp); |
472 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
472 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
473 Frm => (get_obj g_form pt p, p) |
473 Frm => (get_obj g_form pt p, p) |
474 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
474 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
475 | _ => raise error ("applicable_in: call by "^ |
475 | _ => error ("applicable_in: call by "^ |
476 (pos'2str (p,p_))); |
476 (pos'2str (p,p_))); |
477 in |
477 in |
478 let val subst = subs2subst thy subs; |
478 let val subst = subs2subst thy subs; |
479 val subs' = subst2subs' subst; |
479 val subs' = subst2subs' subst; |
480 in case rewrite_set_inst_ thy (*put_asm*)false subst (assoc_rls rls) f of |
480 in case rewrite_set_inst_ thy (*put_asm*)false subst (assoc_rls rls) f of |
491 val pp = par_pblobj pt p; |
491 val pp = par_pblobj pt p; |
492 val thy' = (get_obj g_domID pt pp):theory'; |
492 val thy' = (get_obj g_domID pt pp):theory'; |
493 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
493 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
494 Frm => (get_obj g_form pt p, p) |
494 Frm => (get_obj g_form pt p, p) |
495 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
495 | Res => ((fst o (get_obj g_result pt)) p, lev_on p) |
496 | _ => raise error ("applicable_in: call by "^ |
496 | _ => error ("applicable_in: call by "^ |
497 (pos'2str (p,p_))); |
497 (pos'2str (p,p_))); |
498 in case rewrite_set_ (assoc_thy thy') false (assoc_rls rls) f of |
498 in case rewrite_set_ (assoc_thy thy') false (assoc_rls rls) f of |
499 SOME (f',asm) => |
499 SOME (f',asm) => |
500 ((*tracing("#.# applicable_in Rewrite_Set,2f'= "^f');*) |
500 ((*tracing("#.# applicable_in Rewrite_Set,2f'= "^f');*) |
501 Appl (Rewrite_Set' (thy',(*put_asm*)false,assoc_rls rls, f, (f', asm))) |
501 Appl (Rewrite_Set' (thy',(*put_asm*)false,assoc_rls rls, f, (f', asm))) |
509 let val pp = par_pblobj pt p |
509 let val pp = par_pblobj pt p |
510 val thy' = (get_obj g_domID pt pp):theory' |
510 val thy' = (get_obj g_domID pt pp):theory' |
511 val f = case p_ of |
511 val f = case p_ of |
512 Frm => get_obj g_form pt p |
512 Frm => get_obj g_form pt p |
513 | Res => (fst o (get_obj g_result pt)) p |
513 | Res => (fst o (get_obj g_result pt)) p |
514 | _ => raise error ("applicable_in: call by "^ |
514 | _ => error ("applicable_in: call by "^ |
515 (pos'2str (p,p_))); |
515 (pos'2str (p,p_))); |
516 in case rewrite_set_ (assoc_thy thy') false (assoc_rls rls) f of |
516 in case rewrite_set_ (assoc_thy thy') false (assoc_rls rls) f of |
517 SOME (f',asm) => |
517 SOME (f',asm) => |
518 Appl (Detail_Set' (thy',false,assoc_rls rls, f, (f',asm))) |
518 Appl (Detail_Set' (thy',false,assoc_rls rls, f, (f',asm))) |
519 | NONE => Notappl (rls^" not applicable") end |
519 | NONE => Notappl (rls^" not applicable") end |
520 |
520 |
521 |
521 |
522 | applicable_in p pt (End_Ruleset) = |
522 | applicable_in p pt (End_Ruleset) = |
523 raise error ("applicable_in: not impl. for "^ |
523 error ("applicable_in: not impl. for "^ |
524 (tac2str End_Ruleset)) |
524 (tac2str End_Ruleset)) |
525 |
525 |
526 (* val ((p,p_), pt, (m as Calculate op_)) = (p, pt, m); |
526 (* val ((p,p_), pt, (m as Calculate op_)) = (p, pt, m); |
527 *) |
527 *) |
528 | applicable_in (p,p_) pt (m as Calculate op_) = |
528 | applicable_in (p,p_) pt (m as Calculate op_) = |
585 | NONE => Notappl (sube2str sube^" not applicable") |
585 | NONE => Notappl (sube2str sube^" not applicable") |
586 end |
586 end |
587 ------------------*) |
587 ------------------*) |
588 |
588 |
589 | applicable_in p pt (Apply_Assumption cts') = |
589 | applicable_in p pt (Apply_Assumption cts') = |
590 (raise error ("applicable_in: not impl. for "^ |
590 (error ("applicable_in: not impl. for "^ |
591 (tac2str (Apply_Assumption cts')))) |
591 (tac2str (Apply_Assumption cts')))) |
592 |
592 |
593 (*'logical' applicability wrt. script in locate: Inconsistent?*) |
593 (*'logical' applicability wrt. script in locate: Inconsistent?*) |
594 | applicable_in (p,p_) pt (m as Take ct') = |
594 | applicable_in (p,p_) pt (m as Take ct') = |
595 if member op = [Pbl,Met] p_ |
595 if member op = [Pbl,Met] p_ |
600 SOME ct => Appl (Take' (term_of ct)) |
600 SOME ct => Appl (Take' (term_of ct)) |
601 | NONE => Notappl ("syntax error in "^ct')) |
601 | NONE => Notappl ("syntax error in "^ct')) |
602 end |
602 end |
603 |
603 |
604 | applicable_in p pt (Take_Inst ct') = |
604 | applicable_in p pt (Take_Inst ct') = |
605 raise error ("applicable_in: not impl. for "^ |
605 error ("applicable_in: not impl. for "^ |
606 (tac2str (Take_Inst ct'))) |
606 (tac2str (Take_Inst ct'))) |
607 |
607 |
608 | applicable_in p pt (Group (con, ints)) = |
608 | applicable_in p pt (Group (con, ints)) = |
609 raise error ("applicable_in: not impl. for "^ |
609 error ("applicable_in: not impl. for "^ |
610 (tac2str (Group (con, ints)))) |
610 (tac2str (Group (con, ints)))) |
611 |
611 |
612 | applicable_in (p,p_) pt (m as Subproblem (domID, pblID)) = |
612 | applicable_in (p,p_) pt (m as Subproblem (domID, pblID)) = |
613 if member op = [Pbl,Met] p_ |
613 if member op = [Pbl,Met] p_ |
614 then (*maybe Apply_Method has already been done*) |
614 then (*maybe Apply_Method has already been done*) |
619 else (*somewhere later in the script*) |
619 else (*somewhere later in the script*) |
620 Appl (Subproblem' ((domID, pblID, e_metID), [], |
620 Appl (Subproblem' ((domID, pblID, e_metID), [], |
621 e_term, [], subpbl domID pblID)) |
621 e_term, [], subpbl domID pblID)) |
622 |
622 |
623 | applicable_in p pt (End_Subproblem) = |
623 | applicable_in p pt (End_Subproblem) = |
624 raise error ("applicable_in: not impl. for "^ |
624 error ("applicable_in: not impl. for "^ |
625 (tac2str (End_Subproblem))) |
625 (tac2str (End_Subproblem))) |
626 |
626 |
627 | applicable_in p pt (CAScmd ct') = |
627 | applicable_in p pt (CAScmd ct') = |
628 raise error ("applicable_in: not impl. for "^ |
628 error ("applicable_in: not impl. for "^ |
629 (tac2str (CAScmd ct'))) |
629 (tac2str (CAScmd ct'))) |
630 |
630 |
631 | applicable_in p pt (Split_And) = |
631 | applicable_in p pt (Split_And) = |
632 raise error ("applicable_in: not impl. for "^ |
632 error ("applicable_in: not impl. for "^ |
633 (tac2str (Split_And))) |
633 (tac2str (Split_And))) |
634 | applicable_in p pt (Conclude_And) = |
634 | applicable_in p pt (Conclude_And) = |
635 raise error ("applicable_in: not impl. for "^ |
635 error ("applicable_in: not impl. for "^ |
636 (tac2str (Conclude_And))) |
636 (tac2str (Conclude_And))) |
637 | applicable_in p pt (Split_Or) = |
637 | applicable_in p pt (Split_Or) = |
638 raise error ("applicable_in: not impl. for "^ |
638 error ("applicable_in: not impl. for "^ |
639 (tac2str (Split_Or))) |
639 (tac2str (Split_Or))) |
640 | applicable_in p pt (Conclude_Or) = |
640 | applicable_in p pt (Conclude_Or) = |
641 raise error ("applicable_in: not impl. for "^ |
641 error ("applicable_in: not impl. for "^ |
642 (tac2str (Conclude_Or))) |
642 (tac2str (Conclude_Or))) |
643 |
643 |
644 | applicable_in (p,p_) pt (Begin_Trans) = |
644 | applicable_in (p,p_) pt (Begin_Trans) = |
645 let |
645 let |
646 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
646 val (f,p) = case p_ of (*p 12.4.00 unnecessary*) |
647 (*_____ implizit Take in gen*) |
647 (*_____ implizit Take in gen*) |
648 Frm => (get_obj g_form pt p, (lev_on o lev_dn) p) |
648 Frm => (get_obj g_form pt p, (lev_on o lev_dn) p) |
649 | Res => ((fst o (get_obj g_result pt)) p, (lev_on o lev_dn o lev_on) p) |
649 | Res => ((fst o (get_obj g_result pt)) p, (lev_on o lev_dn o lev_on) p) |
650 | _ => raise error ("applicable_in: call by "^ |
650 | _ => error ("applicable_in: call by "^ |
651 (pos'2str (p,p_))); |
651 (pos'2str (p,p_))); |
652 val thy' = get_obj g_domID pt (par_pblobj pt p); |
652 val thy' = get_obj g_domID pt (par_pblobj pt p); |
653 in (Appl (Begin_Trans' f)) |
653 in (Appl (Begin_Trans' f)) |
654 handle _ => raise error ("applicable_in: Begin_Trans finds \ |
654 handle _ => error ("applicable_in: Begin_Trans finds \ |
655 \syntaxerror in '"^(term2str f)^"'") end |
655 \syntaxerror in '"^(term2str f)^"'") end |
656 |
656 |
657 (*TODO: check parent branches*) |
657 (*TODO: check parent branches*) |
658 | applicable_in (p,p_) pt (End_Trans) = |
658 | applicable_in (p,p_) pt (End_Trans) = |
659 let val thy' = get_obj g_domID pt (par_pblobj pt p); |
659 let val thy' = get_obj g_domID pt (par_pblobj pt p); |
663 \the beginning of a transitive sequence" |
663 \the beginning of a transitive sequence" |
664 (*TODO: check parent branches*) |
664 (*TODO: check parent branches*) |
665 end |
665 end |
666 |
666 |
667 | applicable_in p pt (Begin_Sequ) = |
667 | applicable_in p pt (Begin_Sequ) = |
668 raise error ("applicable_in: not impl. for "^ |
668 error ("applicable_in: not impl. for "^ |
669 (tac2str (Begin_Sequ))) |
669 (tac2str (Begin_Sequ))) |
670 | applicable_in p pt (End_Sequ) = |
670 | applicable_in p pt (End_Sequ) = |
671 raise error ("applicable_in: not impl. for "^ |
671 error ("applicable_in: not impl. for "^ |
672 (tac2str (End_Sequ))) |
672 (tac2str (End_Sequ))) |
673 | applicable_in p pt (Split_Intersect) = |
673 | applicable_in p pt (Split_Intersect) = |
674 raise error ("applicable_in: not impl. for "^ |
674 error ("applicable_in: not impl. for "^ |
675 (tac2str (Split_Intersect))) |
675 (tac2str (Split_Intersect))) |
676 | applicable_in p pt (End_Intersect) = |
676 | applicable_in p pt (End_Intersect) = |
677 raise error ("applicable_in: not impl. for "^ |
677 error ("applicable_in: not impl. for "^ |
678 (tac2str (End_Intersect))) |
678 (tac2str (End_Intersect))) |
679 (* val Appl (Check_elementwse'(t1,"Assumptions",t2)) = it; |
679 (* val Appl (Check_elementwse'(t1,"Assumptions",t2)) = it; |
680 val (vvv,ppp) = vp; |
680 val (vvv,ppp) = vp; |
681 |
681 |
682 val Check_elementwise pred = m; |
682 val Check_elementwise pred = m; |
769 | _ => Appl (Tac_ (thy, term2str f, id, term2str f)) end |
769 | _ => Appl (Tac_ (thy, term2str f, id, term2str f)) end |
770 |
770 |
771 | applicable_in p pt End_Proof' = Appl End_Proof'' |
771 | applicable_in p pt End_Proof' = Appl End_Proof'' |
772 |
772 |
773 | applicable_in _ _ m = |
773 | applicable_in _ _ m = |
774 raise error ("applicable_in called for "^(tac2str m)); |
774 error ("applicable_in called for "^(tac2str m)); |
775 |
775 |
776 (*WN060614 unused*) |
776 (*WN060614 unused*) |
777 fun tac2tac_ pt p m = |
777 fun tac2tac_ pt p m = |
778 case applicable_in p pt m of |
778 case applicable_in p pt m of |
779 Appl (m') => m' |
779 Appl (m') => m' |
780 | Notappl _ => raise error ("tac2mstp': fails with"^ |
780 | Notappl _ => error ("tac2mstp': fails with"^ |
781 (tac2str m)); |
781 (tac2str m)); |
782 |
782 |