@stevenvo780/st-lang 4.1.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 (553) hide show
  1. package/dist/belief-revision/agm.d.ts +76 -0
  2. package/dist/belief-revision/agm.d.ts.map +1 -0
  3. package/dist/belief-revision/agm.js +249 -0
  4. package/dist/belief-revision/agm.js.map +1 -0
  5. package/dist/belief-revision/index.d.ts +6 -0
  6. package/dist/belief-revision/index.d.ts.map +1 -0
  7. package/dist/belief-revision/index.js +33 -0
  8. package/dist/belief-revision/index.js.map +1 -0
  9. package/dist/belief-revision/parser.d.ts +16 -0
  10. package/dist/belief-revision/parser.d.ts.map +1 -0
  11. package/dist/belief-revision/parser.js +199 -0
  12. package/dist/belief-revision/parser.js.map +1 -0
  13. package/dist/belief-revision/sat.d.ts +19 -0
  14. package/dist/belief-revision/sat.d.ts.map +1 -0
  15. package/dist/belief-revision/sat.js +90 -0
  16. package/dist/belief-revision/sat.js.map +1 -0
  17. package/dist/belief-revision/types.d.ts +51 -0
  18. package/dist/belief-revision/types.d.ts.map +1 -0
  19. package/dist/belief-revision/types.js +10 -0
  20. package/dist/belief-revision/types.js.map +1 -0
  21. package/dist/curry-howard/index.d.ts +7 -0
  22. package/dist/curry-howard/index.d.ts.map +1 -0
  23. package/dist/curry-howard/index.js +46 -0
  24. package/dist/curry-howard/index.js.map +1 -0
  25. package/dist/curry-howard/infer.d.ts +9 -0
  26. package/dist/curry-howard/infer.d.ts.map +1 -0
  27. package/dist/curry-howard/infer.js +129 -0
  28. package/dist/curry-howard/infer.js.map +1 -0
  29. package/dist/curry-howard/proof.d.ts +7 -0
  30. package/dist/curry-howard/proof.d.ts.map +1 -0
  31. package/dist/curry-howard/proof.js +282 -0
  32. package/dist/curry-howard/proof.js.map +1 -0
  33. package/dist/curry-howard/reduce.d.ts +7 -0
  34. package/dist/curry-howard/reduce.d.ts.map +1 -0
  35. package/dist/curry-howard/reduce.js +266 -0
  36. package/dist/curry-howard/reduce.js.map +1 -0
  37. package/dist/curry-howard/types.d.ts +91 -0
  38. package/dist/curry-howard/types.d.ts.map +1 -0
  39. package/dist/curry-howard/types.js +149 -0
  40. package/dist/curry-howard/types.js.map +1 -0
  41. package/dist/fol-prover-equality/demodulate.d.ts +29 -0
  42. package/dist/fol-prover-equality/demodulate.d.ts.map +1 -0
  43. package/dist/fol-prover-equality/demodulate.js +197 -0
  44. package/dist/fol-prover-equality/demodulate.js.map +1 -0
  45. package/dist/fol-prover-equality/index.d.ts +8 -0
  46. package/dist/fol-prover-equality/index.d.ts.map +1 -0
  47. package/dist/fol-prover-equality/index.js +24 -0
  48. package/dist/fol-prover-equality/index.js.map +1 -0
  49. package/dist/fol-prover-equality/paramodulate.d.ts +46 -0
  50. package/dist/fol-prover-equality/paramodulate.d.ts.map +1 -0
  51. package/dist/fol-prover-equality/paramodulate.js +159 -0
  52. package/dist/fol-prover-equality/paramodulate.js.map +1 -0
  53. package/dist/fol-prover-equality/prove.d.ts +7 -0
  54. package/dist/fol-prover-equality/prove.d.ts.map +1 -0
  55. package/dist/fol-prover-equality/prove.js +307 -0
  56. package/dist/fol-prover-equality/prove.js.map +1 -0
  57. package/dist/fol-prover-equality/term-utils.d.ts +43 -0
  58. package/dist/fol-prover-equality/term-utils.d.ts.map +1 -0
  59. package/dist/fol-prover-equality/term-utils.js +230 -0
  60. package/dist/fol-prover-equality/term-utils.js.map +1 -0
  61. package/dist/fol-prover-equality/types.d.ts +20 -0
  62. package/dist/fol-prover-equality/types.d.ts.map +1 -0
  63. package/dist/fol-prover-equality/types.js +5 -0
  64. package/dist/fol-prover-equality/types.js.map +1 -0
  65. package/dist/index.d.ts +8 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +53 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/lambda-calc/church.d.ts +8 -0
  70. package/dist/lambda-calc/church.d.ts.map +1 -0
  71. package/dist/lambda-calc/church.js +67 -0
  72. package/dist/lambda-calc/church.js.map +1 -0
  73. package/dist/lambda-calc/combinators.d.ts +8 -0
  74. package/dist/lambda-calc/combinators.d.ts.map +1 -0
  75. package/dist/lambda-calc/combinators.js +24 -0
  76. package/dist/lambda-calc/combinators.js.map +1 -0
  77. package/dist/lambda-calc/index.d.ts +8 -0
  78. package/dist/lambda-calc/index.d.ts.map +1 -0
  79. package/dist/lambda-calc/index.js +48 -0
  80. package/dist/lambda-calc/index.js.map +1 -0
  81. package/dist/lambda-calc/reduce.d.ts +18 -0
  82. package/dist/lambda-calc/reduce.d.ts.map +1 -0
  83. package/dist/lambda-calc/reduce.js +174 -0
  84. package/dist/lambda-calc/reduce.js.map +1 -0
  85. package/dist/lambda-calc/substitution.d.ts +6 -0
  86. package/dist/lambda-calc/substitution.d.ts.map +1 -0
  87. package/dist/lambda-calc/substitution.js +120 -0
  88. package/dist/lambda-calc/substitution.js.map +1 -0
  89. package/dist/lambda-calc/types.d.ts +19 -0
  90. package/dist/lambda-calc/types.d.ts.map +1 -0
  91. package/dist/lambda-calc/types.js +72 -0
  92. package/dist/lambda-calc/types.js.map +1 -0
  93. package/dist/profiles/ctl/check.d.ts +13 -0
  94. package/dist/profiles/ctl/check.d.ts.map +1 -0
  95. package/dist/profiles/ctl/check.js +359 -0
  96. package/dist/profiles/ctl/check.js.map +1 -0
  97. package/dist/profiles/ctl/index.d.ts +5 -0
  98. package/dist/profiles/ctl/index.d.ts.map +1 -0
  99. package/dist/profiles/ctl/index.js +23 -0
  100. package/dist/profiles/ctl/index.js.map +1 -0
  101. package/dist/profiles/ctl/types.d.ts +74 -0
  102. package/dist/profiles/ctl/types.d.ts.map +1 -0
  103. package/dist/profiles/ctl/types.js +53 -0
  104. package/dist/profiles/ctl/types.js.map +1 -0
  105. package/dist/profiles/ctl/witness.d.ts +20 -0
  106. package/dist/profiles/ctl/witness.d.ts.map +1 -0
  107. package/dist/profiles/ctl/witness.js +149 -0
  108. package/dist/profiles/ctl/witness.js.map +1 -0
  109. package/dist/profiles/default-logic/entailment.d.ts +14 -0
  110. package/dist/profiles/default-logic/entailment.d.ts.map +1 -0
  111. package/dist/profiles/default-logic/entailment.js +36 -0
  112. package/dist/profiles/default-logic/entailment.js.map +1 -0
  113. package/dist/profiles/default-logic/extensions.d.ts +35 -0
  114. package/dist/profiles/default-logic/extensions.d.ts.map +1 -0
  115. package/dist/profiles/default-logic/extensions.js +276 -0
  116. package/dist/profiles/default-logic/extensions.js.map +1 -0
  117. package/dist/profiles/default-logic/index.d.ts +5 -0
  118. package/dist/profiles/default-logic/index.d.ts.map +1 -0
  119. package/dist/profiles/default-logic/index.js +33 -0
  120. package/dist/profiles/default-logic/index.js.map +1 -0
  121. package/dist/profiles/default-logic/types.d.ts +29 -0
  122. package/dist/profiles/default-logic/types.d.ts.map +1 -0
  123. package/dist/profiles/default-logic/types.js +25 -0
  124. package/dist/profiles/default-logic/types.js.map +1 -0
  125. package/dist/profiles/description-logic/index.d.ts +5 -0
  126. package/dist/profiles/description-logic/index.d.ts.map +1 -0
  127. package/dist/profiles/description-logic/index.js +39 -0
  128. package/dist/profiles/description-logic/index.js.map +1 -0
  129. package/dist/profiles/description-logic/nnf.d.ts +13 -0
  130. package/dist/profiles/description-logic/nnf.d.ts.map +1 -0
  131. package/dist/profiles/description-logic/nnf.js +123 -0
  132. package/dist/profiles/description-logic/nnf.js.map +1 -0
  133. package/dist/profiles/description-logic/tableau.d.ts +27 -0
  134. package/dist/profiles/description-logic/tableau.d.ts.map +1 -0
  135. package/dist/profiles/description-logic/tableau.js +491 -0
  136. package/dist/profiles/description-logic/tableau.js.map +1 -0
  137. package/dist/profiles/description-logic/types.d.ts +45 -0
  138. package/dist/profiles/description-logic/types.d.ts.map +1 -0
  139. package/dist/profiles/description-logic/types.js +71 -0
  140. package/dist/profiles/description-logic/types.js.map +1 -0
  141. package/dist/profiles/hybrid-logic/index.d.ts +5 -0
  142. package/dist/profiles/hybrid-logic/index.d.ts.map +1 -0
  143. package/dist/profiles/hybrid-logic/index.js +34 -0
  144. package/dist/profiles/hybrid-logic/index.js.map +1 -0
  145. package/dist/profiles/hybrid-logic/sat.d.ts +15 -0
  146. package/dist/profiles/hybrid-logic/sat.d.ts.map +1 -0
  147. package/dist/profiles/hybrid-logic/sat.js +142 -0
  148. package/dist/profiles/hybrid-logic/sat.js.map +1 -0
  149. package/dist/profiles/hybrid-logic/semantics.d.ts +20 -0
  150. package/dist/profiles/hybrid-logic/semantics.d.ts.map +1 -0
  151. package/dist/profiles/hybrid-logic/semantics.js +107 -0
  152. package/dist/profiles/hybrid-logic/semantics.js.map +1 -0
  153. package/dist/profiles/hybrid-logic/types.d.ts +78 -0
  154. package/dist/profiles/hybrid-logic/types.d.ts.map +1 -0
  155. package/dist/profiles/hybrid-logic/types.js +107 -0
  156. package/dist/profiles/hybrid-logic/types.js.map +1 -0
  157. package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
  158. package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
  159. package/dist/profiles/intuitionistic-nj/formula.js +99 -0
  160. package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
  161. package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
  162. package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
  163. package/dist/profiles/intuitionistic-nj/index.js +24 -0
  164. package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
  165. package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
  166. package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
  167. package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
  168. package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
  169. package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
  170. package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
  171. package/dist/profiles/intuitionistic-nj/prover.js +418 -0
  172. package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
  173. package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
  174. package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
  175. package/dist/profiles/intuitionistic-nj/types.js +21 -0
  176. package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
  177. package/dist/profiles/ltl-sat/index.d.ts +4 -0
  178. package/dist/profiles/ltl-sat/index.d.ts.map +1 -0
  179. package/dist/profiles/ltl-sat/index.js +40 -0
  180. package/dist/profiles/ltl-sat/index.js.map +1 -0
  181. package/dist/profiles/ltl-sat/sat.d.ts +8 -0
  182. package/dist/profiles/ltl-sat/sat.d.ts.map +1 -0
  183. package/dist/profiles/ltl-sat/sat.js +140 -0
  184. package/dist/profiles/ltl-sat/sat.js.map +1 -0
  185. package/dist/profiles/ltl-sat/tableau.d.ts +19 -0
  186. package/dist/profiles/ltl-sat/tableau.d.ts.map +1 -0
  187. package/dist/profiles/ltl-sat/tableau.js +358 -0
  188. package/dist/profiles/ltl-sat/tableau.js.map +1 -0
  189. package/dist/profiles/ltl-sat/types.d.ts +52 -0
  190. package/dist/profiles/ltl-sat/types.d.ts.map +1 -0
  191. package/dist/profiles/ltl-sat/types.js +101 -0
  192. package/dist/profiles/ltl-sat/types.js.map +1 -0
  193. package/dist/profiles/many-valued/index.d.ts +39 -0
  194. package/dist/profiles/many-valued/index.d.ts.map +1 -0
  195. package/dist/profiles/many-valued/index.js +250 -0
  196. package/dist/profiles/many-valued/index.js.map +1 -0
  197. package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
  198. package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
  199. package/dist/profiles/modal-frame-axioms/formula.js +158 -0
  200. package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
  201. package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
  202. package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
  203. package/dist/profiles/modal-frame-axioms/index.js +41 -0
  204. package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
  205. package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
  206. package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
  207. package/dist/profiles/modal-frame-axioms/systems.js +96 -0
  208. package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
  209. package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
  210. package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
  211. package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
  212. package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
  213. package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
  214. package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
  215. package/dist/profiles/modal-frame-axioms/types.js +27 -0
  216. package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
  217. package/dist/profiles/sequent-g3/index.d.ts +5 -0
  218. package/dist/profiles/sequent-g3/index.d.ts.map +1 -0
  219. package/dist/profiles/sequent-g3/index.js +23 -0
  220. package/dist/profiles/sequent-g3/index.js.map +1 -0
  221. package/dist/profiles/sequent-g3/latex.d.ts +7 -0
  222. package/dist/profiles/sequent-g3/latex.d.ts.map +1 -0
  223. package/dist/profiles/sequent-g3/latex.js +107 -0
  224. package/dist/profiles/sequent-g3/latex.js.map +1 -0
  225. package/dist/profiles/sequent-g3/normalize.d.ts +15 -0
  226. package/dist/profiles/sequent-g3/normalize.d.ts.map +1 -0
  227. package/dist/profiles/sequent-g3/normalize.js +121 -0
  228. package/dist/profiles/sequent-g3/normalize.js.map +1 -0
  229. package/dist/profiles/sequent-g3/prover.d.ts +16 -0
  230. package/dist/profiles/sequent-g3/prover.d.ts.map +1 -0
  231. package/dist/profiles/sequent-g3/prover.js +348 -0
  232. package/dist/profiles/sequent-g3/prover.js.map +1 -0
  233. package/dist/profiles/sequent-g3/types.d.ts +30 -0
  234. package/dist/profiles/sequent-g3/types.d.ts.map +1 -0
  235. package/dist/profiles/sequent-g3/types.js +16 -0
  236. package/dist/profiles/sequent-g3/types.js.map +1 -0
  237. package/dist/profiles/substructural/index.d.ts +4 -0
  238. package/dist/profiles/substructural/index.d.ts.map +1 -0
  239. package/dist/profiles/substructural/index.js +22 -0
  240. package/dist/profiles/substructural/index.js.map +1 -0
  241. package/dist/profiles/substructural/prover.d.ts +13 -0
  242. package/dist/profiles/substructural/prover.d.ts.map +1 -0
  243. package/dist/profiles/substructural/prover.js +481 -0
  244. package/dist/profiles/substructural/prover.js.map +1 -0
  245. package/dist/profiles/substructural/types.d.ts +72 -0
  246. package/dist/profiles/substructural/types.d.ts.map +1 -0
  247. package/dist/profiles/substructural/types.js +27 -0
  248. package/dist/profiles/substructural/types.js.map +1 -0
  249. package/dist/runtime/abduction/entails.d.ts +21 -0
  250. package/dist/runtime/abduction/entails.d.ts.map +1 -0
  251. package/dist/runtime/abduction/entails.js +308 -0
  252. package/dist/runtime/abduction/entails.js.map +1 -0
  253. package/dist/runtime/abduction/find.d.ts +18 -0
  254. package/dist/runtime/abduction/find.d.ts.map +1 -0
  255. package/dist/runtime/abduction/find.js +202 -0
  256. package/dist/runtime/abduction/find.js.map +1 -0
  257. package/dist/runtime/abduction/index.d.ts +4 -0
  258. package/dist/runtime/abduction/index.d.ts.map +1 -0
  259. package/dist/runtime/abduction/index.js +26 -0
  260. package/dist/runtime/abduction/index.js.map +1 -0
  261. package/dist/runtime/abduction/types.d.ts +78 -0
  262. package/dist/runtime/abduction/types.d.ts.map +1 -0
  263. package/dist/runtime/abduction/types.js +23 -0
  264. package/dist/runtime/abduction/types.js.map +1 -0
  265. package/dist/runtime/bayesian/factor.d.ts +22 -0
  266. package/dist/runtime/bayesian/factor.d.ts.map +1 -0
  267. package/dist/runtime/bayesian/factor.js +249 -0
  268. package/dist/runtime/bayesian/factor.js.map +1 -0
  269. package/dist/runtime/bayesian/index.d.ts +3 -0
  270. package/dist/runtime/bayesian/index.d.ts.map +1 -0
  271. package/dist/runtime/bayesian/index.js +25 -0
  272. package/dist/runtime/bayesian/index.js.map +1 -0
  273. package/dist/runtime/bayesian/inference.d.ts +6 -0
  274. package/dist/runtime/bayesian/inference.d.ts.map +1 -0
  275. package/dist/runtime/bayesian/inference.js +260 -0
  276. package/dist/runtime/bayesian/inference.js.map +1 -0
  277. package/dist/runtime/bayesian/types.d.ts +19 -0
  278. package/dist/runtime/bayesian/types.d.ts.map +1 -0
  279. package/dist/runtime/bayesian/types.js +9 -0
  280. package/dist/runtime/bayesian/types.js.map +1 -0
  281. package/dist/runtime/bisimulation/index.d.ts +4 -0
  282. package/dist/runtime/bisimulation/index.d.ts.map +1 -0
  283. package/dist/runtime/bisimulation/index.js +21 -0
  284. package/dist/runtime/bisimulation/index.js.map +1 -0
  285. package/dist/runtime/bisimulation/operations.d.ts +40 -0
  286. package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
  287. package/dist/runtime/bisimulation/operations.js +219 -0
  288. package/dist/runtime/bisimulation/operations.js.map +1 -0
  289. package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
  290. package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
  291. package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
  292. package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
  293. package/dist/runtime/bisimulation/types.d.ts +26 -0
  294. package/dist/runtime/bisimulation/types.d.ts.map +1 -0
  295. package/dist/runtime/bisimulation/types.js +22 -0
  296. package/dist/runtime/bisimulation/types.js.map +1 -0
  297. package/dist/runtime/countermodel-min/index.d.ts +3 -0
  298. package/dist/runtime/countermodel-min/index.d.ts.map +1 -0
  299. package/dist/runtime/countermodel-min/index.js +9 -0
  300. package/dist/runtime/countermodel-min/index.js.map +1 -0
  301. package/dist/runtime/countermodel-min/minimize.d.ts +17 -0
  302. package/dist/runtime/countermodel-min/minimize.d.ts.map +1 -0
  303. package/dist/runtime/countermodel-min/minimize.js +0 -0
  304. package/dist/runtime/countermodel-min/minimize.js.map +1 -0
  305. package/dist/runtime/countermodel-min/types.d.ts +40 -0
  306. package/dist/runtime/countermodel-min/types.d.ts.map +1 -0
  307. package/dist/runtime/countermodel-min/types.js +6 -0
  308. package/dist/runtime/countermodel-min/types.js.map +1 -0
  309. package/dist/runtime/fca/context.d.ts +46 -0
  310. package/dist/runtime/fca/context.d.ts.map +1 -0
  311. package/dist/runtime/fca/context.js +155 -0
  312. package/dist/runtime/fca/context.js.map +1 -0
  313. package/dist/runtime/fca/implications.d.ts +10 -0
  314. package/dist/runtime/fca/implications.d.ts.map +1 -0
  315. package/dist/runtime/fca/implications.js +33 -0
  316. package/dist/runtime/fca/implications.js.map +1 -0
  317. package/dist/runtime/fca/index.d.ts +6 -0
  318. package/dist/runtime/fca/index.d.ts.map +1 -0
  319. package/dist/runtime/fca/index.js +39 -0
  320. package/dist/runtime/fca/index.js.map +1 -0
  321. package/dist/runtime/fca/lattice.d.ts +10 -0
  322. package/dist/runtime/fca/lattice.d.ts.map +1 -0
  323. package/dist/runtime/fca/lattice.js +86 -0
  324. package/dist/runtime/fca/lattice.js.map +1 -0
  325. package/dist/runtime/fca/next-closure.d.ts +12 -0
  326. package/dist/runtime/fca/next-closure.d.ts.map +1 -0
  327. package/dist/runtime/fca/next-closure.js +99 -0
  328. package/dist/runtime/fca/next-closure.js.map +1 -0
  329. package/dist/runtime/fca/types.d.ts +31 -0
  330. package/dist/runtime/fca/types.d.ts.map +1 -0
  331. package/dist/runtime/fca/types.js +30 -0
  332. package/dist/runtime/fca/types.js.map +1 -0
  333. package/dist/runtime/mus/extract.d.ts +34 -0
  334. package/dist/runtime/mus/extract.d.ts.map +1 -0
  335. package/dist/runtime/mus/extract.js +243 -0
  336. package/dist/runtime/mus/extract.js.map +1 -0
  337. package/dist/runtime/mus/index.d.ts +4 -0
  338. package/dist/runtime/mus/index.d.ts.map +1 -0
  339. package/dist/runtime/mus/index.js +12 -0
  340. package/dist/runtime/mus/index.js.map +1 -0
  341. package/dist/runtime/mus/quickxplain.d.ts +10 -0
  342. package/dist/runtime/mus/quickxplain.d.ts.map +1 -0
  343. package/dist/runtime/mus/quickxplain.js +100 -0
  344. package/dist/runtime/mus/quickxplain.js.map +1 -0
  345. package/dist/runtime/mus/types.d.ts +59 -0
  346. package/dist/runtime/mus/types.d.ts.map +1 -0
  347. package/dist/runtime/mus/types.js +20 -0
  348. package/dist/runtime/mus/types.js.map +1 -0
  349. package/dist/runtime/proof-minify/index.d.ts +3 -0
  350. package/dist/runtime/proof-minify/index.d.ts.map +1 -0
  351. package/dist/runtime/proof-minify/index.js +13 -0
  352. package/dist/runtime/proof-minify/index.js.map +1 -0
  353. package/dist/runtime/proof-minify/minify.d.ts +13 -0
  354. package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
  355. package/dist/runtime/proof-minify/minify.js +540 -0
  356. package/dist/runtime/proof-minify/minify.js.map +1 -0
  357. package/dist/runtime/proof-minify/types.d.ts +89 -0
  358. package/dist/runtime/proof-minify/types.d.ts.map +1 -0
  359. package/dist/runtime/proof-minify/types.js +16 -0
  360. package/dist/runtime/proof-minify/types.js.map +1 -0
  361. package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
  362. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
  363. package/dist/runtime/symbolic-diff/constructors.js +75 -0
  364. package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
  365. package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
  366. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
  367. package/dist/runtime/symbolic-diff/differentiate.js +107 -0
  368. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
  369. package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
  370. package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
  371. package/dist/runtime/symbolic-diff/evaluate.js +47 -0
  372. package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
  373. package/dist/runtime/symbolic-diff/index.d.ts +9 -0
  374. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
  375. package/dist/runtime/symbolic-diff/index.js +34 -0
  376. package/dist/runtime/symbolic-diff/index.js.map +1 -0
  377. package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
  378. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
  379. package/dist/runtime/symbolic-diff/parse.js +206 -0
  380. package/dist/runtime/symbolic-diff/parse.js.map +1 -0
  381. package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
  382. package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
  383. package/dist/runtime/symbolic-diff/simplify.js +214 -0
  384. package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
  385. package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
  386. package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
  387. package/dist/runtime/symbolic-diff/stringify.js +69 -0
  388. package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
  389. package/dist/runtime/symbolic-diff/types.d.ts +35 -0
  390. package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
  391. package/dist/runtime/symbolic-diff/types.js +9 -0
  392. package/dist/runtime/symbolic-diff/types.js.map +1 -0
  393. package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
  394. package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
  395. package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
  396. package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
  397. package/dist/runtime/term-rewriting/index.d.ts +9 -0
  398. package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
  399. package/dist/runtime/term-rewriting/index.js +38 -0
  400. package/dist/runtime/term-rewriting/index.js.map +1 -0
  401. package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
  402. package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
  403. package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
  404. package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
  405. package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
  406. package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
  407. package/dist/runtime/term-rewriting/lpo.js +158 -0
  408. package/dist/runtime/term-rewriting/lpo.js.map +1 -0
  409. package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
  410. package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
  411. package/dist/runtime/term-rewriting/rewrite.js +189 -0
  412. package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
  413. package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
  414. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
  415. package/dist/runtime/term-rewriting/term-utils.js +360 -0
  416. package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
  417. package/dist/runtime/term-rewriting/types.d.ts +66 -0
  418. package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
  419. package/dist/runtime/term-rewriting/types.js +21 -0
  420. package/dist/runtime/term-rewriting/types.js.map +1 -0
  421. package/dist/solver/cdcl-v2-incremental/index.d.ts +3 -0
  422. package/dist/solver/cdcl-v2-incremental/index.d.ts.map +1 -0
  423. package/dist/solver/cdcl-v2-incremental/index.js +16 -0
  424. package/dist/solver/cdcl-v2-incremental/index.js.map +1 -0
  425. package/dist/solver/cdcl-v2-incremental/solver.d.ts +83 -0
  426. package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -0
  427. package/dist/solver/cdcl-v2-incremental/solver.js +727 -0
  428. package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -0
  429. package/dist/solver/cdcl-v2-incremental/types.d.ts +47 -0
  430. package/dist/solver/cdcl-v2-incremental/types.d.ts.map +1 -0
  431. package/dist/solver/cdcl-v2-incremental/types.js +13 -0
  432. package/dist/solver/cdcl-v2-incremental/types.js.map +1 -0
  433. package/dist/tests/abduction/abduction.test.d.ts +2 -0
  434. package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
  435. package/dist/tests/abduction/abduction.test.js +380 -0
  436. package/dist/tests/abduction/abduction.test.js.map +1 -0
  437. package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
  438. package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
  439. package/dist/tests/bayesian/bayesian.test.js +328 -0
  440. package/dist/tests/bayesian/bayesian.test.js.map +1 -0
  441. package/dist/tests/belief-revision/agm.test.d.ts +2 -0
  442. package/dist/tests/belief-revision/agm.test.d.ts.map +1 -0
  443. package/dist/tests/belief-revision/agm.test.js +173 -0
  444. package/dist/tests/belief-revision/agm.test.js.map +1 -0
  445. package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
  446. package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
  447. package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
  448. package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
  449. package/dist/tests/countermodel-min/minimize.test.d.ts +2 -0
  450. package/dist/tests/countermodel-min/minimize.test.d.ts.map +1 -0
  451. package/dist/tests/countermodel-min/minimize.test.js +241 -0
  452. package/dist/tests/countermodel-min/minimize.test.js.map +1 -0
  453. package/dist/tests/ctl/check.test.d.ts +2 -0
  454. package/dist/tests/ctl/check.test.d.ts.map +1 -0
  455. package/dist/tests/ctl/check.test.js +337 -0
  456. package/dist/tests/ctl/check.test.js.map +1 -0
  457. package/dist/tests/curry-howard/infer.test.d.ts +2 -0
  458. package/dist/tests/curry-howard/infer.test.d.ts.map +1 -0
  459. package/dist/tests/curry-howard/infer.test.js +93 -0
  460. package/dist/tests/curry-howard/infer.test.js.map +1 -0
  461. package/dist/tests/curry-howard/proof.test.d.ts +2 -0
  462. package/dist/tests/curry-howard/proof.test.d.ts.map +1 -0
  463. package/dist/tests/curry-howard/proof.test.js +105 -0
  464. package/dist/tests/curry-howard/proof.test.js.map +1 -0
  465. package/dist/tests/curry-howard/reduce.test.d.ts +2 -0
  466. package/dist/tests/curry-howard/reduce.test.d.ts.map +1 -0
  467. package/dist/tests/curry-howard/reduce.test.js +109 -0
  468. package/dist/tests/curry-howard/reduce.test.js.map +1 -0
  469. package/dist/tests/default-logic/extensions.test.d.ts +2 -0
  470. package/dist/tests/default-logic/extensions.test.d.ts.map +1 -0
  471. package/dist/tests/default-logic/extensions.test.js +323 -0
  472. package/dist/tests/default-logic/extensions.test.js.map +1 -0
  473. package/dist/tests/description-logic/alc.test.d.ts +2 -0
  474. package/dist/tests/description-logic/alc.test.d.ts.map +1 -0
  475. package/dist/tests/description-logic/alc.test.js +253 -0
  476. package/dist/tests/description-logic/alc.test.js.map +1 -0
  477. package/dist/tests/fca/fca.test.d.ts +2 -0
  478. package/dist/tests/fca/fca.test.d.ts.map +1 -0
  479. package/dist/tests/fca/fca.test.js +317 -0
  480. package/dist/tests/fca/fca.test.js.map +1 -0
  481. package/dist/tests/fol-prover-equality/prove.test.d.ts +2 -0
  482. package/dist/tests/fol-prover-equality/prove.test.d.ts.map +1 -0
  483. package/dist/tests/fol-prover-equality/prove.test.js +179 -0
  484. package/dist/tests/fol-prover-equality/prove.test.js.map +1 -0
  485. package/dist/tests/hybrid-logic/semantics.test.d.ts +2 -0
  486. package/dist/tests/hybrid-logic/semantics.test.d.ts.map +1 -0
  487. package/dist/tests/hybrid-logic/semantics.test.js +169 -0
  488. package/dist/tests/hybrid-logic/semantics.test.js.map +1 -0
  489. package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
  490. package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
  491. package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
  492. package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
  493. package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
  494. package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
  495. package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
  496. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
  497. package/dist/tests/ltl-sat/sat.test.d.ts +2 -0
  498. package/dist/tests/ltl-sat/sat.test.d.ts.map +1 -0
  499. package/dist/tests/ltl-sat/sat.test.js +160 -0
  500. package/dist/tests/ltl-sat/sat.test.js.map +1 -0
  501. package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
  502. package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
  503. package/dist/tests/many-valued/many-valued.test.js +150 -0
  504. package/dist/tests/many-valued/many-valued.test.js.map +1 -0
  505. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
  506. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
  507. package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
  508. package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
  509. package/dist/tests/mus/extract.test.d.ts +2 -0
  510. package/dist/tests/mus/extract.test.d.ts.map +1 -0
  511. package/dist/tests/mus/extract.test.js +352 -0
  512. package/dist/tests/mus/extract.test.js.map +1 -0
  513. package/dist/tests/proof-minify/minify.test.d.ts +2 -0
  514. package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
  515. package/dist/tests/proof-minify/minify.test.js +281 -0
  516. package/dist/tests/proof-minify/minify.test.js.map +1 -0
  517. package/dist/tests/sat-v2-incremental/basic.test.d.ts +2 -0
  518. package/dist/tests/sat-v2-incremental/basic.test.d.ts.map +1 -0
  519. package/dist/tests/sat-v2-incremental/basic.test.js +352 -0
  520. package/dist/tests/sat-v2-incremental/basic.test.js.map +1 -0
  521. package/dist/tests/sequent-g3/prover.test.d.ts +2 -0
  522. package/dist/tests/sequent-g3/prover.test.d.ts.map +1 -0
  523. package/dist/tests/sequent-g3/prover.test.js +205 -0
  524. package/dist/tests/sequent-g3/prover.test.js.map +1 -0
  525. package/dist/tests/substructural/prover.test.d.ts +2 -0
  526. package/dist/tests/substructural/prover.test.d.ts.map +1 -0
  527. package/dist/tests/substructural/prover.test.js +271 -0
  528. package/dist/tests/substructural/prover.test.js.map +1 -0
  529. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
  530. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
  531. package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
  532. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
  533. package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
  534. package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
  535. package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
  536. package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
  537. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
  538. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
  539. package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
  540. package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
  541. package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
  542. package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
  543. package/dist/tests/term-rewriting/lpo.test.js +57 -0
  544. package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
  545. package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
  546. package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
  547. package/dist/tests/term-rewriting/rewrite.test.js +56 -0
  548. package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
  549. package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
  550. package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
  551. package/dist/tests/term-rewriting/term-utils.test.js +58 -0
  552. package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
  553. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ import type { FormalContext } from './types';
2
+ /**
3
+ * Construye un contexto formal a partir de listas de objetos, atributos y
4
+ * la lista bruta de incidencias.
5
+ *
6
+ * Valida:
7
+ * - Los identificadores no pueden contener el separador '|'.
8
+ * - No se admiten objetos o atributos duplicados.
9
+ * - Cada incidencia [g, m] debe referirse a objetos/atributos declarados.
10
+ */
11
+ export declare function createContext(objects: string[], attributes: string[], incidence: Array<[string, string]>): FormalContext;
12
+ /**
13
+ * Indica si el objeto `g` tiene el atributo `m` en el contexto.
14
+ * O(1) gracias a la representación como Set de pares codificados.
15
+ */
16
+ export declare function hasIncidence(ctx: FormalContext, g: string, m: string): boolean;
17
+ /**
18
+ * Operador polar B → B' (atributos → objetos).
19
+ * Devuelve el conjunto de objetos que poseen TODOS los atributos de `attrs`.
20
+ * Si `attrs` es vacío, el resultado es G (convención: ∀ trivialmente cierto).
21
+ */
22
+ export declare function derivativeObjects(ctx: FormalContext, attrs: Set<string>): Set<string>;
23
+ /**
24
+ * Operador polar A → A' (objetos → atributos).
25
+ * Devuelve los atributos compartidos por TODOS los objetos de `objs`.
26
+ * Si `objs` es vacío, el resultado es M.
27
+ */
28
+ export declare function derivativeAttributes(ctx: FormalContext, objs: Set<string>): Set<string>;
29
+ /**
30
+ * Verifica si (extent, intent) es un concepto formal en `ctx`:
31
+ * extent' = intent y intent' = extent.
32
+ *
33
+ * Equivale a verificar la doble clausura, pero se computa directo desde la
34
+ * relación de incidencia, sin acumular intermedios.
35
+ */
36
+ export declare function isConcept(ctx: FormalContext, extent: Set<string>, intent: Set<string>): boolean;
37
+ /**
38
+ * Clausura de Galois sobre intents: B → B'' = (B')'.
39
+ * Idempotente: closeIntent(closeIntent(B)) = closeIntent(B).
40
+ */
41
+ export declare function closeIntent(ctx: FormalContext, intent: Set<string>): Set<string>;
42
+ /**
43
+ * Clausura sobre extents: A → A'' = (A')'.
44
+ */
45
+ export declare function closeExtent(ctx: FormalContext, extent: Set<string>): Set<string>;
46
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/runtime/fca/context.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACjC,aAAa,CAsCf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAarF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAavF;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAI/F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAEhF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAEhF"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // FCA — construcción del contexto y operadores polares de Galois.
4
+ // ============================================================
5
+ // Aquí viven las primitivas de bajo nivel: construir K = (G, M, I) y
6
+ // computar las dos derivaciones A → A' y B → B' que sustentan toda la
7
+ // teoría (definición de concepto, clausura, implicación).
8
+ //
9
+ // Notación interna: codificamos un par (g, m) ∈ I como la cadena
10
+ // "g|m". El delimitador '|' es seguro porque obligamos que ningún
11
+ // identificador lo contenga (createContext lo valida); de lo contrario
12
+ // usaríamos un Map<string, Set<string>>.
13
+ // ============================================================
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createContext = createContext;
16
+ exports.hasIncidence = hasIncidence;
17
+ exports.derivativeObjects = derivativeObjects;
18
+ exports.derivativeAttributes = derivativeAttributes;
19
+ exports.isConcept = isConcept;
20
+ exports.closeIntent = closeIntent;
21
+ exports.closeExtent = closeExtent;
22
+ const SEP = '|';
23
+ function encode(obj, attr) {
24
+ return `${obj}${SEP}${attr}`;
25
+ }
26
+ /**
27
+ * Construye un contexto formal a partir de listas de objetos, atributos y
28
+ * la lista bruta de incidencias.
29
+ *
30
+ * Valida:
31
+ * - Los identificadores no pueden contener el separador '|'.
32
+ * - No se admiten objetos o atributos duplicados.
33
+ * - Cada incidencia [g, m] debe referirse a objetos/atributos declarados.
34
+ */
35
+ function createContext(objects, attributes, incidence) {
36
+ const objSet = new Set();
37
+ for (const o of objects) {
38
+ if (o.includes(SEP)) {
39
+ throw new Error(`createContext: objeto "${o}" contiene el separador reservado "${SEP}"`);
40
+ }
41
+ if (objSet.has(o)) {
42
+ throw new Error(`createContext: objeto duplicado "${o}"`);
43
+ }
44
+ objSet.add(o);
45
+ }
46
+ const attrSet = new Set();
47
+ for (const a of attributes) {
48
+ if (a.includes(SEP)) {
49
+ throw new Error(`createContext: atributo "${a}" contiene el separador reservado "${SEP}"`);
50
+ }
51
+ if (attrSet.has(a)) {
52
+ throw new Error(`createContext: atributo duplicado "${a}"`);
53
+ }
54
+ attrSet.add(a);
55
+ }
56
+ const inc = new Set();
57
+ for (const [g, m] of incidence) {
58
+ if (!objSet.has(g)) {
59
+ throw new Error(`createContext: incidencia refiere objeto desconocido "${g}"`);
60
+ }
61
+ if (!attrSet.has(m)) {
62
+ throw new Error(`createContext: incidencia refiere atributo desconocido "${m}"`);
63
+ }
64
+ inc.add(encode(g, m));
65
+ }
66
+ return {
67
+ objects: [...objects],
68
+ attributes: [...attributes],
69
+ incidence: inc,
70
+ };
71
+ }
72
+ /**
73
+ * Indica si el objeto `g` tiene el atributo `m` en el contexto.
74
+ * O(1) gracias a la representación como Set de pares codificados.
75
+ */
76
+ function hasIncidence(ctx, g, m) {
77
+ return ctx.incidence.has(encode(g, m));
78
+ }
79
+ /**
80
+ * Operador polar B → B' (atributos → objetos).
81
+ * Devuelve el conjunto de objetos que poseen TODOS los atributos de `attrs`.
82
+ * Si `attrs` es vacío, el resultado es G (convención: ∀ trivialmente cierto).
83
+ */
84
+ function derivativeObjects(ctx, attrs) {
85
+ const out = new Set();
86
+ for (const g of ctx.objects) {
87
+ let ok = true;
88
+ for (const m of attrs) {
89
+ if (!hasIncidence(ctx, g, m)) {
90
+ ok = false;
91
+ break;
92
+ }
93
+ }
94
+ if (ok)
95
+ out.add(g);
96
+ }
97
+ return out;
98
+ }
99
+ /**
100
+ * Operador polar A → A' (objetos → atributos).
101
+ * Devuelve los atributos compartidos por TODOS los objetos de `objs`.
102
+ * Si `objs` es vacío, el resultado es M.
103
+ */
104
+ function derivativeAttributes(ctx, objs) {
105
+ const out = new Set();
106
+ for (const m of ctx.attributes) {
107
+ let ok = true;
108
+ for (const g of objs) {
109
+ if (!hasIncidence(ctx, g, m)) {
110
+ ok = false;
111
+ break;
112
+ }
113
+ }
114
+ if (ok)
115
+ out.add(m);
116
+ }
117
+ return out;
118
+ }
119
+ /**
120
+ * Verifica si (extent, intent) es un concepto formal en `ctx`:
121
+ * extent' = intent y intent' = extent.
122
+ *
123
+ * Equivale a verificar la doble clausura, pero se computa directo desde la
124
+ * relación de incidencia, sin acumular intermedios.
125
+ */
126
+ function isConcept(ctx, extent, intent) {
127
+ const intentFromExtent = derivativeAttributes(ctx, extent);
128
+ const extentFromIntent = derivativeObjects(ctx, intent);
129
+ return setsEqual(intentFromExtent, intent) && setsEqual(extentFromIntent, extent);
130
+ }
131
+ /**
132
+ * Clausura de Galois sobre intents: B → B'' = (B')'.
133
+ * Idempotente: closeIntent(closeIntent(B)) = closeIntent(B).
134
+ */
135
+ function closeIntent(ctx, intent) {
136
+ return derivativeAttributes(ctx, derivativeObjects(ctx, intent));
137
+ }
138
+ /**
139
+ * Clausura sobre extents: A → A'' = (A')'.
140
+ */
141
+ function closeExtent(ctx, extent) {
142
+ return derivativeObjects(ctx, derivativeAttributes(ctx, extent));
143
+ }
144
+ // ----------------------------------------------------------------
145
+ // helpers
146
+ // ----------------------------------------------------------------
147
+ function setsEqual(a, b) {
148
+ if (a.size !== b.size)
149
+ return false;
150
+ for (const x of a)
151
+ if (!b.has(x))
152
+ return false;
153
+ return true;
154
+ }
155
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/runtime/fca/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FormalContext } from './types';
2
+ /**
3
+ * Devuelve `true` si en `ctx` la implicación `premise → conclusion` es
4
+ * válida: todo objeto que satisface todos los atributos de `premise`
5
+ * satisface también todos los de `conclusion`.
6
+ *
7
+ * Equivalencia formal: premise → conclusion ⇔ conclusion ⊆ premise''.
8
+ */
9
+ export declare function impliesAll(ctx: FormalContext, premise: Set<string>, conclusion: Set<string>): boolean;
10
+ //# sourceMappingURL=implications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implications.d.ts","sourceRoot":"","sources":["../../../src/runtime/fca/implications.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,OAAO,CAMT"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // FCA — implicaciones de atributos.
4
+ // ============================================================
5
+ // Una implicación P → C entre subconjuntos de atributos es válida en el
6
+ // contexto K sii todo objeto que tiene todos los atributos de P tiene
7
+ // también todos los atributos de C. Equivale a:
8
+ // P → C válida en K ⇔ C ⊆ P'' (P'' = closeIntent(P))
9
+ // que en términos de extents es: P' ⊆ C'.
10
+ //
11
+ // Esto es la base del cálculo Armstrong/Duquenne-Guigues para bases de
12
+ // implicaciones. Aquí exponemos solo el test de validez puntual; la
13
+ // extracción de la base canónica se deja a un sprint posterior.
14
+ // ============================================================
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.impliesAll = impliesAll;
17
+ const context_1 = require("./context");
18
+ /**
19
+ * Devuelve `true` si en `ctx` la implicación `premise → conclusion` es
20
+ * válida: todo objeto que satisface todos los atributos de `premise`
21
+ * satisface también todos los de `conclusion`.
22
+ *
23
+ * Equivalencia formal: premise → conclusion ⇔ conclusion ⊆ premise''.
24
+ */
25
+ function impliesAll(ctx, premise, conclusion) {
26
+ const closure = (0, context_1.closeIntent)(ctx, premise);
27
+ for (const m of conclusion) {
28
+ if (!closure.has(m))
29
+ return false;
30
+ }
31
+ return true;
32
+ }
33
+ //# sourceMappingURL=implications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implications.js","sourceRoot":"","sources":["../../../src/runtime/fca/implications.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oCAAoC;AACpC,+DAA+D;AAC/D,wEAAwE;AACxE,sEAAsE;AACtE,gDAAgD;AAChD,2DAA2D;AAC3D,0CAA0C;AAC1C,EAAE;AACF,uEAAuE;AACvE,oEAAoE;AACpE,gEAAgE;AAChE,+DAA+D;;AAY/D,gCAUC;AApBD,uCAAwC;AAGxC;;;;;;GAMG;AACH,SAAgB,UAAU,CACxB,GAAkB,EAClB,OAAoB,EACpB,UAAuB;IAEvB,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type { FormalContext, FormalConcept, HasseLattice } from './types';
2
+ export { createContext, derivativeObjects, derivativeAttributes, isConcept, closeIntent, closeExtent, hasIncidence, } from './context';
3
+ export { allConcepts } from './next-closure';
4
+ export { lattice } from './lattice';
5
+ export { impliesAll } from './implications';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/fca/index.ts"],"names":[],"mappings":"AAsBA,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Formal Concept Analysis — barrel público.
4
+ // ============================================================
5
+ // Marco matemático (Wille 1982, Ganter & Wille 1999) para extraer un
6
+ // retículo de conceptos a partir de una relación binaria objeto-atributo.
7
+ //
8
+ // API mínima:
9
+ // createContext(G, M, I) → FormalContext
10
+ // derivativeObjects(K, B) → B' (objetos)
11
+ // derivativeAttributes(K, A) → A' (atributos)
12
+ // isConcept(K, A, B) → (A, B) ∈ B(K)?
13
+ // closeIntent(K, B) → B'' (clausura Galois sobre atributos)
14
+ // allConcepts(K) → todos los conceptos (Next Closure)
15
+ // lattice(concepts) → diagrama de Hasse (aristas cobertura)
16
+ // impliesAll(K, P, C) → ¿P → C válida en K?
17
+ //
18
+ // Uso típico:
19
+ // const K = createContext(objs, attrs, pairs);
20
+ // const concepts = allConcepts(K);
21
+ // const hasse = lattice(concepts);
22
+ // ============================================================
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.impliesAll = exports.lattice = exports.allConcepts = exports.hasIncidence = exports.closeExtent = exports.closeIntent = exports.isConcept = exports.derivativeAttributes = exports.derivativeObjects = exports.createContext = void 0;
25
+ var context_1 = require("./context");
26
+ Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return context_1.createContext; } });
27
+ Object.defineProperty(exports, "derivativeObjects", { enumerable: true, get: function () { return context_1.derivativeObjects; } });
28
+ Object.defineProperty(exports, "derivativeAttributes", { enumerable: true, get: function () { return context_1.derivativeAttributes; } });
29
+ Object.defineProperty(exports, "isConcept", { enumerable: true, get: function () { return context_1.isConcept; } });
30
+ Object.defineProperty(exports, "closeIntent", { enumerable: true, get: function () { return context_1.closeIntent; } });
31
+ Object.defineProperty(exports, "closeExtent", { enumerable: true, get: function () { return context_1.closeExtent; } });
32
+ Object.defineProperty(exports, "hasIncidence", { enumerable: true, get: function () { return context_1.hasIncidence; } });
33
+ var next_closure_1 = require("./next-closure");
34
+ Object.defineProperty(exports, "allConcepts", { enumerable: true, get: function () { return next_closure_1.allConcepts; } });
35
+ var lattice_1 = require("./lattice");
36
+ Object.defineProperty(exports, "lattice", { enumerable: true, get: function () { return lattice_1.lattice; } });
37
+ var implications_1 = require("./implications");
38
+ Object.defineProperty(exports, "impliesAll", { enumerable: true, get: function () { return implications_1.impliesAll; } });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/fca/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,+CAA+C;AAC/C,+DAA+D;AAC/D,qEAAqE;AACrE,0EAA0E;AAC1E,EAAE;AACF,cAAc;AACd,kDAAkD;AAClD,mDAAmD;AACnD,qDAAqD;AACrD,mDAAmD;AACnD,2EAA2E;AAC3E,uEAAuE;AACvE,0EAA0E;AAC1E,wDAAwD;AACxD,EAAE;AACF,cAAc;AACd,iDAAiD;AACjD,qCAAqC;AACrC,qCAAqC;AACrC,+DAA+D;;;AAG/D,qCAQmB;AAPjB,wGAAA,aAAa,OAAA;AACb,4GAAA,iBAAiB,OAAA;AACjB,+GAAA,oBAAoB,OAAA;AACpB,oGAAA,SAAS,OAAA;AACT,sGAAA,WAAW,OAAA;AACX,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AAEd,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA"}
@@ -0,0 +1,10 @@
1
+ import type { FormalConcept, HasseLattice } from './types';
2
+ /**
3
+ * Computa el diagrama de Hasse del concept lattice como lista de aristas
4
+ * de cobertura `[child, parent]` (índices en `concepts`).
5
+ *
6
+ * La orientación es de "específico" a "general":
7
+ * `[i, j]` significa `extent_i ⊊ extent_j` y la inclusión es inmediata.
8
+ */
9
+ export declare function lattice(concepts: FormalConcept[]): HasseLattice;
10
+ //# sourceMappingURL=lattice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../../../src/runtime/fca/lattice.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAY3D;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,YAAY,CAyC/D"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // FCA — diagrama de Hasse del concept lattice.
4
+ // ============================================================
5
+ // Para un conjunto B(K) de conceptos ordenado por inclusión de extent
6
+ // (A1, B1) ≤ (A2, B2) ⇔ A1 ⊆ A2
7
+ // la relación de cobertura es:
8
+ // c ≺ p sii c < p y no existe q con c < q < p.
9
+ //
10
+ // El "diagrama de Hasse" representa B(K) como un DAG con sólo las aristas
11
+ // de cobertura. Implementación O(|B(K)|² · |M|):
12
+ // 1. Por cada par (i, j) con i ≠ j, marcar i < j ⇔ extent_i ⊊ extent_j.
13
+ // 2. Para cada arista i < j, ver si existe k con i < k < j; si no,
14
+ // es cobertura.
15
+ //
16
+ // Para retículos de hasta unos pocos miles de conceptos esto es práctico;
17
+ // para tamaños mayores conviene un algoritmo dedicado (e.g. Lindig).
18
+ // ============================================================
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.lattice = lattice;
21
+ function isSubset(a, b) {
22
+ if (a.size > b.size)
23
+ return false;
24
+ for (const x of a)
25
+ if (!b.has(x))
26
+ return false;
27
+ return true;
28
+ }
29
+ function isStrictSubset(a, b) {
30
+ return a.size < b.size && isSubset(a, b);
31
+ }
32
+ /**
33
+ * Computa el diagrama de Hasse del concept lattice como lista de aristas
34
+ * de cobertura `[child, parent]` (índices en `concepts`).
35
+ *
36
+ * La orientación es de "específico" a "general":
37
+ * `[i, j]` significa `extent_i ⊊ extent_j` y la inclusión es inmediata.
38
+ */
39
+ function lattice(concepts) {
40
+ const n = concepts.length;
41
+ // Pre-computar la matriz <. lt[i][j] = true ⇔ extent_i ⊊ extent_j.
42
+ const lt = Array.from({ length: n }, () => new Array(n).fill(false));
43
+ for (let i = 0; i < n; i++) {
44
+ const ci = concepts[i];
45
+ if (!ci)
46
+ continue;
47
+ for (let j = 0; j < n; j++) {
48
+ if (i === j)
49
+ continue;
50
+ const cj = concepts[j];
51
+ if (!cj)
52
+ continue;
53
+ if (isStrictSubset(ci.extent, cj.extent)) {
54
+ const row = lt[i];
55
+ if (row)
56
+ row[j] = true;
57
+ }
58
+ }
59
+ }
60
+ const edges = [];
61
+ for (let i = 0; i < n; i++) {
62
+ const row = lt[i];
63
+ if (!row)
64
+ continue;
65
+ for (let j = 0; j < n; j++) {
66
+ if (!row[j])
67
+ continue;
68
+ // ¿existe k con i < k < j? Si sí, (i,j) NO es cobertura.
69
+ let coversImmediately = true;
70
+ for (let k = 0; k < n; k++) {
71
+ if (k === i || k === j)
72
+ continue;
73
+ const rk = lt[i];
74
+ const rkj = lt[k];
75
+ if (rk && rkj && rk[k] && rkj[j]) {
76
+ coversImmediately = false;
77
+ break;
78
+ }
79
+ }
80
+ if (coversImmediately)
81
+ edges.push([i, j]);
82
+ }
83
+ }
84
+ return { edges };
85
+ }
86
+ //# sourceMappingURL=lattice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lattice.js","sourceRoot":"","sources":["../../../src/runtime/fca/lattice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { FormalConcept, FormalContext } from './types';
2
+ /**
3
+ * Enumera todos los conceptos formales de `ctx` mediante Next Closure.
4
+ *
5
+ * Garantías:
6
+ * - Cada concepto aparece exactamente una vez.
7
+ * - El orden de salida es lectic sobre intents (creciente).
8
+ * - Incluye el Top concept (G, G') y el Bottom concept (M', M) cuando
9
+ * existen como cerrados (siempre existen).
10
+ */
11
+ export declare function allConcepts(ctx: FormalContext): FormalConcept[];
12
+ //# sourceMappingURL=next-closure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-closure.d.ts","sourceRoot":"","sources":["../../../src/runtime/fca/next-closure.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAoD5D;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,EAAE,CAiB/D"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // FCA — Next Closure algorithm (Ganter, 1984).
4
+ // ============================================================
5
+ // Enumera todos los conjuntos cerrados de un operador de clausura
6
+ // (aquí, la clausura de intents B → B'') en orden lexicográfico
7
+ // respecto a un orden total fijado sobre M.
8
+ //
9
+ // Idea clave:
10
+ // 1. Fijamos M = {m_0, m_1, ..., m_{n-1}} con un orden total.
11
+ // 2. Para un conjunto cerrado B, calculamos el "siguiente" cerrado:
12
+ // para i desde n-1 hasta 0:
13
+ // - si m_i ∈ B, sáltalo;
14
+ // - sea C = closure( (B ∩ {m_0,...,m_{i-1}}) ∪ {m_i} ).
15
+ // - si C \ B no contiene ningún m_j con j < i, devolver C.
16
+ // Si ninguno funciona, terminamos.
17
+ // 3. Empezamos por closure(∅) (que es M', el intent del Top concept
18
+ // en su forma de atributos comunes a todos los objetos) y
19
+ // enumeramos sucesores hasta agotar.
20
+ //
21
+ // La complejidad es O(|B(K)| · |M|² · |G|) en peor caso, pero amortizado
22
+ // es excelente para contextos densos pequeños y medianos. La salida está
23
+ // libre de duplicados por construcción (cada cerrado se visita una sola
24
+ // vez gracias al test "C \ B no contiene m_j para j < i").
25
+ // ============================================================
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.allConcepts = allConcepts;
28
+ const context_1 = require("./context");
29
+ /**
30
+ * Compara dos subconjuntos de M en el orden "lectic" de Ganter, definido
31
+ * sobre la indexación posicional de `order`. NO usado externamente pero
32
+ * documentado: A <_i B ⇔ m_i ∈ B \ A y A ∩ {m_0,..,m_{i-1}} = B ∩ {m_0,..,m_{i-1}}.
33
+ *
34
+ * La función de sucesión usa una variante eficiente que no necesita
35
+ * comparar pares: solo verifica la condición de "no hay m_j más pequeño
36
+ * en la diferencia".
37
+ */
38
+ /**
39
+ * Devuelve el siguiente cerrado en orden lectic, o `null` si `current` ya
40
+ * es el último (closure(M) = M).
41
+ */
42
+ function nextClosure(ctx, order, current) {
43
+ for (let i = order.length - 1; i >= 0; i--) {
44
+ const mi = order[i];
45
+ if (mi === undefined)
46
+ continue;
47
+ if (current.has(mi))
48
+ continue;
49
+ // B^+ = (B ∩ {m_0,..,m_{i-1}}) ∪ {m_i}
50
+ const seed = new Set();
51
+ for (let j = 0; j < i; j++) {
52
+ const mj = order[j];
53
+ if (mj !== undefined && current.has(mj))
54
+ seed.add(mj);
55
+ }
56
+ seed.add(mi);
57
+ const closed = (0, context_1.closeIntent)(ctx, seed);
58
+ // Test lectic: el cerrado no debe contener m_j con j < i que no estuviera
59
+ // ya en current. Equivale a: (closed \ current) ∩ {m_0,...,m_{i-1}} = ∅.
60
+ let valid = true;
61
+ for (let j = 0; j < i; j++) {
62
+ const mj = order[j];
63
+ if (mj === undefined)
64
+ continue;
65
+ if (closed.has(mj) && !current.has(mj)) {
66
+ valid = false;
67
+ break;
68
+ }
69
+ }
70
+ if (valid)
71
+ return closed;
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Enumera todos los conceptos formales de `ctx` mediante Next Closure.
77
+ *
78
+ * Garantías:
79
+ * - Cada concepto aparece exactamente una vez.
80
+ * - El orden de salida es lectic sobre intents (creciente).
81
+ * - Incluye el Top concept (G, G') y el Bottom concept (M', M) cuando
82
+ * existen como cerrados (siempre existen).
83
+ */
84
+ function allConcepts(ctx) {
85
+ const order = [...ctx.attributes];
86
+ const concepts = [];
87
+ // Punto de arranque: clausura del conjunto vacío.
88
+ // ∅' = G (todos los objetos satisfacen trivialmente "ningún atributo"),
89
+ // luego (∅')' = G' = atributos comunes a todos los objetos.
90
+ let current = (0, context_1.closeIntent)(ctx, new Set());
91
+ while (current !== null) {
92
+ const intent = current;
93
+ const extent = (0, context_1.derivativeObjects)(ctx, intent);
94
+ concepts.push({ extent, intent });
95
+ current = nextClosure(ctx, order, current);
96
+ }
97
+ return concepts;
98
+ }
99
+ //# sourceMappingURL=next-closure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-closure.js","sourceRoot":"","sources":["../../../src/runtime/fca/next-closure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Contexto formal K = (G, M, I).
3
+ * - `objects` G como lista finita ordenada.
4
+ * - `attributes` M como lista finita ordenada.
5
+ * - `incidence` representación canónica como conjunto de pares
6
+ * codificados "objeto|atributo" para test O(1).
7
+ */
8
+ export interface FormalContext {
9
+ objects: string[];
10
+ attributes: string[];
11
+ incidence: Set<string>;
12
+ }
13
+ /**
14
+ * Concepto formal (A, B) con A = extent, B = intent.
15
+ * Invariante: A' = B y B' = A (verificable con `isConcept`).
16
+ */
17
+ export interface FormalConcept {
18
+ extent: Set<string>;
19
+ intent: Set<string>;
20
+ }
21
+ /**
22
+ * Diagrama de Hasse del concept lattice como lista de aristas de cobertura.
23
+ * `edges[i] = [child, parent]` significa que el concepto `child` está cubierto
24
+ * inmediatamente por `parent` (no hay concepto intermedio estricto).
25
+ * Los índices son posiciones en el array de conceptos devuelto por
26
+ * `allConcepts`.
27
+ */
28
+ export interface HasseLattice {
29
+ edges: Array<[number, number]>;
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/fca/types.ts"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Formal Concept Analysis (FCA) — tipos públicos
4
+ // ============================================================
5
+ // Marco matemático de Wille (1982) para extraer una jerarquía conceptual
6
+ // a partir de una relación binaria objeto-atributo.
7
+ //
8
+ // Contexto formal:
9
+ // K = (G, M, I)
10
+ // G conjunto finito de "objetos"
11
+ // M conjunto finito de "atributos"
12
+ // I ⊆ G × M relación de incidencia ("el objeto g tiene el atributo m")
13
+ //
14
+ // Operadores de derivación (polares de Galois):
15
+ // A' = { m ∈ M | ∀ g ∈ A. (g, m) ∈ I } (atributos comunes a A ⊆ G)
16
+ // B' = { g ∈ G | ∀ m ∈ B. (g, m) ∈ I } (objetos que poseen todo B ⊆ M)
17
+ //
18
+ // Un concepto formal es un par (A, B) con A ⊆ G, B ⊆ M tal que
19
+ // A' = B y B' = A
20
+ // equivalentemente: A = A'' y B = B'' (clausura).
21
+ //
22
+ // El conjunto B(K) de todos los conceptos, ordenado por
23
+ // (A1, B1) ≤ (A2, B2) ⇔ A1 ⊆ A2 ( ⇔ B2 ⊆ B1 )
24
+ // forma un retículo completo (lattice), el "concept lattice".
25
+ //
26
+ // Top: (G, G') — todos los objetos, atributos comunes.
27
+ // Bottom: (M', M) — atributos en todos, en general ∅ objetos.
28
+ // ============================================================
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/fca/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iDAAiD;AACjD,+DAA+D;AAC/D,yEAAyE;AACzE,oDAAoD;AACpD,EAAE;AACF,mBAAmB;AACnB,kBAAkB;AAClB,sCAAsC;AACtC,wCAAwC;AACxC,4EAA4E;AAC5E,EAAE;AACF,gDAAgD;AAChD,yEAAyE;AACzE,6EAA6E;AAC7E,EAAE;AACF,+DAA+D;AAC/D,sBAAsB;AACtB,sDAAsD;AACtD,EAAE;AACF,wDAAwD;AACxD,iDAAiD;AACjD,8DAA8D;AAC9D,EAAE;AACF,6DAA6D;AAC7D,iEAAiE;AACjE,+DAA+D"}