Esempio n. 1
0
void safety_fitness_configt::convert(candidatet &current_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);
}
Esempio n. 3
0
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();
}
Esempio n. 4
0
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();
}
Esempio n. 5
0
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();
}