goto_programt::targett cegis_assign_user_variable(const symbol_tablet &st, goto_functionst &gf, const goto_programt::targett &insert_after_pos, const irep_idt &name, const exprt &value) { const symbol_exprt lhs(st.lookup(name).symbol_expr()); return cegis_assign(st, gf, insert_after_pos, lhs, value); }
goto_programt::targett cegis_assign(const symbol_tablet &st, goto_functionst &gf, const goto_programt::targett &insert_after_pos, const exprt &lhs, const exprt &rhs) { return cegis_assign(st, gf, insert_after_pos, lhs, rhs, default_cegis_source_location()); }
goto_programt::targett cegis_assign(const symbol_tablet &st, goto_functionst &gf, const goto_programt::targett &insert_after_pos, const exprt &lhs, const exprt &rhs, const source_locationt &loc) { goto_programt &body=get_entry_body(gf); return cegis_assign(st, body, insert_after_pos, lhs, rhs, loc); }
goto_programt::targett cegis_assign(const symbol_tablet &st, goto_programt &body, const goto_programt::targett &insert_after_pos, const exprt &lhs, const exprt &rhs, const source_locationt &loc) { const goto_programt::targett assign=body.insert_after(insert_after_pos); cegis_assign(st, *assign, lhs, rhs, loc); return assign; }
const symbolt &declare_global_meta_variable(symbol_tablet &st, goto_functionst &gf, const std::string &name, const exprt &value) { const symbolt &symbol=declare_global_meta_variable(st, name, value.type()); goto_programt &init_body=get_body(gf, CPROVER_INIT); goto_programt::instructionst &instrs=init_body.instructions; goto_programt::targett pos=instrs.begin(); if (instrs.size() >= 2) pos=std::prev(init_body.instructions.end(), 2); const symbol_exprt lhs(symbol.symbol_expr()); cegis_assign(st, init_body, pos, lhs, value, default_cegis_source_location()); return symbol; }
goto_programt::targett cegis_assign_local_variable(const symbol_tablet &st, goto_programt &body, const goto_programt::targett &insert_after_pos, const std::string &func_name, const std::string &var_name, const exprt &value) { std::string name(func_name); name+=NS_SEP; name+=var_name; const symbol_exprt lhs(st.lookup(name).symbol_expr()); const source_locationt loc(default_cegis_source_location()); return cegis_assign(st, body, insert_after_pos, lhs, value, loc); }
goto_programt::targett jsa_assign(const symbol_tablet &st, goto_functionst &gf, const goto_programt::targett &pos, const exprt &lhs, const exprt &rhs) { const source_locationt loc(jsa_builtin_source_location()); return cegis_assign(st, gf, pos, lhs, rhs, loc); }