@stevenvo780/autologic 1.0.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 (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/atoms/coreference.d.ts +29 -0
  4. package/dist/atoms/coreference.d.ts.map +1 -0
  5. package/dist/atoms/coreference.js +75 -0
  6. package/dist/atoms/coreference.js.map +1 -0
  7. package/dist/atoms/identifier-gen.d.ts +23 -0
  8. package/dist/atoms/identifier-gen.d.ts.map +1 -0
  9. package/dist/atoms/identifier-gen.js +83 -0
  10. package/dist/atoms/identifier-gen.js.map +1 -0
  11. package/dist/atoms/index.d.ts +20 -0
  12. package/dist/atoms/index.d.ts.map +1 -0
  13. package/dist/atoms/index.js +112 -0
  14. package/dist/atoms/index.js.map +1 -0
  15. package/dist/atoms/keyword-extractor.d.ts +29 -0
  16. package/dist/atoms/keyword-extractor.d.ts.map +1 -0
  17. package/dist/atoms/keyword-extractor.js +73 -0
  18. package/dist/atoms/keyword-extractor.js.map +1 -0
  19. package/dist/autologic.d.ts +63 -0
  20. package/dist/autologic.d.ts.map +1 -0
  21. package/dist/autologic.js +107 -0
  22. package/dist/autologic.js.map +1 -0
  23. package/dist/discourse/index.d.ts +18 -0
  24. package/dist/discourse/index.d.ts.map +1 -0
  25. package/dist/discourse/index.js +43 -0
  26. package/dist/discourse/index.js.map +1 -0
  27. package/dist/discourse/markers-en.d.ts +7 -0
  28. package/dist/discourse/markers-en.d.ts.map +1 -0
  29. package/dist/discourse/markers-en.js +113 -0
  30. package/dist/discourse/markers-en.js.map +1 -0
  31. package/dist/discourse/markers-es.d.ts +7 -0
  32. package/dist/discourse/markers-es.d.ts.map +1 -0
  33. package/dist/discourse/markers-es.js +134 -0
  34. package/dist/discourse/markers-es.js.map +1 -0
  35. package/dist/discourse/pattern-detector.d.ts +16 -0
  36. package/dist/discourse/pattern-detector.d.ts.map +1 -0
  37. package/dist/discourse/pattern-detector.js +95 -0
  38. package/dist/discourse/pattern-detector.js.map +1 -0
  39. package/dist/discourse/role-classifier.d.ts +12 -0
  40. package/dist/discourse/role-classifier.d.ts.map +1 -0
  41. package/dist/discourse/role-classifier.js +141 -0
  42. package/dist/discourse/role-classifier.js.map +1 -0
  43. package/dist/formalize.d.ts +25 -0
  44. package/dist/formalize.d.ts.map +1 -0
  45. package/dist/formalize.js +123 -0
  46. package/dist/formalize.js.map +1 -0
  47. package/dist/formula/connectors.d.ts +31 -0
  48. package/dist/formula/connectors.d.ts.map +1 -0
  49. package/dist/formula/connectors.js +90 -0
  50. package/dist/formula/connectors.js.map +1 -0
  51. package/dist/formula/first-order.d.ts +11 -0
  52. package/dist/formula/first-order.d.ts.map +1 -0
  53. package/dist/formula/first-order.js +156 -0
  54. package/dist/formula/first-order.js.map +1 -0
  55. package/dist/formula/index.d.ts +15 -0
  56. package/dist/formula/index.d.ts.map +1 -0
  57. package/dist/formula/index.js +49 -0
  58. package/dist/formula/index.js.map +1 -0
  59. package/dist/formula/modal.d.ts +11 -0
  60. package/dist/formula/modal.d.ts.map +1 -0
  61. package/dist/formula/modal.js +138 -0
  62. package/dist/formula/modal.js.map +1 -0
  63. package/dist/formula/propositional.d.ts +11 -0
  64. package/dist/formula/propositional.d.ts.map +1 -0
  65. package/dist/formula/propositional.js +241 -0
  66. package/dist/formula/propositional.js.map +1 -0
  67. package/dist/formula/temporal.d.ts +11 -0
  68. package/dist/formula/temporal.d.ts.map +1 -0
  69. package/dist/formula/temporal.js +134 -0
  70. package/dist/formula/temporal.js.map +1 -0
  71. package/dist/generator/index.d.ts +6 -0
  72. package/dist/generator/index.d.ts.map +1 -0
  73. package/dist/generator/index.js +12 -0
  74. package/dist/generator/index.js.map +1 -0
  75. package/dist/generator/st-emitter.d.ts +23 -0
  76. package/dist/generator/st-emitter.d.ts.map +1 -0
  77. package/dist/generator/st-emitter.js +134 -0
  78. package/dist/generator/st-emitter.js.map +1 -0
  79. package/dist/generator/validator.d.ts +22 -0
  80. package/dist/generator/validator.d.ts.map +1 -0
  81. package/dist/generator/validator.js +53 -0
  82. package/dist/generator/validator.js.map +1 -0
  83. package/dist/index.d.ts +32 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +44 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/nlp/index.d.ts +8 -0
  88. package/dist/nlp/index.d.ts.map +1 -0
  89. package/dist/nlp/index.js +17 -0
  90. package/dist/nlp/index.js.map +1 -0
  91. package/dist/nlp/stemmer-en.d.ts +10 -0
  92. package/dist/nlp/stemmer-en.d.ts.map +1 -0
  93. package/dist/nlp/stemmer-en.js +149 -0
  94. package/dist/nlp/stemmer-en.js.map +1 -0
  95. package/dist/nlp/stemmer-es.d.ts +10 -0
  96. package/dist/nlp/stemmer-es.d.ts.map +1 -0
  97. package/dist/nlp/stemmer-es.js +117 -0
  98. package/dist/nlp/stemmer-es.js.map +1 -0
  99. package/dist/nlp/stopwords.d.ts +11 -0
  100. package/dist/nlp/stopwords.d.ts.map +1 -0
  101. package/dist/nlp/stopwords.js +73 -0
  102. package/dist/nlp/stopwords.js.map +1 -0
  103. package/dist/nlp/tokenizer.d.ts +13 -0
  104. package/dist/nlp/tokenizer.d.ts.map +1 -0
  105. package/dist/nlp/tokenizer.js +36 -0
  106. package/dist/nlp/tokenizer.js.map +1 -0
  107. package/dist/segmenter/clause-splitter.d.ts +15 -0
  108. package/dist/segmenter/clause-splitter.d.ts.map +1 -0
  109. package/dist/segmenter/clause-splitter.js +192 -0
  110. package/dist/segmenter/clause-splitter.js.map +1 -0
  111. package/dist/segmenter/index.d.ts +11 -0
  112. package/dist/segmenter/index.d.ts.map +1 -0
  113. package/dist/segmenter/index.js +25 -0
  114. package/dist/segmenter/index.js.map +1 -0
  115. package/dist/segmenter/sentence-splitter.d.ts +13 -0
  116. package/dist/segmenter/sentence-splitter.d.ts.map +1 -0
  117. package/dist/segmenter/sentence-splitter.js +69 -0
  118. package/dist/segmenter/sentence-splitter.js.map +1 -0
  119. package/dist/types.d.ts +184 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +6 -0
  122. package/dist/types.js.map +1 -0
  123. package/package.json +51 -0
  124. package/readme.md +1 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Connectors — Mapa de marcador → operador ST
3
+ *
4
+ * Define la correspondencia entre roles discursivos y operadores lógicos ST.
5
+ */
6
+ import type { MarkerRole, LogicProfile } from '../types';
7
+ /** Operadores ST por tipo de conexión */
8
+ export declare const ST_OPERATORS: {
9
+ readonly implication: "->";
10
+ readonly biconditional: "<->";
11
+ readonly conjunction: "&";
12
+ readonly disjunction: "|";
13
+ readonly negation: "!";
14
+ readonly universal: "forall";
15
+ readonly existential: "exists";
16
+ readonly necessity: "[]";
17
+ readonly possibility: "<>";
18
+ readonly temporal_next: "next";
19
+ readonly temporal_until: "until";
20
+ readonly temporal_always: "always";
21
+ readonly temporal_eventually: "eventually";
22
+ };
23
+ /**
24
+ * Obtiene el operador ST correspondiente a un rol de marcador.
25
+ */
26
+ export declare function roleToOperator(role: MarkerRole): string | null;
27
+ /**
28
+ * Verifica si un perfil soporta un operador dado.
29
+ */
30
+ export declare function profileSupportsOperator(profile: LogicProfile, operator: string): boolean;
31
+ //# sourceMappingURL=connectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../../src/formula/connectors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzD,yCAAyC;AACzC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcf,CAAC;AAEX;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAkC9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA2BxF"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ST_OPERATORS = void 0;
4
+ exports.roleToOperator = roleToOperator;
5
+ exports.profileSupportsOperator = profileSupportsOperator;
6
+ /** Operadores ST por tipo de conexión */
7
+ exports.ST_OPERATORS = {
8
+ implication: '->',
9
+ biconditional: '<->',
10
+ conjunction: '&',
11
+ disjunction: '|',
12
+ negation: '!',
13
+ universal: 'forall',
14
+ existential: 'exists',
15
+ necessity: '[]',
16
+ possibility: '<>',
17
+ temporal_next: 'next',
18
+ temporal_until: 'until',
19
+ temporal_always: 'always',
20
+ temporal_eventually: 'eventually',
21
+ };
22
+ /**
23
+ * Obtiene el operador ST correspondiente a un rol de marcador.
24
+ */
25
+ function roleToOperator(role) {
26
+ switch (role) {
27
+ case 'condition':
28
+ case 'consequent':
29
+ case 'conclusion':
30
+ return exports.ST_OPERATORS.implication;
31
+ case 'biconditional':
32
+ return exports.ST_OPERATORS.biconditional;
33
+ case 'and':
34
+ return exports.ST_OPERATORS.conjunction;
35
+ case 'or':
36
+ return exports.ST_OPERATORS.disjunction;
37
+ case 'negation':
38
+ return exports.ST_OPERATORS.negation;
39
+ case 'universal':
40
+ return exports.ST_OPERATORS.universal;
41
+ case 'existential':
42
+ return exports.ST_OPERATORS.existential;
43
+ case 'necessity':
44
+ return exports.ST_OPERATORS.necessity;
45
+ case 'possibility':
46
+ return exports.ST_OPERATORS.possibility;
47
+ case 'temporal':
48
+ case 'temporal_next':
49
+ return exports.ST_OPERATORS.temporal_next;
50
+ case 'temporal_until':
51
+ return exports.ST_OPERATORS.temporal_until;
52
+ case 'temporal_always':
53
+ return exports.ST_OPERATORS.temporal_always;
54
+ case 'temporal_eventually':
55
+ return exports.ST_OPERATORS.temporal_eventually;
56
+ default:
57
+ return null;
58
+ }
59
+ }
60
+ /**
61
+ * Verifica si un perfil soporta un operador dado.
62
+ */
63
+ function profileSupportsOperator(profile, operator) {
64
+ const propositional = ['->', '<->', '&', '|', '!'];
65
+ const firstOrder = [...propositional, 'forall', 'exists'];
66
+ const modal = [...propositional, '[]', '<>'];
67
+ const temporal = [...propositional, 'next', 'until', 'always', 'eventually'];
68
+ switch (profile) {
69
+ case 'classical.propositional':
70
+ case 'intuitionistic.propositional':
71
+ case 'paraconsistent.belnap':
72
+ return propositional.includes(operator);
73
+ case 'classical.first_order':
74
+ return firstOrder.includes(operator);
75
+ case 'modal.k':
76
+ case 'epistemic.s5':
77
+ case 'deontic.standard':
78
+ return modal.includes(operator);
79
+ case 'temporal.ltl':
80
+ return temporal.includes(operator);
81
+ case 'aristotelian.syllogistic':
82
+ return firstOrder.includes(operator);
83
+ case 'arithmetic':
84
+ case 'probabilistic.basic':
85
+ return propositional.includes(operator);
86
+ default:
87
+ return propositional.includes(operator);
88
+ }
89
+ }
90
+ //# sourceMappingURL=connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.js","sourceRoot":"","sources":["../../src/formula/connectors.ts"],"names":[],"mappings":";;;AA2BA,wCAkCC;AAKD,0DA2BC;AAtFD,yCAAyC;AAC5B,QAAA,YAAY,GAAG;IAC1B,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,MAAM;IACrB,cAAc,EAAE,OAAO;IACvB,eAAe,EAAE,QAAQ;IACzB,mBAAmB,EAAE,YAAY;CACzB,CAAC;AAEX;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAgB;IAC7C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,oBAAY,CAAC,WAAW,CAAC;QAClC,KAAK,eAAe;YAClB,OAAO,oBAAY,CAAC,aAAa,CAAC;QACpC,KAAK,KAAK;YACR,OAAO,oBAAY,CAAC,WAAW,CAAC;QAClC,KAAK,IAAI;YACP,OAAO,oBAAY,CAAC,WAAW,CAAC;QAClC,KAAK,UAAU;YACb,OAAO,oBAAY,CAAC,QAAQ,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,oBAAY,CAAC,SAAS,CAAC;QAChC,KAAK,aAAa;YAChB,OAAO,oBAAY,CAAC,WAAW,CAAC;QAClC,KAAK,WAAW;YACd,OAAO,oBAAY,CAAC,SAAS,CAAC;QAChC,KAAK,aAAa;YAChB,OAAO,oBAAY,CAAC,WAAW,CAAC;QAClC,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe;YAClB,OAAO,oBAAY,CAAC,aAAa,CAAC;QACpC,KAAK,gBAAgB;YACnB,OAAO,oBAAY,CAAC,cAAc,CAAC;QACrC,KAAK,iBAAiB;YACpB,OAAO,oBAAY,CAAC,eAAe,CAAC;QACtC,KAAK,qBAAqB;YACxB,OAAO,oBAAY,CAAC,mBAAmB,CAAC;QAC1C;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAqB,EAAE,QAAgB;IAC7E,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE7E,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,yBAAyB,CAAC;QAC/B,KAAK,8BAA8B,CAAC;QACpC,KAAK,uBAAuB;YAC1B,OAAO,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C,KAAK,uBAAuB;YAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,KAAK,SAAS,CAAC;QACf,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,KAAK,0BAA0B;YAC7B,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,KAAK,YAAY,CAAC;QAClB,KAAK,qBAAqB;YACxB,OAAO,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C;YACE,OAAO,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * First-Order Formula Builder
3
+ *
4
+ * Construye fórmulas de lógica de primer orden con cuantificadores y predicados.
5
+ */
6
+ import type { AnalyzedSentence, AtomEntry, FormulaEntry } from '../types';
7
+ /**
8
+ * Construye fórmulas de primer orden para oraciones con cuantificadores.
9
+ */
10
+ export declare function buildFirstOrder(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], detectedPatterns: string[]): FormulaEntry[];
11
+ //# sourceMappingURL=first-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-order.d.ts","sourceRoot":"","sources":["../../src/formula/first-order.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG1E;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,YAAY,EAAE,CAgChB"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFirstOrder = buildFirstOrder;
4
+ const connectors_1 = require("./connectors");
5
+ /**
6
+ * Construye fórmulas de primer orden para oraciones con cuantificadores.
7
+ */
8
+ function buildFirstOrder(sentences, atomEntries, detectedPatterns) {
9
+ const formulas = [];
10
+ let labelCounter = 1;
11
+ for (let sIdx = 0; sIdx < sentences.length; sIdx++) {
12
+ const sentence = sentences[sIdx];
13
+ const builtFormulas = buildFOSentence(sentence, atomEntries, sIdx, labelCounter);
14
+ formulas.push(...builtFormulas);
15
+ labelCounter += builtFormulas.length;
16
+ }
17
+ // Si se detecta instanciación universal, agregar derive
18
+ if (detectedPatterns.includes('universal_instantiation') && formulas.length >= 2) {
19
+ const universalFormula = formulas.find(f => f.formula.includes('forall'));
20
+ const instanceFormula = formulas.find(f => !f.formula.includes('forall') && f.stType === 'axiom');
21
+ if (universalFormula && instanceFormula) {
22
+ // Intentar derivar la conclusión
23
+ const derivedFormula = tryInstantiation(universalFormula, instanceFormula, atomEntries);
24
+ if (derivedFormula) {
25
+ formulas.push({
26
+ formula: derivedFormula,
27
+ stType: 'derive',
28
+ label: `conclusion_${labelCounter}`,
29
+ sourceText: 'Instanciación universal',
30
+ sourceSentence: sentences.length - 1,
31
+ comment: 'Conclusión por instanciación universal',
32
+ });
33
+ }
34
+ }
35
+ }
36
+ return formulas;
37
+ }
38
+ function buildFOSentence(sentence, allAtoms, sentenceIdx, labelStart) {
39
+ const formulas = [];
40
+ const clauses = sentence.clauses;
41
+ let label = labelStart;
42
+ // Detectar cuantificación universal
43
+ const hasUniversal = clauses.some(c => c.modifiers.some(m => m.type === 'universal'));
44
+ const hasExistential = clauses.some(c => c.modifiers.some(m => m.type === 'existential'));
45
+ if (hasUniversal && sentence.type === 'conditional') {
46
+ // "Todo X es Y" → forall x (X(x) -> Y(x))
47
+ const conditionAtoms = getAtomsForClauses(clauses.filter(c => c.role === 'condition' || c.role === 'premise'), allAtoms);
48
+ const consequentAtoms = getAtomsForClauses(clauses.filter(c => c.role === 'consequent' || c.role === 'conclusion' || c.role === 'assertion'), allAtoms);
49
+ if (conditionAtoms.length > 0 && consequentAtoms.length > 0) {
50
+ const pred1 = conditionAtoms[0].predicate || conditionAtoms[0].id;
51
+ const pred2 = consequentAtoms[0].predicate || consequentAtoms[0].id;
52
+ const variable = conditionAtoms[0].terms?.[0] || 'x';
53
+ const formula = `forall ${variable} (${formatPredicate(pred1, variable)} ${connectors_1.ST_OPERATORS.implication} ${formatPredicate(pred2, variable)})`;
54
+ formulas.push({
55
+ formula,
56
+ stType: 'axiom',
57
+ label: `a${label}`,
58
+ sourceText: sentence.original,
59
+ sourceSentence: sentenceIdx,
60
+ comment: `Universal: "${sentence.original}"`,
61
+ });
62
+ }
63
+ }
64
+ else if (hasUniversal) {
65
+ // "Todo X tiene Y" → forall x X(x)
66
+ for (const clause of clauses) {
67
+ const atoms = getAtomsForClause(clause.text, allAtoms);
68
+ if (atoms.length > 0) {
69
+ const atom = atoms[0];
70
+ const pred = atom.predicate || atom.id;
71
+ const variable = atom.terms?.[0] || 'x';
72
+ formulas.push({
73
+ formula: `forall ${variable} ${formatPredicate(pred, variable)}`,
74
+ stType: 'axiom',
75
+ label: `a${label++}`,
76
+ sourceText: clause.text,
77
+ sourceSentence: sentenceIdx,
78
+ comment: `Universal: "${clause.text}"`,
79
+ });
80
+ }
81
+ }
82
+ }
83
+ else if (hasExistential) {
84
+ // "Existe X tal que Y"
85
+ for (const clause of clauses) {
86
+ const atoms = getAtomsForClause(clause.text, allAtoms);
87
+ if (atoms.length > 0) {
88
+ const atom = atoms[0];
89
+ const pred = atom.predicate || atom.id;
90
+ const variable = atom.terms?.[0] || 'x';
91
+ formulas.push({
92
+ formula: `exists ${variable} ${formatPredicate(pred, variable)}`,
93
+ stType: 'axiom',
94
+ label: `a${label++}`,
95
+ sourceText: clause.text,
96
+ sourceSentence: sentenceIdx,
97
+ comment: `Existencial: "${clause.text}"`,
98
+ });
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ // Predicado sin cuantificador (instancia concreta)
104
+ for (const clause of clauses) {
105
+ const atoms = getAtomsForClause(clause.text, allAtoms);
106
+ if (atoms.length > 0) {
107
+ const atom = atoms[0];
108
+ const isConclusion = clause.role === 'conclusion';
109
+ formulas.push({
110
+ formula: atom.id,
111
+ stType: isConclusion ? 'derive' : 'axiom',
112
+ label: isConclusion ? `conclusion_${label}` : `a${label}`,
113
+ sourceText: clause.text,
114
+ sourceSentence: sentenceIdx,
115
+ comment: isConclusion
116
+ ? `Conclusión: "${clause.text}"`
117
+ : `Instancia: "${clause.text}"`,
118
+ });
119
+ label++;
120
+ }
121
+ }
122
+ }
123
+ return formulas;
124
+ }
125
+ function getAtomsForClauses(clauses, allAtoms) {
126
+ const results = [];
127
+ for (const clause of clauses) {
128
+ const found = getAtomsForClause(clause.text, allAtoms);
129
+ results.push(...found);
130
+ }
131
+ return results;
132
+ }
133
+ function getAtomsForClause(text, allAtoms) {
134
+ return allAtoms.filter(a => a.text === text || a.text.includes(text) || text.includes(a.text));
135
+ }
136
+ function formatPredicate(predicate, variable) {
137
+ if (predicate.includes('('))
138
+ return predicate;
139
+ return `${predicate}(${variable})`;
140
+ }
141
+ function tryInstantiation(universalFormula, instanceFormula, _allAtoms) {
142
+ // Simplificación: intentar extraer la conclusión de la instanciación
143
+ const match = universalFormula.formula.match(/forall\s+(\w+)\s+\((.+)\s+->\s+(.+)\)/);
144
+ if (!match)
145
+ return null;
146
+ const [, _variable, _antecedent, consequent] = match;
147
+ // Buscar la constante de la instancia para sustituir
148
+ const instanceMatch = instanceFormula.formula.match(/(\w+)\((\w+)\)/);
149
+ if (!instanceMatch)
150
+ return null;
151
+ const constant = instanceMatch[2];
152
+ // Sustituir variable por constante en el consecuente
153
+ const instantiated = consequent.replace(/\(\w+\)/, `(${constant})`);
154
+ return instantiated;
155
+ }
156
+ //# sourceMappingURL=first-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-order.js","sourceRoot":"","sources":["../../src/formula/first-order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Formula — Orquestador de construcción de fórmulas
3
+ */
4
+ export { buildPropositional } from './propositional';
5
+ export { buildFirstOrder } from './first-order';
6
+ export { buildModal } from './modal';
7
+ export { buildTemporal } from './temporal';
8
+ export { roleToOperator, profileSupportsOperator, ST_OPERATORS } from './connectors';
9
+ import type { AnalyzedSentence, AtomEntry, FormulaEntry, LogicProfile } from '../types';
10
+ /**
11
+ * Construye fórmulas ST según el perfil lógico seleccionado.
12
+ * Delega al builder específico del perfil.
13
+ */
14
+ export declare function buildFormulas(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], profile: LogicProfile, detectedPatterns: string[]): FormulaEntry[];
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formula/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAMxF;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,EACxB,OAAO,EAAE,YAAY,EACrB,gBAAgB,EAAE,MAAM,EAAE,GACzB,YAAY,EAAE,CAwBhB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ST_OPERATORS = exports.profileSupportsOperator = exports.roleToOperator = exports.buildTemporal = exports.buildModal = exports.buildFirstOrder = exports.buildPropositional = void 0;
4
+ exports.buildFormulas = buildFormulas;
5
+ /**
6
+ * Formula — Orquestador de construcción de fórmulas
7
+ */
8
+ var propositional_1 = require("./propositional");
9
+ Object.defineProperty(exports, "buildPropositional", { enumerable: true, get: function () { return propositional_1.buildPropositional; } });
10
+ var first_order_1 = require("./first-order");
11
+ Object.defineProperty(exports, "buildFirstOrder", { enumerable: true, get: function () { return first_order_1.buildFirstOrder; } });
12
+ var modal_1 = require("./modal");
13
+ Object.defineProperty(exports, "buildModal", { enumerable: true, get: function () { return modal_1.buildModal; } });
14
+ var temporal_1 = require("./temporal");
15
+ Object.defineProperty(exports, "buildTemporal", { enumerable: true, get: function () { return temporal_1.buildTemporal; } });
16
+ var connectors_1 = require("./connectors");
17
+ Object.defineProperty(exports, "roleToOperator", { enumerable: true, get: function () { return connectors_1.roleToOperator; } });
18
+ Object.defineProperty(exports, "profileSupportsOperator", { enumerable: true, get: function () { return connectors_1.profileSupportsOperator; } });
19
+ Object.defineProperty(exports, "ST_OPERATORS", { enumerable: true, get: function () { return connectors_1.ST_OPERATORS; } });
20
+ const propositional_2 = require("./propositional");
21
+ const first_order_2 = require("./first-order");
22
+ const modal_2 = require("./modal");
23
+ const temporal_2 = require("./temporal");
24
+ /**
25
+ * Construye fórmulas ST según el perfil lógico seleccionado.
26
+ * Delega al builder específico del perfil.
27
+ */
28
+ function buildFormulas(sentences, atomEntries, profile, detectedPatterns) {
29
+ switch (profile) {
30
+ case 'classical.propositional':
31
+ case 'intuitionistic.propositional':
32
+ case 'paraconsistent.belnap':
33
+ case 'arithmetic':
34
+ case 'probabilistic.basic':
35
+ return (0, propositional_2.buildPropositional)(sentences, atomEntries, detectedPatterns);
36
+ case 'classical.first_order':
37
+ case 'aristotelian.syllogistic':
38
+ return (0, first_order_2.buildFirstOrder)(sentences, atomEntries, detectedPatterns);
39
+ case 'modal.k':
40
+ case 'epistemic.s5':
41
+ case 'deontic.standard':
42
+ return (0, modal_2.buildModal)(sentences, atomEntries, profile);
43
+ case 'temporal.ltl':
44
+ return (0, temporal_2.buildTemporal)(sentences, atomEntries);
45
+ default:
46
+ return (0, propositional_2.buildPropositional)(sentences, atomEntries, detectedPatterns);
47
+ }
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formula/index.ts"],"names":[],"mappings":";;;AAmBA,sCA6BC;AAhDD;;GAEG;AACH,iDAAqD;AAA5C,mHAAA,kBAAkB,OAAA;AAC3B,6CAAgD;AAAvC,8GAAA,eAAe,OAAA;AACxB,iCAAqC;AAA5B,mGAAA,UAAU,OAAA;AACnB,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,2CAAqF;AAA5E,4GAAA,cAAc,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAAE,0GAAA,YAAY,OAAA;AAG9D,mDAAqD;AACrD,+CAAgD;AAChD,mCAAqC;AACrC,yCAA2C;AAE3C;;;GAGG;AACH,SAAgB,aAAa,CAC3B,SAA6B,EAC7B,WAAwB,EACxB,OAAqB,EACrB,gBAA0B;IAE1B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,yBAAyB,CAAC;QAC/B,KAAK,8BAA8B,CAAC;QACpC,KAAK,uBAAuB,CAAC;QAC7B,KAAK,YAAY,CAAC;QAClB,KAAK,qBAAqB;YACxB,OAAO,IAAA,kCAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAEtE,KAAK,uBAAuB,CAAC;QAC7B,KAAK,0BAA0B;YAC7B,OAAO,IAAA,6BAAe,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAEnE,KAAK,SAAS,CAAC;QACf,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB;YACrB,OAAO,IAAA,kBAAU,EAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAErD,KAAK,cAAc;YACjB,OAAO,IAAA,wBAAa,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE/C;YACE,OAAO,IAAA,kCAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Modal Formula Builder
3
+ *
4
+ * Construye fórmulas de lógica modal (K, epistémica, deóntica).
5
+ */
6
+ import type { AnalyzedSentence, AtomEntry, FormulaEntry, LogicProfile } from '../types';
7
+ /**
8
+ * Construye fórmulas modales para oraciones con operadores de necesidad/posibilidad.
9
+ */
10
+ export declare function buildModal(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], profile: LogicProfile): FormulaEntry[];
11
+ //# sourceMappingURL=modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/formula/modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxF;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,EACxB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CAYhB"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildModal = buildModal;
4
+ const connectors_1 = require("./connectors");
5
+ /**
6
+ * Construye fórmulas modales para oraciones con operadores de necesidad/posibilidad.
7
+ */
8
+ function buildModal(sentences, atomEntries, profile) {
9
+ const formulas = [];
10
+ let labelCounter = 1;
11
+ for (let sIdx = 0; sIdx < sentences.length; sIdx++) {
12
+ const sentence = sentences[sIdx];
13
+ const built = buildModalSentence(sentence, atomEntries, sIdx, labelCounter, profile);
14
+ formulas.push(...built);
15
+ labelCounter += built.length;
16
+ }
17
+ return formulas;
18
+ }
19
+ function buildModalSentence(sentence, allAtoms, sentenceIdx, labelStart, profile) {
20
+ const formulas = [];
21
+ const clauses = sentence.clauses;
22
+ let label = labelStart;
23
+ // Determinar qué operadores usar según el perfil
24
+ const necessityOp = getModalNecessity(profile);
25
+ const possibilityOp = getModalPossibility(profile);
26
+ if (sentence.type === 'modal') {
27
+ // Detectar cláusulas con modalidad
28
+ for (const clause of clauses) {
29
+ const atom = findAtomForClause(clause.text, allAtoms);
30
+ if (!atom)
31
+ continue;
32
+ const hasNecessity = clause.modifiers.some(m => m.type === 'necessity');
33
+ const hasPossibility = clause.modifiers.some(m => m.type === 'possibility');
34
+ let formula;
35
+ if (hasNecessity) {
36
+ formula = `${necessityOp}(${atom.id})`;
37
+ }
38
+ else if (hasPossibility) {
39
+ formula = `${possibilityOp}(${atom.id})`;
40
+ }
41
+ else {
42
+ formula = atom.id;
43
+ }
44
+ formulas.push({
45
+ formula,
46
+ stType: 'axiom',
47
+ label: `a${label++}`,
48
+ sourceText: clause.text,
49
+ sourceSentence: sentenceIdx,
50
+ comment: buildModalComment(clause.text, profile),
51
+ });
52
+ }
53
+ }
54
+ else if (sentence.type === 'conditional') {
55
+ // Condicional con modalidad
56
+ const condClauses = clauses.filter(c => c.role === 'condition');
57
+ const consClauses = clauses.filter(c => c.role === 'consequent' || c.role === 'conclusion' || c.role === 'assertion');
58
+ if (condClauses.length > 0 && consClauses.length > 0) {
59
+ const antAtom = findAtomForClause(condClauses[0].text, allAtoms);
60
+ const consAtom = findAtomForClause(consClauses[0].text, allAtoms);
61
+ if (antAtom && consAtom) {
62
+ let antFormula = antAtom.id;
63
+ let consFormula = consAtom.id;
64
+ // Aplicar modalidad
65
+ if (condClauses[0].modifiers.some(m => m.type === 'necessity')) {
66
+ antFormula = `${necessityOp}(${antFormula})`;
67
+ }
68
+ if (consClauses[0].modifiers.some(m => m.type === 'possibility')) {
69
+ consFormula = `${possibilityOp}(${consFormula})`;
70
+ }
71
+ if (consClauses[0].modifiers.some(m => m.type === 'necessity')) {
72
+ consFormula = `${necessityOp}(${consFormula})`;
73
+ }
74
+ formulas.push({
75
+ formula: `${antFormula} -> ${consFormula}`,
76
+ stType: 'axiom',
77
+ label: `a${label++}`,
78
+ sourceText: sentence.original,
79
+ sourceSentence: sentenceIdx,
80
+ comment: `Condicional modal: "${sentence.original}"`,
81
+ });
82
+ }
83
+ }
84
+ }
85
+ else {
86
+ // Oración no-modal: tratarla como proposicional con envoltura
87
+ for (const clause of clauses) {
88
+ const atom = findAtomForClause(clause.text, allAtoms);
89
+ if (!atom)
90
+ continue;
91
+ let formula = atom.id;
92
+ // Revisar si algún modificador indica modalidad
93
+ for (const mod of clause.modifiers) {
94
+ if (mod.type === 'necessity')
95
+ formula = `${necessityOp}(${formula})`;
96
+ else if (mod.type === 'possibility')
97
+ formula = `${possibilityOp}(${formula})`;
98
+ }
99
+ const isConclusion = clause.role === 'conclusion';
100
+ formulas.push({
101
+ formula,
102
+ stType: isConclusion ? 'derive' : 'axiom',
103
+ label: isConclusion ? `conclusion_${label}` : `a${label}`,
104
+ sourceText: clause.text,
105
+ sourceSentence: sentenceIdx,
106
+ });
107
+ label++;
108
+ }
109
+ }
110
+ return formulas;
111
+ }
112
+ function findAtomForClause(text, allAtoms) {
113
+ return allAtoms.find(a => a.text === text || a.text.includes(text) || text.includes(a.text)) || null;
114
+ }
115
+ function getModalNecessity(profile) {
116
+ switch (profile) {
117
+ case 'deontic.standard': return connectors_1.ST_OPERATORS.necessity; // [] = obligación
118
+ case 'epistemic.s5': return connectors_1.ST_OPERATORS.necessity; // [] = conocimiento
119
+ default: return connectors_1.ST_OPERATORS.necessity; // [] = necesidad
120
+ }
121
+ }
122
+ function getModalPossibility(profile) {
123
+ switch (profile) {
124
+ case 'deontic.standard': return connectors_1.ST_OPERATORS.possibility; // <> = permisión
125
+ case 'epistemic.s5': return connectors_1.ST_OPERATORS.possibility; // <> = creencia
126
+ default: return connectors_1.ST_OPERATORS.possibility; // <> = posibilidad
127
+ }
128
+ }
129
+ function buildModalComment(text, profile) {
130
+ const names = {
131
+ 'modal.k': 'Modal K',
132
+ 'deontic.standard': 'Deóntico',
133
+ 'epistemic.s5': 'Epistémico S5',
134
+ };
135
+ const profileName = names[profile] || 'Modal';
136
+ return `${profileName}: "${text}"`;
137
+ }
138
+ //# sourceMappingURL=modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../src/formula/modal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Propositional Formula Builder
3
+ *
4
+ * Construye fórmulas de lógica proposicional a partir de átomos con roles.
5
+ */
6
+ import type { AnalyzedSentence, AtomEntry, FormulaEntry } from '../types';
7
+ /**
8
+ * Construye fórmulas proposicionales para un conjunto de oraciones.
9
+ */
10
+ export declare function buildPropositional(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], detectedPatterns: string[]): FormulaEntry[];
11
+ //# sourceMappingURL=propositional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propositional.d.ts","sourceRoot":"","sources":["../../src/formula/propositional.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAG3F;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,YAAY,EAAE,CAmBhB"}