@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,250 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Many-valued logics — Łukasiewicz, Gödel, Product
4
+ // ============================================================
5
+ // Tres lógicas borrosas / multivaluadas con valores en [0, 1].
6
+ // Cada sistema define sus propias conectivas, con un núcleo
7
+ // común: T-norm + T-conorm + implicación residuada + negación.
8
+ //
9
+ // Sistemas:
10
+ // * lukasiewicz: t-norm = max(0, p+q-1), s-norm = min(1, p+q),
11
+ // imp = min(1, 1-p+q), neg = 1-p (involutiva).
12
+ // * godel: t-norm = min(p, q), s-norm = max(p, q),
13
+ // imp = 1 si p<=q, q en otro caso;
14
+ // neg(p) = 1 si p=0, 0 en otro caso.
15
+ // * product: t-norm = p*q, s-norm = p + q - p*q,
16
+ // imp = 1 si p<=q, q/p en otro caso;
17
+ // neg(p) = 1 si p=0, 0 en otro caso.
18
+ //
19
+ // Una tautología es una fórmula cuyo valor es 1 para toda
20
+ // asignación; aquí "toda asignación" se aproxima por sampling
21
+ // en una rejilla finita (resolution puntos por átomo).
22
+ // ============================================================
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.atom = atom;
25
+ exports.not = not;
26
+ exports.and = and;
27
+ exports.or = or;
28
+ exports.implies = implies;
29
+ exports.collectFuzzyAtoms = collectFuzzyAtoms;
30
+ exports.evaluate = evaluate;
31
+ exports.isTautology = isTautology;
32
+ exports.isContradiction = isContradiction;
33
+ exports.findValuation = findValuation;
34
+ // ── Helpers numéricos ───────────────────────────────────────
35
+ /** Recorta x al intervalo [0,1] absorbiendo error de coma flotante. */
36
+ function clamp01(x) {
37
+ if (Number.isNaN(x))
38
+ return 0;
39
+ if (x < 0)
40
+ return 0;
41
+ if (x > 1)
42
+ return 1;
43
+ return x;
44
+ }
45
+ // ── Conectivas por sistema ──────────────────────────────────
46
+ function tnorm(system, p, q) {
47
+ switch (system) {
48
+ case 'lukasiewicz':
49
+ return clamp01(Math.max(0, p + q - 1));
50
+ case 'godel':
51
+ return Math.min(p, q);
52
+ case 'product':
53
+ return clamp01(p * q);
54
+ }
55
+ }
56
+ function snorm(system, p, q) {
57
+ switch (system) {
58
+ case 'lukasiewicz':
59
+ return clamp01(Math.min(1, p + q));
60
+ case 'godel':
61
+ return Math.max(p, q);
62
+ case 'product':
63
+ return clamp01(p + q - p * q);
64
+ }
65
+ }
66
+ function implication(system, p, q) {
67
+ switch (system) {
68
+ case 'lukasiewicz':
69
+ return clamp01(Math.min(1, 1 - p + q));
70
+ case 'godel':
71
+ return p <= q ? 1 : q;
72
+ case 'product':
73
+ if (p <= q)
74
+ return 1;
75
+ if (p === 0)
76
+ return 1;
77
+ return clamp01(q / p);
78
+ }
79
+ }
80
+ function negation(system, p) {
81
+ switch (system) {
82
+ case 'lukasiewicz':
83
+ return clamp01(1 - p);
84
+ case 'godel':
85
+ case 'product':
86
+ return p === 0 ? 1 : 0;
87
+ }
88
+ }
89
+ // ── Constructores de fórmulas ───────────────────────────────
90
+ function atom(name) {
91
+ return { kind: 'atom', name };
92
+ }
93
+ function not(arg) {
94
+ return { kind: 'not', arg };
95
+ }
96
+ function and(left, right) {
97
+ return { kind: 'and', left, right };
98
+ }
99
+ function or(left, right) {
100
+ return { kind: 'or', left, right };
101
+ }
102
+ function implies(left, right) {
103
+ return { kind: 'implies', left, right };
104
+ }
105
+ // ── Atoms collection ────────────────────────────────────────
106
+ function collectFuzzyAtoms(formula) {
107
+ const set = new Set();
108
+ const visit = (f) => {
109
+ switch (f.kind) {
110
+ case 'atom':
111
+ if (f.name)
112
+ set.add(f.name);
113
+ return;
114
+ case 'not':
115
+ if (f.arg)
116
+ visit(f.arg);
117
+ return;
118
+ case 'and':
119
+ case 'or':
120
+ case 'implies':
121
+ if (f.left)
122
+ visit(f.left);
123
+ if (f.right)
124
+ visit(f.right);
125
+ return;
126
+ }
127
+ };
128
+ visit(formula);
129
+ return Array.from(set).sort();
130
+ }
131
+ // ── Evaluación ──────────────────────────────────────────────
132
+ /**
133
+ * Evalúa una fórmula borrosa bajo un environment que asigna
134
+ * un valor en [0,1] a cada átomo (átomos sin asignar valen 0).
135
+ */
136
+ function evaluate(formula, env, system) {
137
+ switch (formula.kind) {
138
+ case 'atom': {
139
+ const v = formula.name ? env[formula.name] : undefined;
140
+ return clamp01(v ?? 0);
141
+ }
142
+ case 'not':
143
+ return negation(system, formula.arg ? evaluate(formula.arg, env, system) : 0);
144
+ case 'and':
145
+ return tnorm(system, formula.left ? evaluate(formula.left, env, system) : 0, formula.right ? evaluate(formula.right, env, system) : 0);
146
+ case 'or':
147
+ return snorm(system, formula.left ? evaluate(formula.left, env, system) : 0, formula.right ? evaluate(formula.right, env, system) : 0);
148
+ case 'implies':
149
+ return implication(system, formula.left ? evaluate(formula.left, env, system) : 0, formula.right ? evaluate(formula.right, env, system) : 0);
150
+ }
151
+ }
152
+ // ── Sampling sobre la rejilla [0,1]^n ───────────────────────
153
+ /** Genera la rejilla {0, 1/(r-1), ..., 1} de `resolution` puntos. */
154
+ function gridPoints(resolution) {
155
+ if (resolution < 2)
156
+ return [0, 1];
157
+ const out = [];
158
+ for (let i = 0; i < resolution; i++) {
159
+ out.push(i / (resolution - 1));
160
+ }
161
+ return out;
162
+ }
163
+ /**
164
+ * Itera todas las combinaciones de la rejilla sobre los átomos,
165
+ * llamando a `visit(env, value)` con cada valuación y el valor
166
+ * de la fórmula. Si `visit` devuelve `false`, aborta.
167
+ */
168
+ function forEachValuation(formula, system, resolution, visit) {
169
+ const atoms = collectFuzzyAtoms(formula);
170
+ if (atoms.length === 0) {
171
+ visit({}, evaluate(formula, {}, system));
172
+ return;
173
+ }
174
+ const grid = gridPoints(resolution);
175
+ const env = {};
176
+ const total = Math.pow(grid.length, atoms.length);
177
+ const indices = new Array(atoms.length).fill(0);
178
+ for (let n = 0; n < total; n++) {
179
+ for (let i = 0; i < atoms.length; i++) {
180
+ const key = atoms[i];
181
+ const gi = indices[i];
182
+ env[key] = grid[gi];
183
+ }
184
+ const value = evaluate(formula, env, system);
185
+ const res = visit({ ...env }, value);
186
+ if (res === false)
187
+ return;
188
+ // increment indices (base = grid.length)
189
+ for (let i = atoms.length - 1; i >= 0; i--) {
190
+ const idx = indices[i] + 1;
191
+ if (idx < grid.length) {
192
+ indices[i] = idx;
193
+ break;
194
+ }
195
+ indices[i] = 0;
196
+ }
197
+ }
198
+ }
199
+ // ── Tautología / Contradicción ─────────────────────────────
200
+ const EPSILON = 1e-9;
201
+ /**
202
+ * Devuelve true si la fórmula evalúa a 1 (módulo EPSILON) en
203
+ * todos los puntos de la rejilla [0,1]^n con `resolution` puntos
204
+ * por átomo. Default: 11 puntos (0, 0.1, ..., 1).
205
+ *
206
+ * Aviso: es una aproximación por sampling. Algunas tautologías
207
+ * "casi" (verdaderas excepto en un conjunto de medida cero)
208
+ * pueden seguir clasificándose correctamente, pero contraejemplos
209
+ * sutiles requieren resolución mayor.
210
+ */
211
+ function isTautology(formula, system, resolution = 11) {
212
+ let ok = true;
213
+ forEachValuation(formula, system, resolution, (_env, value) => {
214
+ if (value < 1 - EPSILON) {
215
+ ok = false;
216
+ return false;
217
+ }
218
+ return undefined;
219
+ });
220
+ return ok;
221
+ }
222
+ /** Verdadera si la fórmula evalúa a 0 en toda la rejilla. */
223
+ function isContradiction(formula, system, resolution = 11) {
224
+ let ok = true;
225
+ forEachValuation(formula, system, resolution, (_env, value) => {
226
+ if (value > EPSILON) {
227
+ ok = false;
228
+ return false;
229
+ }
230
+ return undefined;
231
+ });
232
+ return ok;
233
+ }
234
+ /**
235
+ * Busca una valuación (en la rejilla con `resolution` puntos por
236
+ * átomo) tal que `|evaluate(formula) - target| <= tolerance`.
237
+ * Devuelve null si no encuentra ninguna.
238
+ */
239
+ function findValuation(formula, system, target, tolerance = 1e-6, resolution = 11) {
240
+ let hit = null;
241
+ forEachValuation(formula, system, resolution, (env, value) => {
242
+ if (Math.abs(value - target) <= tolerance) {
243
+ hit = env;
244
+ return false;
245
+ }
246
+ return undefined;
247
+ });
248
+ return hit;
249
+ }
250
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiles/many-valued/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ModalFormula } from './types';
2
+ declare function unary(f: ModalFormula): ModalFormula;
3
+ declare function binLeft(f: ModalFormula): ModalFormula;
4
+ declare function binRight(f: ModalFormula): ModalFormula;
5
+ export declare const atom: (name: string) => ModalFormula;
6
+ export declare const not: (arg: ModalFormula) => ModalFormula;
7
+ export declare const and: (left: ModalFormula, right: ModalFormula) => ModalFormula;
8
+ export declare const or: (left: ModalFormula, right: ModalFormula) => ModalFormula;
9
+ export declare const implies: (left: ModalFormula, right: ModalFormula) => ModalFormula;
10
+ export declare const box: (arg: ModalFormula) => ModalFormula;
11
+ export declare const diamond: (arg: ModalFormula) => ModalFormula;
12
+ /**
13
+ * Clave sintáctica determinista para deduplicación.
14
+ */
15
+ export declare function formulaKey(f: ModalFormula): string;
16
+ export declare function formulaEquals(a: ModalFormula, b: ModalFormula): boolean;
17
+ export declare function formulaToString(f: ModalFormula): string;
18
+ export declare function collectAtoms(f: ModalFormula, out?: Set<string>): Set<string>;
19
+ export declare const subUnary: typeof unary;
20
+ export declare const subLeft: typeof binLeft;
21
+ export declare const subRight: typeof binRight;
22
+ export {};
23
+ //# sourceMappingURL=formula.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/formula.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,iBAAS,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAI5C;AAED,iBAAS,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAI9C;AAED,iBAAS,QAAQ,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAI/C;AAMD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,YAAwC,CAAC;AAE7E,eAAO,MAAM,GAAG,GAAI,KAAK,YAAY,KAAG,YAAmD,CAAC;AAE5F,eAAO,MAAM,GAAG,GAAI,MAAM,YAAY,EAAE,OAAO,YAAY,KAAG,YAK5D,CAAC;AAEH,eAAO,MAAM,EAAE,GAAI,MAAM,YAAY,EAAE,OAAO,YAAY,KAAG,YAK3D,CAAC;AAEH,eAAO,MAAM,OAAO,GAAI,MAAM,YAAY,EAAE,OAAO,YAAY,KAAG,YAKhE,CAAC;AAEH,eAAO,MAAM,GAAG,GAAI,KAAK,YAAY,KAAG,YAAmD,CAAC;AAE5F,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,KAAG,YAI1C,CAAC;AAMH;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAiBlD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAEvE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAoBvD;AAYD,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAevF;AAID,eAAO,MAAM,QAAQ,cAAQ,CAAC;AAC9B,eAAO,MAAM,OAAO,gBAAU,CAAC;AAC/B,eAAO,MAAM,QAAQ,iBAAW,CAAC"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Helpers de fórmulas modales
4
+ // ============================================================
5
+ //
6
+ // La estructura {@link ModalFormula} admite tanto campos
7
+ // específicos (`arg`, `left`, `right`) como un `args` n-ario para
8
+ // flexibilidad. Aquí se normaliza el acceso: las funciones de
9
+ // extracción aceptan ambos formatos y los constructores producen
10
+ // la forma canónica con campos específicos (+ `args` espejo).
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.subRight = exports.subLeft = exports.subUnary = exports.diamond = exports.box = exports.implies = exports.or = exports.and = exports.not = exports.atom = void 0;
13
+ exports.formulaKey = formulaKey;
14
+ exports.formulaEquals = formulaEquals;
15
+ exports.formulaToString = formulaToString;
16
+ exports.collectAtoms = collectAtoms;
17
+ // ------------------------------------------------------------
18
+ // Acceso normalizado a subfórmulas
19
+ // ------------------------------------------------------------
20
+ function unary(f) {
21
+ if (f.arg)
22
+ return f.arg;
23
+ if (f.args && f.args[0])
24
+ return f.args[0];
25
+ throw new Error(`ModalFormula ${f.kind} sin subfórmula`);
26
+ }
27
+ function binLeft(f) {
28
+ if (f.left)
29
+ return f.left;
30
+ if (f.args && f.args[0])
31
+ return f.args[0];
32
+ throw new Error(`ModalFormula ${f.kind} sin lado izquierdo`);
33
+ }
34
+ function binRight(f) {
35
+ if (f.right)
36
+ return f.right;
37
+ if (f.args && f.args[1])
38
+ return f.args[1];
39
+ throw new Error(`ModalFormula ${f.kind} sin lado derecho`);
40
+ }
41
+ // ------------------------------------------------------------
42
+ // Constructores ergonómicos
43
+ // ------------------------------------------------------------
44
+ const atom = (name) => ({ kind: 'atom', name });
45
+ exports.atom = atom;
46
+ const not = (arg) => ({ kind: 'not', arg, args: [arg] });
47
+ exports.not = not;
48
+ const and = (left, right) => ({
49
+ kind: 'and',
50
+ left,
51
+ right,
52
+ args: [left, right],
53
+ });
54
+ exports.and = and;
55
+ const or = (left, right) => ({
56
+ kind: 'or',
57
+ left,
58
+ right,
59
+ args: [left, right],
60
+ });
61
+ exports.or = or;
62
+ const implies = (left, right) => ({
63
+ kind: 'implies',
64
+ left,
65
+ right,
66
+ args: [left, right],
67
+ });
68
+ exports.implies = implies;
69
+ const box = (arg) => ({ kind: 'box', arg, args: [arg] });
70
+ exports.box = box;
71
+ const diamond = (arg) => ({
72
+ kind: 'diamond',
73
+ arg,
74
+ args: [arg],
75
+ });
76
+ exports.diamond = diamond;
77
+ // ------------------------------------------------------------
78
+ // Clave / igualdad / representación
79
+ // ------------------------------------------------------------
80
+ /**
81
+ * Clave sintáctica determinista para deduplicación.
82
+ */
83
+ function formulaKey(f) {
84
+ switch (f.kind) {
85
+ case 'atom':
86
+ return `A(${f.name ?? '?'})`;
87
+ case 'not':
88
+ return `N(${formulaKey(unary(f))})`;
89
+ case 'box':
90
+ return `B(${formulaKey(unary(f))})`;
91
+ case 'diamond':
92
+ return `D(${formulaKey(unary(f))})`;
93
+ case 'and':
94
+ return `&(${formulaKey(binLeft(f))},${formulaKey(binRight(f))})`;
95
+ case 'or':
96
+ return `|(${formulaKey(binLeft(f))},${formulaKey(binRight(f))})`;
97
+ case 'implies':
98
+ return `>(${formulaKey(binLeft(f))},${formulaKey(binRight(f))})`;
99
+ }
100
+ }
101
+ function formulaEquals(a, b) {
102
+ return formulaKey(a) === formulaKey(b);
103
+ }
104
+ function formulaToString(f) {
105
+ switch (f.kind) {
106
+ case 'atom':
107
+ return f.name ?? '?';
108
+ case 'not': {
109
+ const inner = unary(f);
110
+ if (inner.kind === 'atom')
111
+ return `¬${formulaToString(inner)}`;
112
+ return `¬(${formulaToString(inner)})`;
113
+ }
114
+ case 'box':
115
+ return `□${parens(unary(f))}`;
116
+ case 'diamond':
117
+ return `◇${parens(unary(f))}`;
118
+ case 'and':
119
+ return `(${formulaToString(binLeft(f))} ∧ ${formulaToString(binRight(f))})`;
120
+ case 'or':
121
+ return `(${formulaToString(binLeft(f))} ∨ ${formulaToString(binRight(f))})`;
122
+ case 'implies':
123
+ return `(${formulaToString(binLeft(f))} → ${formulaToString(binRight(f))})`;
124
+ }
125
+ }
126
+ function parens(f) {
127
+ if (f.kind === 'atom')
128
+ return formulaToString(f);
129
+ if (f.kind === 'box' || f.kind === 'diamond')
130
+ return formulaToString(f);
131
+ return `(${formulaToString(f)})`;
132
+ }
133
+ // ------------------------------------------------------------
134
+ // Átomos
135
+ // ------------------------------------------------------------
136
+ function collectAtoms(f, out = new Set()) {
137
+ switch (f.kind) {
138
+ case 'atom':
139
+ if (f.name)
140
+ out.add(f.name);
141
+ return out;
142
+ case 'not':
143
+ case 'box':
144
+ case 'diamond':
145
+ return collectAtoms(unary(f), out);
146
+ case 'and':
147
+ case 'or':
148
+ case 'implies':
149
+ collectAtoms(binLeft(f), out);
150
+ return collectAtoms(binRight(f), out);
151
+ }
152
+ }
153
+ // Acceso público a las extracciones normalizadas (útil para
154
+ // el motor de tableau y tests).
155
+ exports.subUnary = unary;
156
+ exports.subLeft = binLeft;
157
+ exports.subRight = binRight;
158
+ //# sourceMappingURL=formula.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula.js","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/formula.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { FrameAxiom, ModalSystem, ModalFormula, KripkeModel, TableauResult } from './types';
2
+ export { atom, not, and, or, implies, box, diamond, formulaKey, formulaEquals, formulaToString, collectAtoms, } from './formula';
3
+ export { tableauWithAxioms } from './tableau';
4
+ export type { TableauOptions } from './tableau';
5
+ export { systemAxioms, isSatisfiable, isValid, axiomFormula } from './systems';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/index.ts"],"names":[],"mappings":"AAmBA,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EACL,IAAI,EACJ,GAAG,EACH,GAAG,EACH,EAAE,EACF,OAAO,EACP,GAAG,EACH,OAAO,EACP,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Modal Frame Axioms — Entrada pública
4
+ // ============================================================
5
+ //
6
+ // Tableau modal extendido con axiomas de frame (T, B, 4, 5, D)
7
+ // y composición de sistemas estándar (K, T, D, B, S4, S5, KD45...).
8
+ //
9
+ // Uso típico:
10
+ //
11
+ // import {
12
+ // atom, box, diamond, implies,
13
+ // isValid, isSatisfiable, tableauWithAxioms,
14
+ // } from '@stevenvo780/st-lang/profiles/modal-frame-axioms';
15
+ //
16
+ // const p = atom('p');
17
+ // isValid(implies(box(p), p), 'T'); // true
18
+ // isValid(implies(box(p), p), 'K'); // false
19
+ // isValid(implies(box(p), box(box(p))), 'S4'); // true
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.axiomFormula = exports.isValid = exports.isSatisfiable = exports.systemAxioms = exports.tableauWithAxioms = exports.collectAtoms = exports.formulaToString = exports.formulaEquals = exports.formulaKey = exports.diamond = exports.box = exports.implies = exports.or = exports.and = exports.not = exports.atom = void 0;
22
+ var formula_1 = require("./formula");
23
+ Object.defineProperty(exports, "atom", { enumerable: true, get: function () { return formula_1.atom; } });
24
+ Object.defineProperty(exports, "not", { enumerable: true, get: function () { return formula_1.not; } });
25
+ Object.defineProperty(exports, "and", { enumerable: true, get: function () { return formula_1.and; } });
26
+ Object.defineProperty(exports, "or", { enumerable: true, get: function () { return formula_1.or; } });
27
+ Object.defineProperty(exports, "implies", { enumerable: true, get: function () { return formula_1.implies; } });
28
+ Object.defineProperty(exports, "box", { enumerable: true, get: function () { return formula_1.box; } });
29
+ Object.defineProperty(exports, "diamond", { enumerable: true, get: function () { return formula_1.diamond; } });
30
+ Object.defineProperty(exports, "formulaKey", { enumerable: true, get: function () { return formula_1.formulaKey; } });
31
+ Object.defineProperty(exports, "formulaEquals", { enumerable: true, get: function () { return formula_1.formulaEquals; } });
32
+ Object.defineProperty(exports, "formulaToString", { enumerable: true, get: function () { return formula_1.formulaToString; } });
33
+ Object.defineProperty(exports, "collectAtoms", { enumerable: true, get: function () { return formula_1.collectAtoms; } });
34
+ var tableau_1 = require("./tableau");
35
+ Object.defineProperty(exports, "tableauWithAxioms", { enumerable: true, get: function () { return tableau_1.tableauWithAxioms; } });
36
+ var systems_1 = require("./systems");
37
+ Object.defineProperty(exports, "systemAxioms", { enumerable: true, get: function () { return systems_1.systemAxioms; } });
38
+ Object.defineProperty(exports, "isSatisfiable", { enumerable: true, get: function () { return systems_1.isSatisfiable; } });
39
+ Object.defineProperty(exports, "isValid", { enumerable: true, get: function () { return systems_1.isValid; } });
40
+ Object.defineProperty(exports, "axiomFormula", { enumerable: true, get: function () { return systems_1.axiomFormula; } });
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,oEAAoE;AACpE,EAAE;AACF,cAAc;AACd,EAAE;AACF,aAAa;AACb,mCAAmC;AACnC,iDAAiD;AACjD,+DAA+D;AAC/D,EAAE;AACF,yBAAyB;AACzB,mDAAmD;AACnD,oDAAoD;AACpD,yDAAyD;;;AAIzD,qCAYmB;AAXjB,+FAAA,IAAI,OAAA;AACJ,8FAAA,GAAG,OAAA;AACH,8FAAA,GAAG,OAAA;AACH,6FAAA,EAAE,OAAA;AACF,kGAAA,OAAO,OAAA;AACP,8FAAA,GAAG,OAAA;AACH,kGAAA,OAAO,OAAA;AACP,qGAAA,UAAU,OAAA;AACV,wGAAA,aAAa,OAAA;AACb,0GAAA,eAAe,OAAA;AACf,uGAAA,YAAY,OAAA;AAGd,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAG1B,qCAA+E;AAAtE,uGAAA,YAAY,OAAA;AAAE,wGAAA,aAAa,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,uGAAA,YAAY,OAAA"}
@@ -0,0 +1,29 @@
1
+ import { FrameAxiom, ModalFormula, ModalSystem } from './types';
2
+ /**
3
+ * Devuelve los axiomas que caracterizan al sistema nombrado.
4
+ *
5
+ * Para sistemas no listados (e.g. "K45", "KTB5") usar directamente
6
+ * {@link tableauWithAxioms} con la combinación deseada.
7
+ */
8
+ export declare function systemAxioms(system: ModalSystem): FrameAxiom[];
9
+ /**
10
+ * ¿`phi` es satisfacible en el sistema `system`?
11
+ *
12
+ * Equivale a: ¿existe un modelo Kripke cuyo frame cumple los
13
+ * axiomas y cuya raíz fuerza `phi`?
14
+ */
15
+ export declare function isSatisfiable(phi: ModalFormula, system: ModalSystem): boolean;
16
+ /**
17
+ * ¿`phi` es válida en el sistema `system`?
18
+ *
19
+ * Equivale a: ¬(¬phi satisfacible) — si el tableau de ¬φ cierra
20
+ * en todas las ramas, φ es teorema del sistema.
21
+ */
22
+ export declare function isValid(phi: ModalFormula, system: ModalSystem): boolean;
23
+ /**
24
+ * Esquema del axioma como fórmula concreta sobre un átomo dado.
25
+ * Útil para verificar que cada axioma es válido en su sistema
26
+ * mínimo.
27
+ */
28
+ export declare function axiomFormula(axiom: FrameAxiom, p: ModalFormula): ModalFormula;
29
+ //# sourceMappingURL=systems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systems.d.ts","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/systems.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,EAAE,CAuB9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAEvE;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAa7E"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Sistemas modales nombrados — composición de axiomas
4
+ // ============================================================
5
+ //
6
+ // Mapa de etiquetas estándar a sus axiomas. Los sistemas se
7
+ // caracterizan por la relación de accesibilidad del frame:
8
+ //
9
+ // K ∅ — sin restricción
10
+ // T reflexiva — {T}
11
+ // D serial — {D}
12
+ // KB simétrica — {B}
13
+ // K4 transitiva — {4}
14
+ // K5 euclidiana — {5}
15
+ // B refl + sim — {T, B} (a veces "KTB")
16
+ // S4 refl + trans — {T, 4}
17
+ // S5 equivalencia — {T, 4, 5} (≡ {T, B, 4})
18
+ // KD45 ser + trans + eucl — {D, 4, 5} (lógica doxástica)
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.systemAxioms = systemAxioms;
21
+ exports.isSatisfiable = isSatisfiable;
22
+ exports.isValid = isValid;
23
+ exports.axiomFormula = axiomFormula;
24
+ const formula_1 = require("./formula");
25
+ const tableau_1 = require("./tableau");
26
+ /**
27
+ * Devuelve los axiomas que caracterizan al sistema nombrado.
28
+ *
29
+ * Para sistemas no listados (e.g. "K45", "KTB5") usar directamente
30
+ * {@link tableauWithAxioms} con la combinación deseada.
31
+ */
32
+ function systemAxioms(system) {
33
+ switch (system) {
34
+ case 'K':
35
+ return [];
36
+ case 'T':
37
+ return ['T'];
38
+ case 'D':
39
+ return ['D'];
40
+ case 'KB':
41
+ return ['B'];
42
+ case 'K4':
43
+ return ['4'];
44
+ case 'K5':
45
+ return ['5'];
46
+ case 'B':
47
+ return ['T', 'B'];
48
+ case 'S4':
49
+ return ['T', '4'];
50
+ case 'S5':
51
+ return ['T', '4', '5'];
52
+ case 'KD45':
53
+ return ['D', '4', '5'];
54
+ }
55
+ }
56
+ /**
57
+ * ¿`phi` es satisfacible en el sistema `system`?
58
+ *
59
+ * Equivale a: ¿existe un modelo Kripke cuyo frame cumple los
60
+ * axiomas y cuya raíz fuerza `phi`?
61
+ */
62
+ function isSatisfiable(phi, system) {
63
+ return (0, tableau_1.tableauWithAxioms)(phi, systemAxioms(system)).sat;
64
+ }
65
+ /**
66
+ * ¿`phi` es válida en el sistema `system`?
67
+ *
68
+ * Equivale a: ¬(¬phi satisfacible) — si el tableau de ¬φ cierra
69
+ * en todas las ramas, φ es teorema del sistema.
70
+ */
71
+ function isValid(phi, system) {
72
+ return !isSatisfiable((0, formula_1.not)(phi), system);
73
+ }
74
+ // ------------------------------------------------------------
75
+ // Helpers: axiomas como fórmulas (útil para tests)
76
+ // ------------------------------------------------------------
77
+ /**
78
+ * Esquema del axioma como fórmula concreta sobre un átomo dado.
79
+ * Útil para verificar que cada axioma es válido en su sistema
80
+ * mínimo.
81
+ */
82
+ function axiomFormula(axiom, p) {
83
+ switch (axiom) {
84
+ case 'T':
85
+ return (0, formula_1.implies)((0, formula_1.box)(p), p);
86
+ case 'B':
87
+ return (0, formula_1.implies)(p, (0, formula_1.box)((0, formula_1.diamond)(p)));
88
+ case '4':
89
+ return (0, formula_1.implies)((0, formula_1.box)(p), (0, formula_1.box)((0, formula_1.box)(p)));
90
+ case '5':
91
+ return (0, formula_1.implies)((0, formula_1.diamond)(p), (0, formula_1.box)((0, formula_1.diamond)(p)));
92
+ case 'D':
93
+ return (0, formula_1.implies)((0, formula_1.box)(p), (0, formula_1.diamond)(p));
94
+ }
95
+ }
96
+ //# sourceMappingURL=systems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systems.js","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/systems.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,+DAA+D;AAC/D,EAAE;AACF,4DAA4D;AAC5D,2DAA2D;AAC3D,EAAE;AACF,+CAA+C;AAC/C,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC,yDAAyD;AACzD,sCAAsC;AACtC,uDAAuD;AACvD,4DAA4D;;AAY5D,oCAuBC;AAQD,sCAEC;AAQD,0BAEC;AAWD,oCAaC;AA7ED,uCAAuD;AACvD,uCAA8C;AAG9C;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,MAAmB;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG;YACN,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,GAAG;YACN,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,GAAG;YACN,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,GAAiB,EAAE,MAAmB;IAClE,OAAO,IAAA,2BAAiB,EAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,GAAiB,EAAE,MAAmB;IAC5D,OAAO,CAAC,aAAa,CAAC,IAAA,aAAG,EAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;AAE/D;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAiB,EAAE,CAAe;IAC7D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,GAAG;YACN,OAAO,IAAA,iBAAO,EAAC,IAAA,aAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,GAAG;YACN,OAAO,IAAA,iBAAO,EAAC,CAAC,EAAE,IAAA,aAAG,EAAC,IAAA,iBAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,KAAK,GAAG;YACN,OAAO,IAAA,iBAAO,EAAC,IAAA,aAAG,EAAC,CAAC,CAAC,EAAE,IAAA,aAAG,EAAC,IAAA,aAAG,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,GAAG;YACN,OAAO,IAAA,iBAAO,EAAC,IAAA,iBAAO,EAAC,CAAC,CAAC,EAAE,IAAA,aAAG,EAAC,IAAA,iBAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,GAAG;YACN,OAAO,IAAA,iBAAO,EAAC,IAAA,aAAG,EAAC,CAAC,CAAC,EAAE,IAAA,iBAAO,EAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}