pax_global_header00006660000000000000000000000064147445145740014531gustar00rootroot0000000000000052 comment=f7e57764c19cf35198830575492dc9d80e872b55 kissat-rel-4.0.2/000077500000000000000000000000001474451457400136125ustar00rootroot00000000000000kissat-rel-4.0.2/.clang-format000066400000000000000000000001451474451457400161650ustar00rootroot00000000000000AlignEscapedNewlines: DontAlign ColumnLimit: 76 SpaceBeforeParens: Always SpaceAfterCStyleCast: true kissat-rel-4.0.2/.gitignore000066400000000000000000000001161474451457400156000ustar00rootroot00000000000000build *.o *.a makefile build.h kissat tissat *.gcno *.gcda *.gcov gmon.out *~ kissat-rel-4.0.2/CONTRIBUTING000066400000000000000000000003641474451457400154470ustar00rootroot00000000000000At this point we want to keep complete ownership in one hand to particularly avoid any additional co-authorship claims. Thus please refrain from generating pull requests. Use the issue tracker or send email to 'armin.biere@gmail.com' instead. kissat-rel-4.0.2/LICENSE000066400000000000000000000022231474451457400146160ustar00rootroot00000000000000Copyright (c) 2021-2024 Armin Biere, University of Freiburg, Germany Copyright (c) 2019-2021 Armin Biere, Johannes Kepler University Linz, Austria Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. kissat-rel-4.0.2/NEWS.md000066400000000000000000000143311474451457400147120ustar00rootroot00000000000000Version 4.0.2 ------------- - support for setting printing prefix 'kissat_prefix' Version 4.0.1 ------------- - updated README to point to the 2024 system description - removed redundant line in congruence closure - fixed proof chain generation for matching ITE - fixed getting size of watches for `--compact` - more precise completion in congruence - writing DIMACS to `` with `-o -` - fixed reporting in congruence - fixed DIMACS writing Version 4.0.0 ------------- - source code matches competition version 'sc2024' - fast variable elimination during preprocessing (in `fastel.c`) - lucky phases as in `CaDiCaL` but before and after preprocessing and with unit extraction and SLURM semantics - reason jumping only for formulas with large binary clauses fraction - U-shaped delta scaling of probing and elimination interval - option `-o ` to write simplified formula to a file - dynamically increased reduced-clauses fraction (60% - 90%) - bounded variable addition (in `factor.c`) - clausal congruence closure algorithm (in `congruence.c`) - generic preprocessing phase (using a subset-set of simplifiers) - more vivification (tier0=irredundant,tier1,tier2,tier3) - added `--no-conflicts` as synonym to `--conflicts=0` - optimized and simplified vivification Version 3.1.1 ------------- - configuration option `--safe` disables writing through `popen` Version 3.1.0 ------------- - replaced `__gcov_flush` by `__gcov_dump` - moved to `clang-format` instead of `indent` - removed warnings for MacOS (latest clang) - added back irredundant clause vivification - reason jumping during binary reason clause chains - more focused sweeping (more effort and unscheduling) - probing and elimination preprocessing initially - relevancy and occurrence score based variable elimination - faster parsing and proof writing - no redundant virtual clauses anymore - doubled allowed maximum variable index to more than 1 billion variables Version 3.0.0 ------------- Removed from sc2022-light two heuristic bugs and went back to monotonically increasing version numbers (see also [`VERSION`](VERSION)). - avoid increasing number of conflicts during vivification - do set used flags (two bits) of learned clauses initially Thus we follow our plan to continue extending and maintaining this light version of Kissat on sc2022-light. Version sc2022-light -------------------- We started with version sc2022-bulky and then removed code which only gave a minor improvement on the last three SAT Competition 2019-2021. The goal was to shrink the code base in order to concentrate on the really useful algorithms and heuristics and thus prepare for extending the solver. This is the list of removed features: - autarky reasoning - eager forward and backward subsumption during variable elimination (relying on global forward subsumption instead) - caching and reusing of minimum assignments during local search - failed literal probing - hyper binary resolution - hyper ternary resolution - transitive reduction of the binary implication graph - eager subsumption of recently learned clauses during clause learning - xor gate extraction during variable elimination - alternative radix heap implementation for advanced shrinking - priority queue for variable elimination (elimination attempts of variables in the given variable order is now enforced) - delaying of inprocessing functions based on formula size (initially 'really' and if not successful 'delay') - reusing the trail during restarts - vivification of irredundant clauses - forced to keep untried elimination, backbone and vivification candidates for next inprocessing round (removed options to disable keeping them) - initial focused mode phase limited by conflicts only (not ticks anymore) Removing hyper binary resolution provided us with one more bit for encoding literals as virtual binary clauses kept only in watch lists do not have to be distinguish between being derived through hyper binary resolution or learned through conflict analysis. The former were often generated in huge amounts during failed-literal probing and had to be deleted during clause data-base reduction eagerly to avoid cloaking up the memory. As a consequence the solver now supports half a billion ('2^29-1') instead of a quarter billion ('2^28-1') variables in versions with hyper resolution. Version sc2022-hyper -------------------- This version can be seen as an intermediate version between sc2022-bulky and sc2022-light but actually evolved from an earlier version sc2022-light by adding back support for hyper binary resolution. This feature turns out to be somewhat useful for unsatisfiable formulas even though the improved SAT sweeping in sc2022-bulky and kept for sc2022-light covers up for some of the losses incurred by taking out hyper-binary resolution. Version sc2022-bulky -------------------- Compared to version 2.0.2 and thus the version submitted to the competition in 2021 we added the following features: - added ACIDS branching variable heuristics (disabled by default) - added CHB variable branching heuristic (but disabled by default) inspired by the success of 'kissat_mab' in the SAT Competition 2021 - faster randomization of phases in the Kitten sub-solver - using literal flipping for faster refinement during sweeping - literal flipping in a partial model obtained by Kitten - disabled priority queue for variable elimination (elimination attempts of variables in the given variable order is now enforced) - disabled by default reusing the trail during restarts - disabled by default hyper ternary resolution - obtain initial local search assignment through propagation (similar to the "warming-up" idea of Donald Knuth and how Shaowei Cai for "ReasonLS" solvers initializes the local search) - actual watch replacement of true literals during unit propagation instead of just updating the blocking literal (as suggested by Norbert Manthey) - fixed clause length and variable occurrences during variable elimination instead of increasing the limits dynamically (but very rarely actually) Version 2.0.2 ------------- - removed 'src/makefile' from git (set during configuration instead) kissat-rel-4.0.2/README.md000066400000000000000000000041501474451457400150710ustar00rootroot00000000000000[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) The Kissat SAT Solver ===================== Kissat is a "keep it simple and clean bare metal SAT solver" written in C. It is a port of CaDiCaL back to C with improved data structures, better scheduling of inprocessing and optimized algorithms and implementation. Coincidentally "kissat" also means "cats" in Finnish. Run `./configure && make test` to configure, build and test in `build`. Binaries are provided with each major [release](https://github.com/arminbiere/kissat/releases/). You can get more information about Kissat in the last solver description for the SAT Competition 2024:

Armin Biere, Tobias Faller, Katalin Fazekas, Mathias Fleury, Nils Froleyks and Florian Pollitt
CaDiCaL, Gimsatul, IsaSAT and Kissat Entering the SAT Competition 2024
Proc. SAT Competition 2024: Solver, Benchmark and Proof Checker Descriptions
Marijn Heule, Markus Iser, Matti Järvisalo, Martin Suda (editors)
Department of Computer Science Report Series B
vol. B-2024-1, pages 8-10, University of Helsinki 2024
[ paper | bibtex | cadical | kissat | gimsatul | medals ]

See [NEWS.md](NEWS.md) for feature updates. kissat-rel-4.0.2/VERSION000066400000000000000000000000061474451457400146560ustar00rootroot000000000000004.0.2 kissat-rel-4.0.2/configure000077500000000000000000000462331474451457400155310ustar00rootroot00000000000000#!/bin/sh asan=no check=unknown check_all=no check_heap=no check_kitten=no check_queue=no check_vectors=no check_walk=no compact=no coverage=no debug=no default=no extreme=no embedded=unknown kitten=unknown logging=unknown metrics=unknown m32=no options=yes optimize=unknown pedantic=unknown pic=no profile=no proofs=yes quiet=no safe=no sat=no shared=no static=no statistics=unknown symbols=unknown testdefault=unknown ultimate=no unsat=no passtocompiler="" passtolinker="" goals="libkissat.a kissat" usage () { cat < ... ] where