1#ifndef CPROVER_BASIC_SYMEX_EQUATION_H
2#define CPROVER_BASIC_SYMEX_EQUATION_H
39 const sourcet &source,
40 std::vector<stack_framet> stack_trace,
42 unsigned loop_number)
override;
47 const sourcet &source,
48 const std::string &
fmt,
49 const std::list<expr2tc> &args)
override;
54 const sourcet &source,
56 unsigned loop_number)
override;
62 const sourcet &source,
63 unsigned loop_number)
override;
70 const std::string &msg,
71 std::vector<stack_framet> stack_trace,
72 const sourcet &source,
73 unsigned loop_number)
override;
79 const sourcet &source)
override;
245 static const std::vector<stack_framet> empty;
260 bool show_ignored =
false)
const;
278 SSA_stepst::iterator it =
SSA_steps.begin();
287 void output(std::ostream &out)
const;
288 void short_output(std::ostream &out,
bool show_ignored =
false)
const;
304 std::shared_ptr<symex_targett>
clone()
const override
323 void debug_print_step(
const SSA_stept &step)
const;
339 std::shared_ptr<symex_targett>
clone()
const override;
356 const symex_target_equationt::SSA_stepst::const_iterator a,
357 const symex_target_equationt::SSA_stepst::const_iterator b)
359 return &(*a) < &(*b);
Definition namespace.h:10
Definition symex_target_equation.h:330
~runtime_encoded_equationt() override
SSA_stepst::iterator cvt_progress
Definition symex_target_equation.h:352
runtime_encoded_equationt(const namespacet &_ns, smt_convt &conv)
Definition symex_target_equation.cpp:573
void pop_ctx() override
Definition symex_target_equation.cpp:642
void push_ctx() override
Definition symex_target_equation.cpp:632
smt_convt & conv
Definition symex_target_equation.h:348
void convert(smt_convt &smt_conv, assertion_modet mode=assertion_modet::Violated) override
Definition symex_target_equation.cpp:657
std::shared_ptr< symex_targett > clone() const override
Definition symex_target_equation.cpp:681
std::list< SSA_stepst::iterator > scoped_end_points
Definition symex_target_equation.h:351
void flush_latest_instructions()
Definition symex_target_equation.cpp:587
std::unique_ptr< solver_statet > solver_state
Definition symex_target_equation.h:350
tvt ask_solver_question(const expr2tc &question)
Definition symex_target_equation.cpp:695
Slim, frontend-facing SMT interface.
Definition smt_conv.h:30
Definition symex_target.h:125
Definition symex_target_equation.h:107
SSA_stept(const SSA_stept &o)
Definition symex_target_equation.h:202
irep_idt comment
Definition symex_target_equation.h:156
expr2tc cond_expr
Definition symex_target_equation.h:184
expr2tc cond_neg
cond with the claim negated under the same guards (issue #7585).
Definition symex_target_equation.h:155
std::vector< stack_framet > & stack_trace_payload()
Definition symex_target_equation.h:249
std::unique_ptr< output_datat > output_data
Definition symex_target_equation.h:170
SSA_stept()
Definition symex_target_equation.h:195
expr2tc guard
Definition symex_target_equation.h:141
SSA_stept & operator=(const SSA_stept &o)
Definition symex_target_equation.h:226
SSA_stept(SSA_stept &&)=default
symex_targett::step_typet type
Definition symex_target_equation.h:110
const std::vector< stack_framet > & stack_trace() const
Definition symex_target_equation.h:243
sourcet source
Definition symex_target_equation.h:109
expr2tc lhs
Definition symex_target_equation.h:144
bool is_assert() const
Definition symex_target_equation.h:112
bool is_branching() const
Definition symex_target_equation.h:136
std::unique_ptr< std::vector< stack_framet > > stack_trace_box
Definition symex_target_equation.h:178
void short_output(const namespacet &ns, std::ostream &out, bool show_ignored=false) const
Definition symex_target_equation.cpp:459
expr2tc rhs
Definition symex_target_equation.h:144
bool is_assignment() const
Definition symex_target_equation.h:120
SSA_stept & operator=(SSA_stept &&)=default
expr2tc original_lhs
Definition symex_target_equation.h:145
unsigned loop_number
Definition symex_target_equation.h:193
output_datat & output_payload()
Definition symex_target_equation.h:235
bool ignore
Definition symex_target_equation.h:187
bool is_assume() const
Definition symex_target_equation.h:116
bool is_skip() const
Definition symex_target_equation.h:132
bool is_output() const
Definition symex_target_equation.h:124
bool hidden
Definition symex_target_equation.h:190
expr2tc original_rhs
Definition symex_target_equation.h:145
bool is_renumber() const
Definition symex_target_equation.h:128
void dump() const
Definition symex_target_equation.cpp:400
void output(const namespacet &ns, std::ostream &out) const
Definition symex_target_equation.cpp:407
expr2tc cond
Definition symex_target_equation.h:153
Definition symex_target_equation.h:21
const namespacet & ns
Definition symex_target_equation.h:315
void branching(const expr2tc &guard, const expr2tc &cond, const sourcet &source, const bool hidden, unsigned loop_number) override
Definition symex_target_equation.cpp:252
void clear()
Definition symex_target_equation.h:296
SSA_stepst SSA_steps
Definition symex_target_equation.h:274
void assumption(const expr2tc &guard, const expr2tc &cond, const sourcet &source, unsigned loop_number) override
Definition symex_target_equation.cpp:273
unsigned count_ignored_SSA_steps() const
Definition symex_target_equation.h:264
void assignment(const expr2tc &guard, const expr2tc &lhs, const expr2tc &original_lhs, const expr2tc &rhs, const expr2tc &original_rhs, const sourcet &source, std::vector< stack_framet > stack_trace, const bool hidden, unsigned loop_number) override
Definition symex_target_equation.cpp:199
symex_target_equationt(const namespacet &_ns)
Definition symex_target_equation.h:25
void replace_rec(const SSA_stept &step, expr2tc &e, bool keep_local) const
Definition symex_target_equation.cpp:534
void output(const expr2tc &guard, const sourcet &source, const std::string &fmt, const std::list< expr2tc > &args) override
Definition symex_target_equation.cpp:232
bool debug_print
Definition symex_target_equation.h:317
bool ssa_smt_trace
Definition symex_target_equation.h:319
std::shared_ptr< symex_targett > clone() const override
Definition symex_target_equation.h:304
bool check_for_duplicate_assigns() const
I10: no SSA name is defined twice.
Definition symex_target_equation.cpp:489
std::list< SSA_stept > SSA_stepst
Definition symex_target_equation.h:273
void short_output(std::ostream &out, bool show_ignored=false) const
Definition symex_target_equation.cpp:391
assertion_modet
How an assertion is encoded.
Definition symex_target_equation.h:92
@ PathReachable
Definition symex_target_equation.h:94
@ Violated
Definition symex_target_equation.h:93
@ Satisfiable
Definition symex_target_equation.h:95
SSA_stepst::iterator get_SSA_step(unsigned s)
Definition symex_target_equation.h:276
void push_ctx() override
Definition symex_target_equation.cpp:474
void pop_ctx() override
Definition symex_target_equation.cpp:478
void assertion(const expr2tc &guard, const expr2tc &cond, const expr2tc &cond_neg, const std::string &msg, std::vector< stack_framet > stack_trace, const sourcet &source, unsigned loop_number) override
cond_neg is cond with the claim negated under the same guards, so a probe can ask whether the claim h...
Definition symex_target_equation.cpp:292
unsigned int clear_assertions()
Definition symex_target_equation.cpp:515
void reconstruct_symbolic_expression(expr2tc &expr, bool keep_local_variables) const override
Replaces trace symbols from expression with their values.
Definition symex_target_equation.cpp:555
virtual void convert(smt_convt &smt_conv, assertion_modet mode=assertion_modet::Violated)
Definition symex_target_equation.cpp:339
void renumber(const expr2tc &guard, const expr2tc &symbol, const expr2tc &size, const sourcet &source) override
Definition symex_target_equation.cpp:318
unsigned output_count
Definition symex_target_equation.h:320
bool ssa_trace
Definition symex_target_equation.h:318
Definition symex_target.h:14
step_typet
Definition symex_target.h:20
@ OUTPUT
Definition symex_target.h:24
@ RENUMBER
Definition symex_target.h:26
@ ASSERT
Definition symex_target.h:23
@ SKIP
Definition symex_target.h:25
@ BREANCHING
Definition symex_target.h:27
@ ASSIGNMENT
Definition symex_target.h:21
@ ASSUME
Definition symex_target.h:22
configt config
Definition config.cpp:8
pthread_cond_t cond
Definition cuda.h:50
Classes and definitions for non-stringy internal representation.
irep_container< expr2t > expr2tc
Definition irep2.h:431
Definition exception.cpp:51
#define false
Definition stdbool.h:10
Definition symex_target_equation.cpp:569
Definition symex_target_equation.h:165
std::list< expr2tc > converted_output_args
Definition symex_target_equation.h:168
std::list< expr2tc > output_args
Definition symex_target_equation.h:167
std::string format_string
Definition symex_target_equation.h:166
Definition symex_target.h:31
bool operator<(const symex_target_equationt::SSA_stepst::const_iterator a, const symex_target_equationt::SSA_stepst::const_iterator b)
Definition symex_target_equation.h:355
std::ostream & operator<<(std::ostream &out, const symex_target_equationt::SSA_stept &step)