@stevenvo780/st-lang 4.2.0 → 4.3.0
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/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/lambda-calc/church.d.ts +8 -0
- package/dist/lambda-calc/church.d.ts.map +1 -0
- package/dist/lambda-calc/church.js +67 -0
- package/dist/lambda-calc/church.js.map +1 -0
- package/dist/lambda-calc/combinators.d.ts +8 -0
- package/dist/lambda-calc/combinators.d.ts.map +1 -0
- package/dist/lambda-calc/combinators.js +24 -0
- package/dist/lambda-calc/combinators.js.map +1 -0
- package/dist/lambda-calc/index.d.ts +8 -0
- package/dist/lambda-calc/index.d.ts.map +1 -0
- package/dist/lambda-calc/index.js +48 -0
- package/dist/lambda-calc/index.js.map +1 -0
- package/dist/lambda-calc/reduce.d.ts +18 -0
- package/dist/lambda-calc/reduce.d.ts.map +1 -0
- package/dist/lambda-calc/reduce.js +174 -0
- package/dist/lambda-calc/reduce.js.map +1 -0
- package/dist/lambda-calc/substitution.d.ts +6 -0
- package/dist/lambda-calc/substitution.d.ts.map +1 -0
- package/dist/lambda-calc/substitution.js +120 -0
- package/dist/lambda-calc/substitution.js.map +1 -0
- package/dist/lambda-calc/types.d.ts +19 -0
- package/dist/lambda-calc/types.d.ts.map +1 -0
- package/dist/lambda-calc/types.js +72 -0
- package/dist/lambda-calc/types.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
- package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/formula.js +99 -0
- package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
- package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/index.js +24 -0
- package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
- package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
- package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
- package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/prover.js +418 -0
- package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
- package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/types.js +21 -0
- package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
- package/dist/profiles/many-valued/index.d.ts +39 -0
- package/dist/profiles/many-valued/index.d.ts.map +1 -0
- package/dist/profiles/many-valued/index.js +250 -0
- package/dist/profiles/many-valued/index.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
- package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/formula.js +158 -0
- package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
- package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/index.js +41 -0
- package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
- package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/systems.js +96 -0
- package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
- package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
- package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
- package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/types.js +27 -0
- package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
- package/dist/profiles/substructural/index.d.ts +4 -0
- package/dist/profiles/substructural/index.d.ts.map +1 -0
- package/dist/profiles/substructural/index.js +22 -0
- package/dist/profiles/substructural/index.js.map +1 -0
- package/dist/profiles/substructural/prover.d.ts +13 -0
- package/dist/profiles/substructural/prover.d.ts.map +1 -0
- package/dist/profiles/substructural/prover.js +481 -0
- package/dist/profiles/substructural/prover.js.map +1 -0
- package/dist/profiles/substructural/types.d.ts +72 -0
- package/dist/profiles/substructural/types.d.ts.map +1 -0
- package/dist/profiles/substructural/types.js +27 -0
- package/dist/profiles/substructural/types.js.map +1 -0
- package/dist/runtime/abduction/entails.d.ts +21 -0
- package/dist/runtime/abduction/entails.d.ts.map +1 -0
- package/dist/runtime/abduction/entails.js +308 -0
- package/dist/runtime/abduction/entails.js.map +1 -0
- package/dist/runtime/abduction/find.d.ts +18 -0
- package/dist/runtime/abduction/find.d.ts.map +1 -0
- package/dist/runtime/abduction/find.js +202 -0
- package/dist/runtime/abduction/find.js.map +1 -0
- package/dist/runtime/abduction/index.d.ts +4 -0
- package/dist/runtime/abduction/index.d.ts.map +1 -0
- package/dist/runtime/abduction/index.js +26 -0
- package/dist/runtime/abduction/index.js.map +1 -0
- package/dist/runtime/abduction/types.d.ts +78 -0
- package/dist/runtime/abduction/types.d.ts.map +1 -0
- package/dist/runtime/abduction/types.js +23 -0
- package/dist/runtime/abduction/types.js.map +1 -0
- package/dist/runtime/bayesian/factor.d.ts +22 -0
- package/dist/runtime/bayesian/factor.d.ts.map +1 -0
- package/dist/runtime/bayesian/factor.js +249 -0
- package/dist/runtime/bayesian/factor.js.map +1 -0
- package/dist/runtime/bayesian/index.d.ts +3 -0
- package/dist/runtime/bayesian/index.d.ts.map +1 -0
- package/dist/runtime/bayesian/index.js +25 -0
- package/dist/runtime/bayesian/index.js.map +1 -0
- package/dist/runtime/bayesian/inference.d.ts +6 -0
- package/dist/runtime/bayesian/inference.d.ts.map +1 -0
- package/dist/runtime/bayesian/inference.js +260 -0
- package/dist/runtime/bayesian/inference.js.map +1 -0
- package/dist/runtime/bayesian/types.d.ts +19 -0
- package/dist/runtime/bayesian/types.d.ts.map +1 -0
- package/dist/runtime/bayesian/types.js +9 -0
- package/dist/runtime/bayesian/types.js.map +1 -0
- package/dist/runtime/bisimulation/index.d.ts +4 -0
- package/dist/runtime/bisimulation/index.d.ts.map +1 -0
- package/dist/runtime/bisimulation/index.js +21 -0
- package/dist/runtime/bisimulation/index.js.map +1 -0
- package/dist/runtime/bisimulation/operations.d.ts +40 -0
- package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
- package/dist/runtime/bisimulation/operations.js +219 -0
- package/dist/runtime/bisimulation/operations.js.map +1 -0
- package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
- package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
- package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
- package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
- package/dist/runtime/bisimulation/types.d.ts +26 -0
- package/dist/runtime/bisimulation/types.d.ts.map +1 -0
- package/dist/runtime/bisimulation/types.js +22 -0
- package/dist/runtime/bisimulation/types.js.map +1 -0
- package/dist/runtime/fca/context.d.ts +46 -0
- package/dist/runtime/fca/context.d.ts.map +1 -0
- package/dist/runtime/fca/context.js +155 -0
- package/dist/runtime/fca/context.js.map +1 -0
- package/dist/runtime/fca/implications.d.ts +10 -0
- package/dist/runtime/fca/implications.d.ts.map +1 -0
- package/dist/runtime/fca/implications.js +33 -0
- package/dist/runtime/fca/implications.js.map +1 -0
- package/dist/runtime/fca/index.d.ts +6 -0
- package/dist/runtime/fca/index.d.ts.map +1 -0
- package/dist/runtime/fca/index.js +39 -0
- package/dist/runtime/fca/index.js.map +1 -0
- package/dist/runtime/fca/lattice.d.ts +10 -0
- package/dist/runtime/fca/lattice.d.ts.map +1 -0
- package/dist/runtime/fca/lattice.js +86 -0
- package/dist/runtime/fca/lattice.js.map +1 -0
- package/dist/runtime/fca/next-closure.d.ts +12 -0
- package/dist/runtime/fca/next-closure.d.ts.map +1 -0
- package/dist/runtime/fca/next-closure.js +99 -0
- package/dist/runtime/fca/next-closure.js.map +1 -0
- package/dist/runtime/fca/types.d.ts +31 -0
- package/dist/runtime/fca/types.d.ts.map +1 -0
- package/dist/runtime/fca/types.js +30 -0
- package/dist/runtime/fca/types.js.map +1 -0
- package/dist/runtime/proof-minify/index.d.ts +3 -0
- package/dist/runtime/proof-minify/index.d.ts.map +1 -0
- package/dist/runtime/proof-minify/index.js +13 -0
- package/dist/runtime/proof-minify/index.js.map +1 -0
- package/dist/runtime/proof-minify/minify.d.ts +13 -0
- package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
- package/dist/runtime/proof-minify/minify.js +540 -0
- package/dist/runtime/proof-minify/minify.js.map +1 -0
- package/dist/runtime/proof-minify/types.d.ts +89 -0
- package/dist/runtime/proof-minify/types.d.ts.map +1 -0
- package/dist/runtime/proof-minify/types.js +16 -0
- package/dist/runtime/proof-minify/types.js.map +1 -0
- package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
- package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/constructors.js +75 -0
- package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
- package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
- package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/differentiate.js +107 -0
- package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
- package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
- package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/evaluate.js +47 -0
- package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
- package/dist/runtime/symbolic-diff/index.d.ts +9 -0
- package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/index.js +34 -0
- package/dist/runtime/symbolic-diff/index.js.map +1 -0
- package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
- package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/parse.js +206 -0
- package/dist/runtime/symbolic-diff/parse.js.map +1 -0
- package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
- package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/simplify.js +214 -0
- package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
- package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
- package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/stringify.js +69 -0
- package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
- package/dist/runtime/symbolic-diff/types.d.ts +35 -0
- package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/types.js +9 -0
- package/dist/runtime/symbolic-diff/types.js.map +1 -0
- package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
- package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
- package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
- package/dist/runtime/term-rewriting/index.d.ts +9 -0
- package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/index.js +38 -0
- package/dist/runtime/term-rewriting/index.js.map +1 -0
- package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
- package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
- package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
- package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
- package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/lpo.js +158 -0
- package/dist/runtime/term-rewriting/lpo.js.map +1 -0
- package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
- package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/rewrite.js +189 -0
- package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
- package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
- package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/term-utils.js +360 -0
- package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
- package/dist/runtime/term-rewriting/types.d.ts +66 -0
- package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/types.js +21 -0
- package/dist/runtime/term-rewriting/types.js.map +1 -0
- package/dist/tests/abduction/abduction.test.d.ts +2 -0
- package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
- package/dist/tests/abduction/abduction.test.js +380 -0
- package/dist/tests/abduction/abduction.test.js.map +1 -0
- package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
- package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
- package/dist/tests/bayesian/bayesian.test.js +328 -0
- package/dist/tests/bayesian/bayesian.test.js.map +1 -0
- package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
- package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
- package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
- package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
- package/dist/tests/fca/fca.test.d.ts +2 -0
- package/dist/tests/fca/fca.test.d.ts.map +1 -0
- package/dist/tests/fca/fca.test.js +317 -0
- package/dist/tests/fca/fca.test.js.map +1 -0
- package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
- package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
- package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
- package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
- package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
- package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
- package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
- package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
- package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
- package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
- package/dist/tests/many-valued/many-valued.test.js +150 -0
- package/dist/tests/many-valued/many-valued.test.js.map +1 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
- package/dist/tests/proof-minify/minify.test.d.ts +2 -0
- package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
- package/dist/tests/proof-minify/minify.test.js +281 -0
- package/dist/tests/proof-minify/minify.test.js.map +1 -0
- package/dist/tests/substructural/prover.test.d.ts +2 -0
- package/dist/tests/substructural/prover.test.d.ts.map +1 -0
- package/dist/tests/substructural/prover.test.js +271 -0
- package/dist/tests/substructural/prover.test.js.map +1 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
- package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
- package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
- package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
- package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
- package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/lpo.test.js +57 -0
- package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
- package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
- package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/rewrite.test.js +56 -0
- package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
- package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
- package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/term-utils.test.js +58 -0
- package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Substitution, Term } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Igualdad estructural de términos (iterativa para soportar
|
|
4
|
+
* términos muy profundos sin stack overflow).
|
|
5
|
+
*/
|
|
6
|
+
export declare function termEquals(a: Term, b: Term): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Clona un término (iterativo, soporta árboles profundos).
|
|
9
|
+
*/
|
|
10
|
+
export declare function cloneTerm(t: Term): Term;
|
|
11
|
+
/**
|
|
12
|
+
* Conjunto de variables que aparecen en t.
|
|
13
|
+
*/
|
|
14
|
+
export declare function varsOf(t: Term, acc?: Set<string>): Set<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Aplica una sustitución a t (iterativo, soporta términos profundos).
|
|
17
|
+
*
|
|
18
|
+
* Para variables, sigue la cadena de bindings con detección de
|
|
19
|
+
* ciclos (un MGU de Robinson puede tener cadenas x → y → f(z)
|
|
20
|
+
* que sólo terminan tras varios saltos).
|
|
21
|
+
*/
|
|
22
|
+
export declare function applySubst(t: Term, subst: Substitution): Term;
|
|
23
|
+
/**
|
|
24
|
+
* Occurs check: ¿aparece la variable v en t?
|
|
25
|
+
*
|
|
26
|
+
* Indispensable para evitar unificar x con f(x) creando términos
|
|
27
|
+
* infinitos como f(f(f(...))).
|
|
28
|
+
*/
|
|
29
|
+
export declare function occursIn(v: string, t: Term): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Matching (pattern matching): encuentra σ tal que σ(pattern) = target.
|
|
32
|
+
*
|
|
33
|
+
* A diferencia de la unificación, solo las variables del pattern
|
|
34
|
+
* pueden ligarse. Si target contiene variables, se tratan como
|
|
35
|
+
* constantes opacas. Devuelve null si no hay match.
|
|
36
|
+
*/
|
|
37
|
+
export declare function match(pattern: Term, target: Term, subst?: Substitution): Substitution | null;
|
|
38
|
+
/**
|
|
39
|
+
* Unificación de Robinson. Devuelve un MGU (most general unifier)
|
|
40
|
+
* o null si los términos no unifican.
|
|
41
|
+
*
|
|
42
|
+
* Implementación recursiva con occurs check.
|
|
43
|
+
*/
|
|
44
|
+
export declare function unify(s: Term, t: Term, subst?: Substitution): Substitution | null;
|
|
45
|
+
/**
|
|
46
|
+
* Renombra todas las variables de t agregándole un sufijo (`_<suffix>`).
|
|
47
|
+
*
|
|
48
|
+
* Necesario antes de unificar dos reglas en KB completion: las variables
|
|
49
|
+
* deben ser disjuntas para que LHS₁ y LHS₂ no compartan nombres
|
|
50
|
+
* espuriamente.
|
|
51
|
+
*/
|
|
52
|
+
export declare function renameVars(t: Term, suffix: string): Term;
|
|
53
|
+
/**
|
|
54
|
+
* Tamaño del término (número de nodos). Iterativo para evitar
|
|
55
|
+
* stack overflow en términos muy profundos.
|
|
56
|
+
*/
|
|
57
|
+
export declare function termSize(t: Term): number;
|
|
58
|
+
/**
|
|
59
|
+
* Helpers para construir términos (azúcar para tests).
|
|
60
|
+
*/
|
|
61
|
+
export declare function v(name: string): Term;
|
|
62
|
+
export declare function f(name: string, ...args: Term[]): Term;
|
|
63
|
+
export declare function c(name: string): Term;
|
|
64
|
+
//# sourceMappingURL=term-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"term-utils.d.ts","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/term-utils.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAsBpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEvC;AAsDD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CASzE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAsD7D;AAWD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAYpD;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,KAAK,GAAE,YAAwB,GAC9B,YAAY,GAAG,IAAI,CA2BrB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAE,YAAwB,GAAG,YAAY,GAAG,IAAI,CA8B5F;AAiBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAYxC;AAED;;GAEG;AACH,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpC;AAED,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAErD;AAED,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpC"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Term Rewriting — Utilidades de términos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Operaciones básicas sobre términos de primer orden:
|
|
7
|
+
// - igualdad estructural
|
|
8
|
+
// - sustitución
|
|
9
|
+
// - matching (un sentido) y unificación (Robinson)
|
|
10
|
+
// - occurs check
|
|
11
|
+
// - recolección de variables
|
|
12
|
+
// - clonación
|
|
13
|
+
//
|
|
14
|
+
// Las sustituciones son Map<string, Term>. Componer dos
|
|
15
|
+
// sustituciones σ ∘ τ se hace aplicando τ a los rangos de σ
|
|
16
|
+
// y uniendo: composeSubst(σ, τ).
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.termEquals = termEquals;
|
|
19
|
+
exports.cloneTerm = cloneTerm;
|
|
20
|
+
exports.varsOf = varsOf;
|
|
21
|
+
exports.applySubst = applySubst;
|
|
22
|
+
exports.occursIn = occursIn;
|
|
23
|
+
exports.match = match;
|
|
24
|
+
exports.unify = unify;
|
|
25
|
+
exports.renameVars = renameVars;
|
|
26
|
+
exports.termSize = termSize;
|
|
27
|
+
exports.v = v;
|
|
28
|
+
exports.f = f;
|
|
29
|
+
exports.c = c;
|
|
30
|
+
/**
|
|
31
|
+
* Igualdad estructural de términos (iterativa para soportar
|
|
32
|
+
* términos muy profundos sin stack overflow).
|
|
33
|
+
*/
|
|
34
|
+
function termEquals(a, b) {
|
|
35
|
+
const stack = [[a, b]];
|
|
36
|
+
while (stack.length > 0) {
|
|
37
|
+
const pair = stack.pop();
|
|
38
|
+
if (pair === undefined)
|
|
39
|
+
break;
|
|
40
|
+
const [x, y] = pair;
|
|
41
|
+
if (x.kind !== y.kind)
|
|
42
|
+
return false;
|
|
43
|
+
if (x.kind === 'var' && y.kind === 'var') {
|
|
44
|
+
if (x.name !== y.name)
|
|
45
|
+
return false;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (x.kind === 'func' && y.kind === 'func') {
|
|
49
|
+
if (x.name !== y.name || x.args.length !== y.args.length)
|
|
50
|
+
return false;
|
|
51
|
+
for (let i = 0; i < x.args.length; i++) {
|
|
52
|
+
const xi = x.args[i];
|
|
53
|
+
const yi = y.args[i];
|
|
54
|
+
if (xi === undefined || yi === undefined)
|
|
55
|
+
return false;
|
|
56
|
+
stack.push([xi, yi]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Clona un término (iterativo, soporta árboles profundos).
|
|
64
|
+
*/
|
|
65
|
+
function cloneTerm(t) {
|
|
66
|
+
return mapTerm(t, (leaf) => ({ kind: 'var', name: leaf.name }));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Helper: map post-order iterativo sobre un término.
|
|
70
|
+
* `varMap` decide cómo transformar variables (la única transformación
|
|
71
|
+
* que necesitamos hacer top-down en los usos actuales).
|
|
72
|
+
*/
|
|
73
|
+
function mapTerm(t, varMap) {
|
|
74
|
+
const stack = [{ node: t, result: null, children: [] }];
|
|
75
|
+
let pending = null;
|
|
76
|
+
while (stack.length > 0) {
|
|
77
|
+
const frame = stack[stack.length - 1];
|
|
78
|
+
if (frame === undefined)
|
|
79
|
+
break;
|
|
80
|
+
if (pending !== null) {
|
|
81
|
+
frame.children.push(pending);
|
|
82
|
+
pending = null;
|
|
83
|
+
}
|
|
84
|
+
if (frame.node.kind === 'var') {
|
|
85
|
+
pending = varMap(frame.node);
|
|
86
|
+
stack.pop();
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// func
|
|
90
|
+
if (frame.children.length < frame.node.args.length) {
|
|
91
|
+
const nextArg = frame.node.args[frame.children.length];
|
|
92
|
+
if (nextArg === undefined) {
|
|
93
|
+
// shouldn't happen; safeguard
|
|
94
|
+
pending = { kind: 'func', name: frame.node.name, args: frame.children };
|
|
95
|
+
stack.pop();
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
stack.push({ node: nextArg, result: null, children: [] });
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// Todos los args procesados
|
|
102
|
+
pending = { kind: 'func', name: frame.node.name, args: frame.children };
|
|
103
|
+
stack.pop();
|
|
104
|
+
}
|
|
105
|
+
if (pending === null) {
|
|
106
|
+
throw new Error('mapTerm: unreachable — pending result is null');
|
|
107
|
+
}
|
|
108
|
+
return pending;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Conjunto de variables que aparecen en t.
|
|
112
|
+
*/
|
|
113
|
+
function varsOf(t, acc = new Set()) {
|
|
114
|
+
const stack = [t];
|
|
115
|
+
while (stack.length > 0) {
|
|
116
|
+
const node = stack.pop();
|
|
117
|
+
if (node === undefined)
|
|
118
|
+
break;
|
|
119
|
+
if (node.kind === 'var')
|
|
120
|
+
acc.add(node.name);
|
|
121
|
+
else
|
|
122
|
+
for (const a of node.args)
|
|
123
|
+
stack.push(a);
|
|
124
|
+
}
|
|
125
|
+
return acc;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Aplica una sustitución a t (iterativo, soporta términos profundos).
|
|
129
|
+
*
|
|
130
|
+
* Para variables, sigue la cadena de bindings con detección de
|
|
131
|
+
* ciclos (un MGU de Robinson puede tener cadenas x → y → f(z)
|
|
132
|
+
* que sólo terminan tras varios saltos).
|
|
133
|
+
*/
|
|
134
|
+
function applySubst(t, subst) {
|
|
135
|
+
// Implementación recursiva mediante `mapTerm`: cada variable se
|
|
136
|
+
// resuelve siguiendo la cadena; si el resultado es func, sus args
|
|
137
|
+
// también deben sustituirse — eso ya lo hace mapTerm porque las
|
|
138
|
+
// varMap devuelven Terms y cualquier subterm interno pasaría por
|
|
139
|
+
// la misma lógica. PERO mapTerm no recursa en el resultado de
|
|
140
|
+
// varMap; sólo procesa la estructura original. Para que las
|
|
141
|
+
// sustituciones en cadena se apliquen, resolvemos la cadena hasta
|
|
142
|
+
// un valor final, y sus args sub se aplican recursivamente.
|
|
143
|
+
//
|
|
144
|
+
// Como pueden ser profundos, lo hacemos en dos pasadas:
|
|
145
|
+
// 1. resolveVar(name): sigue cadena con detección de ciclos,
|
|
146
|
+
// devuelve un Term (que puede ser otra var, una func, o el
|
|
147
|
+
// var original si no está mapeada).
|
|
148
|
+
// 2. mapTerm con varMap = resolveVar, luego para cualquier func
|
|
149
|
+
// resultante seguimos procesando sus args. Pero como mapTerm
|
|
150
|
+
// ya está procesando la estructura, el resultado de varMap
|
|
151
|
+
// no se vuelve a explorar.
|
|
152
|
+
//
|
|
153
|
+
// Solución: hacemos un fixed-point sobre el resultado final, pero
|
|
154
|
+
// sin recursión profunda — reaplicamos mapTerm hasta que la
|
|
155
|
+
// aplicación no cambie. Para términos no patológicos esto es ≤1-2
|
|
156
|
+
// pasadas.
|
|
157
|
+
const resolveVar = (leaf) => {
|
|
158
|
+
const seen = new Set();
|
|
159
|
+
let current = leaf;
|
|
160
|
+
while (current.kind === 'var') {
|
|
161
|
+
if (seen.has(current.name))
|
|
162
|
+
return current;
|
|
163
|
+
seen.add(current.name);
|
|
164
|
+
const next = subst.get(current.name);
|
|
165
|
+
if (next === undefined)
|
|
166
|
+
return current;
|
|
167
|
+
current = next;
|
|
168
|
+
}
|
|
169
|
+
return current;
|
|
170
|
+
};
|
|
171
|
+
// Aplicamos una vez: mapeo cada variable a su resolución directa
|
|
172
|
+
// (que puede ser func con vars adentro).
|
|
173
|
+
let result = mapTerm(t, resolveVar);
|
|
174
|
+
// Si la sustitución tiene cadenas (x → y donde y también está
|
|
175
|
+
// mapeada a algo), una sola pasada no basta. Iteramos con un fix-
|
|
176
|
+
// point bounded; cycle-safe gracias a `seen` en resolveVar.
|
|
177
|
+
for (let pass = 0; pass < 4; pass++) {
|
|
178
|
+
const next = mapTerm(result, resolveVar);
|
|
179
|
+
// Detección rápida: si el resultado tiene la misma raíz/estructura
|
|
180
|
+
// de aridad, asumimos estable. Para corrección estricta usamos
|
|
181
|
+
// termEquals, pero eso sería O(n) extra por pasada — mejor lo
|
|
182
|
+
// dejamos limitado a 4 pasadas que cubren prácticamente todos
|
|
183
|
+
// los casos de KB.
|
|
184
|
+
if (termEqualsShallow(next, result))
|
|
185
|
+
return next;
|
|
186
|
+
result = next;
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Igualdad rápida (raíz + aridad) — usada por applySubst para
|
|
192
|
+
* decidir fixed-point sin pagar termEquals completo.
|
|
193
|
+
*/
|
|
194
|
+
function termEqualsShallow(a, b) {
|
|
195
|
+
if (a === b)
|
|
196
|
+
return true;
|
|
197
|
+
return termEquals(a, b);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Occurs check: ¿aparece la variable v en t?
|
|
201
|
+
*
|
|
202
|
+
* Indispensable para evitar unificar x con f(x) creando términos
|
|
203
|
+
* infinitos como f(f(f(...))).
|
|
204
|
+
*/
|
|
205
|
+
function occursIn(v, t) {
|
|
206
|
+
const stack = [t];
|
|
207
|
+
while (stack.length > 0) {
|
|
208
|
+
const node = stack.pop();
|
|
209
|
+
if (node === undefined)
|
|
210
|
+
break;
|
|
211
|
+
if (node.kind === 'var') {
|
|
212
|
+
if (node.name === v)
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
for (const a of node.args)
|
|
217
|
+
stack.push(a);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Matching (pattern matching): encuentra σ tal que σ(pattern) = target.
|
|
224
|
+
*
|
|
225
|
+
* A diferencia de la unificación, solo las variables del pattern
|
|
226
|
+
* pueden ligarse. Si target contiene variables, se tratan como
|
|
227
|
+
* constantes opacas. Devuelve null si no hay match.
|
|
228
|
+
*/
|
|
229
|
+
function match(pattern, target, subst = new Map()) {
|
|
230
|
+
// Iterativo: stack de pares (pattern, target) que faltan unificar.
|
|
231
|
+
const sigma = new Map(subst);
|
|
232
|
+
const stack = [[pattern, target]];
|
|
233
|
+
while (stack.length > 0) {
|
|
234
|
+
const pair = stack.pop();
|
|
235
|
+
if (pair === undefined)
|
|
236
|
+
break;
|
|
237
|
+
const [p, q] = pair;
|
|
238
|
+
if (p.kind === 'var') {
|
|
239
|
+
const existing = sigma.get(p.name);
|
|
240
|
+
if (existing !== undefined) {
|
|
241
|
+
if (!termEquals(existing, q))
|
|
242
|
+
return null;
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
sigma.set(p.name, q);
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
if (q.kind !== 'func')
|
|
249
|
+
return null;
|
|
250
|
+
if (p.name !== q.name || p.args.length !== q.args.length)
|
|
251
|
+
return null;
|
|
252
|
+
for (let i = 0; i < p.args.length; i++) {
|
|
253
|
+
const pa = p.args[i];
|
|
254
|
+
const qa = q.args[i];
|
|
255
|
+
if (pa === undefined || qa === undefined)
|
|
256
|
+
return null;
|
|
257
|
+
stack.push([pa, qa]);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return sigma;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Unificación de Robinson. Devuelve un MGU (most general unifier)
|
|
264
|
+
* o null si los términos no unifican.
|
|
265
|
+
*
|
|
266
|
+
* Implementación recursiva con occurs check.
|
|
267
|
+
*/
|
|
268
|
+
function unify(s, t, subst = new Map()) {
|
|
269
|
+
const sigma = new Map(subst);
|
|
270
|
+
const stack = [[s, t]];
|
|
271
|
+
while (stack.length > 0) {
|
|
272
|
+
const pair = stack.pop();
|
|
273
|
+
if (pair === undefined)
|
|
274
|
+
break;
|
|
275
|
+
const a = walk(pair[0], sigma);
|
|
276
|
+
const b = walk(pair[1], sigma);
|
|
277
|
+
if (a.kind === 'var' && b.kind === 'var' && a.name === b.name)
|
|
278
|
+
continue;
|
|
279
|
+
if (a.kind === 'var') {
|
|
280
|
+
if (occursIn(a.name, b))
|
|
281
|
+
return null;
|
|
282
|
+
sigma.set(a.name, b);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
if (b.kind === 'var') {
|
|
286
|
+
if (occursIn(b.name, a))
|
|
287
|
+
return null;
|
|
288
|
+
sigma.set(b.name, a);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
// Ambos func
|
|
292
|
+
if (a.name !== b.name || a.args.length !== b.args.length)
|
|
293
|
+
return null;
|
|
294
|
+
for (let i = 0; i < a.args.length; i++) {
|
|
295
|
+
const ai = a.args[i];
|
|
296
|
+
const bi = b.args[i];
|
|
297
|
+
if (ai === undefined || bi === undefined)
|
|
298
|
+
return null;
|
|
299
|
+
stack.push([ai, bi]);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return sigma;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Sigue la cadena de sustituciones para una variable, hasta llegar
|
|
306
|
+
* a un valor no-variable o a una variable libre. Evita recursión
|
|
307
|
+
* profunda durante unify.
|
|
308
|
+
*/
|
|
309
|
+
function walk(t, subst) {
|
|
310
|
+
let current = t;
|
|
311
|
+
while (current.kind === 'var') {
|
|
312
|
+
const next = subst.get(current.name);
|
|
313
|
+
if (next === undefined)
|
|
314
|
+
return current;
|
|
315
|
+
current = next;
|
|
316
|
+
}
|
|
317
|
+
return current;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Renombra todas las variables de t agregándole un sufijo (`_<suffix>`).
|
|
321
|
+
*
|
|
322
|
+
* Necesario antes de unificar dos reglas en KB completion: las variables
|
|
323
|
+
* deben ser disjuntas para que LHS₁ y LHS₂ no compartan nombres
|
|
324
|
+
* espuriamente.
|
|
325
|
+
*/
|
|
326
|
+
function renameVars(t, suffix) {
|
|
327
|
+
return mapTerm(t, (leaf) => ({ kind: 'var', name: `${leaf.name}_${suffix}` }));
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Tamaño del término (número de nodos). Iterativo para evitar
|
|
331
|
+
* stack overflow en términos muy profundos.
|
|
332
|
+
*/
|
|
333
|
+
function termSize(t) {
|
|
334
|
+
let count = 0;
|
|
335
|
+
const stack = [t];
|
|
336
|
+
while (stack.length > 0) {
|
|
337
|
+
const node = stack.pop();
|
|
338
|
+
if (node === undefined)
|
|
339
|
+
break;
|
|
340
|
+
count++;
|
|
341
|
+
if (node.kind === 'func') {
|
|
342
|
+
for (const a of node.args)
|
|
343
|
+
stack.push(a);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return count;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Helpers para construir términos (azúcar para tests).
|
|
350
|
+
*/
|
|
351
|
+
function v(name) {
|
|
352
|
+
return { kind: 'var', name };
|
|
353
|
+
}
|
|
354
|
+
function f(name, ...args) {
|
|
355
|
+
return { kind: 'func', name, args };
|
|
356
|
+
}
|
|
357
|
+
function c(name) {
|
|
358
|
+
return { kind: 'func', name, args: [] };
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=term-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"term-utils.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/term-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Término de primer orden.
|
|
3
|
+
*
|
|
4
|
+
* - `var`: variable de unificación (e.g., x, y, z).
|
|
5
|
+
* - `func`: símbolo de función con aridad implícita por len(args).
|
|
6
|
+
* args = [] significa constante (e.g., 0, e, true).
|
|
7
|
+
*/
|
|
8
|
+
export type Term = {
|
|
9
|
+
kind: 'var';
|
|
10
|
+
name: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'func';
|
|
13
|
+
name: string;
|
|
14
|
+
args: Term[];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Regla de reescritura l → r.
|
|
18
|
+
*
|
|
19
|
+
* Invariante: vars(r) ⊆ vars(l). Si no se cumple, normalización
|
|
20
|
+
* puede introducir variables libres y romper la lógica.
|
|
21
|
+
*/
|
|
22
|
+
export interface RewriteRule {
|
|
23
|
+
lhs: Term;
|
|
24
|
+
rhs: Term;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Term Rewriting System.
|
|
28
|
+
*/
|
|
29
|
+
export interface TRS {
|
|
30
|
+
rules: RewriteRule[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Sustitución: mapa variable → término.
|
|
34
|
+
*/
|
|
35
|
+
export type Substitution = Map<string, Term>;
|
|
36
|
+
/**
|
|
37
|
+
* Resultado de Knuth-Bendix completion.
|
|
38
|
+
*
|
|
39
|
+
* - `trs`: sistema final (potencialmente extendido).
|
|
40
|
+
* - `completed`: true si convergió (sin critical pairs unjoinables).
|
|
41
|
+
* - `criticalPairs`: total de pares críticos examinados.
|
|
42
|
+
* - `steps`: iteraciones del loop principal.
|
|
43
|
+
*/
|
|
44
|
+
export interface KBResult {
|
|
45
|
+
trs: TRS;
|
|
46
|
+
completed: boolean;
|
|
47
|
+
criticalPairs: number;
|
|
48
|
+
steps: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Opciones para Knuth-Bendix completion.
|
|
52
|
+
*
|
|
53
|
+
* - `ordering`: estrategia para orientar nuevas ecuaciones.
|
|
54
|
+
* Por default LPO (Lexicographic Path Order).
|
|
55
|
+
* - `maxSteps`: cota para evitar loops infinitos cuando el sistema
|
|
56
|
+
* no es completable (KB es semi-decidible).
|
|
57
|
+
* - `precedence`: orden parcial sobre símbolos de función
|
|
58
|
+
* (map name → priority; mayor = mayor en el orden).
|
|
59
|
+
* Requerido para LPO.
|
|
60
|
+
*/
|
|
61
|
+
export interface KBOptions {
|
|
62
|
+
ordering?: 'lpo' | 'kbo';
|
|
63
|
+
maxSteps?: number;
|
|
64
|
+
precedence?: Map<string, number>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/types.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;AAEhG;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Term Rewriting — Tipos públicos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Un Term Rewriting System (TRS) es un conjunto de reglas
|
|
7
|
+
// l → r
|
|
8
|
+
// donde l y r son términos de primer orden y vars(r) ⊆ vars(l).
|
|
9
|
+
//
|
|
10
|
+
// La reescritura aplica una regla buscando un subtérmino que
|
|
11
|
+
// unifique (match) con el LHS y lo reemplaza por la sustitución
|
|
12
|
+
// del RHS. Se itera hasta llegar a forma normal (sin redex
|
|
13
|
+
// aplicables) o hasta saturar maxSteps.
|
|
14
|
+
//
|
|
15
|
+
// Aplicaciones:
|
|
16
|
+
// - Normalización en pruebas con igualdad (decision procedures).
|
|
17
|
+
// - Simplificación simbólica.
|
|
18
|
+
// - Modelado de teorías ecuacionales (grupos, anillos, listas).
|
|
19
|
+
// - Confluencia + terminación ⇒ decisión de equivalencia.
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;AAC/D,EAAE;AACF,0DAA0D;AAC1D,UAAU;AACV,gEAAgE;AAChE,EAAE;AACF,6DAA6D;AAC7D,gEAAgE;AAChE,2DAA2D;AAC3D,wCAAwC;AACxC,EAAE;AACF,gBAAgB;AAChB,mEAAmE;AACnE,gCAAgC;AAChC,kEAAkE;AAClE,4DAA4D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abduction.test.d.ts","sourceRoot":"","sources":["../../../src/tests/abduction/abduction.test.ts"],"names":[],"mappings":""}
|