Skip to content

satcheck_minisat2.cpp: error: 'l_True' was not declared in this scope; did you mean 'Minisat::l_True'? #8052

Closed
@vt-alt

Description

@vt-alt

When building CBMC version 5.95.1 with system provided minisat (-Dsat_impl="system-minisat2"), build fails with:

[00:00:39] [ 35%] Building CXX object src/solvers/CMakeFiles/solvers.dir/sat/satcheck_minisat2.cpp.o
[00:00:39] cd /usr/src/RPM/BUILD/cbmc-5.95.1/x86_64-alt-linux/src/solvers && /usr/bin/c++ -DHAVE_MINISAT2 -DSATCHECK_MINISAT2 -I/usr/src/RPM/BUILD/cbmc-5.95.1/x86_64-alt-linux/src -I/usr/src/RPM/BUILD/cbmc-5.95.1/src -I/usr/src/RPM/BUILD/cbmc-5.95.1/x86_64-alt-linux/src/solvers -I/usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers -I/usr/src/RPM/BUILD/cbmc-5.95.1/x86_64-alt-linux/src/util -I/usr/src/RPM/BUILD/cbmc-5.95.1/src/util -I/usr/src/RPM/BUILD/cbmc-5.95.1/x86_64-alt-linux/src/big-int -I/usr/src/RPM/BUILD/cbmc-5.95.1/src/big-int -I/usr/src/RPM/BUILD/cbmc-5.95.1/x86_64-alt-linux/src/langapi -I/usr/src/RPM/BUILD/cbmc-5.95.1/src/langapi -pipe -frecord-gcc-switches -Wall -g -O2   -Wno-error=odr -Wall -Wpedantic -Werror -Wno-deprecated-declarations -Wswitch-enum -O2 -std=gnu++11 -MD -MT src/solvers/CMakeFiles/solvers.dir/sat/satcheck_minisat2.cpp.o -MF CMakeFiles/solvers.dir/sat/satcheck_minisat2.cpp.o.d -o CMakeFiles/solvers.dir/sat/satcheck_minisat2.cpp.o -c /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp: In member function 'tvt satcheck_minisat2_baset<T>::l_get(literalt) const':
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:71:33: error: 'l_True' was not declared in this scope; did you mean 'Minisat::l_True'?
[00:00:39]    71 |   if(solver->model[a.var_no()]==l_True)
[00:00:39]       |                                 ^~~~~~
[00:00:39]       |                                 Minisat::l_True
[00:00:39] In file included from /usr/include/minisat/core/Solver.h:29,
[00:00:39]                  from /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:22:
[00:00:39] /usr/include/minisat/core/SolverTypes.h:128:15: note: 'Minisat::l_True' declared here
[00:00:39]   128 |   const lbool l_True ((uint8_t)0);
[00:00:39]       |               ^~~~~~
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:73:38: error: 'l_False' was not declared in this scope; did you mean 'Minisat::l_False'?
[00:00:39]    73 |   else if(solver->model[a.var_no()]==l_False)
[00:00:39]       |                                      ^~~~~~~
[00:00:39]       |                                      Minisat::l_False
[00:00:39] /usr/include/minisat/core/SolverTypes.h:129:15: note: 'Minisat::l_False' declared here
[00:00:39]   129 |   const lbool l_False((uint8_t)1);
[00:00:39]       |               ^~~~~~~
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp: In member function 'void satcheck_minisat2_baset<T>::set_polarity(literalt, bool)':
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:94:45: error: 'l_True' was not declared in this scope; did you mean 'Minisat::l_True'?
[00:00:39]    94 |     solver->setPolarity(a.var_no(), value ? l_True : l_False);
[00:00:39]       |                                             ^~~~~~
[00:00:39]       |                                             Minisat::l_True
[00:00:39] /usr/include/minisat/core/SolverTypes.h:128:15: note: 'Minisat::l_True' declared here
[00:00:39]   128 |   const lbool l_True ((uint8_t)0);
[00:00:39]       |               ^~~~~~
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:94:54: error: 'l_False' was not declared in this scope; did you mean 'Minisat::l_False'?
[00:00:39]    94 |     solver->setPolarity(a.var_no(), value ? l_True : l_False);
[00:00:39]       |                                                      ^~~~~~~
[00:00:39]       |                                                      Minisat::l_False
[00:00:39] /usr/include/minisat/core/SolverTypes.h:129:15: note: 'Minisat::l_False' declared here
[00:00:39]   129 |   const lbool l_False((uint8_t)1);
[00:00:39]       |               ^~~~~~~
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp: In member function 'propt::resultt satcheck_minisat2_baset<T>::do_prop_solve(const bvt&)':
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:274:25: error: 'l_True' was not declared in this scope; did you mean 'Minisat::l_True'?
[00:00:39]   274 |     if(solver_result == l_True)
[00:00:39]       |                         ^~~~~~
[00:00:39]       |                         Minisat::l_True
[00:00:39] /usr/include/minisat/core/SolverTypes.h:128:15: note: 'Minisat::l_True' declared here
[00:00:39]   128 |   const lbool l_True ((uint8_t)0);
[00:00:39]       |               ^~~~~~
[00:00:39] /usr/src/RPM/BUILD/cbmc-5.95.1/src/solvers/sat/satcheck_minisat2.cpp:282:25: error: 'l_False' was not declared in this scope; did you mean 'Minisat::l_False'?
[00:00:39]   282 |     if(solver_result == l_False)
[00:00:39]       |                         ^~~~~~~
[00:00:39]       |                         Minisat::l_False
[00:00:39] /usr/include/minisat/core/SolverTypes.h:129:15: note: 'Minisat::l_False' declared here
[00:00:39]   129 |   const lbool l_False((uint8_t)1);
[00:00:39]       |               ^~~~~~~
[00:00:39] gmake[2]: *** [src/solvers/CMakeFiles/solvers.dir/build.make:1994: src/solvers/CMakeFiles/solvers.dir/sat/satcheck_minisat2.cpp.o] Error 1

Adding -DMINISAT_CONSTANTS_AS_MACROS to the CXXFLAGS solves the issue. Perhaps this should be auto-added or constants namespaced.

CBMC version: 5.95.1
Operating system: ALT Linux
Exact command line resulting in the issue:

[00:00:04] + cmake -DCMAKE_SKIP_INSTALL_RPATH:BOOL=yes '-DCMAKE_C_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2   -Wno-error=odr' '-DCMAKE_CXX_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2   -Wno-error=odr' '-DCMAKE_Fortran_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2   -Wno-error=odr' -DCMAKE_INSTALL_PREFIX=/usr -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib64 -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DLIB_DESTINATION=lib64 -DLIB_SUFFIX=64 -S . -B x86_64-alt-linux -DWITH_JBMC:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF -Dsat_impl=system-minisat2
[00:00:05] + cmake --build x86_64-alt-linux --verbose --parallel 32

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions