equal
deleted
inserted
replaced
532 end; |
532 end; |
533 |
533 |
534 |
534 |
535 fun trancl_tac ctxt = SUBGOAL (fn (A, n) => fn st => |
535 fun trancl_tac ctxt = SUBGOAL (fn (A, n) => fn st => |
536 let |
536 let |
537 val thy = ProofContext.theory_of ctxt; |
537 val thy = Proof_Context.theory_of ctxt; |
538 val Hs = Logic.strip_assums_hyp A; |
538 val Hs = Logic.strip_assums_hyp A; |
539 val C = Logic.strip_assums_concl A; |
539 val C = Logic.strip_assums_concl A; |
540 val (rel, subgoals, prf) = mkconcl_trancl C; |
540 val (rel, subgoals, prf) = mkconcl_trancl C; |
541 |
541 |
542 val prems = flat (map_index (mkasm_trancl rel o swap) Hs); |
542 val prems = flat (map_index (mkasm_trancl rel o swap) Hs); |
551 handle Cannot => Seq.empty); |
551 handle Cannot => Seq.empty); |
552 |
552 |
553 |
553 |
554 fun rtrancl_tac ctxt = SUBGOAL (fn (A, n) => fn st => |
554 fun rtrancl_tac ctxt = SUBGOAL (fn (A, n) => fn st => |
555 let |
555 let |
556 val thy = ProofContext.theory_of ctxt; |
556 val thy = Proof_Context.theory_of ctxt; |
557 val Hs = Logic.strip_assums_hyp A; |
557 val Hs = Logic.strip_assums_hyp A; |
558 val C = Logic.strip_assums_concl A; |
558 val C = Logic.strip_assums_concl A; |
559 val (rel, subgoals, prf) = mkconcl_rtrancl C; |
559 val (rel, subgoals, prf) = mkconcl_rtrancl C; |
560 |
560 |
561 val prems = flat (map_index (mkasm_rtrancl rel o swap) Hs); |
561 val prems = flat (map_index (mkasm_rtrancl rel o swap) Hs); |