flamapy-sat 2.5.0.dev0__tar.gz → 2.6.0.dev0__tar.gz
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.
- {flamapy_sat-2.5.0.dev0/flamapy_sat.egg-info → flamapy_sat-2.6.0.dev0}/PKG-INFO +13 -14
- flamapy_sat-2.6.0.dev0/README.md +15 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/__init__.py +2 -0
- flamapy_sat-2.6.0.dev0/flamapy/metamodels/pysat_metamodel/operations/pysat_backbone.py +73 -0
- flamapy_sat-2.6.0.dev0/flamapy/metamodels/pysat_metamodel/operations/pysat_core_features.py +24 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_dead_features.py +3 -13
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/transformations/fm_to_pysat.py +1 -1
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0/flamapy_sat.egg-info}/PKG-INFO +13 -14
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy_sat.egg-info/SOURCES.txt +1 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy_sat.egg-info/requires.txt +2 -2
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/pyproject.toml +3 -3
- flamapy_sat-2.5.0.dev0/README.md +0 -16
- flamapy_sat-2.5.0.dev0/flamapy/metamodels/pysat_metamodel/operations/pysat_core_features.py +0 -35
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/LICENSE +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/models/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/models/pysat_diagnosis_model.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/checker.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/fastdiag.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/hsdag.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/fastdiag_labeler.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/labeler.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/quickxplain_labeler.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/node.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/quickxplain.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/utils.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/pysat_abstract_identifier.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/pysat_conflict.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/pysat_diagnosis.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/transformations/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_diagnosis_metamodel/transformations/fm_to_diag_pysat.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/models/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/models/pysat_model.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/models/txtcnf_model.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_commonality.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_configurations.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_configurations_number.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_false_optional_features.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_filter.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_metrics.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_sampling.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_satisfiable.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/operations/pysat_satisfiable_configuration.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/transformations/__init__.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/transformations/cnf_to_pysat.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/transformations/dimacs_reader.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/transformations/dimacs_writer.py +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy_sat.egg-info/dependency_links.txt +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy_sat.egg-info/top_level.txt +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/setup.cfg +0 -0
- {flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flamapy-sat
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0.dev0
|
|
4
4
|
Summary: flamapy-sat is a plugin to flamapy module
|
|
5
5
|
Author-email: Flamapy <flamapy@us.es>
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -8,8 +8,8 @@ Project-URL: Homepage, https://github.com/flamapy/pysat_metamodel
|
|
|
8
8
|
Requires-Python: >=3.9
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Requires-Dist: flamapy-fw~=2.
|
|
12
|
-
Requires-Dist: flamapy-fm~=2.
|
|
11
|
+
Requires-Dist: flamapy-fw~=2.6.0.dev0
|
|
12
|
+
Requires-Dist: flamapy-fm~=2.6.0.dev0
|
|
13
13
|
Requires-Dist: python-sat~=0.1.7.dev1
|
|
14
14
|
Provides-Extra: dev
|
|
15
15
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -19,19 +19,18 @@ Requires-Dist: mypy; extra == "dev"
|
|
|
19
19
|
Requires-Dist: coverage; extra == "dev"
|
|
20
20
|
Dynamic: license-file
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
# flamapy-sat
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
SAT-based analysis for [flamapy](https://flamapy.org) feature models (PySAT
|
|
25
|
+
backend, giving access to more than ten SAT solvers). Also ships the diagnosis
|
|
26
|
+
metamodel (conflict detection and diagnosis).
|
|
25
27
|
|
|
28
|
+
**Documentation:**
|
|
29
|
+
- SAT plugin: https://docs.flamapy.org/framework/plugins/sat_plugin
|
|
30
|
+
- Diagnosis plugin: https://docs.flamapy.org/framework/plugins/diagnosis_plugin
|
|
26
31
|
|
|
27
|
-
##
|
|
32
|
+
## Installation
|
|
28
33
|
|
|
29
|
-
```
|
|
30
|
-
pip install -
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Make sure that you have installed python-dev
|
|
34
|
-
|
|
35
|
-
``` bash
|
|
36
|
-
sudo apt install python-dev #python3-dev in Ubuntu derivatives
|
|
34
|
+
```bash
|
|
35
|
+
pip install flamapy-sat
|
|
37
36
|
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# flamapy-sat
|
|
2
|
+
|
|
3
|
+
SAT-based analysis for [flamapy](https://flamapy.org) feature models (PySAT
|
|
4
|
+
backend, giving access to more than ten SAT solvers). Also ships the diagnosis
|
|
5
|
+
metamodel (conflict detection and diagnosis).
|
|
6
|
+
|
|
7
|
+
**Documentation:**
|
|
8
|
+
- SAT plugin: https://docs.flamapy.org/framework/plugins/sat_plugin
|
|
9
|
+
- Diagnosis plugin: https://docs.flamapy.org/framework/plugins/diagnosis_plugin
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install flamapy-sat
|
|
15
|
+
```
|
|
@@ -4,6 +4,7 @@ from .pysat_configurations import PySATConfigurations
|
|
|
4
4
|
from .pysat_configurations_number import PySATConfigurationsNumber
|
|
5
5
|
from .pysat_commonality import PySATCommonality
|
|
6
6
|
from .pysat_filter import PySATFilter
|
|
7
|
+
from .pysat_backbone import PySATBackbone
|
|
7
8
|
from .pysat_core_features import PySATCoreFeatures
|
|
8
9
|
from .pysat_dead_features import PySATDeadFeatures
|
|
9
10
|
from .pysat_false_optional_features import PySATFalseOptionalFeatures
|
|
@@ -11,6 +12,7 @@ from .pysat_metrics import PySATMetrics
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
__all__ = [
|
|
15
|
+
'PySATBackbone',
|
|
14
16
|
'PySATCommonality',
|
|
15
17
|
'PySATConfigurations',
|
|
16
18
|
'PySATConfigurationsNumber',
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from typing import Any, cast
|
|
2
|
+
|
|
3
|
+
from pysat.solvers import Solver
|
|
4
|
+
|
|
5
|
+
from flamapy.core.operations import Operation
|
|
6
|
+
from flamapy.metamodels.pysat_metamodel.models.pysat_model import PySATModel
|
|
7
|
+
from flamapy.core.models import VariabilityModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PySATBackbone(Operation):
|
|
11
|
+
|
|
12
|
+
def __init__(self) -> None:
|
|
13
|
+
self._result: dict[str, list[Any]] = {"core": [], "dead": []}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def get_backbone(self) -> dict[str, list[Any]]:
|
|
17
|
+
return self.get_result()
|
|
18
|
+
|
|
19
|
+
def get_result(self) -> dict[str, list[Any]]:
|
|
20
|
+
return self._result
|
|
21
|
+
|
|
22
|
+
def execute(self, model: VariabilityModel) -> 'PySATBackbone':
|
|
23
|
+
sat_model = cast(PySATModel, model)
|
|
24
|
+
self._result = get_backbone(sat_model)
|
|
25
|
+
return self
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def get_backbone(model: PySATModel) -> dict[str, list[Any]]:
|
|
29
|
+
# B <- Ø
|
|
30
|
+
backbone_core = []
|
|
31
|
+
backbone_dead = []
|
|
32
|
+
|
|
33
|
+
id_to_name = model.features
|
|
34
|
+
relevant_ids = set(id_to_name.keys())
|
|
35
|
+
|
|
36
|
+
solver = Solver(name='glucose3')
|
|
37
|
+
for clause in model.get_all_clauses().clauses:
|
|
38
|
+
solver.add_clause(clause)
|
|
39
|
+
|
|
40
|
+
# (out, C) <- SAT(phi)
|
|
41
|
+
if not solver.solve():
|
|
42
|
+
solver.delete()
|
|
43
|
+
return {"core": [], "dead": list(id_to_name.values())}
|
|
44
|
+
|
|
45
|
+
# 3. C <- filter(C)
|
|
46
|
+
initial_model = solver.get_model()
|
|
47
|
+
candidates = {lit for lit in initial_model if abs(lit) in relevant_ids}
|
|
48
|
+
|
|
49
|
+
# while C != Ø do
|
|
50
|
+
while candidates:
|
|
51
|
+
# l <- pick a literal from C
|
|
52
|
+
literal = next(iter(candidates))
|
|
53
|
+
|
|
54
|
+
# (out, S) <- SAT(phi U {not l})
|
|
55
|
+
if not solver.solve(assumptions=[-literal]):
|
|
56
|
+
# out = unsat -> l is in the backbone
|
|
57
|
+
name = id_to_name[abs(literal)]
|
|
58
|
+
if literal > 0:
|
|
59
|
+
backbone_core.append(name)
|
|
60
|
+
else:
|
|
61
|
+
backbone_dead.append(name)
|
|
62
|
+
|
|
63
|
+
# C <- C \ {l}
|
|
64
|
+
candidates.remove(literal)
|
|
65
|
+
|
|
66
|
+
# phi <- phi U {l}
|
|
67
|
+
solver.add_clause([literal])
|
|
68
|
+
else:
|
|
69
|
+
new_model_set = set(solver.get_model())
|
|
70
|
+
# C <- C ∩ S
|
|
71
|
+
candidates &= new_model_set
|
|
72
|
+
solver.delete()
|
|
73
|
+
return {"core": backbone_core, "dead": backbone_dead}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import Any, cast
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
from flamapy.core.operations import CoreFeatures
|
|
5
|
+
from flamapy.metamodels.pysat_metamodel.operations import PySATBackbone
|
|
6
|
+
from flamapy.metamodels.pysat_metamodel.models.pysat_model import PySATModel
|
|
7
|
+
from flamapy.core.models import VariabilityModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PySATCoreFeatures(CoreFeatures):
|
|
11
|
+
|
|
12
|
+
def __init__(self) -> None:
|
|
13
|
+
self.core_features: list[Any] = []
|
|
14
|
+
|
|
15
|
+
def get_core_features(self) -> list[Any]:
|
|
16
|
+
return self.core_features
|
|
17
|
+
|
|
18
|
+
def get_result(self) -> list[Any]:
|
|
19
|
+
return self.get_core_features()
|
|
20
|
+
|
|
21
|
+
def execute(self, model: VariabilityModel) -> 'PySATCoreFeatures':
|
|
22
|
+
sat_model = cast(PySATModel, model)
|
|
23
|
+
self.core_features = PySATBackbone().execute(sat_model).get_result()["core"]
|
|
24
|
+
return self
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from typing import Any, cast
|
|
2
2
|
|
|
3
|
-
from pysat.solvers import Solver
|
|
4
3
|
|
|
5
4
|
from flamapy.core.operations import DeadFeatures
|
|
5
|
+
from flamapy.metamodels.pysat_metamodel.operations import PySATBackbone
|
|
6
6
|
from flamapy.metamodels.pysat_metamodel.models.pysat_model import PySATModel
|
|
7
7
|
from flamapy.core.models import VariabilityModel
|
|
8
8
|
|
|
@@ -11,7 +11,6 @@ class PySATDeadFeatures(DeadFeatures):
|
|
|
11
11
|
|
|
12
12
|
def __init__(self) -> None:
|
|
13
13
|
self.dead_features: list[Any] = []
|
|
14
|
-
self.solver = Solver(name='glucose3')
|
|
15
14
|
|
|
16
15
|
def get_dead_features(self) -> list[Any]:
|
|
17
16
|
return self.dead_features
|
|
@@ -20,15 +19,6 @@ class PySATDeadFeatures(DeadFeatures):
|
|
|
20
19
|
return self.get_dead_features()
|
|
21
20
|
|
|
22
21
|
def execute(self, model: VariabilityModel) -> 'PySATDeadFeatures':
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
for clause in model.get_all_clauses(): # AC es conjunto de conjuntos
|
|
26
|
-
self.solver.add_clause(clause) # añadimos la constraint
|
|
27
|
-
|
|
28
|
-
dead_features = []
|
|
29
|
-
for variable in model.variables.items():
|
|
30
|
-
if not self.solver.solve(assumptions=[variable[1]]):
|
|
31
|
-
dead_features.append(variable[0])
|
|
32
|
-
self.dead_features = dead_features
|
|
33
|
-
self.solver.delete()
|
|
22
|
+
sat_model = cast(PySATModel, model)
|
|
23
|
+
self.dead_features = PySATBackbone().execute(sat_model).get_result()["dead"]
|
|
34
24
|
return self
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flamapy-sat
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0.dev0
|
|
4
4
|
Summary: flamapy-sat is a plugin to flamapy module
|
|
5
5
|
Author-email: Flamapy <flamapy@us.es>
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -8,8 +8,8 @@ Project-URL: Homepage, https://github.com/flamapy/pysat_metamodel
|
|
|
8
8
|
Requires-Python: >=3.9
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Requires-Dist: flamapy-fw~=2.
|
|
12
|
-
Requires-Dist: flamapy-fm~=2.
|
|
11
|
+
Requires-Dist: flamapy-fw~=2.6.0.dev0
|
|
12
|
+
Requires-Dist: flamapy-fm~=2.6.0.dev0
|
|
13
13
|
Requires-Dist: python-sat~=0.1.7.dev1
|
|
14
14
|
Provides-Extra: dev
|
|
15
15
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -19,19 +19,18 @@ Requires-Dist: mypy; extra == "dev"
|
|
|
19
19
|
Requires-Dist: coverage; extra == "dev"
|
|
20
20
|
Dynamic: license-file
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
# flamapy-sat
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
SAT-based analysis for [flamapy](https://flamapy.org) feature models (PySAT
|
|
25
|
+
backend, giving access to more than ten SAT solvers). Also ships the diagnosis
|
|
26
|
+
metamodel (conflict detection and diagnosis).
|
|
25
27
|
|
|
28
|
+
**Documentation:**
|
|
29
|
+
- SAT plugin: https://docs.flamapy.org/framework/plugins/sat_plugin
|
|
30
|
+
- Diagnosis plugin: https://docs.flamapy.org/framework/plugins/diagnosis_plugin
|
|
26
31
|
|
|
27
|
-
##
|
|
32
|
+
## Installation
|
|
28
33
|
|
|
29
|
-
```
|
|
30
|
-
pip install -
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Make sure that you have installed python-dev
|
|
34
|
-
|
|
35
|
-
``` bash
|
|
36
|
-
sudo apt install python-dev #python3-dev in Ubuntu derivatives
|
|
34
|
+
```bash
|
|
35
|
+
pip install flamapy-sat
|
|
37
36
|
```
|
|
@@ -28,6 +28,7 @@ flamapy/metamodels/pysat_metamodel/models/__init__.py
|
|
|
28
28
|
flamapy/metamodels/pysat_metamodel/models/pysat_model.py
|
|
29
29
|
flamapy/metamodels/pysat_metamodel/models/txtcnf_model.py
|
|
30
30
|
flamapy/metamodels/pysat_metamodel/operations/__init__.py
|
|
31
|
+
flamapy/metamodels/pysat_metamodel/operations/pysat_backbone.py
|
|
31
32
|
flamapy/metamodels/pysat_metamodel/operations/pysat_commonality.py
|
|
32
33
|
flamapy/metamodels/pysat_metamodel/operations/pysat_configurations.py
|
|
33
34
|
flamapy/metamodels/pysat_metamodel/operations/pysat_configurations_number.py
|
|
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "flamapy-sat"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.6.0.dev0"
|
|
8
8
|
description = "flamapy-sat is a plugin to flamapy module"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "GPL-3.0-or-later"
|
|
11
11
|
authors = [{ name = "Flamapy", email = "flamapy@us.es" }]
|
|
12
12
|
requires-python = ">=3.9"
|
|
13
13
|
dependencies = [
|
|
14
|
-
"flamapy-fw~=2.
|
|
15
|
-
"flamapy-fm~=2.
|
|
14
|
+
"flamapy-fw~=2.6.0.dev0",
|
|
15
|
+
"flamapy-fm~=2.6.0.dev0",
|
|
16
16
|
"python-sat~=0.1.7.dev1",
|
|
17
17
|
]
|
|
18
18
|
|
flamapy_sat-2.5.0.dev0/README.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# pysat_metamodel
|
|
2
|
-
|
|
3
|
-
This repository will host the pysat metamodel and its operation implementation
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Install for development
|
|
7
|
-
|
|
8
|
-
``` bash
|
|
9
|
-
pip install -e .
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Make sure that you have installed python-dev
|
|
13
|
-
|
|
14
|
-
``` bash
|
|
15
|
-
sudo apt install python-dev #python3-dev in Ubuntu derivatives
|
|
16
|
-
```
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from typing import Any, cast
|
|
2
|
-
|
|
3
|
-
from pysat.solvers import Solver
|
|
4
|
-
|
|
5
|
-
from flamapy.core.operations import CoreFeatures
|
|
6
|
-
from flamapy.metamodels.pysat_metamodel.models.pysat_model import PySATModel
|
|
7
|
-
from flamapy.core.models import VariabilityModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class PySATCoreFeatures(CoreFeatures):
|
|
11
|
-
|
|
12
|
-
def __init__(self) -> None:
|
|
13
|
-
self.core_features: list[Any] = []
|
|
14
|
-
self.solver = Solver(name='glucose3')
|
|
15
|
-
|
|
16
|
-
def get_core_features(self) -> list[Any]:
|
|
17
|
-
return self.core_features
|
|
18
|
-
|
|
19
|
-
def get_result(self) -> list[Any]:
|
|
20
|
-
return self.get_core_features()
|
|
21
|
-
|
|
22
|
-
def execute(self, model: VariabilityModel) -> 'PySATCoreFeatures':
|
|
23
|
-
model = cast(PySATModel, model)
|
|
24
|
-
for clause in model.get_all_clauses(): # AC es conjunto de conjuntos
|
|
25
|
-
self.solver.add_clause(clause) # añadimos la constraint
|
|
26
|
-
|
|
27
|
-
core_features = []
|
|
28
|
-
if self.solver.solve():
|
|
29
|
-
for variable in model.variables.items():
|
|
30
|
-
if not self.solver.solve(assumptions=[-variable[1]]):
|
|
31
|
-
core_features.append(variable[0])
|
|
32
|
-
|
|
33
|
-
self.core_features = core_features
|
|
34
|
-
self.solver.delete()
|
|
35
|
-
return self
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flamapy_sat-2.5.0.dev0 → flamapy_sat-2.6.0.dev0}/flamapy/metamodels/pysat_metamodel/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|