daajoe / clasp

A conflict-driven nogood learning answer set solver

Home Page:http://www.cs.uni-potsdam.de/clasp/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

                                clasp-3.x
              A conflict-driven nogood learning answer set solver
                     http://www.cs.uni-potsdam.de/clasp/
                           https://potassco.org/

OVERVIEW
  clasp is an answer set solver for (extended) normal and disjunctive logic programs. 
  It combines the high-level modeling capacities of answer set programming
  with state-of-the-art techniques from the area of Boolean constraint solving.
  The primary clasp algorithm relies on conflict-driven nogood learning, 
  a technique that proved very successful for satisfiability checking (SAT).
  Starting with version 2.0, clasp supports parallel (multithreaded) solving.
  Starting with version 3.0, clasp supports
   - disjunctive logic programs as in claspD-2,
   - domain heuristic modifications as in hclasp via option "--heuristic=domain",
   - unsatisfiable-core based optimization as in unclasp via "--opt-strategy".
  Starting with version 3.2, clasp supports
   - new asp intermediate format (aspif) [1],
   - ASP/SAT/PB modulo acyclicity [2] via option "--parse-ext" and a dedicated acyclicity 
     constraint propagator,
   - optimization in SAT via option "--parse-ext" and "c minweight l1 w1 ... ln wn 0",
   - additional unsatisfiable-core based optimization strategies.
   
  clasp is written in (mostly) Standard-C++. It was successfully built and run
  under Linux (x86-32, x86-64) using gcc/clang and Windows (x86-32, x86-64) using
  either Microsoft Visual Studio or MinGW. 
  
  Detailed information (including a User's manual), source code,
  and pre-compiled binaries are available at: https://potassco.org/
 
LICENSE
  clasp is part of the Potassco project hosted at SourceForge.
  It is distributed under the GNU Public License. See COPYING for
  details regarding the license.

PACKAGE CONTENTS
  COPYING      - GNU Public License
  CHANGES      - Major changes between versions
  README       - This file
  configure.{sh,bat}
               - Simple script that creates Makefiles for building clasp (library and application) 
  CMakeLists.txt
               - Alternative configuration file for building clasp with CMake [3]
  app/         - Source code directory of the command-line interface
  libclasp/    - Directory of the clasp library (sources, documentation, unit tests)
  liblp/       - Library for parsing and converting (asp) input format
  libprogram_opts/
               - Library for parsing command-line options (needed by app)
  build_vc/    - Project files for building clasp with Microsoft Visual Studio [4]
  tools/       - Some additional files

BUILDING & INSTALLING
  The preferred way to build clasp is to use make and the provided configure script.
  You'll need to have the GNU Compiler Collection (GCC) version 3 or
  better installed in order to build clasp. You'll also need GNU make 3.80 or better. 
  On Microsoft Windows, we recommend using MinGW and MinGW-make [5].
 
  In the following it is assumed that 'make' is an alias for the installed GNU make. 
  If this is not the case on your system, replace 'make' with the name of the GNU make 
  executable (e.g. gmake). Furthermore, on Microsoft Windows use ./configure.bat instead of
  ./configure.sh.

  clasp's multithreaded solving requires either the use of a modern C++ compiler with support
  for C++11 threads or the Intel Threading Building Blocks (TBB) library (version >= 3.x) [6].
  
  Type 
    ./configure.sh --help 
  to get an overview of all supported build configurations/options.

  To build clasp:
    ./configure.sh
    cd build/release
    make

  To build clasp with multithread support using C++11:
    ./configure.sh --with-mt=std
    cd build/release_mt
    make

  To build clasp with multithread support using TBB:
    ./configure.sh --with-mt=tbb
    cd build/release_mt
    make

  To build clasp with multithread support using TBB in a custom directory:
    ./configure.sh --with-mt=tbb TBB_INCLUDE=<path_to_tbb_include> TBB_LIB=<path_to_tbb_lib>
    cd build/release_mt
    make

  To install clasp:
    make install

  By default, 'make install' will install clasp in '/usr/local/bin'
  You can specify an installation prefix other than '/usr/local' 
  by running the configure-script with the option '--prefix=PATH'.
  Alternatively, use option '--bindir=PATH' to directly specify the
  installation path. 

  Finally, you can always skip installation and simply copy the
  clasp executable to a directory of your choice.

BUILDING WITH cmake
  To build clasp with cmake, you need cmake version 2.8 or newer.
  First, create a new build directory:
    mkdir build_cmake
  Second, run cmake and make from the newly created directory:
    cd build_cmake/
    cmake ../
    make
  Finally, copy ./bin/clasp to a directory of your choice.
  
BUILDING WITH Microsoft Visual Studio
  In the directory build_vc/ we provide project files for building clasp
  from within Microsoft Visual Studio. Free express editions of 
  Visual Studio are available from [7].
  
BUILDING the documentation
  A User's Guide is available from https://potassco.org/
  Source code documentation can be generated with Doxygen [8].
  Either explicitly:
    cd libclasp/doc/api
	doxygen clasp
  
  or when building with cmake:
    make doc
  
USAGE
  clasp reads problem instances either from stdin, e.g 
    cat problem | clasp
  or from a given file, e.g
    clasp problem

  Beside logic programs, clasp also supports SAT-problems in DIMACS-,
  Max-SAT in (extended) DIMACS-, and PB-problems in OPB and WBO-format.

  Type
    clasp --help
  to get a basic overview of options supported by clasp or
    clasp --help={2,3}
  for a more detailed list.

  In addition to printing status information, clasp also
  provides information about the computation via its exit status.
  The exit status is:
    10: if the problem was found to be satisfiable
    20: if the problem was proved to be unsatisfiable
    0 : if the satisfiability of problem is not known, 
        because search was either interrupted or not started
    127: if clasp ran out of memory
    Furthermore, the exit status of 1 indicates an error.

REFERENCES
[1] http://www.cs.uni-potsdam.de/wv/pdfformat/gekakaosscwa16b.pdf
[2] http://www.cs.uni-potsdam.de/wv/pdfformat/bogejakasc15b.pdf
[3] https://cmake.org/
[4] https://www.visualstudio.com/
[5] http://www.mingw.org/
[6] http://threadingbuildingblocks.org/
[7] http://www.microsoft.com/express/Downloads/
[8] http://www.stack.nl/~dimitri/doxygen/

About

A conflict-driven nogood learning answer set solver

http://www.cs.uni-potsdam.de/clasp/

License:GNU General Public License v2.0


Languages

Language:C++ 99.0%Language:Shell 0.3%Language:Batchfile 0.3%Language:CMake 0.2%Language:Makefile 0.2%