@stevenvo780/st-lang 4.5.1 → 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/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 +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -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 +2 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: MLN — hard constraints fuerzan -∞ en mundos violadores
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ MLN con peso Infinity en una fórmula F:
|
|
7
|
+
// ∀ world tal que F NO se satisface ⇒ weight(world) === -Infinity.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const generators_1 = require("./generators");
|
|
11
|
+
const markov_logic_1 = require("../../runtime/markov-logic");
|
|
12
|
+
(0, vitest_1.describe)('property: MLN hard constraints', () => {
|
|
13
|
+
(0, vitest_1.it)('hard constraint violated ⇒ weight = -∞', () => {
|
|
14
|
+
generators_1.fc.assert(generators_1.fc.property(generators_1.fc.boolean(), generators_1.fc.boolean(), (alicePred, bobPred) => {
|
|
15
|
+
// Hard constraint: ∀x. Friends(x, x) — todos amigos de sí mismos.
|
|
16
|
+
const theory = {
|
|
17
|
+
formulas: [
|
|
18
|
+
{ formula: 'Friends(x, x)', weight: Infinity },
|
|
19
|
+
],
|
|
20
|
+
constants: { Person: ['Alice', 'Bob'] },
|
|
21
|
+
predicates: [{ name: 'Friends', types: ['Person', 'Person'] }],
|
|
22
|
+
};
|
|
23
|
+
const world = {
|
|
24
|
+
groundAtoms: {
|
|
25
|
+
'Friends(Alice,Alice)': alicePred,
|
|
26
|
+
'Friends(Bob,Bob)': bobPred,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const w = (0, markov_logic_1.weight)(theory, world);
|
|
30
|
+
const violated = !alicePred || !bobPred;
|
|
31
|
+
if (violated && Number.isFinite(w)) {
|
|
32
|
+
throw new Error(`World viola hard pero weight finita: alicePred=${alicePred}, bobPred=${bobPred}, w=${w}`);
|
|
33
|
+
}
|
|
34
|
+
if (!violated && !Number.isFinite(w) && w === Number.NEGATIVE_INFINITY) {
|
|
35
|
+
throw new Error(`World no viola hard pero weight = -∞`);
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}), { numRuns: 100 });
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=mln.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mln.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/mln.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mEAAmE;AACnE,+DAA+D;AAC/D,EAAE;AACF,4CAA4C;AAC5C,qEAAqE;;AAErE,mCAAsC;AACtC,6CAAkC;AAClC,6DAAoD;AAGpD,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,eAAE,CAAC,OAAO,EAAE,EAAE,eAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;YAC7D,kEAAkE;YAClE,MAAM,MAAM,GAAc;gBACxB,QAAQ,EAAE;oBACR,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;iBAC/C;gBACD,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACvC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;aAC/D,CAAC;YACF,MAAM,KAAK,GAAa;gBACtB,WAAW,EAAE;oBACX,sBAAsB,EAAE,SAAS;oBACjC,kBAAkB,EAAE,OAAO;iBAC5B;aACF,CAAC;YACF,MAAM,CAAC,GAAG,IAAA,qBAAM,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC;YACxC,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,kDAAkD,SAAS,aAAa,OAAO,OAAO,CAAC,EAAE,CAC1F,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CACb,sCAAsC,CACvC,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mltt.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/mltt.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: MLTT — normalize preserva tipo en términos bien-tipados
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ MLTTTerm t bien-tipado: inferType(normalize(t)) =β inferType(t).
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const vitest_1 = require("vitest");
|
|
9
|
+
const generators_1 = require("./generators");
|
|
10
|
+
const mltt_1 = require("../../mltt");
|
|
11
|
+
const normalize_1 = require("../../mltt/normalize");
|
|
12
|
+
const equality_1 = require("../../mltt/equality");
|
|
13
|
+
(0, vitest_1.describe)('property: MLTT normalize preserves type', () => {
|
|
14
|
+
(0, vitest_1.it)('inferType(normalize(t)) ≡ inferType(t) for well-typed terms', () => {
|
|
15
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.mlttSimpleTerm)(), (t) => {
|
|
16
|
+
const tInf = (0, mltt_1.inferType)(t);
|
|
17
|
+
if ((0, mltt_1.isInferError)(tInf)) {
|
|
18
|
+
// El generador produce sólo well-typed; si dispara, es regresión.
|
|
19
|
+
throw new Error(`Término well-typed reportado como error: ${JSON.stringify(t)}, error=${tInf.error}`);
|
|
20
|
+
}
|
|
21
|
+
const normT = (0, normalize_1.normalize)(t);
|
|
22
|
+
const tInf2 = (0, mltt_1.inferType)(normT);
|
|
23
|
+
if ((0, mltt_1.isInferError)(tInf2)) {
|
|
24
|
+
throw new Error(`Normalize rompió well-typedness: t=${JSON.stringify(t)}, normT=${JSON.stringify(normT)}, error=${tInf2.error}`);
|
|
25
|
+
}
|
|
26
|
+
if (!(0, equality_1.alphaBetaEq)(tInf, tInf2)) {
|
|
27
|
+
throw new Error(`Tipo no preservado: t=${JSON.stringify(t)}, tipo1=${JSON.stringify(tInf)}, tipo2=${JSON.stringify(tInf2)}`);
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}), { numRuns: 100 });
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=mltt.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mltt.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/mltt.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oEAAoE;AACpE,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;;AAErE,mCAAsC;AACtC,6CAAkD;AAClD,qCAAqD;AACrD,oDAAkE;AAClE,kDAAkD;AAElD,IAAA,iBAAQ,EAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,2BAAc,GAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,kEAAkE;gBAClE,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CACrF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,KAAK,EAAE,CAChH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAA,sBAAW,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nbe.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/nbe.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: NbE — idempotencia
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ Term t bien-tipado: normalize(normalize(t)) ≡ normalize(t)
|
|
7
|
+
// (idempotencia de la normalización por evaluación + reificación).
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const generators_1 = require("./generators");
|
|
11
|
+
const nbe_1 = require("../../nbe");
|
|
12
|
+
// Generador de términos NbE bien-tipados pequeños:
|
|
13
|
+
// usamos tipo (A → A) → A → A — el tipo de Church numerals.
|
|
14
|
+
const TA = (0, nbe_1.tBase)('A');
|
|
15
|
+
const TAA = (0, nbe_1.tArr)(TA, TA);
|
|
16
|
+
const TChurch = (0, nbe_1.tArr)(TAA, TAA);
|
|
17
|
+
// Generamos Church numerals + variantes con η-redex.
|
|
18
|
+
function churchNumeral(n) {
|
|
19
|
+
// λf:A→A. λx:A. f (f (... f x))
|
|
20
|
+
let body = (0, nbe_1.v)('x');
|
|
21
|
+
for (let i = 0; i < n; i++)
|
|
22
|
+
body = (0, nbe_1.ap)((0, nbe_1.v)('f'), body);
|
|
23
|
+
return (0, nbe_1.lam)('f', TAA, (0, nbe_1.lam)('x', TA, body));
|
|
24
|
+
}
|
|
25
|
+
const churchArb = generators_1.fc
|
|
26
|
+
.integer({ min: 0, max: 5 })
|
|
27
|
+
.map((n) => churchNumeral(n));
|
|
28
|
+
// También algunos con η-redex artificial: λf. λx. (λg. f g) x — debería
|
|
29
|
+
// normalizar a Church 1.
|
|
30
|
+
const etaRedexArb = generators_1.fc.constant((0, nbe_1.lam)('f', TAA, (0, nbe_1.lam)('x', TA, (0, nbe_1.ap)((0, nbe_1.lam)('g', TAA, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('g'))), (0, nbe_1.v)('x')))));
|
|
31
|
+
const termArb = generators_1.fc.oneof(churchArb, etaRedexArb);
|
|
32
|
+
(0, vitest_1.describe)('property: NbE normalize is idempotent', () => {
|
|
33
|
+
(0, vitest_1.it)('normalize(normalize(t)) ≡ normalize(t) α', () => {
|
|
34
|
+
generators_1.fc.assert(generators_1.fc.property(termArb, (t) => {
|
|
35
|
+
const n1 = (0, nbe_1.normalize)(t, TChurch);
|
|
36
|
+
const n2 = (0, nbe_1.normalize)(n1, TChurch);
|
|
37
|
+
if (!(0, nbe_1.alphaEq)(n1, n2)) {
|
|
38
|
+
throw new Error(`NbE no idempotente: t=${JSON.stringify(t)}, n1=${JSON.stringify(n1)}, n2=${JSON.stringify(n2)}`);
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}), { numRuns: 100 });
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=nbe.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nbe.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/nbe.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,+BAA+B;AAC/B,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,mEAAmE;;AAEnE,mCAAsC;AACtC,6CAAkC;AAClC,mCAAwE;AAGxE,mDAAmD;AACnD,4DAA4D;AAC5D,MAAM,EAAE,GAAY,IAAA,WAAK,EAAC,GAAG,CAAC,CAAC;AAC/B,MAAM,GAAG,GAAY,IAAA,UAAI,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,MAAM,OAAO,GAAY,IAAA,UAAI,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAExC,qDAAqD;AACrD,SAAS,aAAa,CAAC,CAAS;IAC9B,gCAAgC;IAChC,IAAI,IAAI,GAAY,IAAA,OAAC,EAAC,GAAG,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,GAAG,IAAA,QAAE,EAAC,IAAA,OAAC,EAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,IAAA,SAAG,EAAC,GAAG,EAAE,GAAG,EAAE,IAAA,SAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,SAAS,GAA0B,eAAE;KACxC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;KAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhC,wEAAwE;AACxE,yBAAyB;AACzB,MAAM,WAAW,GAA0B,eAAE,CAAC,QAAQ,CACpD,IAAA,SAAG,EAAC,GAAG,EAAE,GAAG,EAAE,IAAA,SAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAA,QAAE,EAAC,IAAA,SAAG,EAAC,GAAG,EAAE,GAAG,EAAE,IAAA,QAAE,EAAC,IAAA,OAAC,EAAC,GAAG,CAAC,EAAE,IAAA,OAAC,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAA,OAAC,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAC;AAEF,MAAM,OAAO,GAAG,eAAE,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEjD,IAAA,iBAAQ,EAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,EAAE,GAAG,IAAA,eAAS,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,IAAA,eAAS,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,IAAA,aAAO,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CACjG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/planning.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: STRIPS planning — applyAll(plan, S₀) satisface goal
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ instancia STRIPS pequeña donde bfsPlan retorna un plan:
|
|
7
|
+
// aplicar el plan al estado inicial produce un estado que satisface
|
|
8
|
+
// el goal.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const vitest_1 = require("vitest");
|
|
11
|
+
const generators_1 = require("./generators");
|
|
12
|
+
const planning_1 = require("../../runtime/planning");
|
|
13
|
+
// Generador de un problema mini estilo blocksworld 1D:
|
|
14
|
+
// objetos a..b en posiciones discretas; acción move(?x, ?y).
|
|
15
|
+
const problemArb = generators_1.fc
|
|
16
|
+
.tuple(generators_1.fc.constantFrom('p1', 'p2', 'p3'), generators_1.fc.constantFrom('p1', 'p2', 'p3'))
|
|
17
|
+
.filter(([s, g]) => s !== g)
|
|
18
|
+
.map(([start, goal]) => ({
|
|
19
|
+
predicates: ['at'],
|
|
20
|
+
objects: { Pos: ['p1', 'p2', 'p3'] },
|
|
21
|
+
actions: [
|
|
22
|
+
{
|
|
23
|
+
name: 'move',
|
|
24
|
+
parameters: ['?from', '?to'],
|
|
25
|
+
preconditions: ['at(?from)'],
|
|
26
|
+
addList: ['at(?to)'],
|
|
27
|
+
delList: ['at(?from)'],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
initialState: new Set([`at(${start})`]),
|
|
31
|
+
goal: new Set([`at(${goal})`]),
|
|
32
|
+
}));
|
|
33
|
+
(0, vitest_1.describe)('property: STRIPS plan is correct', () => {
|
|
34
|
+
(0, vitest_1.it)('applyAll(plan, initial) satisfies goal', () => {
|
|
35
|
+
generators_1.fc.assert(generators_1.fc.property(problemArb, (problem) => {
|
|
36
|
+
const plan = (0, planning_1.bfsPlan)(problem, { maxDepth: 10, maxNodes: 1000 });
|
|
37
|
+
if (plan === null)
|
|
38
|
+
return true; // skip — no se encontró plan
|
|
39
|
+
let state = new Set(problem.initialState);
|
|
40
|
+
for (const step of plan.actions) {
|
|
41
|
+
const g = (0, planning_1.ground)(step.action, step.bindings);
|
|
42
|
+
state = (0, planning_1.applyAction)(state, g);
|
|
43
|
+
}
|
|
44
|
+
if (!(0, planning_1.goalSatisfied)(state, problem.goal)) {
|
|
45
|
+
throw new Error(`Plan no satisface goal: plan=${JSON.stringify(plan.actions)}, finalState=${[...state].join(',')}, goal=${[...problem.goal].join(',')}`);
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}), { numRuns: 100 });
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=planning.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/planning.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gEAAgE;AAChE,+DAA+D;AAC/D,EAAE;AACF,4DAA4D;AAC5D,sEAAsE;AACtE,aAAa;;AAEb,mCAAsC;AACtC,6CAAkC;AAClC,qDAAqF;AAGrF,uDAAuD;AACvD,6DAA6D;AAC7D,MAAM,UAAU,GAAgC,eAAE;KAC/C,KAAK,CACJ,eAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,eAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClC;KACA,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;KAC3B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;IACpC,OAAO,EAAE;QACP;YACE,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;YAC5B,aAAa,EAAE,CAAC,WAAW,CAAC;YAC5B,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,WAAW,CAAC;SACvB;KACF;IACD,YAAY,EAAE,IAAI,GAAG,CAAO,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;IAC7C,IAAI,EAAE,IAAI,GAAG,CAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;CACrC,CAAC,CAAC,CAAC;AAEN,IAAA,iBAAQ,EAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,6BAA6B;YAC7D,IAAI,KAAK,GAAG,IAAI,GAAG,CAAO,OAAO,CAAC,YAAY,CAAC,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,CAAC,GAAG,IAAA,iBAAM,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7C,KAAK,GAAG,IAAA,sBAAW,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACxI,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-bridge.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/profile-bridge.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Profile Bridge — Glivenko: classical-valid ⇒ intuit-valid
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Teorema de Glivenko (proposicional): φ es clásicamente válida sii
|
|
7
|
+
// ¬¬φ es intuicionísticamente válida.
|
|
8
|
+
//
|
|
9
|
+
// Acá testeamos la dirección "fácil" del bridge:
|
|
10
|
+
// ∀ φ propositional tal que classical-provable(φ) =true:
|
|
11
|
+
// intuit-provable(glivenkoTranslation(φ)) = true.
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const vitest_1 = require("vitest");
|
|
14
|
+
const generators_1 = require("./generators");
|
|
15
|
+
const sequent_g3_1 = require("../../profiles/sequent-g3");
|
|
16
|
+
const profile_bridge_1 = require("../../profile-bridge");
|
|
17
|
+
const intuitionistic_nj_1 = require("../../profiles/intuitionistic-nj");
|
|
18
|
+
// Convierte Formula (clásico) a IntuitFormula.
|
|
19
|
+
function classicalToIntuit(phi) {
|
|
20
|
+
switch (phi.kind) {
|
|
21
|
+
case 'atom':
|
|
22
|
+
return { kind: 'atom', name: phi.name ?? 'p' };
|
|
23
|
+
case 'and':
|
|
24
|
+
return {
|
|
25
|
+
kind: 'and',
|
|
26
|
+
left: classicalToIntuit(phi.args[0]),
|
|
27
|
+
right: classicalToIntuit(phi.args[1]),
|
|
28
|
+
};
|
|
29
|
+
case 'or':
|
|
30
|
+
return {
|
|
31
|
+
kind: 'or',
|
|
32
|
+
left: classicalToIntuit(phi.args[0]),
|
|
33
|
+
right: classicalToIntuit(phi.args[1]),
|
|
34
|
+
};
|
|
35
|
+
case 'implies':
|
|
36
|
+
return {
|
|
37
|
+
kind: 'implies',
|
|
38
|
+
left: classicalToIntuit(phi.args[0]),
|
|
39
|
+
right: classicalToIntuit(phi.args[1]),
|
|
40
|
+
};
|
|
41
|
+
case 'not':
|
|
42
|
+
return { kind: 'not', arg: classicalToIntuit(phi.args[0]) };
|
|
43
|
+
case 'true':
|
|
44
|
+
// En IntuitFormula no hay 'true' directo; usamos ⊥→⊥.
|
|
45
|
+
return { kind: 'implies', left: { kind: 'bottom' }, right: { kind: 'bottom' } };
|
|
46
|
+
case 'false':
|
|
47
|
+
return { kind: 'bottom' };
|
|
48
|
+
default:
|
|
49
|
+
// Default: tratarlo como atom opaco (no debería pasar con propFormula).
|
|
50
|
+
return { kind: 'atom', name: 'p' };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
(0, vitest_1.describe)('property: Glivenko — classical-valid ⇒ intuit-valid via ¬¬', () => {
|
|
54
|
+
(0, vitest_1.it)('classical-provable(φ) ⇒ intuit-provable(¬¬φ)', () => {
|
|
55
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.propFormula)(2), (phi) => {
|
|
56
|
+
const classicalR = (0, sequent_g3_1.proveFormula)(phi, { budget: 5000 });
|
|
57
|
+
if (!classicalR.provable)
|
|
58
|
+
return true; // skip — no es teorema clásico
|
|
59
|
+
// Aplicar Glivenko: la traducción devuelve un Formula clásico
|
|
60
|
+
// pero con la forma de ¬¬φ; lo pasamos al perfil intuit.
|
|
61
|
+
const translated = (0, profile_bridge_1.glivenkoTranslation)(phi);
|
|
62
|
+
const intuitGoal = classicalToIntuit(translated);
|
|
63
|
+
const intuitR = (0, intuitionistic_nj_1.proveIntuitionistically)([], intuitGoal, { budget: 8000 });
|
|
64
|
+
if (intuitR === null) {
|
|
65
|
+
throw new Error(`Classical-provable pero intuit-NO-provable Glivenko: phi=${JSON.stringify(phi)}, intuitGoal=${JSON.stringify(intuitGoal)}`);
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}), { numRuns: 100 });
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=profile-bridge.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-bridge.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/profile-bridge.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sEAAsE;AACtE,+DAA+D;AAC/D,EAAE;AACF,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,iDAAiD;AACjD,2DAA2D;AAC3D,sDAAsD;;AAEtD,mCAAsC;AACtC,6CAA+C;AAC/C,0DAA2E;AAC3E,yDAA2D;AAC3D,wEAA2E;AAI3E,+CAA+C;AAC/C,SAAS,iBAAiB,CAAC,GAAY;IACrC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACjD,KAAK,KAAK;YACR,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;gBACtC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;aACxC,CAAC;QACJ,KAAK,IAAI;YACP,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;gBACtC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;aACxC,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;gBACtC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;aACxC,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM;YACT,sDAAsD;YACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QAClF,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B;YACE,wEAAwE;YACxE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,IAAA,iBAAQ,EAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,UAAU,GAAG,IAAA,yBAAc,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,+BAA+B;YACtE,8DAA8D;YAC9D,yDAAyD;YACzD,MAAM,UAAU,GAAG,IAAA,oCAAmB,EAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,IAAA,2CAAuB,EAAC,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAC5H,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refinement-types.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/refinement-types.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Refinement types — subtipado transitivo
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ t1, t2, t3 RefType:
|
|
7
|
+
// isSubtype(t1, t2) ∧ isSubtype(t2, t3) ⇒ isSubtype(t1, t3).
|
|
8
|
+
//
|
|
9
|
+
// Foco: tipos Int con refinamientos lineales simples.
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const vitest_1 = require("vitest");
|
|
12
|
+
const generators_1 = require("./generators");
|
|
13
|
+
const refinement_types_1 = require("../../refinement-types");
|
|
14
|
+
(0, vitest_1.describe)('property: refinement-types subtype transitivity', () => {
|
|
15
|
+
(0, vitest_1.it)('t1 <: t2 ∧ t2 <: t3 ⇒ t1 <: t3', () => {
|
|
16
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.refTypeIntSimple)(), (0, generators_1.refTypeIntSimple)(), (0, generators_1.refTypeIntSimple)(), (t1, t2, t3) => {
|
|
17
|
+
const ab = (0, refinement_types_1.isSubtype)(t1, t2);
|
|
18
|
+
const bc = (0, refinement_types_1.isSubtype)(t2, t3);
|
|
19
|
+
if (!ab || !bc)
|
|
20
|
+
return true;
|
|
21
|
+
const ac = (0, refinement_types_1.isSubtype)(t1, t3);
|
|
22
|
+
if (!ac) {
|
|
23
|
+
throw new Error(`transitividad violada: t1=${t1.predicate}, t2=${t2.predicate}, t3=${t3.predicate}`);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}), { numRuns: 200 });
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('reflexividad: t <: t para todo t', () => {
|
|
29
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.refTypeIntSimple)(), (t) => {
|
|
30
|
+
if (!(0, refinement_types_1.isSubtype)(t, t)) {
|
|
31
|
+
throw new Error(`t <: t falló para predicate="${t.predicate}"`);
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}), { numRuns: 100 });
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=refinement-types.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refinement-types.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/refinement-types.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oDAAoD;AACpD,+DAA+D;AAC/D,EAAE;AACF,wBAAwB;AACxB,+DAA+D;AAC/D,EAAE;AACF,sDAAsD;;AAEtD,mCAAsC;AACtC,6CAAoD;AACpD,6DAAmD;AAEnD,IAAA,iBAAQ,EAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,6BAAgB,GAAE,EAAE,IAAA,6BAAgB,GAAE,EAAE,IAAA,6BAAgB,GAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACrF,MAAM,EAAE,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,MAAM,EAAE,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CACb,6BAA6B,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,EAAE,CACpF,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,6BAAgB,GAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,IAAA,4BAAS,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequent-g3.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/sequent-g3.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Sequent G3 — tautologías detectadas tienen proof válido
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ Formula φ tal que proveFormula(φ) reporta provable=true:
|
|
7
|
+
// - existe un proof tree.
|
|
8
|
+
// - el proof tree tiene goal cuyo lado derecho contiene φ.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const vitest_1 = require("vitest");
|
|
11
|
+
const generators_1 = require("./generators");
|
|
12
|
+
const sequent_g3_1 = require("../../profiles/sequent-g3");
|
|
13
|
+
function isClosed(tree) {
|
|
14
|
+
if (!tree.closed)
|
|
15
|
+
return false;
|
|
16
|
+
return (tree.premises ?? []).every(isClosed);
|
|
17
|
+
}
|
|
18
|
+
(0, vitest_1.describe)('property: Sequent G3 — provable formulas have closed proofs', () => {
|
|
19
|
+
(0, vitest_1.it)('provable=true ⇒ proof tree exists and is closed', () => {
|
|
20
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.propFormula)(3), (phi) => {
|
|
21
|
+
const r = (0, sequent_g3_1.proveFormula)(phi, { budget: 5000 });
|
|
22
|
+
if (!r.provable)
|
|
23
|
+
return true; // skip — no es teorema
|
|
24
|
+
if (!r.proof) {
|
|
25
|
+
throw new Error(`provable=true pero proof undefined`);
|
|
26
|
+
}
|
|
27
|
+
if (!isClosed(r.proof)) {
|
|
28
|
+
throw new Error(`proof tree no está cerrado`);
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}), { numRuns: 200 });
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=sequent-g3.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequent-g3.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/sequent-g3.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oEAAoE;AACpE,+DAA+D;AAC/D,EAAE;AACF,6DAA6D;AAC7D,4BAA4B;AAC5B,6DAA6D;;AAE7D,mCAAsC;AACtC,6CAA+C;AAC/C,0DAAyD;AAGzD,SAAS,QAAQ,CAAC,IAAe;IAC/B,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,IAAA,iBAAQ,EAAC,6DAA6D,EAAE,GAAG,EAAE;IAC3E,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,IAAA,yBAAY,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,uBAAuB;YACrD,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolic-diff.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/symbolic-diff.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Symbolic diff — coincide con derivada numérica
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ Expr e (polinomio random), ∀ x₀ random:
|
|
7
|
+
// evaluate(differentiate(e, "x"), x₀) ≈ (e(x₀+h) - e(x₀-h)) / (2h)
|
|
8
|
+
// con h pequeño. Cota laxa para tolerar errores numéricos.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const vitest_1 = require("vitest");
|
|
11
|
+
const generators_1 = require("./generators");
|
|
12
|
+
const symbolic_diff_1 = require("../../runtime/symbolic-diff");
|
|
13
|
+
function evalSafe(e, env) {
|
|
14
|
+
try {
|
|
15
|
+
const v = (0, symbolic_diff_1.evaluate)(e, env);
|
|
16
|
+
if (!Number.isFinite(v))
|
|
17
|
+
return null;
|
|
18
|
+
return v;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
(0, vitest_1.describe)('property: symbolic-diff matches numerical derivative', () => {
|
|
25
|
+
(0, vitest_1.it)('symbolic diff ≈ central finite difference', () => {
|
|
26
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.symExpr)(3), generators_1.fc.double({ min: -3, max: 3, noNaN: true, noDefaultInfinity: true }), generators_1.fc.double({ min: -3, max: 3, noNaN: true, noDefaultInfinity: true }), (e, x0, y0) => {
|
|
27
|
+
const env0 = { x: x0, y: y0 };
|
|
28
|
+
const h = 1e-4;
|
|
29
|
+
const envP = { x: x0 + h, y: y0 };
|
|
30
|
+
const envM = { x: x0 - h, y: y0 };
|
|
31
|
+
const dE = (0, symbolic_diff_1.differentiate)(e, 'x');
|
|
32
|
+
const symbolic = evalSafe(dE, env0);
|
|
33
|
+
const numericP = evalSafe(e, envP);
|
|
34
|
+
const numericM = evalSafe(e, envM);
|
|
35
|
+
if (symbolic === null || numericP === null || numericM === null)
|
|
36
|
+
return true;
|
|
37
|
+
const numeric = (numericP - numericM) / (2 * h);
|
|
38
|
+
if (!Number.isFinite(numeric))
|
|
39
|
+
return true;
|
|
40
|
+
// Tolerancia laxa: relativa 1% + abs 1e-3.
|
|
41
|
+
const tol = Math.max(1e-3, 0.01 * Math.abs(numeric));
|
|
42
|
+
if (Math.abs(symbolic - numeric) > tol) {
|
|
43
|
+
throw new Error(`dE inconsistente: simbólico=${symbolic}, numérico=${numeric}, expr=${JSON.stringify(e)}, x0=${x0}`);
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}), { numRuns: 200 });
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=symbolic-diff.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolic-diff.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/symbolic-diff.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAC/D,EAAE;AACF,4CAA4C;AAC5C,qEAAqE;AACrE,2DAA2D;;AAE3D,mCAAsC;AACtC,6CAA2C;AAC3C,+DAAsE;AAGtE,SAAS,QAAQ,CAAC,CAAO,EAAE,GAA2B;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAA,wBAAQ,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAA,iBAAQ,EAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CACT,IAAA,oBAAO,EAAC,CAAC,CAAC,EACV,eAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EACpE,eAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EACpE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACZ,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACtD,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YAC1D,MAAM,EAAE,GAAG,IAAA,6BAAa,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC7E,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3C,2CAA2C;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,cAAc,OAAO,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-f.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/system-f.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: System F — typeOf determinístico para well-typed
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ FTerm bien-tipado t: typeOf(t) llamado dos veces da el mismo
|
|
7
|
+
// tipo (no hay state global). Y typeOf(t) no devuelve error.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const generators_1 = require("./generators");
|
|
11
|
+
const system_f_1 = require("../../system-f");
|
|
12
|
+
function makeCtx() {
|
|
13
|
+
// Declaramos A y B como variables de tipo para que el well-formed check pase.
|
|
14
|
+
const ctx = (0, system_f_1.emptyContext)();
|
|
15
|
+
ctx.type.add('A');
|
|
16
|
+
ctx.type.add('B');
|
|
17
|
+
return ctx;
|
|
18
|
+
}
|
|
19
|
+
(0, vitest_1.describe)('property: System F typeOf is deterministic on well-typed terms', () => {
|
|
20
|
+
(0, vitest_1.it)('typeOf(t) consistent across calls', () => {
|
|
21
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.fTermSimple)(), ({ term, type: expected }) => {
|
|
22
|
+
const r1 = (0, system_f_1.typeOf)(term, makeCtx());
|
|
23
|
+
const r2 = (0, system_f_1.typeOf)(term, makeCtx());
|
|
24
|
+
if ((0, system_f_1.isTypeError)(r1) || (0, system_f_1.isTypeError)(r2)) {
|
|
25
|
+
throw new Error(`Term well-typed reportado como error: ${JSON.stringify(term)}, r1=${JSON.stringify(r1)}, r2=${JSON.stringify(r2)}`);
|
|
26
|
+
}
|
|
27
|
+
if (!(0, system_f_1.alphaEqType)(r1, r2)) {
|
|
28
|
+
throw new Error(`typeOf no determinístico: r1=${JSON.stringify(r1)}, r2=${JSON.stringify(r2)}`);
|
|
29
|
+
}
|
|
30
|
+
if (!(0, system_f_1.alphaEqType)(r1, expected)) {
|
|
31
|
+
throw new Error(`Tipo inferido ≠ esperado: inferido=${JSON.stringify(r1)}, esperado=${JSON.stringify(expected)}`);
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}), { numRuns: 100 });
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=system-f.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-f.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/system-f.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,6DAA6D;AAC7D,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,6DAA6D;;AAE7D,mCAAsC;AACtC,6CAA+C;AAC/C,6CAAgF;AAEhF,SAAS,OAAO;IACd,8EAA8E;IAC9E,MAAM,GAAG,GAAG,IAAA,uBAAY,GAAE,CAAC;IAC3B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IAAA,iBAAQ,EAAC,gEAAgE,EAAE,GAAG,EAAE;IAC9E,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,wBAAW,GAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtD,MAAM,EAAE,GAAG,IAAA,iBAAM,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,IAAA,iBAAM,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,IAAI,IAAA,sBAAW,EAAC,EAAE,CAAC,IAAI,IAAA,sBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CACpH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAA,sBAAW,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAC/E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAA,sBAAW,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CACjG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theorem-cache.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/theorem-cache.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Theorem cache — store(f) ⇒ retrieve(f) === stored
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ fórmula f, profile p, prueba opaca:
|
|
7
|
+
// tras cache.store({formula: f, profile: p, proof: ...}),
|
|
8
|
+
// cache.retrieve(f, p) devuelve la misma prueba.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const vitest_1 = require("vitest");
|
|
11
|
+
const generators_1 = require("./generators");
|
|
12
|
+
const theorem_cache_1 = require("../../runtime/theorem-cache");
|
|
13
|
+
(0, vitest_1.describe)('property: TheoremCache store/retrieve round-trip', () => {
|
|
14
|
+
(0, vitest_1.it)('store(f, p, proof) ⇒ retrieve(f, p).proof === proof', () => {
|
|
15
|
+
generators_1.fc.assert(generators_1.fc.property(generators_1.fc
|
|
16
|
+
.tuple(generators_1.fc.string({ minLength: 1, maxLength: 32 }), generators_1.fc.constantFrom('classical', 'intuit', 'modal'), generators_1.fc.integer({ min: 0, max: 1000000 }))
|
|
17
|
+
.map(([f, p, payload]) => ({ f, p, payload })), ({ f, p, payload }) => {
|
|
18
|
+
const cache = new theorem_cache_1.TheoremCache();
|
|
19
|
+
cache.store({
|
|
20
|
+
formula: f,
|
|
21
|
+
normalizedFormula: '',
|
|
22
|
+
profile: p,
|
|
23
|
+
proof: { payload },
|
|
24
|
+
metadata: { provedAt: new Date().toISOString(), ms: 1 },
|
|
25
|
+
});
|
|
26
|
+
const retrieved = cache.retrieve(f, p);
|
|
27
|
+
if (retrieved === undefined) {
|
|
28
|
+
throw new Error(`retrieve devolvió undefined para "${f}" / "${p}"`);
|
|
29
|
+
}
|
|
30
|
+
const proof = retrieved.proof;
|
|
31
|
+
if (proof?.payload !== payload) {
|
|
32
|
+
throw new Error(`proof no coincide: stored=${payload}, retrieved=${proof?.payload}`);
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}), { numRuns: 100 });
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=theorem-cache.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theorem-cache.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/theorem-cache.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D;AAC/D,EAAE;AACF,wCAAwC;AACxC,4DAA4D;AAC5D,mDAAmD;;AAEnD,mCAAsC;AACtC,6CAAkC;AAClC,+DAA2D;AAE3D,IAAA,iBAAQ,EAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CACT,eAAE;aACC,KAAK,CACJ,eAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAC1C,eAAE,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,EAC/C,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CACrC;aACA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAChD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,4BAAY,EAAE,CAAC;YACjC,KAAK,CAAC,KAAK,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,iBAAiB,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,EAAE,OAAO,EAAE;gBAClB,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;aACxD,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAwC,CAAC;YACjE,IAAI,KAAK,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,eAAe,KAAK,EAAE,OAAO,EAAE,CACpE,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trs.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/trs.property.test.ts"],"names":[],"mappings":""}
|