@stevenvo780/st-lang 4.5.0 → 4.5.2
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.
- package/README.md +78 -37
- package/dist/bdd/index.d.ts +4 -0
- package/dist/bdd/index.d.ts.map +1 -0
- package/dist/bdd/index.js +29 -0
- package/dist/bdd/index.js.map +1 -0
- package/dist/bdd/manager.d.ts +122 -0
- package/dist/bdd/manager.d.ts.map +1 -0
- package/dist/bdd/manager.js +524 -0
- package/dist/bdd/manager.js.map +1 -0
- package/dist/bdd/types.d.ts +20 -0
- package/dist/bdd/types.d.ts.map +1 -0
- package/dist/bdd/types.js +28 -0
- package/dist/bdd/types.js.map +1 -0
- package/dist/game-theory/common-games.d.ts +50 -0
- package/dist/game-theory/common-games.d.ts.map +1 -0
- package/dist/game-theory/common-games.js +112 -0
- package/dist/game-theory/common-games.js.map +1 -0
- package/dist/game-theory/dominance.d.ts +26 -0
- package/dist/game-theory/dominance.d.ts.map +1 -0
- package/dist/game-theory/dominance.js +203 -0
- package/dist/game-theory/dominance.js.map +1 -0
- package/dist/game-theory/index.d.ts +8 -0
- package/dist/game-theory/index.d.ts.map +1 -0
- package/dist/game-theory/index.js +47 -0
- package/dist/game-theory/index.js.map +1 -0
- package/dist/game-theory/lemke-howson.d.ts +3 -0
- package/dist/game-theory/lemke-howson.d.ts.map +1 -0
- package/dist/game-theory/lemke-howson.js +269 -0
- package/dist/game-theory/lemke-howson.js.map +1 -0
- package/dist/game-theory/linalg.d.ts +7 -0
- package/dist/game-theory/linalg.d.ts.map +1 -0
- package/dist/game-theory/linalg.js +69 -0
- package/dist/game-theory/linalg.js.map +1 -0
- package/dist/game-theory/pure-nash.d.ts +3 -0
- package/dist/game-theory/pure-nash.d.ts.map +1 -0
- package/dist/game-theory/pure-nash.js +86 -0
- package/dist/game-theory/pure-nash.js.map +1 -0
- package/dist/game-theory/support-enumeration.d.ts +3 -0
- package/dist/game-theory/support-enumeration.d.ts.map +1 -0
- package/dist/game-theory/support-enumeration.js +214 -0
- package/dist/game-theory/support-enumeration.js.map +1 -0
- package/dist/game-theory/types.d.ts +57 -0
- package/dist/game-theory/types.d.ts.map +1 -0
- package/dist/game-theory/types.js +191 -0
- package/dist/game-theory/types.js.map +1 -0
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -1
- package/dist/index.js.map +1 -1
- package/dist/information-theory/index.d.ts +29 -0
- package/dist/information-theory/index.d.ts.map +1 -0
- package/dist/information-theory/index.js +323 -0
- package/dist/information-theory/index.js.map +1 -0
- package/dist/namespaces/logic.d.ts +42 -0
- package/dist/namespaces/logic.d.ts.map +1 -0
- package/dist/namespaces/logic.js +112 -0
- package/dist/namespaces/logic.js.map +1 -0
- package/dist/namespaces/proof-systems.d.ts +18 -0
- package/dist/namespaces/proof-systems.d.ts.map +1 -0
- package/dist/namespaces/proof-systems.js +59 -0
- package/dist/namespaces/proof-systems.js.map +1 -0
- package/dist/namespaces/reasoning.d.ts +26 -0
- package/dist/namespaces/reasoning.d.ts.map +1 -0
- package/dist/namespaces/reasoning.js +72 -0
- package/dist/namespaces/reasoning.js.map +1 -0
- package/dist/namespaces/semantics.d.ts +21 -0
- package/dist/namespaces/semantics.d.ts.map +1 -0
- package/dist/namespaces/semantics.js +64 -0
- package/dist/namespaces/semantics.js.map +1 -0
- package/dist/namespaces/solvers.d.ts +22 -0
- package/dist/namespaces/solvers.d.ts.map +1 -0
- package/dist/namespaces/solvers.js +66 -0
- package/dist/namespaces/solvers.js.map +1 -0
- package/dist/namespaces/type-theory.d.ts +22 -0
- package/dist/namespaces/type-theory.d.ts.map +1 -0
- package/dist/namespaces/type-theory.js +65 -0
- package/dist/namespaces/type-theory.js.map +1 -0
- package/dist/optimization/branch-and-bound.d.ts +11 -0
- package/dist/optimization/branch-and-bound.d.ts.map +1 -0
- package/dist/optimization/branch-and-bound.js +311 -0
- package/dist/optimization/branch-and-bound.js.map +1 -0
- package/dist/optimization/index.d.ts +5 -0
- package/dist/optimization/index.d.ts.map +1 -0
- package/dist/optimization/index.js +20 -0
- package/dist/optimization/index.js.map +1 -0
- package/dist/optimization/simplex.d.ts +8 -0
- package/dist/optimization/simplex.d.ts.map +1 -0
- package/dist/optimization/simplex.js +408 -0
- package/dist/optimization/simplex.js.map +1 -0
- package/dist/optimization/standard-form.d.ts +11 -0
- package/dist/optimization/standard-form.d.ts.map +1 -0
- package/dist/optimization/standard-form.js +112 -0
- package/dist/optimization/standard-form.js.map +1 -0
- package/dist/optimization/types.d.ts +44 -0
- package/dist/optimization/types.d.ts.map +1 -0
- package/dist/optimization/types.js +15 -0
- package/dist/optimization/types.js.map +1 -0
- package/dist/profiles/hol/connectives.d.ts +46 -0
- package/dist/profiles/hol/connectives.d.ts.map +1 -0
- package/dist/profiles/hol/connectives.js +104 -0
- package/dist/profiles/hol/connectives.js.map +1 -0
- package/dist/profiles/hol/index.d.ts +7 -0
- package/dist/profiles/hol/index.d.ts.map +1 -0
- package/dist/profiles/hol/index.js +77 -0
- package/dist/profiles/hol/index.js.map +1 -0
- package/dist/profiles/hol/rules.d.ts +31 -0
- package/dist/profiles/hol/rules.d.ts.map +1 -0
- package/dist/profiles/hol/rules.js +258 -0
- package/dist/profiles/hol/rules.js.map +1 -0
- package/dist/profiles/hol/term.d.ts +52 -0
- package/dist/profiles/hol/term.d.ts.map +1 -0
- package/dist/profiles/hol/term.js +345 -0
- package/dist/profiles/hol/term.js.map +1 -0
- package/dist/profiles/hol/type-system.d.ts +38 -0
- package/dist/profiles/hol/type-system.d.ts.map +1 -0
- package/dist/profiles/hol/type-system.js +133 -0
- package/dist/profiles/hol/type-system.js.map +1 -0
- package/dist/profiles/hol/types.d.ts +59 -0
- package/dist/profiles/hol/types.d.ts.map +1 -0
- package/dist/profiles/hol/types.js +26 -0
- package/dist/profiles/hol/types.js.map +1 -0
- package/dist/smt-lib/ast.d.ts +138 -0
- package/dist/smt-lib/ast.d.ts.map +1 -0
- package/dist/smt-lib/ast.js +73 -0
- package/dist/smt-lib/ast.js.map +1 -0
- package/dist/smt-lib/emitter.d.ts +12 -0
- package/dist/smt-lib/emitter.d.ts.map +1 -0
- package/dist/smt-lib/emitter.js +174 -0
- package/dist/smt-lib/emitter.js.map +1 -0
- package/dist/smt-lib/index.d.ts +6 -0
- package/dist/smt-lib/index.d.ts.map +1 -0
- package/dist/smt-lib/index.js +31 -0
- package/dist/smt-lib/index.js.map +1 -0
- package/dist/smt-lib/parser.d.ts +13 -0
- package/dist/smt-lib/parser.d.ts.map +1 -0
- package/dist/smt-lib/parser.js +614 -0
- package/dist/smt-lib/parser.js.map +1 -0
- package/dist/smt-lib/tokenizer.d.ts +16 -0
- package/dist/smt-lib/tokenizer.d.ts.map +1 -0
- package/dist/smt-lib/tokenizer.js +234 -0
- package/dist/smt-lib/tokenizer.js.map +1 -0
- package/dist/tests/api/namespaces.test.d.ts +9 -0
- package/dist/tests/api/namespaces.test.d.ts.map +1 -0
- package/dist/tests/api/namespaces.test.js +218 -0
- package/dist/tests/api/namespaces.test.js.map +1 -0
- package/dist/tests/bdd/manager.test.d.ts +2 -0
- package/dist/tests/bdd/manager.test.d.ts.map +1 -0
- package/dist/tests/bdd/manager.test.js +472 -0
- package/dist/tests/bdd/manager.test.js.map +1 -0
- package/dist/tests/game-theory/game-theory.test.d.ts +2 -0
- package/dist/tests/game-theory/game-theory.test.d.ts.map +1 -0
- package/dist/tests/game-theory/game-theory.test.js +252 -0
- package/dist/tests/game-theory/game-theory.test.js.map +1 -0
- package/dist/tests/hol/hol.test.d.ts +2 -0
- package/dist/tests/hol/hol.test.d.ts.map +1 -0
- package/dist/tests/hol/hol.test.js +340 -0
- package/dist/tests/hol/hol.test.js.map +1 -0
- package/dist/tests/information-theory/information-theory.test.d.ts +2 -0
- package/dist/tests/information-theory/information-theory.test.d.ts.map +1 -0
- package/dist/tests/information-theory/information-theory.test.js +291 -0
- package/dist/tests/information-theory/information-theory.test.js.map +1 -0
- package/dist/tests/optimization/ilp.test.d.ts +2 -0
- package/dist/tests/optimization/ilp.test.d.ts.map +1 -0
- package/dist/tests/optimization/ilp.test.js +204 -0
- package/dist/tests/optimization/ilp.test.js.map +1 -0
- package/dist/tests/optimization/lp.test.d.ts +2 -0
- package/dist/tests/optimization/lp.test.d.ts.map +1 -0
- package/dist/tests/optimization/lp.test.js +224 -0
- package/dist/tests/optimization/lp.test.js.map +1 -0
- package/dist/tests/properties/agm.property.test.d.ts +2 -0
- package/dist/tests/properties/agm.property.test.d.ts.map +1 -0
- package/dist/tests/properties/agm.property.test.js +75 -0
- package/dist/tests/properties/agm.property.test.js.map +1 -0
- package/dist/tests/properties/anti-unification.property.test.d.ts +2 -0
- package/dist/tests/properties/anti-unification.property.test.d.ts.map +1 -0
- package/dist/tests/properties/anti-unification.property.test.js +43 -0
- package/dist/tests/properties/anti-unification.property.test.js.map +1 -0
- package/dist/tests/properties/argumentation.property.test.d.ts +2 -0
- package/dist/tests/properties/argumentation.property.test.d.ts.map +1 -0
- package/dist/tests/properties/argumentation.property.test.js +51 -0
- package/dist/tests/properties/argumentation.property.test.js.map +1 -0
- package/dist/tests/properties/bayesian.property.test.d.ts +2 -0
- package/dist/tests/properties/bayesian.property.test.d.ts.map +1 -0
- package/dist/tests/properties/bayesian.property.test.js +32 -0
- package/dist/tests/properties/bayesian.property.test.js.map +1 -0
- package/dist/tests/properties/bisimulation.property.test.d.ts +2 -0
- package/dist/tests/properties/bisimulation.property.test.d.ts.map +1 -0
- package/dist/tests/properties/bisimulation.property.test.js +50 -0
- package/dist/tests/properties/bisimulation.property.test.js.map +1 -0
- package/dist/tests/properties/cdcl.property.test.d.ts +2 -0
- package/dist/tests/properties/cdcl.property.test.d.ts.map +1 -0
- package/dist/tests/properties/cdcl.property.test.js +70 -0
- package/dist/tests/properties/cdcl.property.test.js.map +1 -0
- package/dist/tests/properties/coinduction.property.test.d.ts +2 -0
- package/dist/tests/properties/coinduction.property.test.d.ts.map +1 -0
- package/dist/tests/properties/coinduction.property.test.js +34 -0
- package/dist/tests/properties/coinduction.property.test.js.map +1 -0
- package/dist/tests/properties/constructive-reals.property.test.d.ts +2 -0
- package/dist/tests/properties/constructive-reals.property.test.d.ts.map +1 -0
- package/dist/tests/properties/constructive-reals.property.test.js +59 -0
- package/dist/tests/properties/constructive-reals.property.test.js.map +1 -0
- package/dist/tests/properties/csp.property.test.d.ts +2 -0
- package/dist/tests/properties/csp.property.test.d.ts.map +1 -0
- package/dist/tests/properties/csp.property.test.js +58 -0
- package/dist/tests/properties/csp.property.test.js.map +1 -0
- package/dist/tests/properties/generators.d.ts +78 -0
- package/dist/tests/properties/generators.d.ts.map +1 -0
- package/dist/tests/properties/generators.js +348 -0
- package/dist/tests/properties/generators.js.map +1 -0
- package/dist/tests/properties/ho-unify.property.test.d.ts +2 -0
- package/dist/tests/properties/ho-unify.property.test.d.ts.map +1 -0
- package/dist/tests/properties/ho-unify.property.test.js +46 -0
- package/dist/tests/properties/ho-unify.property.test.js.map +1 -0
- package/dist/tests/properties/hyperreal.property.test.d.ts +2 -0
- package/dist/tests/properties/hyperreal.property.test.d.ts.map +1 -0
- package/dist/tests/properties/hyperreal.property.test.js +33 -0
- package/dist/tests/properties/hyperreal.property.test.js.map +1 -0
- package/dist/tests/properties/intuit-nj.property.test.d.ts +2 -0
- package/dist/tests/properties/intuit-nj.property.test.d.ts.map +1 -0
- package/dist/tests/properties/intuit-nj.property.test.js +57 -0
- package/dist/tests/properties/intuit-nj.property.test.js.map +1 -0
- package/dist/tests/properties/lambda-calc.property.test.d.ts +2 -0
- package/dist/tests/properties/lambda-calc.property.test.d.ts.map +1 -0
- package/dist/tests/properties/lambda-calc.property.test.js +35 -0
- package/dist/tests/properties/lambda-calc.property.test.js.map +1 -0
- package/dist/tests/properties/mln.property.test.d.ts +2 -0
- package/dist/tests/properties/mln.property.test.d.ts.map +1 -0
- package/dist/tests/properties/mln.property.test.js +41 -0
- package/dist/tests/properties/mln.property.test.js.map +1 -0
- package/dist/tests/properties/mltt.property.test.d.ts +2 -0
- package/dist/tests/properties/mltt.property.test.d.ts.map +1 -0
- package/dist/tests/properties/mltt.property.test.js +33 -0
- package/dist/tests/properties/mltt.property.test.js.map +1 -0
- package/dist/tests/properties/nbe.property.test.d.ts +2 -0
- package/dist/tests/properties/nbe.property.test.d.ts.map +1 -0
- package/dist/tests/properties/nbe.property.test.js +44 -0
- package/dist/tests/properties/nbe.property.test.js.map +1 -0
- package/dist/tests/properties/planning.property.test.d.ts +2 -0
- package/dist/tests/properties/planning.property.test.d.ts.map +1 -0
- package/dist/tests/properties/planning.property.test.js +51 -0
- package/dist/tests/properties/planning.property.test.js.map +1 -0
- package/dist/tests/properties/profile-bridge.property.test.d.ts +2 -0
- package/dist/tests/properties/profile-bridge.property.test.d.ts.map +1 -0
- package/dist/tests/properties/profile-bridge.property.test.js +71 -0
- package/dist/tests/properties/profile-bridge.property.test.js.map +1 -0
- package/dist/tests/properties/refinement-types.property.test.d.ts +2 -0
- package/dist/tests/properties/refinement-types.property.test.d.ts.map +1 -0
- package/dist/tests/properties/refinement-types.property.test.js +37 -0
- package/dist/tests/properties/refinement-types.property.test.js.map +1 -0
- package/dist/tests/properties/sequent-g3.property.test.d.ts +2 -0
- package/dist/tests/properties/sequent-g3.property.test.d.ts.map +1 -0
- package/dist/tests/properties/sequent-g3.property.test.js +34 -0
- package/dist/tests/properties/sequent-g3.property.test.js.map +1 -0
- package/dist/tests/properties/symbolic-diff.property.test.d.ts +2 -0
- package/dist/tests/properties/symbolic-diff.property.test.d.ts.map +1 -0
- package/dist/tests/properties/symbolic-diff.property.test.js +49 -0
- package/dist/tests/properties/symbolic-diff.property.test.js.map +1 -0
- package/dist/tests/properties/system-f.property.test.d.ts +2 -0
- package/dist/tests/properties/system-f.property.test.d.ts.map +1 -0
- package/dist/tests/properties/system-f.property.test.js +37 -0
- package/dist/tests/properties/system-f.property.test.js.map +1 -0
- package/dist/tests/properties/theorem-cache.property.test.d.ts +2 -0
- package/dist/tests/properties/theorem-cache.property.test.d.ts.map +1 -0
- package/dist/tests/properties/theorem-cache.property.test.js +38 -0
- package/dist/tests/properties/theorem-cache.property.test.js.map +1 -0
- package/dist/tests/properties/trs.property.test.d.ts +2 -0
- package/dist/tests/properties/trs.property.test.d.ts.map +1 -0
- package/dist/tests/properties/trs.property.test.js +34 -0
- package/dist/tests/properties/trs.property.test.js.map +1 -0
- package/dist/tests/properties/unification.property.test.d.ts +2 -0
- package/dist/tests/properties/unification.property.test.d.ts.map +1 -0
- package/dist/tests/properties/unification.property.test.js +42 -0
- package/dist/tests/properties/unification.property.test.js.map +1 -0
- package/dist/tests/smt-lib/emitter.test.d.ts +2 -0
- package/dist/tests/smt-lib/emitter.test.d.ts.map +1 -0
- package/dist/tests/smt-lib/emitter.test.js +155 -0
- package/dist/tests/smt-lib/emitter.test.js.map +1 -0
- package/dist/tests/smt-lib/parser.test.d.ts +2 -0
- package/dist/tests/smt-lib/parser.test.d.ts.map +1 -0
- package/dist/tests/smt-lib/parser.test.js +164 -0
- package/dist/tests/smt-lib/parser.test.js.map +1 -0
- package/dist/tests/smt-lib/tokenizer.test.d.ts +2 -0
- package/dist/tests/smt-lib/tokenizer.test.d.ts.map +1 -0
- package/dist/tests/smt-lib/tokenizer.test.js +59 -0
- package/dist/tests/smt-lib/tokenizer.test.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const bdd_1 = require("../../bdd");
|
|
5
|
+
(0, vitest_1.describe)('BDDManager / constructores básicos', () => {
|
|
6
|
+
(0, vitest_1.it)('true_ y false_ son terminales distintos', () => {
|
|
7
|
+
const m = new bdd_1.BDDManager(2);
|
|
8
|
+
const T = m.true_();
|
|
9
|
+
const F = m.false_();
|
|
10
|
+
(0, vitest_1.expect)((0, bdd_1.isTerminal)(T)).toBe(true);
|
|
11
|
+
(0, vitest_1.expect)((0, bdd_1.isTerminal)(F)).toBe(true);
|
|
12
|
+
(0, vitest_1.expect)(T).not.toBe(F);
|
|
13
|
+
if ((0, bdd_1.isTerminal)(T) && (0, bdd_1.isTerminal)(F)) {
|
|
14
|
+
(0, vitest_1.expect)(T.value).toBe(true);
|
|
15
|
+
(0, vitest_1.expect)(F.value).toBe(false);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('variable(i) crea nodo con low=FALSE y high=TRUE', () => {
|
|
19
|
+
const m = new bdd_1.BDDManager(3);
|
|
20
|
+
const x0 = m.variable(0);
|
|
21
|
+
(0, vitest_1.expect)((0, bdd_1.isTerminal)(x0)).toBe(false);
|
|
22
|
+
if (!(0, bdd_1.isTerminal)(x0)) {
|
|
23
|
+
(0, vitest_1.expect)(x0.variable).toBe(0);
|
|
24
|
+
(0, vitest_1.expect)(x0.low).toBe(m.false_());
|
|
25
|
+
(0, vitest_1.expect)(x0.high).toBe(m.true_());
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('variable fuera de rango lanza error', () => {
|
|
29
|
+
const m = new bdd_1.BDDManager(2);
|
|
30
|
+
(0, vitest_1.expect)(() => m.variable(2)).toThrow();
|
|
31
|
+
(0, vitest_1.expect)(() => m.variable(-1)).toThrow();
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)('variable(i) misma llamada devuelve la misma referencia (canonicidad)', () => {
|
|
34
|
+
const m = new bdd_1.BDDManager(3);
|
|
35
|
+
const a = m.variable(1);
|
|
36
|
+
const b = m.variable(1);
|
|
37
|
+
(0, vitest_1.expect)(a).toBe(b);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.describe)('BDDManager / operaciones booleanas', () => {
|
|
41
|
+
(0, vitest_1.it)('not_ doble es identidad', () => {
|
|
42
|
+
const m = new bdd_1.BDDManager(2);
|
|
43
|
+
const x = m.variable(0);
|
|
44
|
+
(0, vitest_1.expect)(m.not_(m.not_(x))).toBe(x);
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)('and_ con FALSE absorbe a FALSE', () => {
|
|
47
|
+
const m = new bdd_1.BDDManager(2);
|
|
48
|
+
const x = m.variable(0);
|
|
49
|
+
(0, vitest_1.expect)(m.and_(x, m.false_())).toBe(m.false_());
|
|
50
|
+
(0, vitest_1.expect)(m.and_(m.false_(), x)).toBe(m.false_());
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)('or_ con TRUE absorbe a TRUE', () => {
|
|
53
|
+
const m = new bdd_1.BDDManager(2);
|
|
54
|
+
const x = m.variable(0);
|
|
55
|
+
(0, vitest_1.expect)(m.or_(x, m.true_())).toBe(m.true_());
|
|
56
|
+
(0, vitest_1.expect)(m.or_(m.true_(), x)).toBe(m.true_());
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('x ∧ ¬x = FALSE', () => {
|
|
59
|
+
const m = new bdd_1.BDDManager(2);
|
|
60
|
+
const x = m.variable(0);
|
|
61
|
+
const result = m.and_(x, m.not_(x));
|
|
62
|
+
(0, vitest_1.expect)(result).toBe(m.false_());
|
|
63
|
+
(0, vitest_1.expect)(m.equivalent(result, m.false_())).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)('x ∨ ¬x = TRUE', () => {
|
|
66
|
+
const m = new bdd_1.BDDManager(2);
|
|
67
|
+
const x = m.variable(0);
|
|
68
|
+
const result = m.or_(x, m.not_(x));
|
|
69
|
+
(0, vitest_1.expect)(result).toBe(m.true_());
|
|
70
|
+
(0, vitest_1.expect)(m.equivalent(result, m.true_())).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('xor es exclusión: x ⊕ x = FALSE, x ⊕ ¬x = TRUE', () => {
|
|
73
|
+
const m = new bdd_1.BDDManager(2);
|
|
74
|
+
const x = m.variable(0);
|
|
75
|
+
(0, vitest_1.expect)(m.xor(x, x)).toBe(m.false_());
|
|
76
|
+
(0, vitest_1.expect)(m.xor(x, m.not_(x))).toBe(m.true_());
|
|
77
|
+
});
|
|
78
|
+
(0, vitest_1.it)('De Morgan: ¬(a ∧ b) = ¬a ∨ ¬b', () => {
|
|
79
|
+
const m = new bdd_1.BDDManager(3);
|
|
80
|
+
const a = m.variable(0);
|
|
81
|
+
const b = m.variable(1);
|
|
82
|
+
const left = m.not_(m.and_(a, b));
|
|
83
|
+
const right = m.or_(m.not_(a), m.not_(b));
|
|
84
|
+
(0, vitest_1.expect)(m.equivalent(left, right)).toBe(true);
|
|
85
|
+
});
|
|
86
|
+
(0, vitest_1.it)('Asociatividad de AND: (a ∧ b) ∧ c = a ∧ (b ∧ c)', () => {
|
|
87
|
+
const m = new bdd_1.BDDManager(3);
|
|
88
|
+
const a = m.variable(0);
|
|
89
|
+
const b = m.variable(1);
|
|
90
|
+
const c = m.variable(2);
|
|
91
|
+
(0, vitest_1.expect)(m.equivalent(m.and_(m.and_(a, b), c), m.and_(a, m.and_(b, c)))).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
(0, vitest_1.it)('Distributividad: a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c)', () => {
|
|
94
|
+
const m = new bdd_1.BDDManager(3);
|
|
95
|
+
const a = m.variable(0);
|
|
96
|
+
const b = m.variable(1);
|
|
97
|
+
const c = m.variable(2);
|
|
98
|
+
const left = m.and_(a, m.or_(b, c));
|
|
99
|
+
const right = m.or_(m.and_(a, b), m.and_(a, c));
|
|
100
|
+
(0, vitest_1.expect)(m.equivalent(left, right)).toBe(true);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
(0, vitest_1.describe)('BDDManager / implies, iff, ite', () => {
|
|
104
|
+
(0, vitest_1.it)('implies(a, b) = ¬a ∨ b', () => {
|
|
105
|
+
const m = new bdd_1.BDDManager(2);
|
|
106
|
+
const a = m.variable(0);
|
|
107
|
+
const b = m.variable(1);
|
|
108
|
+
(0, vitest_1.expect)(m.equivalent(m.implies(a, b), m.or_(m.not_(a), b))).toBe(true);
|
|
109
|
+
});
|
|
110
|
+
(0, vitest_1.it)('iff(a, a) = TRUE', () => {
|
|
111
|
+
const m = new bdd_1.BDDManager(2);
|
|
112
|
+
const a = m.variable(0);
|
|
113
|
+
(0, vitest_1.expect)(m.iff(a, a)).toBe(m.true_());
|
|
114
|
+
});
|
|
115
|
+
(0, vitest_1.it)('iff(a, ¬a) = FALSE', () => {
|
|
116
|
+
const m = new bdd_1.BDDManager(2);
|
|
117
|
+
const a = m.variable(0);
|
|
118
|
+
(0, vitest_1.expect)(m.iff(a, m.not_(a))).toBe(m.false_());
|
|
119
|
+
});
|
|
120
|
+
(0, vitest_1.it)('ite(TRUE, t, e) = t; ite(FALSE, t, e) = e', () => {
|
|
121
|
+
const m = new bdd_1.BDDManager(2);
|
|
122
|
+
const t = m.variable(0);
|
|
123
|
+
const e = m.variable(1);
|
|
124
|
+
(0, vitest_1.expect)(m.ite(m.true_(), t, e)).toBe(t);
|
|
125
|
+
(0, vitest_1.expect)(m.ite(m.false_(), t, e)).toBe(e);
|
|
126
|
+
});
|
|
127
|
+
(0, vitest_1.it)('ite(c, TRUE, FALSE) = c', () => {
|
|
128
|
+
const m = new bdd_1.BDDManager(2);
|
|
129
|
+
const c = m.variable(0);
|
|
130
|
+
(0, vitest_1.expect)(m.ite(c, m.true_(), m.false_())).toBe(c);
|
|
131
|
+
});
|
|
132
|
+
(0, vitest_1.it)('ite(c, FALSE, TRUE) = ¬c', () => {
|
|
133
|
+
const m = new bdd_1.BDDManager(2);
|
|
134
|
+
const c = m.variable(0);
|
|
135
|
+
(0, vitest_1.expect)(m.ite(c, m.false_(), m.true_())).toBe(m.not_(c));
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.describe)('BDDManager / queries', () => {
|
|
139
|
+
(0, vitest_1.it)('isSatisfiable(false) = false', () => {
|
|
140
|
+
const m = new bdd_1.BDDManager(2);
|
|
141
|
+
(0, vitest_1.expect)(m.isSatisfiable(m.false_())).toBe(false);
|
|
142
|
+
});
|
|
143
|
+
(0, vitest_1.it)('isSatisfiable(true) = true', () => {
|
|
144
|
+
const m = new bdd_1.BDDManager(2);
|
|
145
|
+
(0, vitest_1.expect)(m.isSatisfiable(m.true_())).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
(0, vitest_1.it)('isValid(true) = true; isValid(x) = false', () => {
|
|
148
|
+
const m = new bdd_1.BDDManager(2);
|
|
149
|
+
(0, vitest_1.expect)(m.isValid(m.true_())).toBe(true);
|
|
150
|
+
(0, vitest_1.expect)(m.isValid(m.variable(0))).toBe(false);
|
|
151
|
+
});
|
|
152
|
+
(0, vitest_1.it)('equivalent(A, A) siempre es true', () => {
|
|
153
|
+
const m = new bdd_1.BDDManager(3);
|
|
154
|
+
const f = m.and_(m.variable(0), m.or_(m.variable(1), m.not_(m.variable(2))));
|
|
155
|
+
(0, vitest_1.expect)(m.equivalent(f, f)).toBe(true);
|
|
156
|
+
});
|
|
157
|
+
(0, vitest_1.it)('equivalent(x ∨ ¬x, TRUE) = true (tautología)', () => {
|
|
158
|
+
const m = new bdd_1.BDDManager(2);
|
|
159
|
+
const x = m.variable(0);
|
|
160
|
+
(0, vitest_1.expect)(m.equivalent(m.or_(x, m.not_(x)), m.true_())).toBe(true);
|
|
161
|
+
});
|
|
162
|
+
(0, vitest_1.it)('equivalent(x ∧ ¬x, FALSE) = true (contradicción)', () => {
|
|
163
|
+
const m = new bdd_1.BDDManager(2);
|
|
164
|
+
const x = m.variable(0);
|
|
165
|
+
(0, vitest_1.expect)(m.equivalent(m.and_(x, m.not_(x)), m.false_())).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
(0, vitest_1.it)('satCount(x1 ∨ x2 ∨ x3) sobre 3 vars = 7', () => {
|
|
168
|
+
const m = new bdd_1.BDDManager(3);
|
|
169
|
+
const f = m.or_(m.or_(m.variable(0), m.variable(1)), m.variable(2));
|
|
170
|
+
(0, vitest_1.expect)(m.satCount(f)).toBe(7n);
|
|
171
|
+
});
|
|
172
|
+
(0, vitest_1.it)('satCount(TRUE) sobre n vars = 2^n', () => {
|
|
173
|
+
const m = new bdd_1.BDDManager(5);
|
|
174
|
+
(0, vitest_1.expect)(m.satCount(m.true_())).toBe(32n);
|
|
175
|
+
});
|
|
176
|
+
(0, vitest_1.it)('satCount(FALSE) = 0', () => {
|
|
177
|
+
const m = new bdd_1.BDDManager(5);
|
|
178
|
+
(0, vitest_1.expect)(m.satCount(m.false_())).toBe(0n);
|
|
179
|
+
});
|
|
180
|
+
(0, vitest_1.it)('satCount(x0) sobre 4 vars = 8 (la mitad)', () => {
|
|
181
|
+
const m = new bdd_1.BDDManager(4);
|
|
182
|
+
const x0 = m.variable(0);
|
|
183
|
+
(0, vitest_1.expect)(m.satCount(x0)).toBe(8n);
|
|
184
|
+
});
|
|
185
|
+
(0, vitest_1.it)('satCount(x0 ∧ x1) sobre 4 vars = 4', () => {
|
|
186
|
+
const m = new bdd_1.BDDManager(4);
|
|
187
|
+
const f = m.and_(m.variable(0), m.variable(1));
|
|
188
|
+
(0, vitest_1.expect)(m.satCount(f)).toBe(4n);
|
|
189
|
+
});
|
|
190
|
+
(0, vitest_1.it)('satCount soporta funciones con muchas variables (bigint)', () => {
|
|
191
|
+
const m = new bdd_1.BDDManager(80);
|
|
192
|
+
// x0: la mitad de 2^80 asignaciones
|
|
193
|
+
const x0 = m.variable(0);
|
|
194
|
+
(0, vitest_1.expect)(m.satCount(x0)).toBe(1n << 79n);
|
|
195
|
+
});
|
|
196
|
+
(0, vitest_1.it)('evaluate evalúa correctamente una fórmula', () => {
|
|
197
|
+
const m = new bdd_1.BDDManager(3);
|
|
198
|
+
// f = x0 ∧ (x1 ∨ x2)
|
|
199
|
+
const f = m.and_(m.variable(0), m.or_(m.variable(1), m.variable(2)));
|
|
200
|
+
(0, vitest_1.expect)(m.evaluate(f, [true, false, true])).toBe(true);
|
|
201
|
+
(0, vitest_1.expect)(m.evaluate(f, [true, false, false])).toBe(false);
|
|
202
|
+
(0, vitest_1.expect)(m.evaluate(f, [false, true, true])).toBe(false);
|
|
203
|
+
(0, vitest_1.expect)(m.evaluate(f, [true, true, false])).toBe(true);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
(0, vitest_1.describe)('BDDManager / cuantificadores', () => {
|
|
207
|
+
(0, vitest_1.it)('∃x0. (x0 ∧ x1) = x1', () => {
|
|
208
|
+
const m = new bdd_1.BDDManager(2);
|
|
209
|
+
const x0 = m.variable(0);
|
|
210
|
+
const x1 = m.variable(1);
|
|
211
|
+
const f = m.and_(x0, x1);
|
|
212
|
+
(0, vitest_1.expect)(m.equivalent(m.exists(0, f), x1)).toBe(true);
|
|
213
|
+
});
|
|
214
|
+
(0, vitest_1.it)('∀x0. (x0 ∨ x1) = x1', () => {
|
|
215
|
+
const m = new bdd_1.BDDManager(2);
|
|
216
|
+
const x0 = m.variable(0);
|
|
217
|
+
const x1 = m.variable(1);
|
|
218
|
+
const f = m.or_(x0, x1);
|
|
219
|
+
(0, vitest_1.expect)(m.equivalent(m.forall(0, f), x1)).toBe(true);
|
|
220
|
+
});
|
|
221
|
+
(0, vitest_1.it)('∃x. f es satisfacible si f lo es', () => {
|
|
222
|
+
const m = new bdd_1.BDDManager(3);
|
|
223
|
+
const f = m.and_(m.variable(0), m.variable(1));
|
|
224
|
+
(0, vitest_1.expect)(m.isSatisfiable(m.exists(0, f))).toBe(true);
|
|
225
|
+
});
|
|
226
|
+
(0, vitest_1.it)('∀x. (x) = FALSE (porque x=0 da falso)', () => {
|
|
227
|
+
const m = new bdd_1.BDDManager(2);
|
|
228
|
+
const x = m.variable(0);
|
|
229
|
+
(0, vitest_1.expect)(m.forall(0, x)).toBe(m.false_());
|
|
230
|
+
});
|
|
231
|
+
(0, vitest_1.it)('∃x. (x) = TRUE', () => {
|
|
232
|
+
const m = new bdd_1.BDDManager(2);
|
|
233
|
+
const x = m.variable(0);
|
|
234
|
+
(0, vitest_1.expect)(m.exists(0, x)).toBe(m.true_());
|
|
235
|
+
});
|
|
236
|
+
(0, vitest_1.it)('exists fuera de rango lanza error', () => {
|
|
237
|
+
const m = new bdd_1.BDDManager(2);
|
|
238
|
+
(0, vitest_1.expect)(() => m.exists(5, m.true_())).toThrow();
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
(0, vitest_1.describe)('BDDManager / fromCNF', () => {
|
|
242
|
+
(0, vitest_1.it)('CNF vacío = TRUE', () => {
|
|
243
|
+
const m = new bdd_1.BDDManager(3);
|
|
244
|
+
(0, vitest_1.expect)(m.fromCNF([])).toBe(m.true_());
|
|
245
|
+
});
|
|
246
|
+
(0, vitest_1.it)('CNF con clausula vacía = FALSE', () => {
|
|
247
|
+
const m = new bdd_1.BDDManager(3);
|
|
248
|
+
(0, vitest_1.expect)(m.fromCNF([[]])).toBe(m.false_());
|
|
249
|
+
});
|
|
250
|
+
(0, vitest_1.it)('fromCNF([[1,2],[-1,3]]) — DIMACS válido', () => {
|
|
251
|
+
const m = new bdd_1.BDDManager(3);
|
|
252
|
+
const b = m.fromCNF([
|
|
253
|
+
[1, 2],
|
|
254
|
+
[-1, 3],
|
|
255
|
+
]);
|
|
256
|
+
// (x0 ∨ x1) ∧ (¬x0 ∨ x2)
|
|
257
|
+
// x0=0, x1=0 → primer clausula falsa → 0
|
|
258
|
+
(0, vitest_1.expect)(m.evaluate(b, [false, false, false])).toBe(false);
|
|
259
|
+
(0, vitest_1.expect)(m.evaluate(b, [false, true, false])).toBe(true);
|
|
260
|
+
(0, vitest_1.expect)(m.evaluate(b, [true, false, true])).toBe(true);
|
|
261
|
+
(0, vitest_1.expect)(m.evaluate(b, [true, false, false])).toBe(false);
|
|
262
|
+
});
|
|
263
|
+
(0, vitest_1.it)('fromCNF con literal contradictorio queda UNSAT', () => {
|
|
264
|
+
const m = new bdd_1.BDDManager(2);
|
|
265
|
+
// (x0) ∧ (¬x0) → UNSAT
|
|
266
|
+
const b = m.fromCNF([[1], [-1]]);
|
|
267
|
+
(0, vitest_1.expect)(b).toBe(m.false_());
|
|
268
|
+
(0, vitest_1.expect)(m.isSatisfiable(b)).toBe(false);
|
|
269
|
+
});
|
|
270
|
+
(0, vitest_1.it)('3-SAT con 6 vars: instancia satisfactible', () => {
|
|
271
|
+
const m = new bdd_1.BDDManager(6);
|
|
272
|
+
// Fórmula satisfactible construida a mano:
|
|
273
|
+
// (x1 ∨ x2 ∨ x3) ∧ (¬x1 ∨ x4 ∨ x5) ∧ (¬x4 ∨ x6 ∨ x2)
|
|
274
|
+
const cnf = [
|
|
275
|
+
[1, 2, 3],
|
|
276
|
+
[-1, 4, 5],
|
|
277
|
+
[-4, 6, 2],
|
|
278
|
+
];
|
|
279
|
+
const b = m.fromCNF(cnf);
|
|
280
|
+
(0, vitest_1.expect)(m.isSatisfiable(b)).toBe(true);
|
|
281
|
+
(0, vitest_1.expect)(m.satCount(b)).toBeGreaterThan(0n);
|
|
282
|
+
});
|
|
283
|
+
(0, vitest_1.it)('3-SAT instance UNSAT detectada (pigeonhole pequeño)', () => {
|
|
284
|
+
// 3 palomas, 2 huecos, modelo:
|
|
285
|
+
// vars: p_ij = paloma i en hueco j, i=1..3, j=1..2 → 6 vars (índices 0..5)
|
|
286
|
+
// mapping: p_ij = var (i-1)*2 + (j-1)
|
|
287
|
+
const m = new bdd_1.BDDManager(6);
|
|
288
|
+
const lit = (i, j) => (i - 1) * 2 + (j - 1) + 1;
|
|
289
|
+
const cnf = [];
|
|
290
|
+
// Cada paloma en al menos un hueco
|
|
291
|
+
for (let i = 1; i <= 3; i++) {
|
|
292
|
+
cnf.push([lit(i, 1), lit(i, 2)]);
|
|
293
|
+
}
|
|
294
|
+
// No dos palomas en el mismo hueco
|
|
295
|
+
for (let j = 1; j <= 2; j++) {
|
|
296
|
+
for (let i1 = 1; i1 <= 3; i1++) {
|
|
297
|
+
for (let i2 = i1 + 1; i2 <= 3; i2++) {
|
|
298
|
+
cnf.push([-lit(i1, j), -lit(i2, j)]);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
const b = m.fromCNF(cnf);
|
|
303
|
+
(0, vitest_1.expect)(m.isSatisfiable(b)).toBe(false);
|
|
304
|
+
(0, vitest_1.expect)(b).toBe(m.false_());
|
|
305
|
+
});
|
|
306
|
+
(0, vitest_1.it)('fromCNF valida literal 0', () => {
|
|
307
|
+
const m = new bdd_1.BDDManager(2);
|
|
308
|
+
(0, vitest_1.expect)(() => m.fromCNF([[0]])).toThrow();
|
|
309
|
+
});
|
|
310
|
+
(0, vitest_1.it)('fromCNF valida rango de variables', () => {
|
|
311
|
+
const m = new bdd_1.BDDManager(2);
|
|
312
|
+
(0, vitest_1.expect)(() => m.fromCNF([[5]])).toThrow();
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
(0, vitest_1.describe)('BDDManager / fromFormula', () => {
|
|
316
|
+
(0, vitest_1.it)('parsea árboles simbólicos AND/OR/NOT', () => {
|
|
317
|
+
const m = new bdd_1.BDDManager(3);
|
|
318
|
+
const ast = {
|
|
319
|
+
kind: 'and',
|
|
320
|
+
left: { kind: 'var', index: 0 },
|
|
321
|
+
right: {
|
|
322
|
+
kind: 'or',
|
|
323
|
+
left: { kind: 'not', child: { kind: 'var', index: 1 } },
|
|
324
|
+
right: { kind: 'var', index: 2 },
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
const b = m.fromFormula(ast);
|
|
328
|
+
// x0 ∧ (¬x1 ∨ x2)
|
|
329
|
+
(0, vitest_1.expect)(m.evaluate(b, [true, false, false])).toBe(true);
|
|
330
|
+
(0, vitest_1.expect)(m.evaluate(b, [true, true, false])).toBe(false);
|
|
331
|
+
(0, vitest_1.expect)(m.evaluate(b, [true, true, true])).toBe(true);
|
|
332
|
+
(0, vitest_1.expect)(m.evaluate(b, [false, false, true])).toBe(false);
|
|
333
|
+
});
|
|
334
|
+
(0, vitest_1.it)('parsea ite, xor, implies, iff', () => {
|
|
335
|
+
const m = new bdd_1.BDDManager(3);
|
|
336
|
+
const xor = m.fromFormula({
|
|
337
|
+
kind: 'xor',
|
|
338
|
+
left: { kind: 'var', index: 0 },
|
|
339
|
+
right: { kind: 'var', index: 1 },
|
|
340
|
+
});
|
|
341
|
+
(0, vitest_1.expect)(m.equivalent(xor, m.xor(m.variable(0), m.variable(1)))).toBe(true);
|
|
342
|
+
const ite = m.fromFormula({
|
|
343
|
+
kind: 'ite',
|
|
344
|
+
cond: { kind: 'var', index: 0 },
|
|
345
|
+
then: { kind: 'var', index: 1 },
|
|
346
|
+
else: { kind: 'var', index: 2 },
|
|
347
|
+
});
|
|
348
|
+
(0, vitest_1.expect)(m.equivalent(ite, m.ite(m.variable(0), m.variable(1), m.variable(2)))).toBe(true);
|
|
349
|
+
});
|
|
350
|
+
(0, vitest_1.it)('rechaza kind desconocido', () => {
|
|
351
|
+
const m = new bdd_1.BDDManager(2);
|
|
352
|
+
(0, vitest_1.expect)(() => m.fromFormula({ kind: 'bogus' })).toThrow();
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
(0, vitest_1.describe)('BDDManager / 8-queens (encoding)', () => {
|
|
356
|
+
// Para 4-queens (4x4 tablero), encoding directo de constraints.
|
|
357
|
+
// 16 vars: q_ij = reina en (i,j), i,j ∈ 0..3 → idx = i*4 + j
|
|
358
|
+
(0, vitest_1.it)('4-queens tiene exactamente 2 soluciones', () => {
|
|
359
|
+
const m = new bdd_1.BDDManager(16);
|
|
360
|
+
const idx = (i, j) => i * 4 + j;
|
|
361
|
+
let formula = m.true_();
|
|
362
|
+
// 1) Cada fila tiene exactamente una reina (al menos una OR + a lo sumo una pairwise)
|
|
363
|
+
for (let i = 0; i < 4; i++) {
|
|
364
|
+
// al menos una
|
|
365
|
+
let rowOr = m.false_();
|
|
366
|
+
for (let j = 0; j < 4; j++) {
|
|
367
|
+
rowOr = m.or_(rowOr, m.variable(idx(i, j)));
|
|
368
|
+
}
|
|
369
|
+
formula = m.and_(formula, rowOr);
|
|
370
|
+
// a lo sumo una
|
|
371
|
+
for (let j1 = 0; j1 < 4; j1++) {
|
|
372
|
+
for (let j2 = j1 + 1; j2 < 4; j2++) {
|
|
373
|
+
formula = m.and_(formula, m.or_(m.not_(m.variable(idx(i, j1))), m.not_(m.variable(idx(i, j2)))));
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// 2) Cada columna a lo sumo una reina
|
|
378
|
+
for (let j = 0; j < 4; j++) {
|
|
379
|
+
for (let i1 = 0; i1 < 4; i1++) {
|
|
380
|
+
for (let i2 = i1 + 1; i2 < 4; i2++) {
|
|
381
|
+
formula = m.and_(formula, m.or_(m.not_(m.variable(idx(i1, j))), m.not_(m.variable(idx(i2, j)))));
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// 3) Diagonales a lo sumo una
|
|
386
|
+
for (let i1 = 0; i1 < 4; i1++) {
|
|
387
|
+
for (let j1 = 0; j1 < 4; j1++) {
|
|
388
|
+
for (let i2 = i1 + 1; i2 < 4; i2++) {
|
|
389
|
+
for (let j2 = 0; j2 < 4; j2++) {
|
|
390
|
+
if (Math.abs(i1 - i2) === Math.abs(j1 - j2)) {
|
|
391
|
+
formula = m.and_(formula, m.or_(m.not_(m.variable(idx(i1, j1))), m.not_(m.variable(idx(i2, j2)))));
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// 4-queens tiene exactamente 2 soluciones
|
|
398
|
+
(0, vitest_1.expect)(m.satCount(formula)).toBe(2n);
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
(0, vitest_1.describe)('BDDManager / orden de variables', () => {
|
|
402
|
+
(0, vitest_1.it)('setVarOrder válida tamaño y rango', () => {
|
|
403
|
+
const m = new bdd_1.BDDManager(3);
|
|
404
|
+
(0, vitest_1.expect)(() => m.setVarOrder([0, 1])).toThrow();
|
|
405
|
+
(0, vitest_1.expect)(() => m.setVarOrder([0, 1, 5])).toThrow();
|
|
406
|
+
(0, vitest_1.expect)(() => m.setVarOrder([0, 0, 1])).toThrow();
|
|
407
|
+
});
|
|
408
|
+
(0, vitest_1.it)('misma función con orden distinto puede tener tamaños distintos', () => {
|
|
409
|
+
// función x0 ↔ x1 con orden [0,1] vs [1,0]: ambas dan 3 nodos.
|
|
410
|
+
// Pero (x0 ∧ x1) ∨ (x2 ∧ x3) tiene tamaños distintos según orden.
|
|
411
|
+
const m1 = new bdd_1.BDDManager(4);
|
|
412
|
+
const f1 = m1.or_(m1.and_(m1.variable(0), m1.variable(1)), m1.and_(m1.variable(2), m1.variable(3)));
|
|
413
|
+
const size1 = m1.countReachable(f1);
|
|
414
|
+
const m2 = new bdd_1.BDDManager(4);
|
|
415
|
+
m2.setVarOrder([0, 2, 1, 3]); // interleaving malo
|
|
416
|
+
const f2 = m2.or_(m2.and_(m2.variable(0), m2.variable(1)), m2.and_(m2.variable(2), m2.variable(3)));
|
|
417
|
+
const size2 = m2.countReachable(f2);
|
|
418
|
+
// En general orden malo crece. Verificar al menos: ambos son satisfacibles
|
|
419
|
+
// y representan la misma función semánticamente.
|
|
420
|
+
(0, vitest_1.expect)(size1).toBeGreaterThan(0);
|
|
421
|
+
(0, vitest_1.expect)(size2).toBeGreaterThan(0);
|
|
422
|
+
// El orden bueno suele ser <= el malo (no estricto en este caso pequeño,
|
|
423
|
+
// pero comparamos al menos satCount).
|
|
424
|
+
(0, vitest_1.expect)(m1.satCount(f1)).toBe(m2.satCount(f2));
|
|
425
|
+
});
|
|
426
|
+
(0, vitest_1.it)('stats reporta nodos y reducciones', () => {
|
|
427
|
+
const m = new bdd_1.BDDManager(3);
|
|
428
|
+
m.and_(m.variable(0), m.variable(1));
|
|
429
|
+
m.and_(m.variable(0), m.variable(1)); // hit en memo
|
|
430
|
+
const s = m.stats();
|
|
431
|
+
(0, vitest_1.expect)(s.nodes).toBeGreaterThan(0);
|
|
432
|
+
(0, vitest_1.expect)(s.reductions).toBeGreaterThanOrEqual(0);
|
|
433
|
+
});
|
|
434
|
+
(0, vitest_1.it)('countReachable cuenta correctamente nodos del DAG', () => {
|
|
435
|
+
const m = new bdd_1.BDDManager(3);
|
|
436
|
+
const x0 = m.variable(0);
|
|
437
|
+
// un solo nodo interno
|
|
438
|
+
(0, vitest_1.expect)(m.countReachable(x0)).toBe(1);
|
|
439
|
+
// terminales no se cuentan
|
|
440
|
+
(0, vitest_1.expect)(m.countReachable(m.true_())).toBe(0);
|
|
441
|
+
(0, vitest_1.expect)(m.countReachable(m.false_())).toBe(0);
|
|
442
|
+
});
|
|
443
|
+
});
|
|
444
|
+
(0, vitest_1.describe)('BDDManager / propiedades semánticas exhaustivas', () => {
|
|
445
|
+
(0, vitest_1.it)('tabla de verdad: 4 vars, (x0 ∧ ¬x1) ∨ x3 evaluada en todas las asignaciones', () => {
|
|
446
|
+
const m = new bdd_1.BDDManager(4);
|
|
447
|
+
const f = m.or_(m.and_(m.variable(0), m.not_(m.variable(1))), m.variable(3));
|
|
448
|
+
let sat = 0n;
|
|
449
|
+
for (let mask = 0; mask < 16; mask++) {
|
|
450
|
+
const a = [(mask & 1) !== 0, (mask & 2) !== 0, (mask & 4) !== 0, (mask & 8) !== 0];
|
|
451
|
+
const expected = (a[0] && !a[1]) || a[3];
|
|
452
|
+
(0, vitest_1.expect)(m.evaluate(f, a)).toBe(expected);
|
|
453
|
+
if (expected)
|
|
454
|
+
sat++;
|
|
455
|
+
}
|
|
456
|
+
(0, vitest_1.expect)(m.satCount(f)).toBe(sat);
|
|
457
|
+
});
|
|
458
|
+
(0, vitest_1.it)('equivalencia canónica: dos construcciones distintas de la misma fn dan misma referencia', () => {
|
|
459
|
+
const m = new bdd_1.BDDManager(3);
|
|
460
|
+
const fA = m.and_(m.or_(m.variable(0), m.variable(1)), m.variable(2));
|
|
461
|
+
const fB = m.or_(m.and_(m.variable(0), m.variable(2)), m.and_(m.variable(1), m.variable(2)));
|
|
462
|
+
(0, vitest_1.expect)(fA).toBe(fB); // canonicidad
|
|
463
|
+
(0, vitest_1.expect)(m.equivalent(fA, fB)).toBe(true);
|
|
464
|
+
});
|
|
465
|
+
(0, vitest_1.it)('idempotencia: AND/OR consigo mismo da identidad', () => {
|
|
466
|
+
const m = new bdd_1.BDDManager(3);
|
|
467
|
+
const f = m.and_(m.variable(0), m.or_(m.variable(1), m.variable(2)));
|
|
468
|
+
(0, vitest_1.expect)(m.and_(f, f)).toBe(f);
|
|
469
|
+
(0, vitest_1.expect)(m.or_(f, f)).toBe(f);
|
|
470
|
+
});
|
|
471
|
+
});
|
|
472
|
+
//# sourceMappingURL=manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../src/tests/bdd/manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-theory.test.d.ts","sourceRoot":"","sources":["../../../src/tests/game-theory/game-theory.test.ts"],"names":[],"mappings":""}
|