예제 #1
0
reachability::reachability(const system::context& ctx)
: expr::gc_participant(ctx.tm())
, d_tm(ctx.tm())
, d_ctx(ctx)
, d_transition_system(0)
, d_smt(0)
{
  d_stats.reachable = new utils::stat_int("sally::ic3::reachable", 0);
  d_stats.unreachable = new utils::stat_int("sally::ic3::unreachable", 0);
  d_stats.queries = new utils::stat_int("sally::ic3::reachability_queries", 0);
  ctx.get_statistics().add(new utils::stat_delimiter());
  ctx.get_statistics().add(d_stats.reachable);
  ctx.get_statistics().add(d_stats.unreachable);
  ctx.get_statistics().add(d_stats.queries);
}
예제 #2
0
bmc_engine::bmc_engine(const system::context& ctx)
    : engine(ctx)
    , d_trace(0)
{
    // Make the solver
    d_solver = smt::factory::mk_default_solver(ctx.tm(), ctx.get_options(), ctx.get_statistics());
}
예제 #3
0
ic3_engine::ic3_engine(const system::context& ctx)
: engine(ctx)
, d_transition_system(0)
, d_property(0)
, d_trace(0)
, d_smt(0)
, d_reachability(ctx)
, d_induction_frame_index(0)
, d_induction_frame_depth(0)
, d_induction_frame_index_next(0)
, d_property_invalid(false)
, d_learning_type(LEARN_UNDEFINED)
{
  d_stats.frame_index = new utils::stat_int("ic3::frame_index", 0);
  d_stats.induction_depth = new utils::stat_int("ic3::induction_depth", 0);
  d_stats.frame_size = new utils::stat_int("ic3::frame_size", 0);
  d_stats.frame_pushed = new utils::stat_int("ic3::frame_pushed", 0);
  d_stats.queue_size = new utils::stat_int("ic3::queue_size", 0);
  d_stats.max_cex_depth = new utils::stat_int("ic3::max_cex_depth", 0);
  ctx.get_statistics().add(new utils::stat_delimiter());
  ctx.get_statistics().add(d_stats.frame_index);
  ctx.get_statistics().add(d_stats.induction_depth);
  ctx.get_statistics().add(d_stats.frame_size);
  ctx.get_statistics().add(d_stats.frame_pushed);
  ctx.get_statistics().add(d_stats.queue_size);
  ctx.get_statistics().add(d_stats.max_cex_depth);
}