@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,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: CDCL v2 — consistencia SAT/UNSAT
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ random 3-SAT clauses, el resultado del solver es consistente:
|
|
7
|
+
// - si sat=true ⇒ el modelo retornado satisface TODAS las cláusulas.
|
|
8
|
+
// - si unsat=true ⇒ no existe asignación que satisfaga todas las cláusulas
|
|
9
|
+
// (verificado por enumeración brute-force, sólo viable con pocas vars).
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const vitest_1 = require("vitest");
|
|
12
|
+
const generators_1 = require("./generators");
|
|
13
|
+
const cdcl_v2_1 = require("../../solver/cdcl-v2");
|
|
14
|
+
function clauseSatisfied(clause, model) {
|
|
15
|
+
for (let i = 0; i < clause.length; i++) {
|
|
16
|
+
const lit = clause[i];
|
|
17
|
+
const v = Math.abs(lit);
|
|
18
|
+
// El solver default usa keys "x1", "x2", ... (sin atomNames).
|
|
19
|
+
const assigned = model[`x${v}`];
|
|
20
|
+
if (assigned === undefined)
|
|
21
|
+
continue;
|
|
22
|
+
if ((lit > 0 && assigned) || (lit < 0 && !assigned))
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
function enumerateAllAssignments(numVars, clauses) {
|
|
28
|
+
// Brute-force: si existe asignación que satisface, retorna true.
|
|
29
|
+
// Solo seguro hasta ~10 vars (2^10 = 1024).
|
|
30
|
+
const total = 1 << numVars;
|
|
31
|
+
for (let mask = 0; mask < total; mask++) {
|
|
32
|
+
const model = {};
|
|
33
|
+
for (let v = 1; v <= numVars; v++) {
|
|
34
|
+
model[`x${v}`] = ((mask >> (v - 1)) & 1) === 1;
|
|
35
|
+
}
|
|
36
|
+
if (clauses.every((c) => clauseSatisfied(c, model)))
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
(0, vitest_1.describe)('property: CDCL v2 consistency', () => {
|
|
42
|
+
(0, vitest_1.it)('SAT result yields model that satisfies every clause', () => {
|
|
43
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.dimacs3SAT)(6, 4), ({ clauses, numVars }) => {
|
|
44
|
+
const r = (0, cdcl_v2_1.solveCDCLv2)(clauses, numVars, { timeoutMs: 2000 });
|
|
45
|
+
if (!('sat' in r) || !r.sat)
|
|
46
|
+
return true; // skip UNSAT casos
|
|
47
|
+
// Verificar: cada cláusula satisfecha.
|
|
48
|
+
for (const c of clauses) {
|
|
49
|
+
if (!clauseSatisfied(c, r.model)) {
|
|
50
|
+
throw new Error(`Modelo SAT no satisface cláusula ${Array.from(c).join(' ')}: model=${JSON.stringify(r.model)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}), { numRuns: 200 });
|
|
55
|
+
});
|
|
56
|
+
(0, vitest_1.it)('UNSAT result agrees with brute-force enumeration', () => {
|
|
57
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.dimacs3SAT)(6, 4), ({ clauses, numVars }) => {
|
|
58
|
+
const r = (0, cdcl_v2_1.solveCDCLv2)(clauses, numVars, { timeoutMs: 2000 });
|
|
59
|
+
if (!('unsat' in r) || !r.unsat)
|
|
60
|
+
return true; // skip SAT casos
|
|
61
|
+
// brute-force: no debe existir asignación.
|
|
62
|
+
const existsSat = enumerateAllAssignments(numVars, clauses);
|
|
63
|
+
if (existsSat) {
|
|
64
|
+
throw new Error(`Solver declaró UNSAT pero existe asignación satisfactoria. clauses=${clauses.map((c) => Array.from(c).join(' ')).join('|')}`);
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}), { numRuns: 100 });
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=cdcl.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdcl.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/cdcl.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coinduction.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/coinduction.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Coinduction — take(s, n) tiene n elementos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ Stream s, n ∈ [0, 50]: take(s, n).length === n.
|
|
7
|
+
// También: isBisimilar(s, s) === true para profundidad razonable.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const generators_1 = require("./generators");
|
|
11
|
+
const coinduction_1 = require("../../coinduction");
|
|
12
|
+
const streamArb = generators_1.fc.oneof(generators_1.fc.integer({ min: -100, max: 100 }).map((x) => (0, coinduction_1.repeat)(x)), generators_1.fc
|
|
13
|
+
.tuple(generators_1.fc.integer({ min: -100, max: 100 }), generators_1.fc.integer({ min: -5, max: 5 }))
|
|
14
|
+
.map(([seed, step]) => (0, coinduction_1.iterate)((x) => x + step, seed)), generators_1.fc.constant(coinduction_1.naturals), generators_1.fc.constant(coinduction_1.fibonacci));
|
|
15
|
+
(0, vitest_1.describe)('property: coinduction streams', () => {
|
|
16
|
+
(0, vitest_1.it)('take(s, n).length === n', () => {
|
|
17
|
+
generators_1.fc.assert(generators_1.fc.property(streamArb, generators_1.fc.integer({ min: 0, max: 50 }), (s, n) => {
|
|
18
|
+
const arr = (0, coinduction_1.take)(s, n);
|
|
19
|
+
if (arr.length !== n) {
|
|
20
|
+
throw new Error(`take(s, ${n}).length === ${arr.length}`);
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}), { numRuns: 200 });
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('isBisimilar(s, s) is true', () => {
|
|
26
|
+
generators_1.fc.assert(generators_1.fc.property(streamArb, (s) => {
|
|
27
|
+
if (!(0, coinduction_1.isBisimilar)(s, s, 20)) {
|
|
28
|
+
throw new Error(`isBisimilar(s, s) === false`);
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}), { numRuns: 100 });
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=coinduction.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coinduction.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/coinduction.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uDAAuD;AACvD,+DAA+D;AAC/D,EAAE;AACF,oDAAoD;AACpD,kEAAkE;;AAElE,mCAAsC;AACtC,6CAAkC;AAClC,mDAA4F;AAG5F,MAAM,SAAS,GAAiC,eAAE,CAAC,KAAK,CACtD,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAM,EAAC,CAAC,CAAC,CAAC,EACzD,eAAE;KACC,KAAK,CAAC,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;KAC3E,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAO,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,EACxD,eAAE,CAAC,QAAQ,CAAC,sBAAQ,CAAC,EACrB,eAAE,CAAC,QAAQ,CAAC,uBAAS,CAAC,CACvB,CAAC;AAEF,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,GAAG,GAAG,IAAA,kBAAI,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAA,yBAAW,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,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":"constructive-reals.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/constructive-reals.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Constructive reals — add(x, y) ≈ approx(x) + approx(y)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ x, y CReal (de fromInt / fromRational): la aproximación de
|
|
7
|
+
// add(x, y) a precisión p coincide con approx(x, p+1) + approx(y, p+1)
|
|
8
|
+
// dentro del error nominal 2^{-p}.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const vitest_1 = require("vitest");
|
|
11
|
+
const generators_1 = require("./generators");
|
|
12
|
+
const constructive_reals_1 = require("../../constructive-reals");
|
|
13
|
+
function evalAt(r, p) {
|
|
14
|
+
const { numerator, denominator } = r.approx(p);
|
|
15
|
+
return Number(numerator) / Number(denominator);
|
|
16
|
+
}
|
|
17
|
+
const intArb = generators_1.fc.integer({ min: -50, max: 50 });
|
|
18
|
+
const rationalArb = generators_1.fc
|
|
19
|
+
.tuple(generators_1.fc.integer({ min: -50, max: 50 }), generators_1.fc.integer({ min: 1, max: 50 }))
|
|
20
|
+
.map(([n, d]) => (0, constructive_reals_1.fromRational)(n, d));
|
|
21
|
+
const cRealArb = generators_1.fc.oneof(intArb.map((n) => (0, constructive_reals_1.fromInt)(n)), rationalArb);
|
|
22
|
+
(0, vitest_1.describe)('property: constructive reals — add commutativity and approximation', () => {
|
|
23
|
+
(0, vitest_1.it)('add(x, y) ≈ x + y at precision 30', () => {
|
|
24
|
+
generators_1.fc.assert(generators_1.fc.property(cRealArb, cRealArb, (x, y) => {
|
|
25
|
+
const sum = (0, constructive_reals_1.add)(x, y);
|
|
26
|
+
const sumNum = evalAt(sum, 30);
|
|
27
|
+
const xNum = evalAt(x, 30);
|
|
28
|
+
const yNum = evalAt(y, 30);
|
|
29
|
+
const error = Math.abs(sumNum - (xNum + yNum));
|
|
30
|
+
// Cota laxa: 2^{-25} (ya considerando errores acumulados).
|
|
31
|
+
if (error > Math.pow(2, -25)) {
|
|
32
|
+
throw new Error(`add inexacto: sum=${sumNum}, x+y=${xNum + yNum}, error=${error}`);
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}), { numRuns: 100 });
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)('add is commutative: add(x, y) ≈ add(y, x)', () => {
|
|
38
|
+
generators_1.fc.assert(generators_1.fc.property(cRealArb, cRealArb, (x, y) => {
|
|
39
|
+
const a = evalAt((0, constructive_reals_1.add)(x, y), 30);
|
|
40
|
+
const b = evalAt((0, constructive_reals_1.add)(y, x), 30);
|
|
41
|
+
if (Math.abs(a - b) > Math.pow(2, -25)) {
|
|
42
|
+
throw new Error(`add no conmutativa: ${a} ≠ ${b}`);
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}), { numRuns: 100 });
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.it)('sub(x, y) ≈ x - y', () => {
|
|
48
|
+
generators_1.fc.assert(generators_1.fc.property(cRealArb, cRealArb, (x, y) => {
|
|
49
|
+
const diffNum = evalAt((0, constructive_reals_1.sub)(x, y), 30);
|
|
50
|
+
const xNum = evalAt(x, 30);
|
|
51
|
+
const yNum = evalAt(y, 30);
|
|
52
|
+
if (Math.abs(diffNum - (xNum - yNum)) > Math.pow(2, -25)) {
|
|
53
|
+
throw new Error(`sub inexacto`);
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}), { numRuns: 100 });
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=constructive-reals.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constructive-reals.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/constructive-reals.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mEAAmE;AACnE,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,uEAAuE;AACvE,mCAAmC;;AAEnC,mCAAsC;AACtC,6CAAkC;AAClC,iEAAqF;AAErF,SAAS,MAAM,CAAC,CAAwE,EAAE,CAAS;IACjG,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,MAAM,GAAG,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,eAAE;KACnB,KAAK,CAAC,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;KACzE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iCAAY,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvC,MAAM,QAAQ,GAAG,eAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,4BAAO,EAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAEtE,IAAA,iBAAQ,EAAC,oEAAoE,EAAE,GAAG,EAAE;IAClF,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAA,wBAAG,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YAC/C,2DAA2D;YAC3D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,SAAS,IAAI,GAAG,IAAI,WAAW,KAAK,EAAE,CAClE,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,2CAA2C,EAAE,GAAG,EAAE;QACnD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAA,wBAAG,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAA,wBAAG,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAA,wBAAG,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YAClC,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":"csp.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/csp.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: CSP AC-3 — dominios reducidos son subset del input
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ instancia CSP binaria: AC-3 produce dominios donde
|
|
7
|
+
// reducedDomains[v] ⊆ originalDomains[v] ∀ v.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const generators_1 = require("./generators");
|
|
11
|
+
const csp_1 = require("../../runtime/csp");
|
|
12
|
+
const cspArb = generators_1.fc
|
|
13
|
+
.integer({ min: 2, max: 4 })
|
|
14
|
+
.chain((n) => {
|
|
15
|
+
const vars = Array.from({ length: n }, (_, i) => `x${i}`);
|
|
16
|
+
return generators_1.fc
|
|
17
|
+
.array(generators_1.fc
|
|
18
|
+
.tuple(generators_1.fc.integer({ min: 0, max: n - 1 }), generators_1.fc.integer({ min: 0, max: n - 1 }), generators_1.fc.constantFrom('ne', 'lt'))
|
|
19
|
+
.filter(([a, b]) => a !== b), { minLength: 0, maxLength: 4 })
|
|
20
|
+
.map((triples) => {
|
|
21
|
+
const domains = new Map();
|
|
22
|
+
for (const v of vars)
|
|
23
|
+
domains.set(v, [1, 2, 3, 4]);
|
|
24
|
+
const constraints = triples.map(([i, j, kind]) => {
|
|
25
|
+
const ci = vars[i];
|
|
26
|
+
const cj = vars[j];
|
|
27
|
+
if (kind === 'ne') {
|
|
28
|
+
return {
|
|
29
|
+
vars: [ci, cj],
|
|
30
|
+
predicate: (vals) => vals[0] !== vals[1],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
vars: [ci, cj],
|
|
35
|
+
predicate: (vals) => vals[0] < vals[1],
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
return { variables: vars, domains, constraints };
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.describe)('property: CSP AC-3 reduces domains monotonically', () => {
|
|
42
|
+
(0, vitest_1.it)('reducedDomains[v] ⊆ originalDomains[v]', () => {
|
|
43
|
+
generators_1.fc.assert(generators_1.fc.property(cspArb, (csp) => {
|
|
44
|
+
const { reducedDomains } = (0, csp_1.ac3)(csp);
|
|
45
|
+
for (const v of csp.variables) {
|
|
46
|
+
const orig = new Set(csp.domains.get(v));
|
|
47
|
+
const reduced = reducedDomains.get(v) ?? [];
|
|
48
|
+
for (const x of reduced) {
|
|
49
|
+
if (!orig.has(x)) {
|
|
50
|
+
throw new Error(`AC-3 introdujo valor nuevo ${x} en ${v}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}), { numRuns: 100 });
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=csp.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csp.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/csp.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as fc from 'fast-check';
|
|
2
|
+
import type { Formula } from '../../types';
|
|
3
|
+
import type { HOTerm } from '../../higher-order-unify';
|
|
4
|
+
import type { Term as LamTerm } from '../../lambda-calc/types';
|
|
5
|
+
import type { Term as TRSTerm } from '../../runtime/term-rewriting/types';
|
|
6
|
+
import type { Term as AUTerm } from '../../runtime/anti-unification/types';
|
|
7
|
+
import type { FType, FTerm } from '../../system-f/types';
|
|
8
|
+
import type { MLTTTerm } from '../../mltt/types';
|
|
9
|
+
import type { Expr } from '../../runtime/symbolic-diff/types';
|
|
10
|
+
import type { LTS } from '../../runtime/bisimulation/types';
|
|
11
|
+
export declare const atomName: () => fc.Arbitrary<string>;
|
|
12
|
+
export declare const varName: () => fc.Arbitrary<string>;
|
|
13
|
+
export declare const funcName: () => fc.Arbitrary<string>;
|
|
14
|
+
export declare const constName: () => fc.Arbitrary<string>;
|
|
15
|
+
export declare const propFormula: (maxDepth?: number) => fc.Arbitrary<Formula>;
|
|
16
|
+
/**
|
|
17
|
+
* Genera una instancia 3-SAT pequeña: numVars en [3, maxVars],
|
|
18
|
+
* y cantidad de cláusulas hasta `ratio * numVars`. Cada cláusula
|
|
19
|
+
* tiene 3 literales (con repetición permitida pero forzando que
|
|
20
|
+
* ningún literal y su negación coexistan en la misma cláusula —
|
|
21
|
+
* evitamos cláusulas trivialmente true por tautología).
|
|
22
|
+
*/
|
|
23
|
+
export declare const dimacs3SAT: (maxVars?: number, maxRatio?: number) => fc.Arbitrary<{
|
|
24
|
+
clauses: Int32Array[];
|
|
25
|
+
numVars: number;
|
|
26
|
+
}>;
|
|
27
|
+
/** Term del módulo anti-unification (admite `const`). */
|
|
28
|
+
export declare const auTerm: (maxDepth?: number) => fc.Arbitrary<AUTerm>;
|
|
29
|
+
/** Term del módulo term-rewriting (sin `const`; usa `func` con []). */
|
|
30
|
+
export declare const trsTerm: (maxDepth?: number) => fc.Arbitrary<TRSTerm>;
|
|
31
|
+
/** Term sin variables (closed) — útil para que las reglas TRS produzcan
|
|
32
|
+
* reductos completos. */
|
|
33
|
+
export declare const trsClosedTerm: (maxDepth?: number) => fc.Arbitrary<TRSTerm>;
|
|
34
|
+
/**
|
|
35
|
+
* Genera un término HO de la "forma patrón" (Miller): meta-vars
|
|
36
|
+
* aparecen aplicadas únicamente a variables ligadas distintas.
|
|
37
|
+
* Construye términos del tipo λx.λy. M x y, var x, etc.
|
|
38
|
+
*/
|
|
39
|
+
export declare const hoPatternTerm: (maxDepth?: number) => fc.Arbitrary<HOTerm>;
|
|
40
|
+
export declare const lamTerm: (maxDepth?: number) => fc.Arbitrary<LamTerm>;
|
|
41
|
+
export declare const fTermSimple: () => fc.Arbitrary<{
|
|
42
|
+
term: FTerm;
|
|
43
|
+
type: FType;
|
|
44
|
+
}>;
|
|
45
|
+
export declare const mlttSimpleTerm: () => fc.Arbitrary<MLTTTerm>;
|
|
46
|
+
export declare const symExpr: (maxDepth?: number) => fc.Arbitrary<Expr>;
|
|
47
|
+
/** Versión "segura" (sin div ni log/exp con base inestable) — derivable
|
|
48
|
+
* numéricamente con diferencias finitas. */
|
|
49
|
+
export declare const symExprSafe: (maxDepth?: number) => fc.Arbitrary<Expr>;
|
|
50
|
+
/** Genera una red bayesiana de cadena A → B → C con valores binarios. */
|
|
51
|
+
export declare const tinyBayesNet: () => fc.Arbitrary<{
|
|
52
|
+
variables: Array<{
|
|
53
|
+
name: string;
|
|
54
|
+
values: string[];
|
|
55
|
+
}>;
|
|
56
|
+
cpts: Array<{
|
|
57
|
+
variable: string;
|
|
58
|
+
parents: string[];
|
|
59
|
+
entries: Record<string, Record<string, number>>;
|
|
60
|
+
}>;
|
|
61
|
+
}>;
|
|
62
|
+
export declare const tinyLTS: () => fc.Arbitrary<LTS>;
|
|
63
|
+
export declare const beliefSetAndFormula: () => fc.Arbitrary<{
|
|
64
|
+
initial: string[];
|
|
65
|
+
phi: string;
|
|
66
|
+
}>;
|
|
67
|
+
export declare const tinyAF: () => fc.Arbitrary<{
|
|
68
|
+
arguments: Set<string>;
|
|
69
|
+
attacks: Array<[string, string]>;
|
|
70
|
+
}>;
|
|
71
|
+
export declare const hyperrealArb: () => fc.Arbitrary<{
|
|
72
|
+
standard: number;
|
|
73
|
+
infinitesimal: number;
|
|
74
|
+
}>;
|
|
75
|
+
import type { RefType } from '../../refinement-types/types';
|
|
76
|
+
export declare const refTypeIntSimple: () => fc.Arbitrary<RefType>;
|
|
77
|
+
export { fc };
|
|
78
|
+
//# sourceMappingURL=generators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/generators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAe,MAAM,oCAAoC,CAAC;AACvF,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAM5D,eAAO,MAAM,QAAQ,QAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CACU,CAAC;AAE1D,eAAO,MAAM,OAAO,QAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CACC,CAAC;AAEhD,eAAO,MAAM,QAAQ,QAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CACV,CAAC;AAEtC,eAAO,MAAM,SAAS,QAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CACN,CAAC;AAS3C,eAAO,MAAM,WAAW,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAkB9D,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,gBAAW,EAAE,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC;IAClE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CA+BI,CAAC;AAMN,yDAAyD;AACzD,eAAO,MAAM,MAAM,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAexD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,OAAO,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAe1D,CAAC;AAEF;0BAC0B;AAC1B,eAAO,MAAM,aAAa,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAchE,CAAC;AASF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CA+C/D,CAAC;AAMF,eAAO,MAAM,OAAO,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAoB1D,CAAC;AAQF,eAAO,MAAM,WAAW,QAAO,EAAE,CAAC,SAAS,CAAC;IAC1C,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;CACb,CAuBA,CAAC;AAMF,eAAO,MAAM,cAAc,QAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,CAUpD,CAAC;AAMJ,eAAO,MAAM,OAAO,GAAI,iBAAY,KAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAuCvD,CAAC;AAEF;6CAC6C;AAC7C,eAAO,MAAM,WAAW,yBA3Ce,EAAE,CAAC,SAAS,CAAC,IAAI,CA2CtB,CAAC;AAMnC,yEAAyE;AACzE,eAAO,MAAM,YAAY,QAAO,EAAE,CAAC,SAAS,CAAC;IAC3C,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrD,IAAI,EAAE,KAAK,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACjD,CAAC,CAAC;CACJ,CA2CK,CAAC;AAMP,eAAO,MAAM,OAAO,QAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAmBtC,CAAC;AAYN,eAAO,MAAM,mBAAmB,QAAO,EAAE,CAAC,SAAS,CAAC;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAM+C,CAAC;AAMjD,eAAO,MAAM,MAAM,QAAO,EAAE,CAAC,SAAS,CAAC;IACrC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClC,CAaK,CAAC;AAMP,eAAO,MAAM,YAAY,QAAO,EAAE,CAAC,SAAS,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAIhC,CAAC;AAMzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,eAAO,MAAM,gBAAgB,QAAO,EAAE,CAAC,SAAS,CAAC,OAAO,CAmBrD,CAAC;AAMJ,OAAO,EAAE,EAAE,EAAE,CAAC"}
|