void safety_fitness_configt::convert(candidatet ¤t_candidate, const individualt &ind) { const symbol_tablet &st=original_program.st; const goto_functionst &gf=original_program.gf; invariant_variable_idst ids; get_invariant_variable_ids(st, ids); create_safety_solution(current_candidate, st, gf, ind, ids, info_fac); }
void individual_to_safety_solution_deserialisert::operator()( safety_goto_solutiont &result, const irept &sdu) const { program_individualt ind; deserialise(ind, sdu); invariant_variable_idst ids; const symbol_tablet &st=prog.st; get_invariant_variable_ids(st, ids); create_safety_solution(result, st, prog.gf, ind, ids, info_fac); }
void danger_learn_configt::process(const counterexamplest &ces, const size_t max_sz) { program=original_program; var_ids.clear(); num_consts=get_invariant_variable_ids(program.st, var_ids); const size_t num_vars=var_ids.size(); null_message_handlert msg; const std::string name(DANGER_EXECUTE); add_invariant_library(program, msg, num_vars, num_consts, max_sz, name); link_user_program_variables(program, var_ids); link_meta_variables(program, var_ids.size(), max_sz); danger_add_programs_to_learn(program, max_sz); danger_add_x0_placeholders(program); invariant_add_learned_counterexamples(program, ces, create_danger_constraint, true); program.gf.update(); }
void danger_learn_configt::process(const counterexamplest &ces, const size_t max_sz) { program=original_program; var_ids.clear(); num_consts=get_invariant_variable_ids(program.st, var_ids); const size_t num_vars=var_ids.size(); null_message_handlert msg; const std::string name(DANGER_EXECUTE); symbol_tablet &st=program.st; goto_functionst &gf=program.gf; add_cegis_library(st, gf, msg, num_vars, num_consts, max_sz, name); link_user_program_variables(program, var_ids); link_meta_variables(program, var_ids.size(), max_sz); danger_add_programs_to_learn(program, max_sz); danger_add_x0_placeholders(program); const danger_constraint constr(program.use_ranking); invariant_add_learned_counterexamples(program, ces, std::cref(constr), true); gf.update(); }
void safety_learn_configt::process(const counterexamplest &ces, const size_t max_sz) { program=original_program; var_ids.clear(); const symbol_tablet &st=program.st; num_consts=get_invariant_variable_ids(st, var_ids); const size_t num_vars=var_ids.size(); null_message_handlert msg; const std::string name(DANGER_EXECUTE); add_invariant_library(program, msg, num_vars, num_consts, max_sz, name); add_safety_learning_variable_refs(program, var_ids, max_sz); goto_functionst &gf=program.gf; link_result_var(st, gf, var_ids.size(), max_sz, program.Ix0); add_invariant_progs_to_learn(program, max_sz); const invariant_programt &prog=program; const invariant_programt::const_invariant_loopst loops(prog.get_loops()); const invariant_programt::invariant_loopt &first_loop=*loops.front(); const std::string I0=get_prog_var_name(st, first_loop.meta_variables.Ix); execute_inv_prog(st, gf, max_sz, program.Ix0, I0); safety_add_learned_counterexamples(program, ces, create_safety_constraint); gf.update(); }