@@ -220,7 +220,11 @@ bool is_subsumed(
220220 return true ; // b is subsumed by a conjunct in a
221221
222222 cout_message_handlert message_handler;
223+ #if 0
223224 message_handler.set_verbosity(verbose ? 10 : 1);
225+ #else
226+ message_handler.set_verbosity (1 );
227+ #endif
224228 satcheckt satcheck (message_handler);
225229 bv_pointers_widet solver (ns, satcheck, message_handler);
226230 axiomst axioms (solver, address_taken, verbose, ns);
@@ -295,7 +299,7 @@ void solver(
295299 take_time_resourcet stop_time (property.stop );
296300
297301 if (solver_options.verbose )
298- std::cout << " \n Doing " << format (property.condition ) << ' \n ' ;
302+ std::cout << " Doing " << format (property.condition ) << ' \n ' ;
299303
300304 for (auto &frame : frames)
301305 frame.reset ();
@@ -325,31 +329,50 @@ void solver(
325329
326330 if (solver_options.verbose )
327331 {
328- std::cout << " F: " << format (symbol) << " <- " << format (invariant)
329- << ' \n ' ;
332+ // print the current invariants in the frame
333+ for (const auto &invariant : f.invariants )
334+ {
335+ std::cout << consolet::faint << consolet::blue;
336+ std::cout << ' I' << std::setw (2 ) << frame_ref.index << ' ' ;
337+ std::cout << format (invariant);
338+ std::cout << consolet::reset << ' \n ' ;
339+ }
340+
341+ std::cout << " \u2192 " << consolet::faint << std::setw (2 )
342+ << frame_ref.index << consolet::reset << ' ' ;
330343 }
331344
332- // check if already subsumed
333- if (is_subsumed (
334- f.invariants ,
335- f.auxiliaries ,
336- invariant,
337- address_taken,
338- solver_options.verbose ,
339- ns))
345+ // trivially true?
346+ if (invariant.is_true ())
347+ {
348+ if (solver_options.verbose )
349+ std::cout << " trivial\n " ;
350+ }
351+ else if (is_subsumed (
352+ f.invariants ,
353+ f.auxiliaries ,
354+ invariant,
355+ address_taken,
356+ solver_options.verbose ,
357+ ns))
340358 {
341359 if (solver_options.verbose )
342- std::cout << " *** SUBSUMED \n " ;
360+ std::cout << " subsumed " << format (invariant) << ' \n ' ;
343361 }
344362 else if (count_frame (path, frame_ref) > solver_options.loop_limit )
345363 {
346364 // loop limit exceeded, drop it
347365 if (solver_options.verbose )
348- std::cout << " *** DROPPED\n " ;
349- dropped.push_back (workt (frame_ref, invariant, path));
366+ std::cout << consolet::red << " dropped" << consolet::reset << ' '
367+ << format (invariant) << ' \n ' ;
368+ dropped.emplace_back (frame_ref, invariant, path);
350369 }
351370 else
352371 {
372+ // propagate
373+ if (solver_options.verbose )
374+ std::cout << format (invariant) << ' \n ' ;
375+
353376 auto new_path = path;
354377 new_path.push_back (frame_ref);
355378 queue.emplace_back (f.ref , std::move (invariant), std::move (new_path));
@@ -367,11 +390,13 @@ void solver(
367390
368391 frames[work.frame .index ].add_invariant (work.invariant );
369392
393+ #if 0
370394 if(solver_options.verbose)
371395 {
372396 dump(frames, property, true, true);
373397 std::cout << '\n';
374398 }
399+ #endif
375400
376401 auto counterexample_found = ::counterexample_found (
377402 frames, work, address_taken, solver_options.verbose , ns);
@@ -401,11 +426,13 @@ solver_resultt solver(
401426{
402427 const auto address_taken = ::address_taken (constraints);
403428
429+ #if 0
404430 if(solver_options.verbose)
405431 {
406432 for(auto &a : address_taken)
407433 std::cout << "address_taken: " << format(a) << '\n';
408434 }
435+ #endif
409436
410437 auto frames = setup_frames (constraints);
411438
0 commit comments