src/Provers/quasi.ML
changeset 58839 ccda99401bc8
parent 43278 1fbdcebb364b
child 59498 50b60f501b05
equal deleted inserted replaced
58838:59203adfc33f 58839:ccda99401bc8
   563 
   563 
   564   val (subgoal, prf) = mkconcl_trans thy C;
   564   val (subgoal, prf) = mkconcl_trans thy C;
   565  in
   565  in
   566   Subgoal.FOCUS (fn {prems, ...} =>
   566   Subgoal.FOCUS (fn {prems, ...} =>
   567     let val thms = map (prove prems) prfs
   567     let val thms = map (prove prems) prfs
   568     in rtac (prove thms prf) 1 end) ctxt n st
   568     in resolve_tac [prove thms prf] 1 end) ctxt n st
   569  end
   569  end
   570  handle Contr p => Subgoal.FOCUS (fn {prems, ...} => rtac (prove prems p) 1) ctxt n st
   570  handle Contr p => Subgoal.FOCUS (fn {prems, ...} => resolve_tac [prove prems p] 1) ctxt n st
   571   | Cannot  => Seq.empty);
   571   | Cannot  => Seq.empty);
   572 
   572 
   573 
   573 
   574 (* quasi_tac - solves quasi orders *)
   574 (* quasi_tac - solves quasi orders *)
   575 
   575 
   583   val prfs = solveQuasiOrder thy (lesss, C);
   583   val prfs = solveQuasiOrder thy (lesss, C);
   584   val (subgoals, prf) = mkconcl_quasi thy C;
   584   val (subgoals, prf) = mkconcl_quasi thy C;
   585  in
   585  in
   586   Subgoal.FOCUS (fn {prems, ...} =>
   586   Subgoal.FOCUS (fn {prems, ...} =>
   587     let val thms = map (prove prems) prfs
   587     let val thms = map (prove prems) prfs
   588     in rtac (prove thms prf) 1 end) ctxt n st
   588     in resolve_tac [prove thms prf] 1 end) ctxt n st
   589  end
   589  end
   590  handle Contr p =>
   590  handle Contr p =>
   591     (Subgoal.FOCUS (fn {prems, ...} => rtac (prove prems p) 1) ctxt n st
   591     (Subgoal.FOCUS (fn {prems, ...} => resolve_tac [prove prems p] 1) ctxt n st
   592       handle General.Subscript => Seq.empty)
   592       handle General.Subscript => Seq.empty)
   593   | Cannot => Seq.empty
   593   | Cannot => Seq.empty
   594   | General.Subscript => Seq.empty);
   594   | General.Subscript => Seq.empty);
   595 
   595 
   596 end;
   596 end;