Skip to content

Commit f3f43bd

Browse files
committed
bump cbmc dependency
1 parent 28be476 commit f3f43bd

28 files changed

+192
-191
lines changed

.github/workflows/pull-request-checks.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ jobs:
104104
# This job takes approximately 15 minutes
105105
check-centos8-make-gcc:
106106
name: CentOS 8
107-
runs-on: ubuntu-20.04
107+
runs-on: ubuntu-22.04
108108
container:
109109
image: centos:8
110110
steps:
@@ -134,7 +134,7 @@ jobs:
134134
- name: Get minisat
135135
run: make -C lib/cbmc/src minisat2-download
136136
- name: Build with make
137-
run: make CXX="ccache g++" -C src -j2
137+
run: make CXX="ccache g++ -Wno-class-memaccess" LIBS="-lstdc++fs" -C src -j2
138138
- name: Run the ebmc tests with SAT
139139
run: |
140140
rm regression/ebmc/neural-liveness/counter1.desc

lib/cbmc

Submodule cbmc updated 1293 files

src/aiger/aiger_language.cpp

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,7 @@ Author: Daniel Kroening, [email protected]
88

99
#include "aiger_language.h"
1010

11-
/*******************************************************************\
12-
13-
Module:
14-
15-
Author: Daniel Kroening, [email protected]
16-
17-
\*******************************************************************/
18-
19-
#include "aiger_language.h"
11+
#include <util/message.h>
2012

2113
/*******************************************************************\
2214
@@ -31,8 +23,9 @@ Function: aiger_languaget::parse
3123
\*******************************************************************/
3224

3325
bool aiger_languaget::parse(
34-
std::istream &instream,
35-
const std::string &path)
26+
std::istream &,
27+
const std::string &,
28+
message_handlert &)
3629
{
3730
return true;
3831
}
@@ -50,11 +43,13 @@ Function: aiger_languaget::preprocess
5043
\*******************************************************************/
5144

5245
bool aiger_languaget::preprocess(
53-
std::istream &instream,
54-
const std::string &path,
55-
std::ostream &outstream)
46+
std::istream &,
47+
const std::string &,
48+
std::ostream &,
49+
message_handlert &message_handler)
5650
{
57-
error() << "there is no AIGER preprocessing" << eom;
51+
messaget message(message_handler);
52+
message.error() << "there is no AIGER preprocessing" << messaget::eom;
5853
return true;
5954
}
6055

@@ -106,8 +101,9 @@ Function: aiger_languaget::typecheck
106101
\*******************************************************************/
107102

108103
bool aiger_languaget::typecheck(
109-
symbol_table_baset &symbol_table,
110-
const std::string &module)
104+
symbol_table_baset &,
105+
const std::string &,
106+
message_handlert &)
111107
{
112108
return true;
113109
}
@@ -124,7 +120,7 @@ Function: aiger_languaget::interfaces
124120
125121
\*******************************************************************/
126122

127-
bool aiger_languaget::interfaces(symbol_table_baset &symbol_table)
123+
bool aiger_languaget::interfaces(symbol_table_baset &, message_handlert &)
128124
{
129125
return false;
130126
}
@@ -140,8 +136,8 @@ Function: aiger_languaget::show_parse
140136
Purpose:
141137
142138
\*******************************************************************/
143-
144-
void aiger_languaget::show_parse(std::ostream &out)
139+
140+
void aiger_languaget::show_parse(std::ostream &, message_handlert &)
145141
{
146142
}
147143

@@ -200,8 +196,9 @@ Function: aiger_languaget::to_expr
200196
bool aiger_languaget::to_expr(
201197
const std::string &code,
202198
const std::string &module,
203-
exprt &expr,
204-
const namespacet &ns)
199+
exprt &,
200+
const namespacet &,
201+
message_handlert &)
205202
{
206203
return true;
207204
}

src/aiger/aiger_language.h

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,30 @@ class aiger_languaget:public languaget
1717
{
1818
public:
1919
bool preprocess(
20-
std::istream &instream,
20+
std::istream &,
2121
const std::string &path,
22-
std::ostream &outstream) override;
22+
std::ostream &,
23+
message_handlert &) override;
24+
25+
bool
26+
parse(std::istream &, const std::string &path, message_handlert &) override;
2327

24-
bool parse(
25-
std::istream &instream,
26-
const std::string &path) override;
27-
2828
void dependencies(
2929
const std::string &module,
3030
std::set<std::string> &module_set) override;
3131

3232
void modules_provided(
3333
std::set<std::string> &module_set) override;
3434

35-
bool interfaces(symbol_table_baset &) override;
35+
bool interfaces(symbol_table_baset &, message_handlert &) override;
3636

37-
bool typecheck(symbol_table_baset &, const std::string &module) override;
37+
bool typecheck(
38+
symbol_table_baset &,
39+
const std::string &module,
40+
message_handlert &) override;
41+
42+
void show_parse(std::ostream &, message_handlert &) override;
3843

39-
void show_parse(std::ostream &out) override;
40-
4144
~aiger_languaget() override { }
4245

4346
bool from_expr(
@@ -51,10 +54,12 @@ class aiger_languaget:public languaget
5154
bool to_expr(
5255
const std::string &code,
5356
const std::string &module,
54-
exprt &expr,
55-
const namespacet &ns) override;
57+
exprt &,
58+
const namespacet &,
59+
message_handlert &) override;
5660

57-
bool generate_support_functions(symbol_table_baset &) override
61+
bool
62+
generate_support_functions(symbol_table_baset &, message_handlert &) override
5863
{
5964
return false;
6065
}

src/ebmc/Makefile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ endif
7171
include ../config.inc
7272
include ../common
7373

74-
LIBS = ../ic3/minisat/build/release/lib/libminisat.a
75-
7674
CLEANFILES = ebmc$(EXEEXT)
7775

7876
all: ebmc$(EXEEXT)
@@ -87,5 +85,5 @@ endif
8785

8886
###############################################################################
8987

90-
ebmc$(EXEEXT): $(OBJ)
88+
ebmc$(EXEEXT): $(OBJ) ../ic3/minisat/build/release/lib/libminisat.a
9189
$(LINKBIN)

src/ebmc/bmc.cpp

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void bmc(
3333
const namespacet ns(transition_system.symbol_table);
3434

3535
auto solver_wrapper = solver_factory(ns, message_handler);
36-
auto &solver = solver_wrapper.stack_decision_procedure();
36+
auto &solver = solver_wrapper.decision_procedure();
3737

3838
::unwind(
3939
transition_system.trans_expr, message_handler, solver, bound + 1, ns, true);
@@ -87,18 +87,9 @@ void bmc(
8787

8888
message.status() << "Checking " << property.name << messaget::eom;
8989

90-
auto constraint = not_exprt(conjunction(property.timeframe_handles));
91-
auto handle = solver.handle(constraint);
92-
if(handle.is_true())
93-
solver.push({literal_exprt(const_literal(true))});
94-
else if(handle.is_false())
95-
solver.push({literal_exprt(const_literal(false))});
96-
else
97-
solver.push({solver.handle(constraint)});
90+
auto assumption = not_exprt(conjunction(property.timeframe_handles));
9891

99-
decision_proceduret::resultt dec_result = solver();
100-
101-
solver.pop();
92+
decision_proceduret::resultt dec_result = solver(assumption);
10293

10394
switch(dec_result)
10495
{

src/ebmc/ebmc_error.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ebmc_errort
2525
return message;
2626
}
2727

28-
optionalt<int> exit_code() const
28+
std::optional<int> exit_code() const
2929
{
3030
return __exit_code;
3131
}
@@ -49,7 +49,7 @@ class ebmc_errort
4949

5050
protected:
5151
std::ostringstream message;
52-
optionalt<int> __exit_code = {};
52+
std::optional<int> __exit_code = {};
5353
source_locationt __location = source_locationt::nil();
5454
};
5555

src/ebmc/ebmc_properties.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,13 @@ ebmc_propertiest ebmc_propertiest::from_command_line(
128128

129129
auto property_string = cmdline.get_value('p');
130130

131-
language->set_message_handler(message_handler);
132-
133131
exprt expr;
134132
if(language->to_expr(
135133
property_string,
136134
id2string(transition_system.main_symbol->module),
137135
expr,
138-
ns))
136+
ns,
137+
message_handler))
139138
{
140139
throw ebmc_errort() << "failed to parse the given property expression";
141140
}

src/ebmc/ebmc_solver_factory.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ ebmc_solver_factoryt ebmc_solver_factory(const cmdlinet &cmdline)
5656
}
5757
}
5858

59-
optionalt<smt2_convt::solvert> smt2_solver =
59+
std::optional<smt2_convt::solvert> smt2_solver =
6060
cmdline.isset("bitwuzla") ? smt2_convt::solvert::BITWUZLA
6161
: cmdline.isset("boolector") ? smt2_convt::solvert::BOOLECTOR
6262
: cmdline.isset("cvc3") ? smt2_convt::solvert::CVC3
@@ -66,7 +66,7 @@ ebmc_solver_factoryt ebmc_solver_factory(const cmdlinet &cmdline)
6666
: cmdline.isset("yices") ? smt2_convt::solvert::YICES
6767
: cmdline.isset("z3") ? smt2_convt::solvert::Z3
6868
: cmdline.isset("smt2") ? smt2_convt::solvert::GENERIC
69-
: optionalt<smt2_convt::solvert>{};
69+
: std::optional<smt2_convt::solvert>{};
7070

7171
if(cmdline.isset("outfile"))
7272
{

src/ebmc/ebmc_solver_factory.h

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,30 @@ Author: Daniel Kroening, [email protected]
1313
#include <util/message.h>
1414
#include <util/namespace.h>
1515

16+
#include <solvers/decision_procedure.h>
1617
#include <solvers/prop/prop.h>
17-
#include <solvers/stack_decision_procedure.h>
1818

1919
#include <iosfwd>
2020
#include <memory>
2121

2222
class ebmc_solvert final
2323
{
2424
public:
25-
explicit ebmc_solvert(std::unique_ptr<stack_decision_proceduret> p)
25+
explicit ebmc_solvert(std::unique_ptr<decision_proceduret> p)
2626
: decision_procedure_ptr(std::move(p))
2727
{
2828
}
2929

3030
ebmc_solvert(
3131
std::unique_ptr<propt> p1,
32-
std::unique_ptr<stack_decision_proceduret> p2)
32+
std::unique_ptr<decision_proceduret> p2)
3333
: prop_ptr(std::move(p1)), decision_procedure_ptr(std::move(p2))
3434
{
3535
}
3636

3737
ebmc_solvert(
3838
std::unique_ptr<std::ofstream> p1,
39-
std::unique_ptr<stack_decision_proceduret> p2)
39+
std::unique_ptr<decision_proceduret> p2)
4040
: ofstream_ptr(std::move(p1)), decision_procedure_ptr(std::move(p2))
4141
{
4242
}
@@ -47,16 +47,10 @@ class ebmc_solvert final
4747
return *decision_procedure_ptr;
4848
}
4949

50-
stack_decision_proceduret &stack_decision_procedure() const
51-
{
52-
PRECONDITION(decision_procedure_ptr);
53-
return *decision_procedure_ptr;
54-
}
55-
5650
// the objects are deleted in the opposite order they appear below
5751
std::unique_ptr<std::ofstream> ofstream_ptr;
5852
std::unique_ptr<propt> prop_ptr;
59-
std::unique_ptr<stack_decision_proceduret> decision_procedure_ptr;
53+
std::unique_ptr<decision_proceduret> decision_procedure_ptr;
6054
};
6155

6256
using ebmc_solver_factoryt =

0 commit comments

Comments
 (0)