void safety_verify_configt::convert(counterexamplest &counterexamples, const goto_tracet &trace) { counterexamples.push_back(counterexamplet()); counterexamplet &new_ce=counterexamples.back(); invariant_extract_counterexample(new_ce.x0, trace, program.x0_choices); counterexamplet::assignments_per_loopt &x=new_ce.x; // TODO: Implement for multiple loops (change constraint, instrumentation) x.push_back(counterexamplet::assignmentst()); counterexamplet::assignmentst &ass=x.back(); ass.clear(); invariant_extract_counterexample(ass, trace, quantifiers); const safety_programt &prog=program; const invariant_programt::const_invariant_loopst loops(prog.get_loops()); assert(!loops.empty()); // TODO: Implement for multiple loops (change constraint, instrumentation) invariant_extract_counterexample(ass, trace, loops.front()->skolem_choices); }
void danger_verify_configt::convert(counterexamplest &counterexamples, const goto_tracet &trace) { counterexamples.push_back(counterexamplet()); invariant_extract_counterexample(counterexamples.back(), trace, quantifiers); }