diff options
author | kirillrdy <kirillrdy@gmail.com> | 2024-01-19 16:21:09 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-19 16:21:09 +0900 |
commit | aa28799b9d4315e6aed6f30e398b9924f6668f11 (patch) | |
tree | de46f9d61f1126787c7858b7eb2a32711667abc0 /pkgs/by-name/ar | |
parent | 5da20659ca26d054b088cd11eac98f472ec061c9 (diff) | |
parent | 708f1b7d3c3ef986c89e3238be6a00a7819d52f4 (diff) |
Merge pull request #277278 from t4ccer/t4/approxmc
approxmc: init at 4.1.23
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"; + }; +}) |