Skip to content

Commit c814170

Browse files
committed
IC3: use property_checker interface
1 parent f8aa6bd commit c814170

File tree

5 files changed

+35
-27
lines changed

5 files changed

+35
-27
lines changed

src/ebmc/ebmc_parse_options.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ Author: Daniel Kroening, [email protected]
1717
#include "ebmc_base.h"
1818
#include "ebmc_error.h"
1919
#include "ebmc_version.h"
20-
#include "ic3_engine.h"
2120
#include "liveness_to_safety.h"
2221
#include "neural_liveness.h"
2322
#include "output_file.h"
@@ -155,11 +154,6 @@ int ebmc_parse_optionst::doit()
155154
if(cmdline.isset("random-trace") || cmdline.isset("random-waveform"))
156155
return random_trace(cmdline, ui_message_handler);
157156

158-
#ifndef _WIN32
159-
if(cmdline.isset("ic3"))
160-
return do_ic3(cmdline, ui_message_handler);
161-
#endif
162-
163157
if(cmdline.isset("neural-liveness"))
164158
return do_neural_liveness(cmdline, ui_message_handler);
165159

src/ebmc/ic3_engine.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ Author: Eugene Goldberg, [email protected]
66
77
\*******************************************************************/
88

9-
#include <util/cmdline.h>
10-
#include <util/ui_message.h>
11-
12-
int do_ic3(const cmdlinet &, ui_message_handlert &);
9+
#include "property_checker.h"
1310

11+
property_checker_resultt ic3_engine(
12+
const cmdlinet &,
13+
transition_systemt &,
14+
ebmc_propertiest &,
15+
message_handlert &);

src/ebmc/property_checker.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Author: Daniel Kroening, [email protected]
1919
#include "dimacs_writer.h"
2020
#include "ebmc_error.h"
2121
#include "ebmc_solver_factory.h"
22+
#include "ic3_engine.h"
2223
#include "k_induction.h"
2324
#include "netlist.h"
2425
#include "output_file.h"
@@ -378,6 +379,15 @@ property_checker_resultt property_checker(
378379
return k_induction(
379380
cmdline, transition_system, properties, message_handler);
380381
}
382+
else if(cmdline.isset("ic3"))
383+
{
384+
#ifdef _WIN32
385+
throw ebmc_errort() << "No support for IC3 on Windows";
386+
#else
387+
return ic3_engine(
388+
cmdline, transition_system, properties, message_handler);
389+
#endif
390+
}
381391
else
382392
{
383393
// default engine is word-level BMC

src/ic3/ebmc_ic3_interface.hh

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,23 @@ class ic3_enginet
77
public:
88
ic3_enginet(
99
const cmdlinet &_cmdline,
10-
ui_message_handlert &_ui_message_handler)
11-
: cmdline(_cmdline), message(_ui_message_handler)
10+
transition_systemt &_transition_system,
11+
ebmc_propertiest &_properties,
12+
message_handlert &_message_handler)
13+
: cmdline(_cmdline),
14+
transition_system(_transition_system),
15+
properties(_properties),
16+
message(_message_handler)
1217
{
1318
}
1419

1520
protected:
1621
const cmdlinet &cmdline;
22+
transition_systemt &transition_system;
23+
using propertyt = ebmc_propertiest::propertyt;
24+
ebmc_propertiest &properties;
1725
messaget message;
1826

19-
using propertyt = ebmc_propertiest::propertyt;
20-
ebmc_propertiest properties;
2127
netlistt netlist;
2228

2329
public:
@@ -29,7 +35,7 @@ public:
2935
bool const0,const1;
3036
bool orig_names;
3137

32-
int operator()();
38+
property_checker_resultt operator()();
3339
void read_ebmc_input();
3440
void find_prop_lit();
3541
void ebmc_form_latches();

src/ic3/m1ain.cc

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ long long gcount = 0;
4949
D O _ I C 3
5050
5151
====================*/
52-
int do_ic3(const cmdlinet &cmdline,
53-
ui_message_handlert &ui_message_handler)
54-
52+
property_checker_resultt ic3_engine(
53+
const cmdlinet &cmdline,
54+
transition_systemt &transition_system,
55+
ebmc_propertiest &properties,
56+
message_handlert &message_handler)
5557
{
56-
return(ic3_enginet(cmdline,ui_message_handler)());
57-
} /* end of function do_ic3 */
58+
return(ic3_enginet(cmdline, transition_system, properties, message_handler)());
59+
} /* end of function ic3_engine */
5860

5961
bool ic3_supports_property(const exprt &expr)
6062
{
@@ -82,7 +84,7 @@ bool ic3_supports_property(const exprt &expr)
8284
8385
(functionall call reloading)
8486
=================================*/
85-
int ic3_enginet::operator()()
87+
property_checker_resultt ic3_enginet::operator()()
8688

8789
{
8890

@@ -91,12 +93,6 @@ int ic3_enginet::operator()()
9193
read_parameters();
9294

9395
try {
94-
auto transition_system =
95-
get_transition_system(cmdline, message.get_message_handler());
96-
97-
properties = ebmc_propertiest::from_command_line(
98-
cmdline, transition_system, message.get_message_handler());
99-
10096
// possibly apply liveness-to-safety
10197
if(cmdline.isset("liveness-to-safety"))
10298
liveness_to_safety(transition_system, properties);

0 commit comments

Comments
 (0)