@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.
Files changed (293) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +36 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lambda-calc/church.d.ts +8 -0
  6. package/dist/lambda-calc/church.d.ts.map +1 -0
  7. package/dist/lambda-calc/church.js +67 -0
  8. package/dist/lambda-calc/church.js.map +1 -0
  9. package/dist/lambda-calc/combinators.d.ts +8 -0
  10. package/dist/lambda-calc/combinators.d.ts.map +1 -0
  11. package/dist/lambda-calc/combinators.js +24 -0
  12. package/dist/lambda-calc/combinators.js.map +1 -0
  13. package/dist/lambda-calc/index.d.ts +8 -0
  14. package/dist/lambda-calc/index.d.ts.map +1 -0
  15. package/dist/lambda-calc/index.js +48 -0
  16. package/dist/lambda-calc/index.js.map +1 -0
  17. package/dist/lambda-calc/reduce.d.ts +18 -0
  18. package/dist/lambda-calc/reduce.d.ts.map +1 -0
  19. package/dist/lambda-calc/reduce.js +174 -0
  20. package/dist/lambda-calc/reduce.js.map +1 -0
  21. package/dist/lambda-calc/substitution.d.ts +6 -0
  22. package/dist/lambda-calc/substitution.d.ts.map +1 -0
  23. package/dist/lambda-calc/substitution.js +120 -0
  24. package/dist/lambda-calc/substitution.js.map +1 -0
  25. package/dist/lambda-calc/types.d.ts +19 -0
  26. package/dist/lambda-calc/types.d.ts.map +1 -0
  27. package/dist/lambda-calc/types.js +72 -0
  28. package/dist/lambda-calc/types.js.map +1 -0
  29. package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
  30. package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
  31. package/dist/profiles/intuitionistic-nj/formula.js +99 -0
  32. package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
  33. package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
  34. package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
  35. package/dist/profiles/intuitionistic-nj/index.js +24 -0
  36. package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
  37. package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
  38. package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
  39. package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
  40. package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
  41. package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
  42. package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
  43. package/dist/profiles/intuitionistic-nj/prover.js +418 -0
  44. package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
  45. package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
  46. package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
  47. package/dist/profiles/intuitionistic-nj/types.js +21 -0
  48. package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
  49. package/dist/profiles/many-valued/index.d.ts +39 -0
  50. package/dist/profiles/many-valued/index.d.ts.map +1 -0
  51. package/dist/profiles/many-valued/index.js +250 -0
  52. package/dist/profiles/many-valued/index.js.map +1 -0
  53. package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
  54. package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
  55. package/dist/profiles/modal-frame-axioms/formula.js +158 -0
  56. package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
  57. package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
  58. package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
  59. package/dist/profiles/modal-frame-axioms/index.js +41 -0
  60. package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
  61. package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
  62. package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
  63. package/dist/profiles/modal-frame-axioms/systems.js +96 -0
  64. package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
  65. package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
  66. package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
  67. package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
  68. package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
  69. package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
  70. package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
  71. package/dist/profiles/modal-frame-axioms/types.js +27 -0
  72. package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
  73. package/dist/profiles/substructural/index.d.ts +4 -0
  74. package/dist/profiles/substructural/index.d.ts.map +1 -0
  75. package/dist/profiles/substructural/index.js +22 -0
  76. package/dist/profiles/substructural/index.js.map +1 -0
  77. package/dist/profiles/substructural/prover.d.ts +13 -0
  78. package/dist/profiles/substructural/prover.d.ts.map +1 -0
  79. package/dist/profiles/substructural/prover.js +481 -0
  80. package/dist/profiles/substructural/prover.js.map +1 -0
  81. package/dist/profiles/substructural/types.d.ts +72 -0
  82. package/dist/profiles/substructural/types.d.ts.map +1 -0
  83. package/dist/profiles/substructural/types.js +27 -0
  84. package/dist/profiles/substructural/types.js.map +1 -0
  85. package/dist/runtime/abduction/entails.d.ts +21 -0
  86. package/dist/runtime/abduction/entails.d.ts.map +1 -0
  87. package/dist/runtime/abduction/entails.js +308 -0
  88. package/dist/runtime/abduction/entails.js.map +1 -0
  89. package/dist/runtime/abduction/find.d.ts +18 -0
  90. package/dist/runtime/abduction/find.d.ts.map +1 -0
  91. package/dist/runtime/abduction/find.js +202 -0
  92. package/dist/runtime/abduction/find.js.map +1 -0
  93. package/dist/runtime/abduction/index.d.ts +4 -0
  94. package/dist/runtime/abduction/index.d.ts.map +1 -0
  95. package/dist/runtime/abduction/index.js +26 -0
  96. package/dist/runtime/abduction/index.js.map +1 -0
  97. package/dist/runtime/abduction/types.d.ts +78 -0
  98. package/dist/runtime/abduction/types.d.ts.map +1 -0
  99. package/dist/runtime/abduction/types.js +23 -0
  100. package/dist/runtime/abduction/types.js.map +1 -0
  101. package/dist/runtime/bayesian/factor.d.ts +22 -0
  102. package/dist/runtime/bayesian/factor.d.ts.map +1 -0
  103. package/dist/runtime/bayesian/factor.js +249 -0
  104. package/dist/runtime/bayesian/factor.js.map +1 -0
  105. package/dist/runtime/bayesian/index.d.ts +3 -0
  106. package/dist/runtime/bayesian/index.d.ts.map +1 -0
  107. package/dist/runtime/bayesian/index.js +25 -0
  108. package/dist/runtime/bayesian/index.js.map +1 -0
  109. package/dist/runtime/bayesian/inference.d.ts +6 -0
  110. package/dist/runtime/bayesian/inference.d.ts.map +1 -0
  111. package/dist/runtime/bayesian/inference.js +260 -0
  112. package/dist/runtime/bayesian/inference.js.map +1 -0
  113. package/dist/runtime/bayesian/types.d.ts +19 -0
  114. package/dist/runtime/bayesian/types.d.ts.map +1 -0
  115. package/dist/runtime/bayesian/types.js +9 -0
  116. package/dist/runtime/bayesian/types.js.map +1 -0
  117. package/dist/runtime/bisimulation/index.d.ts +4 -0
  118. package/dist/runtime/bisimulation/index.d.ts.map +1 -0
  119. package/dist/runtime/bisimulation/index.js +21 -0
  120. package/dist/runtime/bisimulation/index.js.map +1 -0
  121. package/dist/runtime/bisimulation/operations.d.ts +40 -0
  122. package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
  123. package/dist/runtime/bisimulation/operations.js +219 -0
  124. package/dist/runtime/bisimulation/operations.js.map +1 -0
  125. package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
  126. package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
  127. package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
  128. package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
  129. package/dist/runtime/bisimulation/types.d.ts +26 -0
  130. package/dist/runtime/bisimulation/types.d.ts.map +1 -0
  131. package/dist/runtime/bisimulation/types.js +22 -0
  132. package/dist/runtime/bisimulation/types.js.map +1 -0
  133. package/dist/runtime/fca/context.d.ts +46 -0
  134. package/dist/runtime/fca/context.d.ts.map +1 -0
  135. package/dist/runtime/fca/context.js +155 -0
  136. package/dist/runtime/fca/context.js.map +1 -0
  137. package/dist/runtime/fca/implications.d.ts +10 -0
  138. package/dist/runtime/fca/implications.d.ts.map +1 -0
  139. package/dist/runtime/fca/implications.js +33 -0
  140. package/dist/runtime/fca/implications.js.map +1 -0
  141. package/dist/runtime/fca/index.d.ts +6 -0
  142. package/dist/runtime/fca/index.d.ts.map +1 -0
  143. package/dist/runtime/fca/index.js +39 -0
  144. package/dist/runtime/fca/index.js.map +1 -0
  145. package/dist/runtime/fca/lattice.d.ts +10 -0
  146. package/dist/runtime/fca/lattice.d.ts.map +1 -0
  147. package/dist/runtime/fca/lattice.js +86 -0
  148. package/dist/runtime/fca/lattice.js.map +1 -0
  149. package/dist/runtime/fca/next-closure.d.ts +12 -0
  150. package/dist/runtime/fca/next-closure.d.ts.map +1 -0
  151. package/dist/runtime/fca/next-closure.js +99 -0
  152. package/dist/runtime/fca/next-closure.js.map +1 -0
  153. package/dist/runtime/fca/types.d.ts +31 -0
  154. package/dist/runtime/fca/types.d.ts.map +1 -0
  155. package/dist/runtime/fca/types.js +30 -0
  156. package/dist/runtime/fca/types.js.map +1 -0
  157. package/dist/runtime/proof-minify/index.d.ts +3 -0
  158. package/dist/runtime/proof-minify/index.d.ts.map +1 -0
  159. package/dist/runtime/proof-minify/index.js +13 -0
  160. package/dist/runtime/proof-minify/index.js.map +1 -0
  161. package/dist/runtime/proof-minify/minify.d.ts +13 -0
  162. package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
  163. package/dist/runtime/proof-minify/minify.js +540 -0
  164. package/dist/runtime/proof-minify/minify.js.map +1 -0
  165. package/dist/runtime/proof-minify/types.d.ts +89 -0
  166. package/dist/runtime/proof-minify/types.d.ts.map +1 -0
  167. package/dist/runtime/proof-minify/types.js +16 -0
  168. package/dist/runtime/proof-minify/types.js.map +1 -0
  169. package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
  170. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
  171. package/dist/runtime/symbolic-diff/constructors.js +75 -0
  172. package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
  173. package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
  174. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
  175. package/dist/runtime/symbolic-diff/differentiate.js +107 -0
  176. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
  177. package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
  178. package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
  179. package/dist/runtime/symbolic-diff/evaluate.js +47 -0
  180. package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
  181. package/dist/runtime/symbolic-diff/index.d.ts +9 -0
  182. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
  183. package/dist/runtime/symbolic-diff/index.js +34 -0
  184. package/dist/runtime/symbolic-diff/index.js.map +1 -0
  185. package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
  186. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
  187. package/dist/runtime/symbolic-diff/parse.js +206 -0
  188. package/dist/runtime/symbolic-diff/parse.js.map +1 -0
  189. package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
  190. package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
  191. package/dist/runtime/symbolic-diff/simplify.js +214 -0
  192. package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
  193. package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
  194. package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
  195. package/dist/runtime/symbolic-diff/stringify.js +69 -0
  196. package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
  197. package/dist/runtime/symbolic-diff/types.d.ts +35 -0
  198. package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
  199. package/dist/runtime/symbolic-diff/types.js +9 -0
  200. package/dist/runtime/symbolic-diff/types.js.map +1 -0
  201. package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
  202. package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
  203. package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
  204. package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
  205. package/dist/runtime/term-rewriting/index.d.ts +9 -0
  206. package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
  207. package/dist/runtime/term-rewriting/index.js +38 -0
  208. package/dist/runtime/term-rewriting/index.js.map +1 -0
  209. package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
  210. package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
  211. package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
  212. package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
  213. package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
  214. package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
  215. package/dist/runtime/term-rewriting/lpo.js +158 -0
  216. package/dist/runtime/term-rewriting/lpo.js.map +1 -0
  217. package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
  218. package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
  219. package/dist/runtime/term-rewriting/rewrite.js +189 -0
  220. package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
  221. package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
  222. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
  223. package/dist/runtime/term-rewriting/term-utils.js +360 -0
  224. package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
  225. package/dist/runtime/term-rewriting/types.d.ts +66 -0
  226. package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
  227. package/dist/runtime/term-rewriting/types.js +21 -0
  228. package/dist/runtime/term-rewriting/types.js.map +1 -0
  229. package/dist/tests/abduction/abduction.test.d.ts +2 -0
  230. package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
  231. package/dist/tests/abduction/abduction.test.js +380 -0
  232. package/dist/tests/abduction/abduction.test.js.map +1 -0
  233. package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
  234. package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
  235. package/dist/tests/bayesian/bayesian.test.js +328 -0
  236. package/dist/tests/bayesian/bayesian.test.js.map +1 -0
  237. package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
  238. package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
  239. package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
  240. package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
  241. package/dist/tests/fca/fca.test.d.ts +2 -0
  242. package/dist/tests/fca/fca.test.d.ts.map +1 -0
  243. package/dist/tests/fca/fca.test.js +317 -0
  244. package/dist/tests/fca/fca.test.js.map +1 -0
  245. package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
  246. package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
  247. package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
  248. package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
  249. package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
  250. package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
  251. package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
  252. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
  253. package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
  254. package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
  255. package/dist/tests/many-valued/many-valued.test.js +150 -0
  256. package/dist/tests/many-valued/many-valued.test.js.map +1 -0
  257. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
  258. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
  259. package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
  260. package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
  261. package/dist/tests/proof-minify/minify.test.d.ts +2 -0
  262. package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
  263. package/dist/tests/proof-minify/minify.test.js +281 -0
  264. package/dist/tests/proof-minify/minify.test.js.map +1 -0
  265. package/dist/tests/substructural/prover.test.d.ts +2 -0
  266. package/dist/tests/substructural/prover.test.d.ts.map +1 -0
  267. package/dist/tests/substructural/prover.test.js +271 -0
  268. package/dist/tests/substructural/prover.test.js.map +1 -0
  269. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
  270. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
  271. package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
  272. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
  273. package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
  274. package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
  275. package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
  276. package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
  277. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
  278. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
  279. package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
  280. package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
  281. package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
  282. package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
  283. package/dist/tests/term-rewriting/lpo.test.js +57 -0
  284. package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
  285. package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
  286. package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
  287. package/dist/tests/term-rewriting/rewrite.test.js +56 -0
  288. package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
  289. package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
  290. package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
  291. package/dist/tests/term-rewriting/term-utils.test.js +58 -0
  292. package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
  293. 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"}