cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
smt_is_dynamic_object.cpp
Go to the documentation of this file.
1
// Author: Diffblue Ltd.
2
3
#include "
smt_is_dynamic_object.h
"
4
5
#include <
util/config.h
>
6
7
#include <
solvers/smt2_incremental/theories/smt_core_theory.h
>
8
9
static
smt_declare_function_commandt
10
make_is_dynamic_object_function_declaration
()
11
{
12
return
smt_declare_function_commandt
{
13
smt_identifier_termt
{
"is_dynamic_object"
,
smt_bool_sortt
{}},
14
{
smt_bit_vector_sortt
{
config
.bv_encoding.object_bits}}};
15
}
16
17
smt_is_dynamic_objectt::smt_is_dynamic_objectt
()
18
:
declaration
{
make_is_dynamic_object_function_declaration
()},
19
make_application
{
smt_command_functiont
{
declaration
}}
20
{
21
}
22
23
smt_commandt
smt_is_dynamic_objectt::make_definition
(
24
std::size_t unique_id,
25
bool
is_dynamic_object)
const
26
{
27
const
auto
id_sort =
28
declaration
.parameter_sorts().at(0).get().cast<
smt_bit_vector_sortt
>();
29
INVARIANT
(id_sort,
"Object identifiers are expected to have bit vector sort"
);
30
const
auto
bit_vector_of_id =
31
smt_bit_vector_constant_termt
{unique_id, *id_sort};
32
return
smt_assert_commandt
{
smt_core_theoryt::equal
(
33
make_application
(std::vector<smt_termt>{bit_vector_of_id}),
34
smt_bool_literal_termt
{is_dynamic_object})};
35
}
config
configt config
Definition
config.cpp:25
smt_assert_commandt
Definition
smt_commands.h:35
smt_bit_vector_constant_termt
Definition
smt_terms.h:117
smt_bit_vector_sortt
Definition
smt_sorts.h:84
smt_bool_literal_termt
Definition
smt_terms.h:77
smt_bool_sortt
Definition
smt_sorts.h:78
smt_command_functiont
A function generated from a command.
Definition
smt_commands.h:147
smt_commandt
Definition
smt_commands.h:15
smt_core_theoryt::equal
static const smt_function_application_termt::factoryt< equalt > equal
Definition
smt_core_theory.h:148
smt_declare_function_commandt
Definition
smt_commands.h:51
smt_identifier_termt
Stores identifiers in unescaped and unquoted form.
Definition
smt_terms.h:93
config.h
smt_core_theory.h
make_is_dynamic_object_function_declaration
static smt_declare_function_commandt make_is_dynamic_object_function_declaration()
Definition
smt_is_dynamic_object.cpp:10
smt_is_dynamic_object.h
INVARIANT
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.
Definition
invariant.h:423
smt_is_dynamic_objectt::make_application
make_applicationt make_application
Definition
smt_is_dynamic_object.h:24
smt_is_dynamic_objectt::smt_is_dynamic_objectt
smt_is_dynamic_objectt()
Definition
smt_is_dynamic_object.cpp:17
smt_is_dynamic_objectt::declaration
smt_declare_function_commandt declaration
The command for declaring the is_dynamic_object function.
Definition
smt_is_dynamic_object.h:20
smt_is_dynamic_objectt::make_definition
smt_commandt make_definition(std::size_t unique_id, bool is_dynamic_object) const
Makes the command to define the resulting is_dynamic_object status for calls to the is_dynamic_object...
Definition
smt_is_dynamic_object.cpp:23
solvers
smt2_incremental
smt_is_dynamic_object.cpp
Generated by
1.17.0