@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,481 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Substructural Prover — Linear & Affine (backward search)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Calculo de secuentes intuicionistico bi-zonal para ILL
|
|
7
|
+
// (Intuitionistic Linear Logic) + variante afin:
|
|
8
|
+
//
|
|
9
|
+
// Σ ; Γ ⊢ A
|
|
10
|
+
//
|
|
11
|
+
// donde:
|
|
12
|
+
// - Σ es la "zona unrestricted": contiene los argumentos de `!`
|
|
13
|
+
// ya derelictados. Sobre Σ, contraction y weakening son libres
|
|
14
|
+
// (de modo implicito: Σ se duplica/descarta sin coste).
|
|
15
|
+
// - Γ es la "zona lineal": cada formula debe usarse exactamente
|
|
16
|
+
// una vez (afin: a lo sumo una vez, weakening libre sobre Γ).
|
|
17
|
+
//
|
|
18
|
+
// Esto evita los loops infinitos del enfoque con regla explicita de
|
|
19
|
+
// contraction sobre `!A`, manteniendo expresividad equivalente.
|
|
20
|
+
//
|
|
21
|
+
// Reglas (clave):
|
|
22
|
+
// axiom Σ ; A ⊢ A (linear)
|
|
23
|
+
// axiom (afin) Σ ; Γ, A ⊢ A (descartando Γ por weakening)
|
|
24
|
+
// axiom (unrestr.) Σ, A ; · ⊢ A (afin) o Σ, A ; · ⊢ A en linear
|
|
25
|
+
// — copia A desde Σ
|
|
26
|
+
// oneR Σ ; · ⊢ 1 (Γ vacio en linear; en afin
|
|
27
|
+
// tambien con Γ no vacio)
|
|
28
|
+
// oneL Σ ; Γ, 1 ⊢ C ↪ Σ ; Γ ⊢ C
|
|
29
|
+
// tensorR Σ ; Γ1, Γ2 ⊢ A⊗B ↪ Σ;Γ1 ⊢ A ∧ Σ;Γ2 ⊢ B
|
|
30
|
+
// tensorL Σ ; Γ, A⊗B ⊢ C ↪ Σ ; Γ, A, B ⊢ C
|
|
31
|
+
// lollipopR Σ ; Γ ⊢ A⊸B ↪ Σ ; Γ, A ⊢ B
|
|
32
|
+
// lollipopL Σ;Γ1,Γ2,A⊸B ⊢ C ↪ Σ;Γ1 ⊢ A ∧ Σ;Γ2, B ⊢ C
|
|
33
|
+
// withR Σ ; Γ ⊢ A & B ↪ Σ;Γ ⊢ A ∧ Σ;Γ ⊢ B
|
|
34
|
+
// withL1 / withL2 Σ ; Γ, A&B ⊢ C ↪ Σ ; Γ, A ⊢ C (o B)
|
|
35
|
+
// plusR1 / plusR2 Σ ; Γ ⊢ A⊕B ↪ Σ;Γ ⊢ A (o B)
|
|
36
|
+
// plusL Σ ; Γ, A⊕B ⊢ C ↪ Σ;Γ,A ⊢ C ∧ Σ;Γ,B ⊢ C
|
|
37
|
+
// bangR Σ ; · ⊢ !A ↪ Σ ; · ⊢ A
|
|
38
|
+
// (en linear Γ debe estar vacio; en afin se
|
|
39
|
+
// permite Γ ⊆ formulas no-bang descartables)
|
|
40
|
+
// bangL (promote) Σ ; Γ, !A ⊢ C ↪ Σ, A ; Γ ⊢ C
|
|
41
|
+
// (mueve A a la zona unrestricted, "abriendo"
|
|
42
|
+
// contraction y weakening implicitos)
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.formulaKey = formulaKey;
|
|
45
|
+
exports.proveLinear = proveLinear;
|
|
46
|
+
exports.proveAffine = proveAffine;
|
|
47
|
+
exports.proofToString = proofToString;
|
|
48
|
+
// --- Utilidades de comparacion sintactica ---
|
|
49
|
+
function formulaKey(f) {
|
|
50
|
+
switch (f.kind) {
|
|
51
|
+
case 'atom':
|
|
52
|
+
return `a:${f.name}`;
|
|
53
|
+
case 'one':
|
|
54
|
+
return '1';
|
|
55
|
+
case 'tensor':
|
|
56
|
+
return `(${formulaKey(f.left)}*${formulaKey(f.right)})`;
|
|
57
|
+
case 'lollipop':
|
|
58
|
+
return `(${formulaKey(f.left)}-o${formulaKey(f.right)})`;
|
|
59
|
+
case 'with':
|
|
60
|
+
return `(${formulaKey(f.left)}&${formulaKey(f.right)})`;
|
|
61
|
+
case 'plus':
|
|
62
|
+
return `(${formulaKey(f.left)}+${formulaKey(f.right)})`;
|
|
63
|
+
case 'bang':
|
|
64
|
+
return `!${formulaKey(f.arg)}`;
|
|
65
|
+
case 'whynot':
|
|
66
|
+
return `?${formulaKey(f.arg)}`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function eqFormula(a, b) {
|
|
70
|
+
return formulaKey(a) === formulaKey(b);
|
|
71
|
+
}
|
|
72
|
+
function removeAt(arr, idx) {
|
|
73
|
+
const copy = arr.slice();
|
|
74
|
+
copy.splice(idx, 1);
|
|
75
|
+
return copy;
|
|
76
|
+
}
|
|
77
|
+
// --- Particiones de multiset (splitting de contexto lineal) ---
|
|
78
|
+
//
|
|
79
|
+
// Solo se usa sobre la zona lineal Γ. Σ se hereda completa en ambas
|
|
80
|
+
// premisas (porque sus formulas son reutilizables).
|
|
81
|
+
function* partitions(gamma) {
|
|
82
|
+
const n = gamma.length;
|
|
83
|
+
const total = 1 << n;
|
|
84
|
+
for (let mask = 0; mask < total; mask++) {
|
|
85
|
+
const left = [];
|
|
86
|
+
const right = [];
|
|
87
|
+
for (let i = 0; i < n; i++) {
|
|
88
|
+
const item = gamma[i];
|
|
89
|
+
if (item === undefined)
|
|
90
|
+
continue;
|
|
91
|
+
if (mask & (1 << i))
|
|
92
|
+
left.push(item);
|
|
93
|
+
else
|
|
94
|
+
right.push(item);
|
|
95
|
+
}
|
|
96
|
+
yield [left, right];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function step(ctx) {
|
|
100
|
+
ctx.used++;
|
|
101
|
+
return ctx.used <= ctx.budget;
|
|
102
|
+
}
|
|
103
|
+
function goalKey(sigma, gamma, target) {
|
|
104
|
+
// Ordenamos para que multisets distintos en orden no causen miss.
|
|
105
|
+
const s = sigma.map(formulaKey).sort().join('|');
|
|
106
|
+
const g = gamma.map(formulaKey).sort().join('|');
|
|
107
|
+
return `${s}//${g}//${formulaKey(target)}`;
|
|
108
|
+
}
|
|
109
|
+
// --- Construccion de pruebas ---
|
|
110
|
+
function mkProof(conclusion, rule, premises) {
|
|
111
|
+
return { conclusion, rule, premises };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Construye un secuente "plano" para el `LinearProof`. Las formulas
|
|
115
|
+
* de Σ se preservan como `!A` en el left (notacion: lo que esta en
|
|
116
|
+
* la zona unrestricted entra al secuente como bangs explicitos).
|
|
117
|
+
*/
|
|
118
|
+
function seqOf(sigma, gamma, delta) {
|
|
119
|
+
const left = [];
|
|
120
|
+
for (const s of sigma)
|
|
121
|
+
left.push({ kind: 'bang', arg: s });
|
|
122
|
+
for (const g of gamma)
|
|
123
|
+
left.push(g);
|
|
124
|
+
return { left, right: delta.slice() };
|
|
125
|
+
}
|
|
126
|
+
// --- Predicados sobre formulas ---
|
|
127
|
+
function isBang(f) {
|
|
128
|
+
return f.kind === 'bang';
|
|
129
|
+
}
|
|
130
|
+
// --- Cierre por axioma ---
|
|
131
|
+
//
|
|
132
|
+
// Posibles axiomas:
|
|
133
|
+
// (linear) Σ ; A ⊢ A — Γ es exactamente [A] y matchea target
|
|
134
|
+
// (linear) Σ, A ; · ⊢ A — A esta en Σ y Γ vacio
|
|
135
|
+
// (afin) Σ ; Γ ⊢ A — Γ contiene A; resto se descarta
|
|
136
|
+
// por weakening implicito
|
|
137
|
+
// (afin) Σ, A ; Γ ⊢ A — A en Σ, Γ descartable
|
|
138
|
+
function tryAxiom(sigma, gamma, target, mode) {
|
|
139
|
+
// Caso linear estricto.
|
|
140
|
+
if (mode === 'linear') {
|
|
141
|
+
// Γ = [A]
|
|
142
|
+
if (gamma.length === 1 && gamma[0] && eqFormula(gamma[0], target)) {
|
|
143
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'axiom', []);
|
|
144
|
+
}
|
|
145
|
+
// Γ = [] y A esta en Σ.
|
|
146
|
+
if (gamma.length === 0 && sigma.some((s) => eqFormula(s, target))) {
|
|
147
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'axiom', []);
|
|
148
|
+
}
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
// afin: weakening sobre Γ implicito en el axioma.
|
|
152
|
+
const inGamma = gamma.findIndex((g) => eqFormula(g, target));
|
|
153
|
+
if (inGamma >= 0) {
|
|
154
|
+
// Construimos: axiom + weakening por cada formula sobrante.
|
|
155
|
+
let cur = mkProof(seqOf(sigma, [target], [target]), 'axiom', []);
|
|
156
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
157
|
+
if (i === inGamma)
|
|
158
|
+
continue;
|
|
159
|
+
const extra = gamma[i];
|
|
160
|
+
if (extra === undefined)
|
|
161
|
+
continue;
|
|
162
|
+
const accGamma = cur.conclusion.left.slice();
|
|
163
|
+
accGamma.push(extra);
|
|
164
|
+
cur = mkProof({ left: accGamma, right: [target] }, 'weakening', [cur]);
|
|
165
|
+
}
|
|
166
|
+
return cur;
|
|
167
|
+
}
|
|
168
|
+
const inSigma = sigma.findIndex((s) => eqFormula(s, target));
|
|
169
|
+
if (inSigma >= 0) {
|
|
170
|
+
// axiom desde Σ + weakening de Γ.
|
|
171
|
+
let cur = mkProof(seqOf(sigma, [], [target]), 'axiom', []);
|
|
172
|
+
for (const g of gamma) {
|
|
173
|
+
const accGamma = cur.conclusion.left.slice();
|
|
174
|
+
accGamma.push(g);
|
|
175
|
+
cur = mkProof({ left: accGamma, right: [target] }, 'weakening', [cur]);
|
|
176
|
+
}
|
|
177
|
+
return cur;
|
|
178
|
+
}
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
function tryOneR(sigma, gamma, target, mode) {
|
|
182
|
+
if (target.kind !== 'one')
|
|
183
|
+
return undefined;
|
|
184
|
+
if (gamma.length === 0) {
|
|
185
|
+
return mkProof(seqOf(sigma, [], [target]), 'oneR', []);
|
|
186
|
+
}
|
|
187
|
+
if (mode === 'affine') {
|
|
188
|
+
let cur = mkProof(seqOf(sigma, [], [target]), 'oneR', []);
|
|
189
|
+
for (const g of gamma) {
|
|
190
|
+
const accGamma = cur.conclusion.left.slice();
|
|
191
|
+
accGamma.push(g);
|
|
192
|
+
cur = mkProof({ left: accGamma, right: [target] }, 'weakening', [cur]);
|
|
193
|
+
}
|
|
194
|
+
return cur;
|
|
195
|
+
}
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
// --- Prover principal ---
|
|
199
|
+
function prove(sigma, gamma, delta, ctx) {
|
|
200
|
+
if (!step(ctx))
|
|
201
|
+
return undefined;
|
|
202
|
+
if (delta.length !== 1)
|
|
203
|
+
return undefined;
|
|
204
|
+
const target = delta[0];
|
|
205
|
+
if (target === undefined)
|
|
206
|
+
return undefined;
|
|
207
|
+
const key = goalKey(sigma, gamma, target);
|
|
208
|
+
const cached = ctx.memo.get(key);
|
|
209
|
+
if (cached !== undefined)
|
|
210
|
+
return cached ?? undefined;
|
|
211
|
+
// Marca temporal contra ciclos sintacticos:
|
|
212
|
+
ctx.memo.set(key, null);
|
|
213
|
+
const ans = proveCore(sigma, gamma, target, ctx);
|
|
214
|
+
ctx.memo.set(key, ans ?? null);
|
|
215
|
+
return ans;
|
|
216
|
+
}
|
|
217
|
+
function proveCore(sigma, gamma, target, ctx) {
|
|
218
|
+
// 1. Axiom.
|
|
219
|
+
const ax = tryAxiom(sigma, gamma, target, ctx.mode);
|
|
220
|
+
if (ax)
|
|
221
|
+
return ax;
|
|
222
|
+
// 2. oneR.
|
|
223
|
+
const o = tryOneR(sigma, gamma, target, ctx.mode);
|
|
224
|
+
if (o)
|
|
225
|
+
return o;
|
|
226
|
+
// 3. Promover !A de Γ a Σ (bangL): siempre seguro, reduce Γ.
|
|
227
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
228
|
+
const f = gamma[i];
|
|
229
|
+
if (f && f.kind === 'bang') {
|
|
230
|
+
const rest = removeAt(gamma, i);
|
|
231
|
+
const sub = prove([...sigma, f.arg], rest, [target], ctx);
|
|
232
|
+
if (!sub)
|
|
233
|
+
return undefined;
|
|
234
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'bangL', [sub]);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// 4. Reglas reversibles del sucedente.
|
|
238
|
+
// lollipopR.
|
|
239
|
+
if (target.kind === 'lollipop') {
|
|
240
|
+
const sub = prove(sigma, [...gamma, target.left], [target.right], ctx);
|
|
241
|
+
if (sub)
|
|
242
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'lollipopR', [sub]);
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
// withR.
|
|
246
|
+
if (target.kind === 'with') {
|
|
247
|
+
const subA = prove(sigma, gamma, [target.left], ctx);
|
|
248
|
+
if (!subA)
|
|
249
|
+
return undefined;
|
|
250
|
+
const subB = prove(sigma, gamma, [target.right], ctx);
|
|
251
|
+
if (!subB)
|
|
252
|
+
return undefined;
|
|
253
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'withR', [subA, subB]);
|
|
254
|
+
}
|
|
255
|
+
// bangR: en linear, Γ debe estar vacio; en afin, Γ debe ser
|
|
256
|
+
// descartable (todo no-bang en Γ se weakenea, pero ya promovimos
|
|
257
|
+
// todos los !A a Σ al inicio, asi que Γ aqui es no-bang).
|
|
258
|
+
if (target.kind === 'bang') {
|
|
259
|
+
if (gamma.length === 0) {
|
|
260
|
+
const sub = prove(sigma, [], [target.arg], ctx);
|
|
261
|
+
if (sub)
|
|
262
|
+
return mkProof(seqOf(sigma, [], [target]), 'bangR', [sub]);
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
if (ctx.mode === 'affine') {
|
|
266
|
+
// Descartar todo Γ por weakening.
|
|
267
|
+
const sub = prove(sigma, [], [target.arg], ctx);
|
|
268
|
+
if (sub) {
|
|
269
|
+
const bangProof = mkProof(seqOf(sigma, [], [target]), 'bangR', [sub]);
|
|
270
|
+
// Aplicar weakenings.
|
|
271
|
+
let cur = bangProof;
|
|
272
|
+
for (const g of gamma) {
|
|
273
|
+
const accGamma = cur.conclusion.left.slice();
|
|
274
|
+
accGamma.push(g);
|
|
275
|
+
cur = mkProof({ left: accGamma, right: [target] }, 'weakening', [cur]);
|
|
276
|
+
}
|
|
277
|
+
return cur;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// En linear con Γ no vacio, bangR no aplica directamente.
|
|
281
|
+
}
|
|
282
|
+
// 5. Reglas reversibles de la izquierda (sobre Γ).
|
|
283
|
+
// tensorL.
|
|
284
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
285
|
+
const f = gamma[i];
|
|
286
|
+
if (f && f.kind === 'tensor') {
|
|
287
|
+
const rest = removeAt(gamma, i);
|
|
288
|
+
const sub = prove(sigma, [...rest, f.left, f.right], [target], ctx);
|
|
289
|
+
if (!sub)
|
|
290
|
+
return undefined;
|
|
291
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'tensorL', [sub]);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// oneL.
|
|
295
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
296
|
+
const f = gamma[i];
|
|
297
|
+
if (f && f.kind === 'one') {
|
|
298
|
+
const rest = removeAt(gamma, i);
|
|
299
|
+
const sub = prove(sigma, rest, [target], ctx);
|
|
300
|
+
if (!sub)
|
|
301
|
+
return undefined;
|
|
302
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'oneL', [sub]);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// plusL.
|
|
306
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
307
|
+
const f = gamma[i];
|
|
308
|
+
if (f && f.kind === 'plus') {
|
|
309
|
+
const rest = removeAt(gamma, i);
|
|
310
|
+
const subA = prove(sigma, [...rest, f.left], [target], ctx);
|
|
311
|
+
if (!subA)
|
|
312
|
+
continue;
|
|
313
|
+
const subB = prove(sigma, [...rest, f.right], [target], ctx);
|
|
314
|
+
if (!subB)
|
|
315
|
+
continue;
|
|
316
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'plusL', [subA, subB]);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// 6. Reglas no-reversibles del sucedente.
|
|
320
|
+
// tensorR: parte Γ; Σ se hereda completa a ambos lados.
|
|
321
|
+
if (target.kind === 'tensor') {
|
|
322
|
+
for (const [g1, g2] of partitions(gamma)) {
|
|
323
|
+
const subA = prove(sigma, g1, [target.left], ctx);
|
|
324
|
+
if (!subA)
|
|
325
|
+
continue;
|
|
326
|
+
const subB = prove(sigma, g2, [target.right], ctx);
|
|
327
|
+
if (!subB)
|
|
328
|
+
continue;
|
|
329
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'tensorR', [subA, subB]);
|
|
330
|
+
}
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
// plusR.
|
|
334
|
+
if (target.kind === 'plus') {
|
|
335
|
+
const left = prove(sigma, gamma, [target.left], ctx);
|
|
336
|
+
if (left)
|
|
337
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'plusR1', [left]);
|
|
338
|
+
const right = prove(sigma, gamma, [target.right], ctx);
|
|
339
|
+
if (right)
|
|
340
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'plusR2', [right]);
|
|
341
|
+
return undefined;
|
|
342
|
+
}
|
|
343
|
+
// 7. Reglas no-reversibles de la izquierda.
|
|
344
|
+
// withL1/2.
|
|
345
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
346
|
+
const f = gamma[i];
|
|
347
|
+
if (f && f.kind === 'with') {
|
|
348
|
+
const rest = removeAt(gamma, i);
|
|
349
|
+
const subA = prove(sigma, [...rest, f.left], [target], ctx);
|
|
350
|
+
if (subA)
|
|
351
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'withL1', [subA]);
|
|
352
|
+
const subB = prove(sigma, [...rest, f.right], [target], ctx);
|
|
353
|
+
if (subB)
|
|
354
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'withL2', [subB]);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// lollipopL: parte Γ (sin contar el ⊸).
|
|
358
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
359
|
+
const f = gamma[i];
|
|
360
|
+
if (f && f.kind === 'lollipop') {
|
|
361
|
+
const rest = removeAt(gamma, i);
|
|
362
|
+
for (const [g1, g2] of partitions(rest)) {
|
|
363
|
+
const subA = prove(sigma, g1, [f.left], ctx);
|
|
364
|
+
if (!subA)
|
|
365
|
+
continue;
|
|
366
|
+
const subB = prove(sigma, [...g2, f.right], [target], ctx);
|
|
367
|
+
if (!subB)
|
|
368
|
+
continue;
|
|
369
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'lollipopL', [subA, subB]);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// 8. Reglas sobre Σ (zona unrestricted).
|
|
374
|
+
//
|
|
375
|
+
// Dereliction implicita: copiamos una formula de Σ a Γ.
|
|
376
|
+
//
|
|
377
|
+
// Esto es la combinacion clasica de bangL + contraction:
|
|
378
|
+
// Σ, A ; Γ ⊢ C ↪ Σ, A ; Γ, A ⊢ C
|
|
379
|
+
//
|
|
380
|
+
// Para evitar loops, solo copiamos si la formula no aparece ya en
|
|
381
|
+
// Γ Y el contexto lineal no es "saturado" respecto a esa formula.
|
|
382
|
+
// Como heuristica simple, limitamos a una copia por formula de Σ
|
|
383
|
+
// por subgoal sintactico (la memoizacion corta el resto).
|
|
384
|
+
for (let i = 0; i < sigma.length; i++) {
|
|
385
|
+
const f = sigma[i];
|
|
386
|
+
if (f === undefined)
|
|
387
|
+
continue;
|
|
388
|
+
// Si Γ ya contiene esta formula, copiar de nuevo es contraccion.
|
|
389
|
+
// Permitimos hasta un numero acotado por la "demanda" del target:
|
|
390
|
+
// si el target es lineal-puro, no necesitamos > #atomos(target).
|
|
391
|
+
const currentCopies = gamma.filter((g) => eqFormula(g, f)).length;
|
|
392
|
+
const cap = countAtomDemand(target);
|
|
393
|
+
if (currentCopies >= cap)
|
|
394
|
+
continue;
|
|
395
|
+
const sub = prove(sigma, [...gamma, f], [target], ctx);
|
|
396
|
+
if (sub) {
|
|
397
|
+
// Etiquetamos como derelictionL (con contraction implicita).
|
|
398
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'derelictionL', [sub]);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
// 9. Weakening sobre Γ no-bang en afin (descartar recursos sobrantes).
|
|
402
|
+
if (ctx.mode === 'affine') {
|
|
403
|
+
for (let i = 0; i < gamma.length; i++) {
|
|
404
|
+
const f = gamma[i];
|
|
405
|
+
if (f && !isBang(f)) {
|
|
406
|
+
const rest = removeAt(gamma, i);
|
|
407
|
+
const sub = prove(sigma, rest, [target], ctx);
|
|
408
|
+
if (sub) {
|
|
409
|
+
return mkProof(seqOf(sigma, gamma, [target]), 'weakening', [sub]);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return undefined;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Cota heuristica sobre cuantas copias de un mismo recurso pueden
|
|
418
|
+
* necesitarse para probar `target`. Cuenta ocurrencias de atomos y
|
|
419
|
+
* permite un margen pequeno por estructura adicional. Esto acota la
|
|
420
|
+
* dereliction-con-contraction sin perder casos validos.
|
|
421
|
+
*/
|
|
422
|
+
function countAtomDemand(target) {
|
|
423
|
+
let count = 0;
|
|
424
|
+
const stack = [target];
|
|
425
|
+
while (stack.length > 0) {
|
|
426
|
+
const f = stack.pop();
|
|
427
|
+
if (!f)
|
|
428
|
+
continue;
|
|
429
|
+
switch (f.kind) {
|
|
430
|
+
case 'atom':
|
|
431
|
+
count++;
|
|
432
|
+
break;
|
|
433
|
+
case 'one':
|
|
434
|
+
break;
|
|
435
|
+
case 'tensor':
|
|
436
|
+
case 'with':
|
|
437
|
+
case 'plus':
|
|
438
|
+
case 'lollipop':
|
|
439
|
+
stack.push(f.left, f.right);
|
|
440
|
+
break;
|
|
441
|
+
case 'bang':
|
|
442
|
+
case 'whynot':
|
|
443
|
+
stack.push(f.arg);
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// Margen de seguridad: al menos 2 para permitir A ⊗ A desde !A.
|
|
448
|
+
return Math.max(count, 2);
|
|
449
|
+
}
|
|
450
|
+
function proveWithMode(seqInput, mode, options = {}) {
|
|
451
|
+
const ctx = {
|
|
452
|
+
mode,
|
|
453
|
+
budget: options.budget ?? 50_000,
|
|
454
|
+
used: 0,
|
|
455
|
+
memo: new Map(),
|
|
456
|
+
};
|
|
457
|
+
// Particionamos el left input en (sigma, gamma): los !A iniciales
|
|
458
|
+
// pueden empezar en sigma o en gamma. Por uniformidad, todo arranca
|
|
459
|
+
// en gamma; bangL los promueve a sigma en la primera oportunidad.
|
|
460
|
+
const tree = prove([], seqInput.left.slice(), seqInput.right.slice(), ctx);
|
|
461
|
+
if (!tree)
|
|
462
|
+
return { provable: false };
|
|
463
|
+
return { provable: true, proof: tree };
|
|
464
|
+
}
|
|
465
|
+
function proveLinear(seqInput, options) {
|
|
466
|
+
const r = proveWithMode(seqInput, 'linear', options);
|
|
467
|
+
return r.proof ?? null;
|
|
468
|
+
}
|
|
469
|
+
function proveAffine(seqInput, options) {
|
|
470
|
+
const r = proveWithMode(seqInput, 'affine', options);
|
|
471
|
+
return r.proof ?? null;
|
|
472
|
+
}
|
|
473
|
+
function proofToString(p, indent = 0) {
|
|
474
|
+
const pad = ' '.repeat(indent);
|
|
475
|
+
const left = p.conclusion.left.map(formulaKey).join(', ') || '·';
|
|
476
|
+
const right = p.conclusion.right.map(formulaKey).join(', ') || '·';
|
|
477
|
+
const head = `${pad}${left} ⊢ ${right} [${p.rule}]`;
|
|
478
|
+
const tail = p.premises.map((pr) => proofToString(pr, indent + 1)).join('\n');
|
|
479
|
+
return tail ? `${head}\n${tail}` : head;
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=prover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prover.js","sourceRoot":"","sources":["../../../src/profiles/substructural/prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formulas del lenguaje lineal/afin. Los atomos son neutrales y se
|
|
3
|
+
* comparan por nombre.
|
|
4
|
+
*/
|
|
5
|
+
export type LinearFormula = {
|
|
6
|
+
kind: 'atom';
|
|
7
|
+
name: string;
|
|
8
|
+
} | {
|
|
9
|
+
kind: 'one';
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'tensor';
|
|
12
|
+
left: LinearFormula;
|
|
13
|
+
right: LinearFormula;
|
|
14
|
+
} | {
|
|
15
|
+
kind: 'lollipop';
|
|
16
|
+
left: LinearFormula;
|
|
17
|
+
right: LinearFormula;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'with';
|
|
20
|
+
left: LinearFormula;
|
|
21
|
+
right: LinearFormula;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'plus';
|
|
24
|
+
left: LinearFormula;
|
|
25
|
+
right: LinearFormula;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'bang';
|
|
28
|
+
arg: LinearFormula;
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'whynot';
|
|
31
|
+
arg: LinearFormula;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Reglas del calculo (intuicionistico) de secuentes que usamos.
|
|
35
|
+
*
|
|
36
|
+
* El sistema implementado es un calculo de secuentes ILL (Intuitionistic
|
|
37
|
+
* Linear Logic) restringido a un unico sucedente (Γ ⊢ A). Suficiente
|
|
38
|
+
* para los enunciados pedidos en el bench: A ⊸ A, conmutatividad,
|
|
39
|
+
* weakening solo en afin, contraction solo via bang, etc.
|
|
40
|
+
*
|
|
41
|
+
* Notas:
|
|
42
|
+
* - `weakening` y `contraction` aparecen como reglas estructurales
|
|
43
|
+
* explicitas; en linear puro estan deshabilitadas. En afin,
|
|
44
|
+
* `weakening` esta habilitada (no asi `contraction`). En ambos,
|
|
45
|
+
* `!` da contraction/weakening "locales" sobre el sub-recurso.
|
|
46
|
+
* - `oneR` cierra el secuente ⊢ 1; `oneL` permite eliminar 1 a
|
|
47
|
+
* izquierda.
|
|
48
|
+
*/
|
|
49
|
+
export type SequentRule = 'axiom' | 'cut' | 'oneR' | 'oneL' | 'tensorR' | 'tensorL' | 'lollipopR' | 'lollipopL' | 'withR' | 'withL1' | 'withL2' | 'plusR1' | 'plusR2' | 'plusL' | 'bangR' | 'bangL' | 'derelictionL' | 'weakening' | 'contraction';
|
|
50
|
+
/**
|
|
51
|
+
* Secuente intuicionistico Γ ⊢ Δ. En el fragmento que probamos,
|
|
52
|
+
* `right` es de longitud 1 (un solo sucedente); se permite array
|
|
53
|
+
* para preservar simetria con G3 y futuras extensiones a Linear Logic
|
|
54
|
+
* clasica con multiples sucedentes.
|
|
55
|
+
*/
|
|
56
|
+
export interface LinearSequent {
|
|
57
|
+
left: LinearFormula[];
|
|
58
|
+
right: LinearFormula[];
|
|
59
|
+
}
|
|
60
|
+
export interface LinearProof {
|
|
61
|
+
conclusion: LinearSequent;
|
|
62
|
+
rule: SequentRule;
|
|
63
|
+
premises: LinearProof[];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Modo de prueba que controla las reglas estructurales.
|
|
67
|
+
*
|
|
68
|
+
* - 'linear': ni contraction ni weakening (excepto via `!`).
|
|
69
|
+
* - 'affine': weakening si, contraction no (excepto via `!`).
|
|
70
|
+
*/
|
|
71
|
+
export type SubstructuralMode = 'linear' | 'affine';
|
|
72
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/profiles/substructural/types.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAC;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,KAAK,GACL,MAAM,GACN,MAAM,GACN,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,OAAO,GACP,cAAc,GACd,WAAW,GACX,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Substructural Logics — Types (Linear + Affine)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Logicas substructurales (Girard 1987 para Linear Logic, y Affine
|
|
7
|
+
// como su variante con weakening) controlan los recursos:
|
|
8
|
+
//
|
|
9
|
+
// - Linear: ni contraction ni weakening. Cada formula del
|
|
10
|
+
// contexto se usa exactamente una vez.
|
|
11
|
+
// - Affine: weakening permitido (descartar hipotesis), pero NO
|
|
12
|
+
// contraction (no duplicar). Cada formula se usa a lo
|
|
13
|
+
// sumo una vez.
|
|
14
|
+
//
|
|
15
|
+
// Conectivos del fragmento implementado:
|
|
16
|
+
// ⊗ (tensor) — conjuncion multiplicativa, recursos juntos
|
|
17
|
+
// ⊸ (lollipop) — implicacion lineal, consume premisa
|
|
18
|
+
// & (with) — conjuncion aditiva, elige uno de dos
|
|
19
|
+
// ⊕ (plus) — disyuncion aditiva, alguno de los dos
|
|
20
|
+
// 1 — unidad multiplicativa de ⊗
|
|
21
|
+
// ! (bang) — exponencial "of course", habilita contraction
|
|
22
|
+
// y weakening para el sub-recurso marcado
|
|
23
|
+
// ? (whynot) — exponencial dual del bang (presente como
|
|
24
|
+
// constructor; en el fragmento intuicionista
|
|
25
|
+
// fragmentario no se utiliza en reglas activas)
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/profiles/substructural/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iDAAiD;AACjD,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,0DAA0D;AAC1D,EAAE;AACF,6DAA6D;AAC7D,oDAAoD;AACpD,kEAAkE;AAClE,mEAAmE;AACnE,6BAA6B;AAC7B,EAAE;AACF,yCAAyC;AACzC,iEAAiE;AACjE,0DAA0D;AAC1D,2DAA2D;AAC3D,4DAA4D;AAC5D,iDAAiD;AACjD,oEAAoE;AACpE,8DAA8D;AAC9D,+DAA+D;AAC/D,iEAAiE;AACjE,oEAAoE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EntailmentOracle, Formula } from './types';
|
|
2
|
+
export interface DefaultEntailsOptions {
|
|
3
|
+
/** Nombres tratados como variables. Default: `{x,y,z,u,v,w}`. */
|
|
4
|
+
variableNames?: ReadonlySet<string>;
|
|
5
|
+
/** Tope de iteraciones de forward-chaining. Default 1000. */
|
|
6
|
+
maxIterations?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Oráculo de entailment por defecto. Forward-chaining sobre Horn-like.
|
|
10
|
+
*
|
|
11
|
+
* Devuelve `true` sii `target` (ground) es derivable de `premises`.
|
|
12
|
+
* Si `target` contiene variables se reporta `false` (no soportamos
|
|
13
|
+
* ∃-targets aquí; usar custom oracle).
|
|
14
|
+
*/
|
|
15
|
+
export declare function defaultEntails(opts?: DefaultEntailsOptions): EntailmentOracle;
|
|
16
|
+
/**
|
|
17
|
+
* Oráculo de consistencia por defecto. Considera inconsistente sii
|
|
18
|
+
* el forward-chaining deriva un par {p, ¬p}.
|
|
19
|
+
*/
|
|
20
|
+
export declare function defaultConsistent(opts?: DefaultEntailsOptions): (premises: ReadonlyArray<Formula>) => boolean;
|
|
21
|
+
//# sourceMappingURL=entails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entails.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/entails.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAwQzD,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,qBAA0B,GAAG,gBAAgB,CASjF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE,qBAA0B,GAC/B,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAO/C"}
|