-
Notifications
You must be signed in to change notification settings - Fork 0
Preprcessor for Propagation Redundant Clause Learning
License
jreeves3/PReLearn
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
# PReLearn Preprocessor for Propagation Redundant Clause Learning PReLearn is a SAT preprocessor built from the SDCL solver SaDiCaL. (found at http://fmv.jku.at/sadical/) PReLearn modifies the outer solver of SaDiCaL to find and learn PR clauses. The PR clauses are written to a file along with the PR proof (associating a witness with each clause). Proofs can be verified with dpr-trim. (found at https://github.com/marijnheule/dpr-trim) The PR clauses can be appended to the original formula and solved by a SAT solver such as Kissat. (found at https://github.com/arminbiere/kissat) This respository contains evaluation results for the mutilated chessboard problem and some SAT competition benchmarks. Results using preprocessing and variable permutation for the JAR 23 submission are also available, with a Python script for extracting tables and figures. To build use cd PReLearn ./configure.sh && make To run on a CNF formula use ./sadical [--pre_{option}] formula Default options correspond with the CADE '22 submission other than --pre_iterations=50. For extending depth of neighbors use --pre_neighbors_depth=[i] \\ default i=0 Note i=0 corresponds with a single call to neighbors, denoted neighbors(1) in the paper. For the reduced heuristic to construct candidates instead of neighbors use --pre_reduced=1 For only negative literals (-p) in the frist variable of a PR clause use --pre_both_phases=0 For batch learning use --pre_addinstant=0 \\ default addinstant=1 learns clauses as they are found --pre_batch_size=[i] and to determine how clauses are added per batch --pre_batch_random=1 or --pre_batch_sort=1 For learning clauses up to length i --pre_length_end=[i] \\ default 3, so only binary clauses or units learned Output files include pr_units.cnf - list of units (pr units and failed literals) learned pr_units_full.dpr - units with witnesses (dpr proof format) pr_clauses.cnf - list of clauses learned pr_clauses_full.dpr - list of clauses and witnesses (dpr proof format) Additional output information included in the terminal ouptut for every completed iteration and upon exiting. This output contains commulative resulsts after each iteration. To solve an instance use timeout 100s ./sadical [--pre_<options>] formula cat formula pr_clauses.cnf > formula_with_PR.cnf ./kissat formula_with_PR.cnf --relaxed To solve and verify a complete refutation proof use timeout 100s ./sadical [--pre_<options>] formula cat formula pr_clauses.cnf > formula_with_PR.cnf ./kissat formula_with_PR.cnf proof --relaxed --no-binary cat pr_clauses_full.dpr proof > complete_proof.pr ./dpr-trim formula complete_proof.pr To verify PReLearn proof is a correct derivation use timeout 100s ./sadical [--pre_<options>] formula ./dpr-trim formula pr_clauses_full.dpr -f
About
Preprcessor for Propagation Redundant Clause Learning
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published