src/Provers/trancl.ML
changeset 42361 23f352990944
parent 37744 3daaf23b9ab4
child 42364 8c674b3b8e44
equal deleted inserted replaced
42360:da8817d01e7c 42361:23f352990944
   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);