d4Solver 0.1.0__cp39-cp39-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. d4solver-0.1.0.dist-info/DELVEWHEEL +2 -0
  2. d4solver-0.1.0.dist-info/METADATA +225 -0
  3. d4solver-0.1.0.dist-info/RECORD +161 -0
  4. d4solver-0.1.0.dist-info/WHEEL +5 -0
  5. d4solver.libs/.load-order-d4solver-0.1.0 +3 -0
  6. d4solver.libs/gmp-10-521f5d57a531da7f2ddd75a64634bf47.dll +0 -0
  7. d4solver.libs/gmpxx-4-1aec0d72b737c81b6397e2967c9be349.dll +0 -0
  8. d4solver.libs/msvcp140-484f56d9de72c048820300919dc49e56.dll +0 -0
  9. include/__init__.py +29 -0
  10. include/optree/EnumMetadata.hpp +63 -0
  11. include/optree/Option.hpp +198 -0
  12. include/optree/OptionBase.hpp +46 -0
  13. include/optree/OptionGroup.hpp +75 -0
  14. include/optree/OptionJson.hpp +257 -0
  15. include/optree/OptionRegistry.hpp +352 -0
  16. include/py-d4-standard/ActivityManager.hpp +33 -0
  17. include/py-d4-standard/Alg.hpp +82 -0
  18. include/py-d4-standard/Alloc.hpp +128 -0
  19. include/py-d4-standard/AndGatesExtractor.hpp +51 -0
  20. include/py-d4-standard/AtMost1Extractor.hpp +67 -0
  21. include/py-d4-standard/BadBehaviourException.hpp +48 -0
  22. include/py-d4-standard/BranchingHeuristic.hpp +221 -0
  23. include/py-d4-standard/BranchingHeuristicClassic.hpp +70 -0
  24. include/py-d4-standard/BranchingHeuristicHybridPartialClassic.hpp +92 -0
  25. include/py-d4-standard/BranchingHeuristicLargeArity.hpp +76 -0
  26. include/py-d4-standard/BucketAllocator.hpp +112 -0
  27. include/py-d4-standard/BucketException.hpp +48 -0
  28. include/py-d4-standard/BucketInConstruction.hpp +69 -0
  29. include/py-d4-standard/BucketManager.hpp +97 -0
  30. include/py-d4-standard/BucketSortInfo.hpp +45 -0
  31. include/py-d4-standard/BufferRead.hpp +172 -0
  32. include/py-d4-standard/CacheCleaningExpectation.hpp +155 -0
  33. include/py-d4-standard/CacheCleaningManager.hpp +81 -0
  34. include/py-d4-standard/CacheCleaningNone.hpp +48 -0
  35. include/py-d4-standard/CacheList.hpp +185 -0
  36. include/py-d4-standard/CacheManager.hpp +253 -0
  37. include/py-d4-standard/CacheNoCollision.hpp +142 -0
  38. include/py-d4-standard/CachedBucket.hpp +70 -0
  39. include/py-d4-standard/CircuitManager.hpp +94 -0
  40. include/py-d4-standard/CircuitManagerDyn.hpp +56 -0
  41. include/py-d4-standard/CircuitWithCnfManager.hpp +55 -0
  42. include/py-d4-standard/ClauseInfo.hpp +32 -0
  43. include/py-d4-standard/CnfManager.hpp +228 -0
  44. include/py-d4-standard/CnfManagerDyn.hpp +182 -0
  45. include/py-d4-standard/CnfManagerDynBlockedCl.hpp +81 -0
  46. include/py-d4-standard/CnfManagerDynPure.hpp +70 -0
  47. include/py-d4-standard/Counter.hpp +54 -0
  48. include/py-d4-standard/DataBranch.hpp +37 -0
  49. include/py-d4-standard/DataInfo.hpp +74 -0
  50. include/py-d4-standard/DataOccurrence.hpp +114 -0
  51. include/py-d4-standard/DpllStyleMethod.hpp +544 -0
  52. include/py-d4-standard/EnumMetadata.hpp +25 -0
  53. include/py-d4-standard/EquivExtractor.hpp +43 -0
  54. include/py-d4-standard/ErrorCode.hpp +28 -0
  55. include/py-d4-standard/ExistRandomExist.hpp +1122 -0
  56. include/py-d4-standard/FactoryException.hpp +48 -0
  57. include/py-d4-standard/FormulaManager.hpp +272 -0
  58. include/py-d4-standard/FormulaStore.hpp +48 -0
  59. include/py-d4-standard/FormulaStoreCnf.hpp +96 -0
  60. include/py-d4-standard/FormulaStoreCnfCl.hpp +95 -0
  61. include/py-d4-standard/FormulaStoreCnfCombi.hpp +52 -0
  62. include/py-d4-standard/FormulaStoreCnfIndex.hpp +44 -0
  63. include/py-d4-standard/FormulaStoreCnfSym.hpp +91 -0
  64. include/py-d4-standard/Graph.hpp +88 -0
  65. include/py-d4-standard/GraphExtractor.hpp +71 -0
  66. include/py-d4-standard/GraphExtractorCircuit.hpp +41 -0
  67. include/py-d4-standard/GraphExtractorCircuitPrimal.hpp +44 -0
  68. include/py-d4-standard/GraphExtractorCnf.hpp +49 -0
  69. include/py-d4-standard/GraphExtractorCnfPrimal.hpp +46 -0
  70. include/py-d4-standard/HashString.hpp +39 -0
  71. include/py-d4-standard/Heap.hpp +145 -0
  72. include/py-d4-standard/HyperEdge.hpp +56 -0
  73. include/py-d4-standard/HyperGraph.hpp +71 -0
  74. include/py-d4-standard/HyperGraphExtractor.hpp +100 -0
  75. include/py-d4-standard/HyperGraphExtractorCnfDual.hpp +70 -0
  76. include/py-d4-standard/IntTypes.hpp +42 -0
  77. include/py-d4-standard/Map.hpp +192 -0
  78. include/py-d4-standard/MaxSharpSAT.hpp +939 -0
  79. include/py-d4-standard/MaxT.hpp +924 -0
  80. include/py-d4-standard/MemoryStat.hpp +136 -0
  81. include/py-d4-standard/MethodManager.hpp +76 -0
  82. include/py-d4-standard/MinSharpSAT.hpp +629 -0
  83. include/py-d4-standard/MpzTypes.hpp +31 -0
  84. include/py-d4-standard/NodeException.hpp +48 -0
  85. include/py-d4-standard/Option.hpp +8 -0
  86. include/py-d4-standard/OptionBase.hpp +7 -0
  87. include/py-d4-standard/OptionBranchingHeuristic.hpp +147 -0
  88. include/py-d4-standard/OptionBucketManager.hpp +73 -0
  89. include/py-d4-standard/OptionCacheCleaningManager.hpp +45 -0
  90. include/py-d4-standard/OptionCacheManager.hpp +50 -0
  91. include/py-d4-standard/OptionDpllStyleMethod.hpp +82 -0
  92. include/py-d4-standard/OptionEREMethod.hpp +85 -0
  93. include/py-d4-standard/OptionException.hpp +48 -0
  94. include/py-d4-standard/OptionFormulaManager.hpp +82 -0
  95. include/py-d4-standard/OptionGroup.hpp +8 -0
  96. include/py-d4-standard/OptionMaxSharpSatMethod.hpp +73 -0
  97. include/py-d4-standard/OptionMaxTMethod.hpp +78 -0
  98. include/py-d4-standard/OptionMethodManager.hpp +38 -0
  99. include/py-d4-standard/OptionMinSharpSatMethod.hpp +73 -0
  100. include/py-d4-standard/OptionOperationManager.hpp +64 -0
  101. include/py-d4-standard/OptionPartialOrderHeuristic.hpp +136 -0
  102. include/py-d4-standard/OptionProjMcMethod.hpp +68 -0
  103. include/py-d4-standard/OptionQbfCounter.hpp +64 -0
  104. include/py-d4-standard/OptionRegistry.hpp +7 -0
  105. include/py-d4-standard/OptionRoot.hpp +43 -0
  106. include/py-d4-standard/OptionSolver.hpp +83 -0
  107. include/py-d4-standard/Options.hpp +385 -0
  108. include/py-d4-standard/ParserException.hpp +48 -0
  109. include/py-d4-standard/PartialOrderHeuristic.hpp +74 -0
  110. include/py-d4-standard/PartialOrderHeuristicGiven.hpp +64 -0
  111. include/py-d4-standard/PartialOrderHeuristicNone.hpp +32 -0
  112. include/py-d4-standard/PartialOrderHeuristicTreeDecomp.hpp +74 -0
  113. include/py-d4-standard/PartitionerManager.hpp +73 -0
  114. include/py-d4-standard/PartitionerPatoh.hpp +45 -0
  115. include/py-d4-standard/PhaseHeuristic.hpp +41 -0
  116. include/py-d4-standard/PhaseHeuristicFalse.hpp +28 -0
  117. include/py-d4-standard/PhaseHeuristicOccurrence.hpp +34 -0
  118. include/py-d4-standard/PhaseHeuristicPolarity.hpp +34 -0
  119. include/py-d4-standard/PhaseHeuristicTrue.hpp +28 -0
  120. include/py-d4-standard/PolarityManager.hpp +29 -0
  121. include/py-d4-standard/ProblemManager.hpp +309 -0
  122. include/py-d4-standard/ProblemTypes.hpp +136 -0
  123. include/py-d4-standard/ProjMCMethod.hpp +682 -0
  124. include/py-d4-standard/QbfCounter.hpp +510 -0
  125. include/py-d4-standard/Queue.hpp +61 -0
  126. include/py-d4-standard/ScoringMethod.hpp +51 -0
  127. include/py-d4-standard/ScoringMethodDlcs.hpp +33 -0
  128. include/py-d4-standard/ScoringMethodJwts.hpp +33 -0
  129. include/py-d4-standard/ScoringMethodMom.hpp +33 -0
  130. include/py-d4-standard/ScoringMethodVsads.hpp +37 -0
  131. include/py-d4-standard/ScoringMethodVsids.hpp +33 -0
  132. include/py-d4-standard/SemiringConcept.hpp +58 -0
  133. include/py-d4-standard/Solver.hpp +947 -0
  134. include/py-d4-standard/SolverTypes.hpp +601 -0
  135. include/py-d4-standard/Sort.hpp +96 -0
  136. include/py-d4-standard/TmpEntry.hpp +47 -0
  137. include/py-d4-standard/Translator.hpp +113 -0
  138. include/py-d4-standard/TreeDecomposition.hpp +271 -0
  139. include/py-d4-standard/TreeDecompositionPartition.hpp +61 -0
  140. include/py-d4-standard/TreeDecompositionTreeWidth.hpp +70 -0
  141. include/py-d4-standard/TreeDecompositioner.hpp +75 -0
  142. include/py-d4-standard/TreeDecompositionerFlowCutter.hpp +73 -0
  143. include/py-d4-standard/TreeDecompositionerHtd.hpp +58 -0
  144. include/py-d4-standard/Vec.hpp +156 -0
  145. include/py-d4-standard/WrapperCircuitGlucose.hpp +33 -0
  146. include/py-d4-standard/WrapperCircuitMinisat.hpp +30 -0
  147. include/py-d4-standard/WrapperGlucose.hpp +76 -0
  148. include/py-d4-standard/WrapperMinisat.hpp +77 -0
  149. include/py-d4-standard/WrapperSolver.hpp +113 -0
  150. include/py-d4-standard/XAlloc.hpp +43 -0
  151. lib/__init__.py +29 -0
  152. lib/d4.lib +0 -0
  153. py_d4/__init__.py +95 -0
  154. py_d4/_py_d4.cp39-win_amd64.pyd +0 -0
  155. py_d4/_py_d4.pyi +551 -0
  156. py_d4/options.py +27 -0
  157. py_d4/py.typed +1 -0
  158. share/__init__.py +29 -0
  159. share/cmake/optree/optreeConfig.cmake +1 -0
  160. share/cmake/optree/optreeConfigVersion.cmake +65 -0
  161. share/cmake/optree/optreeTargets.cmake +106 -0
@@ -0,0 +1,2 @@
1
+ Version: 1.13.0
2
+ Arguments: ['C:\\Users\\jmcla\\AppData\\Local\\Temp\\cibw-run-okvfe56f\\cp39-win_amd64\\build\\venv\\Scripts\\delvewheel', 'repair', '--add-path', 'C:\\vcpkg\\installed\\x64-windows\\bin', '-w', 'C:\\Users\\jmcla\\AppData\\Local\\Temp\\cibw-run-okvfe56f\\cp39-win_amd64\\repaired_wheel', 'C:\\Users\\jmcla\\AppData\\Local\\Temp\\cibw-run-okvfe56f\\cp39-win_amd64\\built_wheel\\d4solver-0.1.0-cp39-cp39-win_amd64.whl']
@@ -0,0 +1,225 @@
1
+ Metadata-Version: 2.2
2
+ Name: d4Solver
3
+ Version: 0.1.0
4
+ Summary: Python bindings for the D4 model counter and compiler
5
+ Author-Email: Logical Team <contact@univ-artois.fr>
6
+ Classifier: Programming Language :: C++
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Requires-Python: >=3.9
10
+ Description-Content-Type: text/markdown
11
+
12
+ # py-d4
13
+
14
+ Python bindings for the **D4** compiler and model counter, supporting option structures, CNF files, custom clause vectors, logic circuits, weighted model counting, and d-DNNF queries. Built with `nanobind` and `scikit-build-core`.
15
+
16
+ ---
17
+
18
+ ## 🚀 Users Guide
19
+
20
+ ### 1. Installation
21
+
22
+ Install the package directly from your GitLab PyPI package registry (typically configured in your CI or local `.pip/pip.conf`):
23
+
24
+ ```bash
25
+ pip install d4Solver --extra-index-url https://gitlab.univ-artois.fr/api/v4/projects/<PROJECT_ID>/packages/pypi/simple
26
+ ```
27
+
28
+ ### 2. Usage Examples
29
+
30
+ #### 2.1 Basic Model Counting
31
+
32
+ You can instantiate a `Solver` using a CNF filepath or raw Python clause structures (list of lists/tuples of literals, 1-based indexing):
33
+
34
+ ```python
35
+ import py_d4
36
+
37
+ # 1. Option A: Load from a DIMACS CNF file
38
+ solver = py_d4.Solver("path/to/formula.cnf")
39
+
40
+ # 2. Option B: Pass raw Python clauses and total variable count
41
+ # Formula: (x1 or x2) and (not x2 or x3)
42
+ clauses = [
43
+ [1, 2],
44
+ [-2, 3]
45
+ ]
46
+ nb_vars = 3
47
+ solver = py_d4.Solver(clauses, nb_vars)
48
+
49
+ # Run model counting
50
+ count_res = solver.count()
51
+ print(f"Number of models: {count_res.getResult()}") # Large integer as string (GMP support)
52
+ print(f"As Python integer: {count_res.getIntResult()}") # Safe python int
53
+ ```
54
+
55
+ #### 2.2 Compilation to d-DNNF
56
+
57
+ `py-d4` can compile CNF formulas and circuits into Decision Diagram / Deterministic Decomposable Negation Normal Form (d-DNNF):
58
+
59
+ ```python
60
+ import py_d4
61
+
62
+ clauses = [[1, 2], [-2, 3]]
63
+ solver = py_d4.Solver(clauses, 3)
64
+
65
+ # Compile
66
+ compile_res = solver.compile()
67
+
68
+ # Access compiled graph statistics
69
+ print(f"Nodes in d-DNNF: {compile_res.getNbNodes()}")
70
+ print(f"Edges in d-DNNF: {compile_res.getNbEdges()}")
71
+
72
+ # Get the compiled NNF circuit string (in standard d-DNNF format)
73
+ nnf_str = compile_res.getNNFString()
74
+ print("NNF String:\n", nnf_str)
75
+ ```
76
+
77
+ #### 2.3 Querying the Compiled d-DNNF
78
+
79
+ Once compiled, you can run multiple queries (SAT checks or model counting) under different literal assumptions:
80
+
81
+ ```python
82
+ # Check if the formula is satisfiable (no assumptions)
83
+ is_sat = compile_res.isSAT([]) # True/False
84
+
85
+ # Check satisfiability assuming x1 is True (1) and x2 is False (-2)
86
+ is_sat_under_assumptions = compile_res.isSAT([1, -2])
87
+
88
+ # Count models under literal assumptions
89
+ # E.g., model count assuming x1 is True
90
+ count_under_x1 = compile_res.count([1])
91
+ print(f"Models satisfying x1: {count_under_x1}")
92
+ ```
93
+
94
+ #### 2.4 Weighted Model Counting (WMC)
95
+
96
+ You can assign weights to literals for exact weighted model counting:
97
+
98
+ ```python
99
+ import py_d4
100
+
101
+ # Formula: (x1 or x2)
102
+ solver = py_d4.Solver([[1, 2]], nb_vars=2)
103
+
104
+ # Define weights for literals (keys are 1-based literals, values are string representations)
105
+ weights = {
106
+ 1: "0.3",
107
+ -1: "0.7",
108
+ 2: "0.4",
109
+ -2: "0.6"
110
+ }
111
+ # Set weights (WeightType can be FLOAT or GMP)
112
+ solver.setWeights(weights, py_d4.WeightType.FLOAT)
113
+
114
+ # Compute WMC directly
115
+ count_res = solver.count()
116
+ print("WMC Result:", float(count_res.getResult())) # Output: 0.58
117
+
118
+ # Or compile and query WMC under assumptions
119
+ compile_res = solver.compile()
120
+ print("WMC under x1=True:", float(compile_res.count([1]))) # Output: 0.3
121
+ ```
122
+
123
+ #### 2.5 Logic Gates / Circuit Compilation
124
+
125
+ Instead of CNF, you can initialize the solver with logic gates to compile or count structured circuits:
126
+
127
+ ```python
128
+ import py_d4
129
+
130
+ # Create a gate representing: x3 = x1 AND (not x2)
131
+ gate = py_d4.Gate()
132
+ gate.gateType = py_d4.GateType.AND
133
+ gate.inputs = [1, -2]
134
+ gate.output = 3
135
+
136
+ # Instantiate solver from gate specifications
137
+ solver = py_d4.Solver([gate], nb_vars=3)
138
+ print("Models for circuit:", solver.count().getIntResult())
139
+ ```
140
+
141
+ #### 2.6 Solver Configuration & Options
142
+
143
+ Fine-tune the behavior of D4 by mutating native C++ option structures. Documentation and description of settings are exposed natively as Python docstrings:
144
+
145
+ ```python
146
+ import py_d4
147
+
148
+ # Instantiate default options
149
+ opt = py_d4.OptionDpllStyleMethod()
150
+
151
+ # 1. Read Option Descriptions (C++ docstrings exposed to Python)
152
+ print(py_d4.OptionDpllStyleMethod.exploitModel.__doc__)
153
+ # Output: "If we exploit model during search"
154
+
155
+ # 2. Modify properties directly (with type safety)
156
+ opt.precision = 30
157
+ opt.exploitModel = False
158
+ opt.optionSolver.solverName = 0 # 0: glucose, 1: minisat
159
+
160
+ # 3. Modify nested option group settings
161
+ opt.optionBranchingHeuristic.freqDecay = 98
162
+
163
+ # 4. Pass options to the Solver
164
+ solver = py_d4.Solver("formula.cnf", opt)
165
+
166
+ # 5. Serialize options to/from standard Python Dictionaries
167
+ config_dict = py_d4.dump_options_to_dict(opt)
168
+ opt_restored = py_d4.load_options_from_dict(config_dict)
169
+
170
+ # 6. Serialize options to/from raw JSON Strings (via native C++ bindings)
171
+ json_str = py_d4._py_d4.dump_options_to_json(opt)
172
+ opt_restored_json = py_d4._py_d4.load_options_from_json(json_str)
173
+ ```
174
+
175
+ ---
176
+
177
+ ## 🛠️ Developers Guide
178
+
179
+ ### 1. Requirements
180
+
181
+ Before building locally, ensure the following system-level dependencies are installed on your host:
182
+ - C++20 compatible compiler (e.g. GCC >= 10, Clang >= 10)
183
+ - CMake (>= 3.15)
184
+ - GMP development headers (`libgmp-dev` / `gmp-devel`)
185
+ - Zlib development headers (`zlib1g-dev` / `zlib-devel`)
186
+
187
+ ### 2. Local Build Pipeline
188
+
189
+ To compile the C++ extension module and deploy it directly inside your local Python package tree, run:
190
+
191
+ ```bash
192
+ # 1. Provide your GitLab access token to clone the D4 dependency
193
+ export GITLAB_TOKEN_LOGICAL="your_gitlab_token"
194
+
195
+ # 2. Configure, generate bindings, compile, and deploy shared library
196
+ ./build.sh
197
+ ```
198
+
199
+ Alternatively, you can install the package in editable mode via pip:
200
+ ```bash
201
+ pip install -e .
202
+ ```
203
+
204
+ ### 3. Re-Generating Bindings
205
+
206
+ If D4 option headers change, you can automatically parse the new C++ classes and inline constructor descriptions to rebuild the `nanobind` bindings:
207
+
208
+ ```bash
209
+ python3 scripts/generate_bindings.py /path/to/local/d4
210
+ ```
211
+ *(If `/path/to/local/d4` is omitted, the script automatically searches the CMake FetchContent directory).*
212
+
213
+ ### 4. Running Tests
214
+
215
+ To execute the test suite and verify the integrity of the wrapper:
216
+
217
+ ```bash
218
+ LD_PRELOAD=$(gcc -print-file-name=libstdc++.so.6) PYTHONPATH=. python3 tests/test_options.py
219
+ ```
220
+
221
+ ### 5. GitLab CI/CD Pipeline
222
+
223
+ The project includes an automated multi-stage `.gitlab-ci.yml` pipeline:
224
+ - **Build Stage**: Uses `cibuildwheel` to compile optimized, standalone Linux wheels for Python 3.8 to 3.13. It automatically routes the group-level `GITLAB_TOKEN_LOGICAL` CI variable to authenticate both the `py-d4` and internal `d4`/`optree` sub-project checkouts.
225
+ - **Deploy Stage**: Triggered on pushing Git tags. Automatically publishes the generated wheel packages directly to the GitLab project PyPI package registry using `twine`.
@@ -0,0 +1,161 @@
1
+ d4solver-0.1.0.dist-info/DELVEWHEEL,sha256=dSEswSwTg7ro9AjNNaixXHYXOSUEUSPtczQDMMpz1us,434
2
+ d4solver-0.1.0.dist-info/METADATA,sha256=XLJbz2j6VHPwzkjXyS-a0zwLD0B7COH0EqQRX6PahlY,6996
3
+ d4solver-0.1.0.dist-info/RECORD,,
4
+ d4solver-0.1.0.dist-info/WHEEL,sha256=jZUvyGBCQrKVx2-MUp-gceh00vI_BpQj-dsg9mVPBY0,103
5
+ d4solver.libs/.load-order-d4solver-0.1.0,sha256=JLvkuJrVdExkN74gKXGKhtX9HhEFTen54e9_esnNhY8,135
6
+ d4solver.libs/gmp-10-521f5d57a531da7f2ddd75a64634bf47.dll,sha256=Uh9dV6Ux2n8t3XWmRjS_R6xFy_jAqitZQNhB5mhXlqE,423424
7
+ d4solver.libs/gmpxx-4-1aec0d72b737c81b6397e2967c9be349.dll,sha256=ph9Yg908BAzNwGoQrzcMsO9cW23twhLJ0QlBi4hTyR4,27136
8
+ d4solver.libs/msvcp140-484f56d9de72c048820300919dc49e56.dll,sha256=SE9W2d5ywEiCAwCRncSeVtm8O7RWdnkNPu60BsFCjCk,568712
9
+ include/__init__.py,sha256=Zn0lfL13i8oze3nyGmRZW32A6pVMT0F9HDKZQBZNc28,1570
10
+ include/optree/EnumMetadata.hpp,sha256=cj62izIeeV9eS2j_ZPLM3x83Xta-Tmmd9j2JJfDEWgw,1821
11
+ include/optree/Option.hpp,sha256=k6ZfXLBrcDKxRxFz8lw5RVq14T69kHYUR5F4vfUQzYw,5803
12
+ include/optree/OptionBase.hpp,sha256=AYqym2Hv1Uz-ysG9o7t9oTn_FFI3LbZVd4TdkP8V_LY,1543
13
+ include/optree/OptionGroup.hpp,sha256=aOHsmoldHwoabRx7jRMz31SoILTyhhpkeVXVtBeOSR8,2239
14
+ include/optree/OptionJson.hpp,sha256=wkWPMkYnmdz7hcEe_hCAL3dsKF1VBGzQ8_KuL8Yti98,7988
15
+ include/optree/OptionRegistry.hpp,sha256=pksvrMcES3dN32TsFZKFVuaurIzo9DQcQ5PdEXr68dE,13121
16
+ include/py-d4-standard/ActivityManager.hpp,sha256=rc6syVLEl1kMU-9hDgd285i-nwEvom4GNZWbWuMgmeI,1239
17
+ include/py-d4-standard/Alg.hpp,sha256=RFhMjm4TwjqGxG5iO2lFZhiRFMOQLwTZOB6qG-Lemes,2780
18
+ include/py-d4-standard/Alloc.hpp,sha256=01QcLu-LgdXvi5JmSUkHJvmjeONUjdjpSSiVCsSPDW8,4287
19
+ include/py-d4-standard/AndGatesExtractor.hpp,sha256=s23xhF3rl193S5zKM1zGTf3zy1OXb1_P5OxSaRVvPls,1518
20
+ include/py-d4-standard/AtMost1Extractor.hpp,sha256=f9xxfW7M2U0o5DxYwCo_KurtMaLTi0UmFyqLf71XUUk,1967
21
+ include/py-d4-standard/BadBehaviourException.hpp,sha256=v4o-4ZKEqKA3b-oEvgaEbjKVu-zKxL2jYwzAKesoAx8,1532
22
+ include/py-d4-standard/BranchingHeuristic.hpp,sha256=mU8Y5VI9FUm-0KZU5uq_eAgaeMjRDsVJPELkklqwgWo,7971
23
+ include/py-d4-standard/BranchingHeuristicClassic.hpp,sha256=L7ZRE-zyYGo-BnIu0yd1CX4lnkIDYezHum6UMU1UAFY,2845
24
+ include/py-d4-standard/BranchingHeuristicHybridPartialClassic.hpp,sha256=ntIJqEaAfQ8lVrShx5gkqHBBfjd9DXCl4cdOmk6wShs,3666
25
+ include/py-d4-standard/BranchingHeuristicLargeArity.hpp,sha256=bchVaERu1uX26bDBn5vCbTXIzYvrQymEaiesALr34Ks,3193
26
+ include/py-d4-standard/BucketAllocator.hpp,sha256=30KF0pScuQjV89qXEsX7IhFqRF4xdg_oummrLXRIklY,3991
27
+ include/py-d4-standard/BucketException.hpp,sha256=reOQi76jxIB5mhpgJ7-cxtdvsr3zdn8u7OrtS6j0DFc,1520
28
+ include/py-d4-standard/BucketInConstruction.hpp,sha256=BEYT_pxE5SC3Ji3uHFqIinl7VQ2AG-lCkYKojXLWwuk,2164
29
+ include/py-d4-standard/BucketManager.hpp,sha256=JDorIW4IUgbp1Zy5rGZJxCOAcZGGut68evtbaT4UJFQ,2968
30
+ include/py-d4-standard/BucketSortInfo.hpp,sha256=eCJnQsKZ5GpsnL5my4zlHQnd039KK4pFQnZ1mU1yJ2s,1493
31
+ include/py-d4-standard/BufferRead.hpp,sha256=QHSqNzEtYIPEjo4VfHDErHktAIWNNQJ_ar7B6Nd9eUM,4251
32
+ include/py-d4-standard/CacheCleaningExpectation.hpp,sha256=TOkxgfkbqGytOEz6vkrVmbdB3xcVFm1KCVpQzg7V32c,4706
33
+ include/py-d4-standard/CacheCleaningManager.hpp,sha256=lr2fdCUbEd4MnCl_JM9YnGiZSNvAj-Cbo5DAyabVkL8,2908
34
+ include/py-d4-standard/CacheCleaningNone.hpp,sha256=jTzx7jsNJtYTTWa4F__l6fgUs1r-HlF_Tro8_7qk2lk,1588
35
+ include/py-d4-standard/CachedBucket.hpp,sha256=kZFP0Wbq7Y2MxMcgBPzbDjaJMsvrf6fGXYGzP9Kg9JY,2053
36
+ include/py-d4-standard/CacheList.hpp,sha256=wHsRXsjOJpXMk-YlKKDUuVu7ea8UgzrUx4xJM1_R5GI,5663
37
+ include/py-d4-standard/CacheManager.hpp,sha256=NjSr68fkouiA_11hL0ehgwKPENEHGzvDDtlzBw-xCu0,8876
38
+ include/py-d4-standard/CacheNoCollision.hpp,sha256=VLaX5jWEHZIjKi48mNGjuyP4FDatzmPrg5NzvVrnsMU,4493
39
+ include/py-d4-standard/CircuitManager.hpp,sha256=5okugdLTkmGy2c7c9pek3g5uMMx_MLZUOr7JEqeMYww,3443
40
+ include/py-d4-standard/CircuitManagerDyn.hpp,sha256=WpreEgWRn2FEijR8kxzHaZETPT4Y2fgx0xAt3vb45dc,2280
41
+ include/py-d4-standard/CircuitWithCnfManager.hpp,sha256=L_9emw8xOP2GtSzOa4odSlVAiQOKZMKU-SfS3q-Woo4,2098
42
+ include/py-d4-standard/ClauseInfo.hpp,sha256=HxFkDS7ptq1ovPtbZpk7es2kS1eQ8B_KT_7HuzyK8cA,1130
43
+ include/py-d4-standard/CnfManager.hpp,sha256=rHx8lD2hrSoDlV5Wzc72v-Sn14G_NjokzZho6WHuc88,7885
44
+ include/py-d4-standard/CnfManagerDyn.hpp,sha256=Y7bVxEbw5xQAoJ3L9O2CjyP6lmR7ISonBcojflmGiHI,6062
45
+ include/py-d4-standard/CnfManagerDynBlockedCl.hpp,sha256=-ASyyl_0ZXb8-8WmKexQiiVG4M_TuFqHWE1Ut3Arnd0,2698
46
+ include/py-d4-standard/CnfManagerDynPure.hpp,sha256=JC3-oUpJ3_BeOaZuG-88Br1Ar6XfeCx2bcspcG756Zk,2161
47
+ include/py-d4-standard/Counter.hpp,sha256=WggUpl0r7ZE_0GmMMzKe2gzcv24JA3sYG7VL9RZZ4bA,1700
48
+ include/py-d4-standard/DataBranch.hpp,sha256=xhqsaFJi-rxRSCfRbgE2SA8BaGcx3VTLVl1ebJLUH2o,1184
49
+ include/py-d4-standard/DataInfo.hpp,sha256=-g0kX0x3m2hc94urR_7vJVJBNoVgUA3lNXBJvxZk5vY,2033
50
+ include/py-d4-standard/DataOccurrence.hpp,sha256=mFrXL7ftW-Bga3-MmtJ3Ed4IynnaZ_920pA-GD5Dt5Y,2993
51
+ include/py-d4-standard/DpllStyleMethod.hpp,sha256=T1lRcrSlTVqmmAgMf3EXqOGAX4FTO3CbXfY9jdMWkJw,18882
52
+ include/py-d4-standard/EnumMetadata.hpp,sha256=i99qZjZsmFyry5OTftzSNF4TdOgI5QTe7WdAixYPzPk,620
53
+ include/py-d4-standard/EquivExtractor.hpp,sha256=5qLA8ttLChXArYI5oM7SeIkwcr5CaTkwYQwEsdPU2DA,1489
54
+ include/py-d4-standard/ErrorCode.hpp,sha256=Hh-U36MpXNpUmm5wFohd6BtIJbhk8nLkYOPy3oa-pZo,951
55
+ include/py-d4-standard/ExistRandomExist.hpp,sha256=NH39YhWi9xBFwnf_lmz1rZBzaJm9kXVNLia0YrOWb7c,39079
56
+ include/py-d4-standard/FactoryException.hpp,sha256=GL6aXgy1vT9JZpgcvMlVAXrv61ZkY3XyOYVJbYgAn7o,1522
57
+ include/py-d4-standard/FormulaManager.hpp,sha256=8Qy1sgLMbEZbrdW3fLif2k43shHgscE2Xll8Hy0Se2o,8607
58
+ include/py-d4-standard/FormulaStore.hpp,sha256=KQ5juBTCoW3SB526Kl9EOj2C4Sow8Zjj-7S6pkWJVU0,1749
59
+ include/py-d4-standard/FormulaStoreCnf.hpp,sha256=UlEXsJreyEAs0_nNAeS-naWKrTw1QTvqKwWXJVMdPqo,2859
60
+ include/py-d4-standard/FormulaStoreCnfCl.hpp,sha256=V26drLeC_Y0J4HFYTCEeD_zrObV1xyscxldXAr9eV88,3315
61
+ include/py-d4-standard/FormulaStoreCnfCombi.hpp,sha256=ZWAuEsnTusJodAnJr-vz1x7m1BWCnHOs6Iplgt7AZBg,1776
62
+ include/py-d4-standard/FormulaStoreCnfIndex.hpp,sha256=wIBWf2hb2-QUi0izwJ9A3ds_Xf55pbvi7ydh9L3nhXU,1402
63
+ include/py-d4-standard/FormulaStoreCnfSym.hpp,sha256=gIFTMgssPyVfL5ShC9Lj45sdaMgWyJe0uC4HCFVgT2c,3332
64
+ include/py-d4-standard/Graph.hpp,sha256=W7MTqFifdp_q-puI7q_rAcJ4-HP19GqT2wlU_DJUFOQ,2255
65
+ include/py-d4-standard/GraphExtractor.hpp,sha256=F44x3yp3hPvGCrT3Emvfy6lR21AL9XPSbeRQDbRLwQc,2375
66
+ include/py-d4-standard/GraphExtractorCircuit.hpp,sha256=mfg5Md-nDt6lgIi8FcLfoOV7yTMPwgXAOL1lgP-PrQM,1490
67
+ include/py-d4-standard/GraphExtractorCircuitPrimal.hpp,sha256=LPEjNWowKVpI1lNOxjFIzbW2JI_UfZQh4WDT3QMg3FU,1600
68
+ include/py-d4-standard/GraphExtractorCnf.hpp,sha256=oNFgOtxB-PV7rhceLRN1P1scTZApLldU5ljYS0rAjTI,1758
69
+ include/py-d4-standard/GraphExtractorCnfPrimal.hpp,sha256=46IBfq7ZIugW7aKAfP2YtcxoTr8XSOjyv5Kae38kM74,1624
70
+ include/py-d4-standard/HashString.hpp,sha256=184OHOPaPpEb0WlRCiI9ZLzZADR8xEdZVIgNCYYtQJ8,1308
71
+ include/py-d4-standard/Heap.hpp,sha256=tEO0n-apfBIwe3dl-TQutYcvyhX0xFxm7fkHU7ae57M,4393
72
+ include/py-d4-standard/HyperEdge.hpp,sha256=3UZp9x3a796mskBb7L-BBvfpnwPgIypk1S8RaBTDNrc,1627
73
+ include/py-d4-standard/HyperGraph.hpp,sha256=_BlATkbT-aDF8bxTSyF_AxVHZfP06lkaYiKeaWtZDXQ,2065
74
+ include/py-d4-standard/HyperGraphExtractor.hpp,sha256=xinijZPrvWOA1q-nEmKcB2Khnl1a28WxjqVuHs0pCJ0,3328
75
+ include/py-d4-standard/HyperGraphExtractorCnfDual.hpp,sha256=LG7srBdmDzT4tOsleaXvnj5T741jndvTBBhjXPs2yMc,2572
76
+ include/py-d4-standard/IntTypes.hpp,sha256=rp4L4FnXIF0PCHTSyUjMn2gJannfn6-TTUeWx8EqokY,1822
77
+ include/py-d4-standard/Map.hpp,sha256=djMy3z-S_QcYJBA9GlNSDfHndqM7ZaBfMLsqn8npi0A,6432
78
+ include/py-d4-standard/MaxSharpSAT.hpp,sha256=sRiIcAUtoIhJQhR0B8WR1c62GtrsWkXFJTcQrOKXttk,32916
79
+ include/py-d4-standard/MaxT.hpp,sha256=F8Vytd9KDIhmN5SaX8GF2okIMsHPHcnw2jIMfpeK4wg,32268
80
+ include/py-d4-standard/MemoryStat.hpp,sha256=INDSVTnyX0WnAT3-zmsmiUvlt6vztIo4gx0oEzHbcRo,3959
81
+ include/py-d4-standard/MethodManager.hpp,sha256=AoMDJWeJ70XgvNIgY1ODgzzVCvz9QXSAdiTpRhKBaWc,2159
82
+ include/py-d4-standard/MinSharpSAT.hpp,sha256=p9NkcJlWoW_R2dN26N-j2A-mvc1OVjBEU1tBp5emdtw,22359
83
+ include/py-d4-standard/MpzTypes.hpp,sha256=kKxUOeNzTyYTPImoGupoOLdK3Cwc18GxfbAqBlax3Qg,1320
84
+ include/py-d4-standard/NodeException.hpp,sha256=-HKw7aYd2LFidf3paXU9l0PgxQ5vTlI5kqhe9zttd3A,1516
85
+ include/py-d4-standard/Option.hpp,sha256=FSTJovYcWFt2-CVR_LiWSgGcQGnIr521YmRI0nrQrzE,162
86
+ include/py-d4-standard/OptionBase.hpp,sha256=Noq-qKUHX9_18LpAQfnDVKOB1vQdM1IwNQm6rCBv0YI,157
87
+ include/py-d4-standard/OptionBranchingHeuristic.hpp,sha256=2QoE5tzEatQIBsa_XzFum_yJMl1Y0weJYHK1VRzubLM,5257
88
+ include/py-d4-standard/OptionBucketManager.hpp,sha256=AYqqmiGIRSoK-A0on2ge2rcqqeerw4hOT9iE_bMybKc,3239
89
+ include/py-d4-standard/OptionCacheCleaningManager.hpp,sha256=XCfZ9qAgrOa3jgXXAl_lQSIOUFHtMTfmWigZ4rr1Qiw,1449
90
+ include/py-d4-standard/OptionCacheManager.hpp,sha256=vzwaODXQfmCiPiU3FqM-R676syHhmic9_SMBPC8IHzA,1844
91
+ include/py-d4-standard/OptionDpllStyleMethod.hpp,sha256=rE1dv-LNPcAOtC_QvGnu_vthSlAZEE0J73cojMDvTfs,3330
92
+ include/py-d4-standard/OptionEREMethod.hpp,sha256=FI1Nn1pUobzzbSoYx8WAloWZrOrd5lHeoJbbRaFT3kk,4513
93
+ include/py-d4-standard/OptionException.hpp,sha256=Ma4Kfqud0N_DTl1E2JoUwamh3FsU_PUnpUtY_McfbsQ,1520
94
+ include/py-d4-standard/OptionFormulaManager.hpp,sha256=0VfBxB4NJ6I_TmBzyxvHR29HyNWA4iaYVxFaiYaPf_c,3130
95
+ include/py-d4-standard/OptionGroup.hpp,sha256=3-5iWWj5pPklYlK54YTSj6SBME44UUTGyB2gaXjQVl4,186
96
+ include/py-d4-standard/OptionMaxSharpSatMethod.hpp,sha256=EIfkYB10zbPmGG9oR-33r7DARflFyk9UYjzDBp5Lzxk,3493
97
+ include/py-d4-standard/OptionMaxTMethod.hpp,sha256=Kz2DlUdfkBPK95mIT0fdx8rgq4Yfnzzdi7Kyrlz9WlI,3865
98
+ include/py-d4-standard/OptionMethodManager.hpp,sha256=I8dFLyJQwcTfzL543_ukIkVJsSnW9-fGFdtzMv1HQ5I,1236
99
+ include/py-d4-standard/OptionMinSharpSatMethod.hpp,sha256=Wr78T3-ZsOO-NgiRMTDmZ8q42KVDL6gK8UstruSpK2k,3493
100
+ include/py-d4-standard/OptionOperationManager.hpp,sha256=F5KqzWitpTjnYmqR7e06bgbo4h9nSrucxU81e7_Crh4,2229
101
+ include/py-d4-standard/OptionPartialOrderHeuristic.hpp,sha256=OWSMvjtOePLpFHNKQjyM7e0zUnYsIUuJ0TecPVYNl_Y,5438
102
+ include/py-d4-standard/OptionProjMcMethod.hpp,sha256=RjXzIFXkiU6vG_Aid5CpFPzT-YuMN9wvXdTt3Ar_pYw,2611
103
+ include/py-d4-standard/OptionQbfCounter.hpp,sha256=R1fREn-9PV00pbGO7CaKy3Tw3BPYCyF4vcD1yYulXVE,2541
104
+ include/py-d4-standard/OptionRegistry.hpp,sha256=WdXMr7uP8a0E6bKxMKOqDLyYxMHAST9iYVxD23P3YWs,160
105
+ include/py-d4-standard/OptionRoot.hpp,sha256=LPvj1ck1YH7gO5xElmiY6LiEBNTfGNWQGdDQvwaCI9s,1303
106
+ include/py-d4-standard/Options.hpp,sha256=I_b4LnX4nn-RhNTN1hK6rHoP-Gs0gQYGiULDzSO40YA,12374
107
+ include/py-d4-standard/OptionSolver.hpp,sha256=3H-ItLpSU8nVkS8L6DrX1tMA-X7G3Su4nG2k_3MVl_I,3024
108
+ include/py-d4-standard/ParserException.hpp,sha256=Pq0aIdRlJsfIM7p6PVqz-NmUALxaMWCyEH_PBSYC8jM,1520
109
+ include/py-d4-standard/PartialOrderHeuristic.hpp,sha256=-1CaLEjXOeoTsPSO5Q2hc5NcwJ0kutu3VfVAvOGcBpA,2358
110
+ include/py-d4-standard/PartialOrderHeuristicGiven.hpp,sha256=F4HIjqNvRjSFKwFaOegLpWDrbU6S78Iax3Gml91RAuw,2060
111
+ include/py-d4-standard/PartialOrderHeuristicNone.hpp,sha256=OS1P1voQVTsJskCT5MCYlSohxmAvkI8EBGh5lQOWvHs,1147
112
+ include/py-d4-standard/PartialOrderHeuristicTreeDecomp.hpp,sha256=fVz-7wJgrhQu1hxpfc7dSaJNiCXEPtCOeJecg66w9AE,2363
113
+ include/py-d4-standard/PartitionerManager.hpp,sha256=CCtQYV-8nz4AiUXPmKdWSO1yWSPKvJGvB72Zv06h7g0,2490
114
+ include/py-d4-standard/PartitionerPatoh.hpp,sha256=VvrOUQiKe8bZL4ReRS5r1r3wQMIrGApEQTdos3mxZDI,1399
115
+ include/py-d4-standard/PhaseHeuristic.hpp,sha256=gztbRmeiCsPOGenRwBNRgDmEPUKey60ouiCPN9mTqcI,1373
116
+ include/py-d4-standard/PhaseHeuristicFalse.hpp,sha256=VX2_VB_TzbTUzfopPtSXQ2-nNdjYxjlTnmWNHuYSNik,1020
117
+ include/py-d4-standard/PhaseHeuristicOccurrence.hpp,sha256=JLkf3v5KEx3lliHZZFTx_-Lqw-ZXImYdqLX1B4ogLcA,1129
118
+ include/py-d4-standard/PhaseHeuristicPolarity.hpp,sha256=hOG0C_S4S6ujPrped7nuSFOrFJfOGem6bmeobzUqgHg,1131
119
+ include/py-d4-standard/PhaseHeuristicTrue.hpp,sha256=7ZWEERzjTzU4sxoEVycKcWPWTwo8k54_5LgF9iJG1qs,1018
120
+ include/py-d4-standard/PolarityManager.hpp,sha256=00bUg_nPrTqyjzF2Cpr0JVuciHIYdRxf1e455vRJecg,1025
121
+ include/py-d4-standard/ProblemManager.hpp,sha256=jdPGxsKI6bYm4XVmlaghtzJyk_P7IWgkqDXzFjaDDbc,10423
122
+ include/py-d4-standard/ProblemTypes.hpp,sha256=HClFvOxD_tUvuukoSl6H78GcdkCgwVEGtDOysY5FqOc,4210
123
+ include/py-d4-standard/ProjMCMethod.hpp,sha256=UdjT0YnLBPmR9_OOvqi3apkSZ_ze6R2LCr0Zl-oh25Y,25189
124
+ include/py-d4-standard/QbfCounter.hpp,sha256=hdaTsHv4OeGmbQmHgC1eFDAWKpyaSo1rHZKgCNSoRH8,17340
125
+ include/py-d4-standard/Queue.hpp,sha256=PE0weHDKiM7ECXn3f-3J9KmdQ925XbPYQ-2uotsnrik,2820
126
+ include/py-d4-standard/ScoringMethod.hpp,sha256=CnpJa5aNNnmpRlcMmfXuPmPPKqzHopjsVOvS7fdF1OU,1930
127
+ include/py-d4-standard/ScoringMethodDlcs.hpp,sha256=bco2fD3hvatA__3tX1Bs6ywjRlS_DKOy7cbguloNzHo,1110
128
+ include/py-d4-standard/ScoringMethodJwts.hpp,sha256=0zhLbqGquTiXgzJiJWpi-ZvAg5sU5_a1mm0JzAaTAeU,1103
129
+ include/py-d4-standard/ScoringMethodMom.hpp,sha256=l-9r-OrYLy7rZzpPm2gcLy58lKG68NLJQY8jXbyhXwI,1101
130
+ include/py-d4-standard/ScoringMethodVsads.hpp,sha256=7RF03VdvEgNfv8MA7MCzxZizaNKCgnT65gNMpMdPhh0,1271
131
+ include/py-d4-standard/ScoringMethodVsids.hpp,sha256=gfBE5ENhLkOowIcST9PIAreueZ2DW0O87ck1IKxtl6U,1114
132
+ include/py-d4-standard/SemiringConcept.hpp,sha256=qbT5fme3e88PsZgPEThbA7wjYR8Aw8ad3M0oARxe3kM,2109
133
+ include/py-d4-standard/Solver.hpp,sha256=qsq19XbNbCsC5MxM7g8srj0XxP1uV22rX4ZTBMYtqnU,33332
134
+ include/py-d4-standard/SolverTypes.hpp,sha256=WQ2aRJneZXExl6FBzEPGzd4xb5-C_u_528OWOSDyWyY,18271
135
+ include/py-d4-standard/Sort.hpp,sha256=rbFFyDEftORUAlxQcl8eDkRdAyWzeOddwspG4unxpjE,3256
136
+ include/py-d4-standard/TmpEntry.hpp,sha256=WakVF552gZ09cWpbNR5zHQhTIHS7ryxceqFrc4e2Fl4,1429
137
+ include/py-d4-standard/Translator.hpp,sha256=177kT_1t-je5kFmcamxN9POOFI4LqxeN0Tnl_IQpeSg,3933
138
+ include/py-d4-standard/TreeDecomposition.hpp,sha256=TYlSxQeYlTu9De4OI0RZVksIJsSPQCHvUBt2eiBjiFo,8439
139
+ include/py-d4-standard/TreeDecompositioner.hpp,sha256=wajefw0ovBWD0lbM9U0m9cJjBsIia6qr-pBTbdk46f4,2595
140
+ include/py-d4-standard/TreeDecompositionerFlowCutter.hpp,sha256=qL_Q-xpc2FchmEGj5QyOwduIONJ6Fy2f-Tnt-fNkTDM,2641
141
+ include/py-d4-standard/TreeDecompositionerHtd.hpp,sha256=5j-fSDFal8Ic2pZ0j9l-hqmj9TVRAH8xPIm3aaILAg8,2132
142
+ include/py-d4-standard/TreeDecompositionPartition.hpp,sha256=ITvFhbOn5dDBb1V0JbDNys4dUlDoJ_fpjh--xFids1A,2085
143
+ include/py-d4-standard/TreeDecompositionTreeWidth.hpp,sha256=Ue5FvTnB1axEifYxQwRvT2hZHl38ZZYKFisz7VO7cZU,2707
144
+ include/py-d4-standard/Vec.hpp,sha256=Va2bvRjJVXTi-Vtx8i-NF1zWIm5bJdr5ngfYQbVsh-0,6142
145
+ include/py-d4-standard/WrapperCircuitGlucose.hpp,sha256=Yff3MDladmLDavZN4byvlUvMO_-MWhoaw-CfxdKaWQA,1199
146
+ include/py-d4-standard/WrapperCircuitMinisat.hpp,sha256=XFMS_ykEwS54nN2R-5tT6eJqtzv3-yzVaVC_N_4rnWA,1100
147
+ include/py-d4-standard/WrapperGlucose.hpp,sha256=O2K4PiLbHeX94wuYzmxSVnsIkhBjkfeWKOU-WbqPu4E,2938
148
+ include/py-d4-standard/WrapperMinisat.hpp,sha256=tq2EwPGgcKwJQWYlrSP3wYBweRDt3SbdtaHoPu9447I,2834
149
+ include/py-d4-standard/WrapperSolver.hpp,sha256=VWdU7GgU0w1qy9l9qG1NsGW8NltE-Fo305c8trWlnj8,4096
150
+ include/py-d4-standard/XAlloc.hpp,sha256=TkB4MQ5-tXy_kndbHmFZe-B_xUzI1dRkXW2hqmYHTJg,1849
151
+ lib/d4.lib,sha256=avBKq6-DZLZmASgie12i1TFIkTNHfVRKcgBKFtn4MKY,22601752
152
+ lib/__init__.py,sha256=Zn0lfL13i8oze3nyGmRZW32A6pVMT0F9HDKZQBZNc28,1570
153
+ py_d4/options.py,sha256=Xddsss_a2Y_2AjFeYCG_XCGhxLyhCqgG-GtS0X1LinE,876
154
+ py_d4/py.typed,sha256=V-lflWeK996Wlw7bjhCkJEcQU9mOk2QXj4MnZmQ7oMU,75
155
+ py_d4/_py_d4.cp39-win_amd64.pyd,sha256=fJ-q6PDLTYdEJQwlZYekFGcECRM38GNM9D_gFvU9XnM,2475520
156
+ py_d4/_py_d4.pyi,sha256=TZJfa4wSxc5M8hafEgn8SrWhg6xw6r8NPNvA317BWWM,15649
157
+ py_d4/__init__.py,sha256=0ps6w6KQ3qlcUid0heTHx4oSVHCLnrmFKgtkk2IuBY0,3264
158
+ share/__init__.py,sha256=Zn0lfL13i8oze3nyGmRZW32A6pVMT0F9HDKZQBZNc28,1570
159
+ share/cmake/optree/optreeConfig.cmake,sha256=uRZTbyFByBz61hBlGtCt7M-bvQxibVqDjRHWuMEhauA,58
160
+ share/cmake/optree/optreeConfigVersion.cmake,sha256=wrWvwXUoWsHZLhxkVa5C6bH6n4gMev3yLcWv7f5jNBw,2827
161
+ share/cmake/optree/optreeTargets.cmake,sha256=U_QCD-4bKcT_5ANleMWpTkMHUJ9usj-q76kuX1L-ClI,4164
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: scikit-build-core 1.0.3
3
+ Root-Is-Purelib: false
4
+ Tag: cp39-cp39-win_amd64
5
+
@@ -0,0 +1,3 @@
1
+ msvcp140-484f56d9de72c048820300919dc49e56.dll
2
+ gmp-10-521f5d57a531da7f2ddd75a64634bf47.dll
3
+ gmpxx-4-1aec0d72b737c81b6397e2967c9be349.dll
include/__init__.py ADDED
@@ -0,0 +1,29 @@
1
+ """""" # start delvewheel patch
2
+ def _delvewheel_patch_1_13_0():
3
+ import ctypes
4
+ import os
5
+ import platform
6
+ import sys
7
+ libs_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'd4solver.libs'))
8
+ is_conda_cpython = platform.python_implementation() == 'CPython' and (hasattr(ctypes.pythonapi, 'Anaconda_GetVersion') or 'packaged by conda-forge' in sys.version)
9
+ if sys.version_info[:2] >= (3, 8) and not is_conda_cpython or sys.version_info[:2] >= (3, 10):
10
+ if os.path.isdir(libs_dir):
11
+ os.add_dll_directory(libs_dir)
12
+ else:
13
+ load_order_filepath = os.path.join(libs_dir, '.load-order-d4solver-0.1.0')
14
+ if os.path.isfile(load_order_filepath):
15
+ import ctypes.wintypes
16
+ with open(os.path.join(libs_dir, '.load-order-d4solver-0.1.0')) as file:
17
+ load_order = file.read().split()
18
+ kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
19
+ kernel32.LoadLibraryExW.restype = ctypes.wintypes.HMODULE
20
+ kernel32.LoadLibraryExW.argtypes = ctypes.wintypes.LPCWSTR, ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD
21
+ for lib in load_order:
22
+ lib_path = os.path.join(os.path.join(libs_dir, lib))
23
+ if os.path.isfile(lib_path) and not kernel32.LoadLibraryExW(lib_path, None, 8):
24
+ raise OSError('Error loading {}; {}'.format(lib, ctypes.FormatError(ctypes.get_last_error())))
25
+
26
+
27
+ _delvewheel_patch_1_13_0()
28
+ del _delvewheel_patch_1_13_0
29
+ # end delvewheel patch
@@ -0,0 +1,63 @@
1
+ #pragma once
2
+ #include <string>
3
+ #include <map>
4
+ #include <stdexcept>
5
+
6
+ namespace optree {
7
+
8
+ /**
9
+ * @brief Trait to provide metadata about enums.
10
+ * Specialize this template in your project to support custom enums.
11
+ */
12
+ template<typename EnumType, typename Dummy = void>
13
+ struct EnumMetadata {
14
+ static std::map<int, std::string> mapping() { return {}; }
15
+ static std::string name() { return "UnknownEnum"; }
16
+ };
17
+
18
+ /**
19
+ * @brief Helper to resolve an enum value from its string label.
20
+ */
21
+ template<typename EnumType>
22
+ inline EnumType resolve_enum(const std::string& label) {
23
+ auto m = EnumMetadata<EnumType>::mapping();
24
+ for (auto const& [val, str] : m) {
25
+ if (str == label) {
26
+ return static_cast<EnumType>(val);
27
+ }
28
+ }
29
+ // Fallback to integer conversion if it's a numeric string
30
+ try {
31
+ return static_cast<EnumType>(std::stoi(label));
32
+ } catch (...) {}
33
+ throw std::runtime_error("Unknown enum label: " + label + " for enum: " + EnumMetadata<EnumType>::name());
34
+ }
35
+
36
+ /**
37
+ * @brief Helper to convert an enum value to its string label.
38
+ */
39
+ template<typename EnumType>
40
+ inline std::string enum_to_string(const EnumType& val) {
41
+ auto m = EnumMetadata<EnumType>::mapping();
42
+ auto it = m.find(static_cast<int>(val));
43
+ if (it != m.end()) {
44
+ return it->second;
45
+ }
46
+ return std::to_string(static_cast<int>(val));
47
+ }
48
+
49
+ /**
50
+ * @brief Helper to generate a documentation string for an enum.
51
+ */
52
+ template<typename EnumType>
53
+ inline std::string get_enum_doc() {
54
+ auto m = EnumMetadata<EnumType>::mapping();
55
+ std::string doc = "";
56
+ for (auto const& [val, label] : m) {
57
+ if (!doc.empty()) doc += ", ";
58
+ doc += std::to_string(val) + "=" + label;
59
+ }
60
+ return doc;
61
+ }
62
+
63
+ } // namespace optree