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); }
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()); }
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); }