diff options
author | t4ccer <t4ccer@gmail.com> | 2023-12-28 01:26:05 -0700 |
---|---|---|
committer | t4ccer <t4ccer@gmail.com> | 2024-01-17 17:23:30 -0700 |
commit | 02f58ae811c0d7b4d887034629d9567d386fad15 (patch) | |
tree | 5de959df1c403c907e3cff259ad0285a42079f2c /pkgs/by-name/ar | |
parent | 7bb10566056603b575b9253b8aa68f1068106d47 (diff) |
arjun-cnf: init at 2.5.2
Diffstat (limited to 'pkgs/by-name/ar')
-rw-r--r-- | pkgs/by-name/ar/arjun-cnf/fix-red-clause.patch | 28 | ||||
-rw-r--r-- | pkgs/by-name/ar/arjun-cnf/package.nix | 48 |
2 files changed, 76 insertions, 0 deletions
diff --git a/pkgs/by-name/ar/arjun-cnf/fix-red-clause.patch b/pkgs/by-name/ar/arjun-cnf/fix-red-clause.patch new file mode 100644 index 0000000000000..a7f4d6755431f --- /dev/null +++ b/pkgs/by-name/ar/arjun-cnf/fix-red-clause.patch @@ -0,0 +1,28 @@ +diff --git a/src/arjun.cpp b/src/arjun.cpp +index d6ad786..119a267 100644 +--- a/src/arjun.cpp ++++ b/src/arjun.cpp +@@ -98,6 +98,11 @@ DLL_PUBLIC bool Arjun::add_clause(const vector<CMSat::Lit>& lits) + return arjdata->common.solver->add_clause(lits); + } + ++DLL_PUBLIC bool Arjun::add_red_clause(const vector<CMSat::Lit>& lits) ++{ ++ return arjdata->common.solver->add_red_clause(lits); ++} ++ + DLL_PUBLIC bool Arjun::add_xor_clause(const vector<uint32_t>& vars, bool rhs) + { + assert(false && "Funnily enough this does NOT work. The XORs would generate a BVA variable, and that would then not be returned as part of the simplified CNF. We could calculate a smaller independent set, but that's all."); +diff --git a/src/arjun.h b/src/arjun.h +index a39070c..907472a 100644 +--- a/src/arjun.h ++++ b/src/arjun.h +@@ -61,6 +61,7 @@ namespace ArjunNS { + void new_var(); + bool add_xor_clause(const std::vector<uint32_t>& vars, bool rhs); + bool add_clause(const std::vector<CMSat::Lit>& lits); ++ bool add_red_clause(const std::vector<CMSat::Lit>& lits); + bool add_bnn_clause( + const std::vector<CMSat::Lit>& lits, + signed cutoff, diff --git a/pkgs/by-name/ar/arjun-cnf/package.nix b/pkgs/by-name/ar/arjun-cnf/package.nix new file mode 100644 index 0000000000000..48e18272fda58 --- /dev/null +++ b/pkgs/by-name/ar/arjun-cnf/package.nix @@ -0,0 +1,48 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, cmake +, cryptominisat +, boost +, louvain-community +, lib +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "arjun-cnf"; + version = "2.5.2"; + + src = fetchFromGitHub { + owner = "meelgroup"; + repo = "arjun"; + rev = finalAttrs.version; + hash = "sha256-5duc05s654HLjbf+dPgyMn6QUVvB0vLji3M4S2o/QYU="; + }; + + # Can be removed after next release + patches = [ + (fetchpatch { + url = "https://github.com/meelgroup/arjun/commit/34188760f1ab4b1b557c45ccaee8d2b9b6f0b901.patch"; + hash = "sha256-E/yk2ohHP2BAFg353r8EU01bZCqeEjvpJCrBsxPiOWM="; + }) + # Based on https://github.com/meelgroup/arjun/commit/99c4ed4ad820674632c5d9bbcc98c001f8cac98f + ./fix-red-clause.patch + ]; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + boost + cryptominisat + louvain-community + ]; + + meta = with lib; { + description = "CNF minimizer and minimal independent set calculator"; + homepage = "https://github.com/meelgroup/arjun"; + license = licenses.mit; + maintainers = with maintainers; [ t4ccer ]; + platforms = platforms.linux; + mainProgram = "arjun"; + }; +}) |