π§© Application Programming Interface (API) for solving Boolean satisfiability problems
A step-by-step tutorial demonstrating Satisfier API (client.cpp, satisfier.hpp, satisfier.dll, libsatisfier.a) integration with Code::Blocks C++ project, using Dynamic Link Library (DLL). For resources on origin of the word "satisfier", read Harvey M. Friedman Adventures in Logic for Undergraduates, and The Dynmamics of Decision-Making Styles (Decision Dynamics Europe).
π Prerequisites
Operating System: Windows with Code::Blocks + MinGW
Files required in your project folder:
client.cppsatisfier.hppsatisfier.dlllibsatisfier.a
If you are downloading Code::Blocks for the first time, then you don't need this tutorial. Just download and extract
codeblocks-satisfier-nosetup.zipvia https://huggingface.co/caletechnology/codeblocks-satisfier-nosetup/tree/main, then openclient.cpp
ποΈ Integration
Create Console Project
File β New β Project β Console Application (C++)Add files
Copyclient.cpp,satisfier.hppinto the project directory.Linker Settings
Copy .dll
- Comment erroneous code in main function of
client.cpp - Build your project to compile
.exeexecutable - Copy
satisfier.dllnext to the compiled executable - Uncomment code in the main function of
client.cpp
- Comment erroneous code in main function of
Build & Run
- Press F9βthe project dynamically loads the DLL at runtime.
β‘ Proofs
Regarding context rule, read Yannis Kassios Formal Proof. Also read A. N. Prior The Runabout Inference-Ticket, to prove that A. And (B) is not equivalent to A. Tonk (B). Nuel D. Belnap Tonk, Plonk and Plink says that both A,B are deducible from A. And (B) in synthetic mode of logic relying on context.
When using Satisfier API to do formal proof, if you have consecutive disjunctions e.g., A. Or (B). Or (C) and you supposed only literal C is true, then type C. Or (A). Or (B) instead of A. Or (B). Or (C) to minimize number of recommendations from the API.