@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,13 @@
1
+ import { IntuitFormula, NJProof } from './types';
2
+ /**
3
+ * API pública.
4
+ *
5
+ * Devuelve un árbol NJ que demuestra `goal` a partir de las
6
+ * `premises` dadas, o `null` si no encontró prueba dentro del
7
+ * budget configurado.
8
+ */
9
+ export declare function proveIntuitionistically(premises: IntuitFormula[], goal: IntuitFormula, options?: {
10
+ budget?: number;
11
+ }): NJProof | null;
12
+ export declare function verifyProof(proof: NJProof, initialContext?: IntuitFormula[]): boolean;
13
+ //# sourceMappingURL=prover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../../src/profiles/intuitionistic-nj/prover.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyRjD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,GAAG,IAAI,CAGhB;AAQD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAE,aAAa,EAAO,GAAG,OAAO,CAEzF"}
@@ -0,0 +1,418 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Intuitionistic Natural Deduction — Backward proof search
4
+ // ============================================================
5
+ //
6
+ // Estrategia: búsqueda hacia atrás en un cálculo de secuentes
7
+ // intuicionista (G3i-style, single-succedent) que se traduce a
8
+ // NJ "on the fly". El árbol NJ producido se valida luego con
9
+ // `verifyProof` (ver al final).
10
+ //
11
+ // Notas:
12
+ // - Sólo hay UN consecuente (eso es lo que vuelve NJ
13
+ // intuicionista; la lógica clásica usa multi-succedent).
14
+ // - La regla `impL` (modus ponens hacia atrás) y `orL`
15
+ // (eliminación de disyunción) no son invertibles, lo que
16
+ // obliga a buscar con memoización para evitar bucles.
17
+ // - Para `notI` aplicamos el patrón: si la meta es `¬φ`,
18
+ // entonces es lo mismo que probar `φ ⊢ ⊥`.
19
+ //
20
+ // Completitud: G3i es completo para IPC (Dyckhoff, "Contraction-
21
+ // free sequent calculi for intuitionistic logic", 1992). Esta
22
+ // implementación es una variante pragmática con loop-checking;
23
+ // es completa para el fragmento proposicional dentro del budget.
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.proveIntuitionistically = proveIntuitionistically;
26
+ exports.verifyProof = verifyProof;
27
+ const formula_1 = require("./formula");
28
+ function freshCtx(budget) {
29
+ return { budget, used: 0, failed: new Set(), active: new Set() };
30
+ }
31
+ function exhausted(ctx) {
32
+ return ctx.used >= ctx.budget;
33
+ }
34
+ /**
35
+ * Clave de un sub-problema (contexto + meta), normalizada y
36
+ * ordenada para que `{A, B} ⊢ C` y `{B, A} ⊢ C` coincidan.
37
+ */
38
+ function goalKey(context, goal) {
39
+ const sorted = context.map(formula_1.formulaKey).sort();
40
+ return `[${sorted.join('|')}]⊢${(0, formula_1.formulaKey)(goal)}`;
41
+ }
42
+ function contextHas(context, f) {
43
+ for (const g of context)
44
+ if ((0, formula_1.formulaEquals)(g, f))
45
+ return true;
46
+ return false;
47
+ }
48
+ function withContext(context, f) {
49
+ if (contextHas(context, f))
50
+ return context;
51
+ return [...context, f];
52
+ }
53
+ /**
54
+ * Núcleo recursivo de la búsqueda. Devuelve un árbol NJ válido
55
+ * para `context ⊢ goal` o `null` si no se encontró prueba dentro
56
+ * del budget.
57
+ */
58
+ function search(context, goal, ctx) {
59
+ ctx.used++;
60
+ if (exhausted(ctx))
61
+ return null;
62
+ const key = goalKey(context, goal);
63
+ if (ctx.failed.has(key))
64
+ return null;
65
+ if (ctx.active.has(key))
66
+ return null; // ciclo: no hay progreso por este camino
67
+ ctx.active.add(key);
68
+ const tryProve = () => {
69
+ // 1. Axioma / asunción: la meta está en el contexto.
70
+ for (const h of context) {
71
+ if ((0, formula_1.formulaEquals)(h, goal)) {
72
+ return { conclusion: goal, rule: 'assumption', premises: [] };
73
+ }
74
+ }
75
+ // 2. Reglas de introducción dirigidas por la forma de la meta
76
+ // (invertibles → se aplican sin retroceder).
77
+ // ∧I
78
+ if (goal.kind === 'and') {
79
+ const left = search(context, goal.left, ctx);
80
+ if (!left)
81
+ return null;
82
+ const right = search(context, goal.right, ctx);
83
+ if (!right)
84
+ return null;
85
+ return { conclusion: goal, rule: 'andI', premises: [left, right] };
86
+ }
87
+ // →I (descarga el antecedente)
88
+ if (goal.kind === 'implies') {
89
+ const newCtx = withContext(context, goal.left);
90
+ const body = search(newCtx, goal.right, ctx);
91
+ if (!body)
92
+ return null;
93
+ return {
94
+ conclusion: goal,
95
+ rule: 'impI',
96
+ premises: [body],
97
+ discharged: [goal.left],
98
+ };
99
+ }
100
+ // ¬I (descarga la fórmula, deriva ⊥)
101
+ if (goal.kind === 'not') {
102
+ const newCtx = withContext(context, goal.arg);
103
+ const body = search(newCtx, (0, formula_1.bottom)(), ctx);
104
+ if (!body)
105
+ return null;
106
+ return {
107
+ conclusion: goal,
108
+ rule: 'notI',
109
+ premises: [body],
110
+ discharged: [goal.arg],
111
+ };
112
+ }
113
+ // 3. Reglas de eliminación a izquierda (sobre el contexto):
114
+ // son invertibles para ∧, no para ∨/→.
115
+ // Aplicamos primero las invertibles para reducir el contexto.
116
+ // ∧EL/∧ER: descomponer cualquier conjunción del contexto.
117
+ for (let i = 0; i < context.length; i++) {
118
+ const h = context[i];
119
+ if (h && h.kind === 'and') {
120
+ const rest = [...context.slice(0, i), ...context.slice(i + 1)];
121
+ const extended = withContext(withContext(rest, h.left), h.right);
122
+ const sub = search(extended, goal, ctx);
123
+ if (!sub)
124
+ return null;
125
+ // El subárbol asumió h.left y h.right como hipótesis libres.
126
+ // Las "convertimos" en derivaciones explícitas desde h vía
127
+ // ∧EL/∧ER usando substituteAssumption.
128
+ const elimL = {
129
+ conclusion: h.left,
130
+ rule: 'andEL',
131
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }],
132
+ };
133
+ const elimR = {
134
+ conclusion: h.right,
135
+ rule: 'andER',
136
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }],
137
+ };
138
+ const withL = substituteAssumption(sub, h.left, elimL);
139
+ const withBoth = substituteAssumption(withL, h.right, elimR);
140
+ return withBoth;
141
+ }
142
+ }
143
+ // ⊥E: si ⊥ está en el contexto, podemos derivar cualquier meta.
144
+ for (const h of context) {
145
+ if (h.kind === 'bottom') {
146
+ return {
147
+ conclusion: goal,
148
+ rule: 'bottomE',
149
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }],
150
+ };
151
+ }
152
+ }
153
+ // ∨E (no invertible pero útil): si una disyunción A∨B está
154
+ // en el contexto y podemos probar la meta tanto bajo A como
155
+ // bajo B, aplicamos ∨E descargándolas en cada rama.
156
+ for (let i = 0; i < context.length; i++) {
157
+ const h = context[i];
158
+ if (h && h.kind === 'or') {
159
+ const rest = [...context.slice(0, i), ...context.slice(i + 1)];
160
+ const leftCtx = withContext(rest, h.left);
161
+ const rightCtx = withContext(rest, h.right);
162
+ const leftSub = search(leftCtx, goal, ctx);
163
+ if (!leftSub)
164
+ continue;
165
+ const rightSub = search(rightCtx, goal, ctx);
166
+ if (!rightSub)
167
+ continue;
168
+ return {
169
+ conclusion: goal,
170
+ rule: 'orE',
171
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }, leftSub, rightSub],
172
+ discharged: [h.left, h.right],
173
+ };
174
+ }
175
+ }
176
+ // 4. Reglas no-invertibles sobre la meta (∨I) y sobre el
177
+ // contexto (→E).
178
+ // ∨IL / ∨IR: si la meta es disyunción, intentar cada disyunto.
179
+ if (goal.kind === 'or') {
180
+ const leftAttempt = search(context, goal.left, ctx);
181
+ if (leftAttempt) {
182
+ return { conclusion: goal, rule: 'orIL', premises: [leftAttempt] };
183
+ }
184
+ const rightAttempt = search(context, goal.right, ctx);
185
+ if (rightAttempt) {
186
+ return { conclusion: goal, rule: 'orIR', premises: [rightAttempt] };
187
+ }
188
+ // No volvemos: si ninguna funcionó, ∨I no es la respuesta.
189
+ }
190
+ // →E (modus ponens hacia atrás): para cada implicación A→B
191
+ // en el contexto, intenta probar A; si lo logra, B queda como
192
+ // nueva hipótesis y reintentamos la meta.
193
+ for (let i = 0; i < context.length; i++) {
194
+ const h = context[i];
195
+ if (h && h.kind === 'implies') {
196
+ // Caso especial: A→B donde B = goal — entonces sólo hace
197
+ // falta probar A.
198
+ const aProof = search(context, h.left, ctx);
199
+ if (!aProof)
200
+ continue;
201
+ if ((0, formula_1.formulaEquals)(h.right, goal)) {
202
+ return {
203
+ conclusion: goal,
204
+ rule: 'impE',
205
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }, aProof],
206
+ };
207
+ }
208
+ // Caso general: B se añade al contexto y la meta sigue siendo `goal`.
209
+ const rest = [...context.slice(0, i), ...context.slice(i + 1)];
210
+ const extended = withContext(rest, h.right);
211
+ const sub = search(extended, goal, ctx);
212
+ if (!sub)
213
+ continue;
214
+ const elimB = {
215
+ conclusion: h.right,
216
+ rule: 'impE',
217
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }, aProof],
218
+ };
219
+ return substituteAssumption(sub, h.right, elimB);
220
+ }
221
+ }
222
+ // ¬E (modus ponens negativa): si tenemos ¬A en contexto y la
223
+ // meta es ⊥, intentar probar A; el resultado deriva ⊥.
224
+ if (goal.kind === 'bottom') {
225
+ for (const h of context) {
226
+ if (h.kind === 'not') {
227
+ const aProof = search(context, h.arg, ctx);
228
+ if (aProof) {
229
+ return {
230
+ conclusion: (0, formula_1.bottom)(),
231
+ rule: 'notE',
232
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }, aProof],
233
+ };
234
+ }
235
+ }
236
+ // Implicación a ⊥: igual que ¬ pero como φ → ⊥.
237
+ if (h.kind === 'implies' && h.right.kind === 'bottom') {
238
+ const aProof = search(context, h.left, ctx);
239
+ if (aProof) {
240
+ return {
241
+ conclusion: (0, formula_1.bottom)(),
242
+ rule: 'impE',
243
+ premises: [{ conclusion: h, rule: 'assumption', premises: [] }, aProof],
244
+ };
245
+ }
246
+ }
247
+ }
248
+ }
249
+ // 5. Último recurso: si la meta NO es ⊥, intentar probar
250
+ // ⊥ desde el contexto (vía ¬E o impE-to-⊥) y aplicar
251
+ // ⊥E para concluir cualquier cosa.
252
+ if (goal.kind !== 'bottom') {
253
+ const bottomProof = search(context, (0, formula_1.bottom)(), ctx);
254
+ if (bottomProof) {
255
+ return { conclusion: goal, rule: 'bottomE', premises: [bottomProof] };
256
+ }
257
+ }
258
+ return null;
259
+ };
260
+ const result = tryProve();
261
+ ctx.active.delete(key);
262
+ if (!result)
263
+ ctx.failed.add(key);
264
+ return result;
265
+ }
266
+ /**
267
+ * Reescribe un subárbol que asume `assumption` como hipótesis libre,
268
+ * sustituyendo cada `assumption`-node por la derivación `derivation`.
269
+ * Esto permite que una eliminación de regla en el contexto (∧EL,
270
+ * impE, etc.) "rellene" lo que el subgoal trató como hipótesis.
271
+ */
272
+ function substituteAssumption(proof, assumption, derivation) {
273
+ if (proof.rule === 'assumption' && (0, formula_1.formulaEquals)(proof.conclusion, assumption)) {
274
+ return derivation;
275
+ }
276
+ // Si la regla aplicada descargó la asunción en cuestión, no la
277
+ // sustituimos dentro de las premisas (alcance local).
278
+ const dischargedHere = proof.discharged?.some((d) => (0, formula_1.formulaEquals)(d, assumption));
279
+ if (dischargedHere)
280
+ return proof;
281
+ const newPremises = proof.premises.map((p) => substituteAssumption(p, assumption, derivation));
282
+ return { ...proof, premises: newPremises };
283
+ }
284
+ /**
285
+ * API pública.
286
+ *
287
+ * Devuelve un árbol NJ que demuestra `goal` a partir de las
288
+ * `premises` dadas, o `null` si no encontró prueba dentro del
289
+ * budget configurado.
290
+ */
291
+ function proveIntuitionistically(premises, goal, options = {}) {
292
+ const ctx = freshCtx(options.budget ?? 10_000);
293
+ return search(premises.slice(), goal, ctx);
294
+ }
295
+ // ── Verificación de proofs ──────────────────────────────────
296
+ //
297
+ // `verifyProof` recorre el árbol y comprueba localmente cada
298
+ // regla. Útil para tests y para garantizar que el prover no
299
+ // produce derivaciones inconsistentes.
300
+ function verifyProof(proof, initialContext = []) {
301
+ return verifyAt(proof, initialContext);
302
+ }
303
+ function verifyAt(proof, ctx) {
304
+ const c = proof.conclusion;
305
+ switch (proof.rule) {
306
+ case 'assumption':
307
+ return ctx.some((h) => (0, formula_1.formulaEquals)(h, c));
308
+ case 'andI': {
309
+ if (c.kind !== 'and' || proof.premises.length !== 2)
310
+ return false;
311
+ const [pa, pb] = proof.premises;
312
+ if (!pa || !pb)
313
+ return false;
314
+ return ((0, formula_1.formulaEquals)(pa.conclusion, c.left) &&
315
+ (0, formula_1.formulaEquals)(pb.conclusion, c.right) &&
316
+ verifyAt(pa, ctx) &&
317
+ verifyAt(pb, ctx));
318
+ }
319
+ case 'andEL': {
320
+ if (proof.premises.length !== 1)
321
+ return false;
322
+ const p = proof.premises[0];
323
+ if (!p || p.conclusion.kind !== 'and')
324
+ return false;
325
+ return (0, formula_1.formulaEquals)(p.conclusion.left, c) && verifyAt(p, ctx);
326
+ }
327
+ case 'andER': {
328
+ if (proof.premises.length !== 1)
329
+ return false;
330
+ const p = proof.premises[0];
331
+ if (!p || p.conclusion.kind !== 'and')
332
+ return false;
333
+ return (0, formula_1.formulaEquals)(p.conclusion.right, c) && verifyAt(p, ctx);
334
+ }
335
+ case 'orIL': {
336
+ if (c.kind !== 'or' || proof.premises.length !== 1)
337
+ return false;
338
+ const p = proof.premises[0];
339
+ if (!p)
340
+ return false;
341
+ return (0, formula_1.formulaEquals)(p.conclusion, c.left) && verifyAt(p, ctx);
342
+ }
343
+ case 'orIR': {
344
+ if (c.kind !== 'or' || proof.premises.length !== 1)
345
+ return false;
346
+ const p = proof.premises[0];
347
+ if (!p)
348
+ return false;
349
+ return (0, formula_1.formulaEquals)(p.conclusion, c.right) && verifyAt(p, ctx);
350
+ }
351
+ case 'orE': {
352
+ if (proof.premises.length !== 3)
353
+ return false;
354
+ const [maj, l, r] = proof.premises;
355
+ if (!maj || !l || !r)
356
+ return false;
357
+ if (maj.conclusion.kind !== 'or')
358
+ return false;
359
+ const A = maj.conclusion.left;
360
+ const B = maj.conclusion.right;
361
+ if (!(0, formula_1.formulaEquals)(l.conclusion, c))
362
+ return false;
363
+ if (!(0, formula_1.formulaEquals)(r.conclusion, c))
364
+ return false;
365
+ return (verifyAt(maj, ctx) && verifyAt(l, withContext(ctx, A)) && verifyAt(r, withContext(ctx, B)));
366
+ }
367
+ case 'impI': {
368
+ if (c.kind !== 'implies' || proof.premises.length !== 1)
369
+ return false;
370
+ const p = proof.premises[0];
371
+ if (!p)
372
+ return false;
373
+ return (0, formula_1.formulaEquals)(p.conclusion, c.right) && verifyAt(p, withContext(ctx, c.left));
374
+ }
375
+ case 'impE': {
376
+ if (proof.premises.length !== 2)
377
+ return false;
378
+ const [maj, min] = proof.premises;
379
+ if (!maj || !min)
380
+ return false;
381
+ if (maj.conclusion.kind !== 'implies')
382
+ return false;
383
+ return ((0, formula_1.formulaEquals)(maj.conclusion.left, min.conclusion) &&
384
+ (0, formula_1.formulaEquals)(maj.conclusion.right, c) &&
385
+ verifyAt(maj, ctx) &&
386
+ verifyAt(min, ctx));
387
+ }
388
+ case 'notI': {
389
+ if (c.kind !== 'not' || proof.premises.length !== 1)
390
+ return false;
391
+ const p = proof.premises[0];
392
+ if (!p)
393
+ return false;
394
+ return p.conclusion.kind === 'bottom' && verifyAt(p, withContext(ctx, c.arg));
395
+ }
396
+ case 'notE': {
397
+ if (c.kind !== 'bottom' || proof.premises.length !== 2)
398
+ return false;
399
+ const [neg, pos] = proof.premises;
400
+ if (!neg || !pos)
401
+ return false;
402
+ if (neg.conclusion.kind !== 'not')
403
+ return false;
404
+ return ((0, formula_1.formulaEquals)(neg.conclusion.arg, pos.conclusion) &&
405
+ verifyAt(neg, ctx) &&
406
+ verifyAt(pos, ctx));
407
+ }
408
+ case 'bottomE': {
409
+ if (proof.premises.length !== 1)
410
+ return false;
411
+ const p = proof.premises[0];
412
+ if (!p)
413
+ return false;
414
+ return p.conclusion.kind === 'bottom' && verifyAt(p, ctx);
415
+ }
416
+ }
417
+ }
418
+ //# sourceMappingURL=prover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.js","sourceRoot":"","sources":["../../../src/profiles/intuitionistic-nj/prover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Fórmula proposicional intuicionista. No incluye `true` explícito
3
+ * (irrelevante; usar `bottom → bottom` si hace falta).
4
+ */
5
+ export type IntuitFormula = {
6
+ kind: 'atom';
7
+ name: string;
8
+ } | {
9
+ kind: 'and';
10
+ left: IntuitFormula;
11
+ right: IntuitFormula;
12
+ } | {
13
+ kind: 'or';
14
+ left: IntuitFormula;
15
+ right: IntuitFormula;
16
+ } | {
17
+ kind: 'implies';
18
+ left: IntuitFormula;
19
+ right: IntuitFormula;
20
+ } | {
21
+ kind: 'not';
22
+ arg: IntuitFormula;
23
+ } | {
24
+ kind: 'bottom';
25
+ };
26
+ /**
27
+ * Reglas de prueba NJ. Cada nodo del árbol marca la regla aplicada
28
+ * para llegar a su `conclusion` desde sus `premises`.
29
+ */
30
+ export type ProofRule = 'assumption' | 'andI' | 'andEL' | 'andER' | 'orIL' | 'orIR' | 'orE' | 'impI' | 'impE' | 'notI' | 'notE' | 'bottomE';
31
+ /**
32
+ * Árbol de prueba NJ. Las hipótesis abiertas viven implícitamente
33
+ * en el contexto del subárbol; `discharged` lista las hipótesis
34
+ * cerradas por la regla aplicada en este nodo (relevante para →I,
35
+ * ¬I y ∨E).
36
+ */
37
+ export interface NJProof {
38
+ conclusion: IntuitFormula;
39
+ rule: ProofRule;
40
+ premises: NJProof[];
41
+ discharged?: IntuitFormula[];
42
+ }
43
+ /**
44
+ * Modelo de Kripke para IPC: preorden de mundos con valuación
45
+ * persistente. La accesibilidad debe ser reflexiva y transitiva;
46
+ * `forcing` es monótona (si w ⊩ p y w ≤ v entonces v ⊩ p).
47
+ */
48
+ export interface KripkeIntuitModel {
49
+ worlds: string[];
50
+ /** Aristas explícitas de la accesibilidad (clausura reflexiva-transitiva implícita). */
51
+ accessibility: Array<[string, string]>;
52
+ /** Por mundo, los átomos forzados. */
53
+ forcing: Map<string, Set<string>>;
54
+ }
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/profiles/intuitionistic-nj/types.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,MAAM,GACN,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,CAAC;AAEd;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wFAAwF;IACxF,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,sCAAsC;IACtC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACnC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Intuitionistic Natural Deduction (NJ) — Tipos
4
+ // ============================================================
5
+ //
6
+ // Sistema NJ de Gentzen para lógica intuicionista proposicional.
7
+ // Sin tercero excluido, sin doble negación clásica.
8
+ //
9
+ // Reglas implementadas:
10
+ // - Conjunción: ∧I, ∧EL, ∧ER
11
+ // - Disyunción: ∨IL, ∨IR, ∨E (con descarga)
12
+ // - Implicación: →I (descarga), →E (modus ponens)
13
+ // - Negación: ¬I (descarga, deriva ⊥), ¬E (deriva ⊥)
14
+ // - Falsedad: ⊥E (ex falso quodlibet)
15
+ // - Asunción: hipótesis del contexto
16
+ //
17
+ // Convención: `¬φ` se entiende como `φ → ⊥`. La regla `notI` es
18
+ // `→I` cuando el consecuente es `⊥`; `notE` es `→E` produciendo
19
+ // `⊥` desde `φ` y `¬φ`.
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/profiles/intuitionistic-nj/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,oDAAoD;AACpD,EAAE;AACF,wBAAwB;AACxB,iCAAiC;AACjC,gDAAgD;AAChD,qDAAqD;AACrD,2DAA2D;AAC3D,4CAA4C;AAC5C,2CAA2C;AAC3C,EAAE;AACF,gEAAgE;AAChE,gEAAgE;AAChE,wBAAwB"}
@@ -0,0 +1,39 @@
1
+ export type FuzzyOperator = 'lukasiewicz' | 'godel' | 'product';
2
+ export interface FuzzyFormula {
3
+ kind: 'atom' | 'not' | 'and' | 'or' | 'implies';
4
+ name?: string;
5
+ arg?: FuzzyFormula;
6
+ left?: FuzzyFormula;
7
+ right?: FuzzyFormula;
8
+ }
9
+ export declare function atom(name: string): FuzzyFormula;
10
+ export declare function not(arg: FuzzyFormula): FuzzyFormula;
11
+ export declare function and(left: FuzzyFormula, right: FuzzyFormula): FuzzyFormula;
12
+ export declare function or(left: FuzzyFormula, right: FuzzyFormula): FuzzyFormula;
13
+ export declare function implies(left: FuzzyFormula, right: FuzzyFormula): FuzzyFormula;
14
+ export declare function collectFuzzyAtoms(formula: FuzzyFormula): string[];
15
+ /**
16
+ * Evalúa una fórmula borrosa bajo un environment que asigna
17
+ * un valor en [0,1] a cada átomo (átomos sin asignar valen 0).
18
+ */
19
+ export declare function evaluate(formula: FuzzyFormula, env: Record<string, number>, system: FuzzyOperator): number;
20
+ /**
21
+ * Devuelve true si la fórmula evalúa a 1 (módulo EPSILON) en
22
+ * todos los puntos de la rejilla [0,1]^n con `resolution` puntos
23
+ * por átomo. Default: 11 puntos (0, 0.1, ..., 1).
24
+ *
25
+ * Aviso: es una aproximación por sampling. Algunas tautologías
26
+ * "casi" (verdaderas excepto en un conjunto de medida cero)
27
+ * pueden seguir clasificándose correctamente, pero contraejemplos
28
+ * sutiles requieren resolución mayor.
29
+ */
30
+ export declare function isTautology(formula: FuzzyFormula, system: FuzzyOperator, resolution?: number): boolean;
31
+ /** Verdadera si la fórmula evalúa a 0 en toda la rejilla. */
32
+ export declare function isContradiction(formula: FuzzyFormula, system: FuzzyOperator, resolution?: number): boolean;
33
+ /**
34
+ * Busca una valuación (en la rejilla con `resolution` puntos por
35
+ * átomo) tal que `|evaluate(formula) - target| <= tolerance`.
36
+ * Devuelve null si no encuentra ninguna.
37
+ */
38
+ export declare function findValuation(formula: FuzzyFormula, system: FuzzyOperator, target: number, tolerance?: number, resolution?: number): Record<string, number> | null;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/profiles/many-valued/index.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA6DD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE/C;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAEnD;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAEzE;AAED,wBAAgB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAExE;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GAClB,YAAY,CAEd;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAoBjE;AAID;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,MAAM,EAAE,aAAa,GACpB,MAAM,CA2BR;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,GAAE,MAAW,GACtB,OAAO,CAUT;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,GAAE,MAAW,GACtB,OAAO,CAUT;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAa,EACxB,UAAU,GAAE,MAAW,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAU/B"}