@stevenvo780/autologic 2.0.0 → 2.2.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 (105) hide show
  1. package/README.md +2 -0
  2. package/dist/atoms/index.d.ts +1 -1
  3. package/dist/atoms/index.d.ts.map +1 -1
  4. package/dist/atoms/index.js +91 -3
  5. package/dist/atoms/index.js.map +1 -1
  6. package/dist/atoms/keyword-extractor.d.ts +9 -0
  7. package/dist/atoms/keyword-extractor.d.ts.map +1 -1
  8. package/dist/atoms/keyword-extractor.js +64 -2
  9. package/dist/atoms/keyword-extractor.js.map +1 -1
  10. package/dist/atoms/math-parser.d.ts +11 -0
  11. package/dist/atoms/math-parser.d.ts.map +1 -0
  12. package/dist/atoms/math-parser.js +44 -0
  13. package/dist/atoms/math-parser.js.map +1 -0
  14. package/dist/compiler-frontend.d.ts +9 -0
  15. package/dist/compiler-frontend.d.ts.map +1 -0
  16. package/dist/compiler-frontend.js +142 -0
  17. package/dist/compiler-frontend.js.map +1 -0
  18. package/dist/context/discourse-state.d.ts +10 -0
  19. package/dist/context/discourse-state.d.ts.map +1 -0
  20. package/dist/context/discourse-state.js +26 -0
  21. package/dist/context/discourse-state.js.map +1 -0
  22. package/dist/discourse/markers-es.d.ts.map +1 -1
  23. package/dist/discourse/markers-es.js +23 -0
  24. package/dist/discourse/markers-es.js.map +1 -1
  25. package/dist/discourse/pattern-detector.d.ts.map +1 -1
  26. package/dist/discourse/pattern-detector.js +2 -1
  27. package/dist/discourse/pattern-detector.js.map +1 -1
  28. package/dist/discourse/role-classifier.js +38 -6
  29. package/dist/discourse/role-classifier.js.map +1 -1
  30. package/dist/formalize.d.ts +16 -0
  31. package/dist/formalize.d.ts.map +1 -1
  32. package/dist/formalize.js +128 -0
  33. package/dist/formalize.js.map +1 -1
  34. package/dist/formula/argument-builder.d.ts.map +1 -1
  35. package/dist/formula/argument-builder.js +124 -15
  36. package/dist/formula/argument-builder.js.map +1 -1
  37. package/dist/formula/ast-compiler.d.ts +6 -0
  38. package/dist/formula/ast-compiler.d.ts.map +1 -0
  39. package/dist/formula/ast-compiler.js +105 -0
  40. package/dist/formula/ast-compiler.js.map +1 -0
  41. package/dist/formula/ast.d.ts +81 -0
  42. package/dist/formula/ast.d.ts.map +1 -0
  43. package/dist/formula/ast.js +52 -0
  44. package/dist/formula/ast.js.map +1 -0
  45. package/dist/formula/connectors.js +1 -1
  46. package/dist/formula/connectors.js.map +1 -1
  47. package/dist/formula/first-order.js +74 -7
  48. package/dist/formula/first-order.js.map +1 -1
  49. package/dist/formula/helpers.d.ts +8 -0
  50. package/dist/formula/helpers.d.ts.map +1 -0
  51. package/dist/formula/helpers.js +166 -0
  52. package/dist/formula/helpers.js.map +1 -0
  53. package/dist/formula/index.d.ts +1 -0
  54. package/dist/formula/index.d.ts.map +1 -1
  55. package/dist/formula/index.js +5 -3
  56. package/dist/formula/index.js.map +1 -1
  57. package/dist/formula/modal.d.ts.map +1 -1
  58. package/dist/formula/modal.js +56 -67
  59. package/dist/formula/modal.js.map +1 -1
  60. package/dist/formula/probabilistic.d.ts +3 -0
  61. package/dist/formula/probabilistic.d.ts.map +1 -0
  62. package/dist/formula/probabilistic.js +55 -0
  63. package/dist/formula/probabilistic.js.map +1 -0
  64. package/dist/formula/propositional.d.ts +2 -2
  65. package/dist/formula/propositional.d.ts.map +1 -1
  66. package/dist/formula/propositional.js +99 -88
  67. package/dist/formula/propositional.js.map +1 -1
  68. package/dist/formula/temporal.d.ts.map +1 -1
  69. package/dist/formula/temporal.js +87 -62
  70. package/dist/formula/temporal.js.map +1 -1
  71. package/dist/generator/validator.d.ts +20 -0
  72. package/dist/generator/validator.d.ts.map +1 -1
  73. package/dist/generator/validator.js +112 -0
  74. package/dist/generator/validator.js.map +1 -1
  75. package/dist/index.d.ts +6 -17
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +8 -17
  78. package/dist/index.js.map +1 -1
  79. package/dist/llm-parser.d.ts +29 -0
  80. package/dist/llm-parser.d.ts.map +1 -0
  81. package/dist/llm-parser.js +122 -0
  82. package/dist/llm-parser.js.map +1 -0
  83. package/dist/local-slm-web.d.ts +8 -0
  84. package/dist/local-slm-web.d.ts.map +1 -0
  85. package/dist/local-slm-web.js +87 -0
  86. package/dist/local-slm-web.js.map +1 -0
  87. package/dist/nl-linter/index.d.ts +10 -0
  88. package/dist/nl-linter/index.d.ts.map +1 -0
  89. package/dist/nl-linter/index.js +45 -0
  90. package/dist/nl-linter/index.js.map +1 -0
  91. package/dist/nl-linter/rules.d.ts +6 -0
  92. package/dist/nl-linter/rules.d.ts.map +1 -0
  93. package/dist/nl-linter/rules.js +93 -0
  94. package/dist/nl-linter/rules.js.map +1 -0
  95. package/dist/nl-linter/types.d.ts +14 -0
  96. package/dist/nl-linter/types.d.ts.map +1 -0
  97. package/dist/nl-linter/types.js +3 -0
  98. package/dist/nl-linter/types.js.map +1 -0
  99. package/dist/segmenter/clause-splitter.d.ts.map +1 -1
  100. package/dist/segmenter/clause-splitter.js +208 -10
  101. package/dist/segmenter/clause-splitter.js.map +1 -1
  102. package/dist/types.d.ts +22 -0
  103. package/dist/types.d.ts.map +1 -1
  104. package/package.json +14 -3
  105. package/readme.md +666 -1
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildProbabilistic = buildProbabilistic;
4
+ const helpers_1 = require("./helpers");
5
+ function buildProbabilistic(sentences, atomEntries) {
6
+ const formulas = [];
7
+ let labelCounter = 1;
8
+ for (let sIdx = 0; sIdx < sentences.length; sIdx++) {
9
+ const sentence = sentences[sIdx];
10
+ for (const clause of sentence.clauses) {
11
+ const text = clause.text;
12
+ // Buscar patrones comunes: "probabilidad ... de ... es X" o "0.XX"
13
+ const probMatch = text.match(/0\.\d+/);
14
+ const isPercentage = text.match(/(\d+(?:\.\d+)?)%/);
15
+ let pValue = probMatch ? probMatch[0] : null;
16
+ if (!pValue && isPercentage) {
17
+ pValue = (parseFloat(isPercentage[1]) / 100).toString();
18
+ }
19
+ const atomId = (0, helpers_1.resolveAtomId)(text, atomEntries);
20
+ let formula = (0, helpers_1.applyLogicalModifiers)(atomId, clause.modifiers.map(m => m.type), 'probabilistic.basic');
21
+ if (pValue && clause.role !== 'conclusion') {
22
+ // Axiom
23
+ formulas.push({
24
+ formula: `Pr(${formula}) = ${pValue}`,
25
+ stType: 'axiom',
26
+ label: `a${labelCounter++}`,
27
+ sourceText: text,
28
+ sourceSentence: sIdx
29
+ });
30
+ }
31
+ else if (pValue && clause.role === 'conclusion') {
32
+ // Conclusion check
33
+ formulas.push({
34
+ formula: `Pr(${formula}) = ${pValue}`,
35
+ stType: 'derive',
36
+ label: `conclusion_${labelCounter++}`,
37
+ sourceText: text,
38
+ sourceSentence: sIdx
39
+ });
40
+ }
41
+ else {
42
+ // Fallback
43
+ formulas.push({
44
+ formula: (0, helpers_1.applyLogicalModifiers)(atomId, clause.modifiers.map(m => m.type), 'probabilistic.basic'),
45
+ stType: clause.role === 'conclusion' ? 'derive' : 'axiom',
46
+ label: clause.role === 'conclusion' ? `conclusion_${labelCounter++}` : `a${labelCounter++}`,
47
+ sourceText: text,
48
+ sourceSentence: sIdx
49
+ });
50
+ }
51
+ }
52
+ }
53
+ return formulas;
54
+ }
55
+ //# sourceMappingURL=probabilistic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probabilistic.js","sourceRoot":"","sources":["../../src/formula/probabilistic.ts"],"names":[],"mappings":";;AAGA,gDAyDC;AA3DD,uCAAiE;AAEjE,SAAgB,kBAAkB,CAChC,SAA6B,EAC7B,WAAwB;IAExB,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAEjC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAEzB,mEAAmE;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAEpD,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;gBAC5B,MAAM,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,IAAA,+BAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAEtG,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1C,QAAQ;gBACR,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,MAAM,OAAO,OAAO,MAAM,EAAE;oBACrC,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,IAAI,YAAY,EAAE,EAAE;oBAC3B,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;YACN,CAAC;iBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjD,mBAAmB;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,MAAM,OAAO,OAAO,MAAM,EAAE;oBACrC,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,cAAc,YAAY,EAAE,EAAE;oBACrC,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;YACN,CAAC;iBAAM,CAAC;gBACL,WAAW;gBACX,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,IAAA,+BAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC;oBAChG,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;oBACzD,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,EAAE;oBAC3F,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -4,10 +4,10 @@
4
4
  * Construye fórmulas de lógica proposicional a partir de átomos con roles.
5
5
  * Genera fórmulas reales con conectivos: →, ∧, ∨, ¬, ↔
6
6
  */
7
- import type { AnalyzedSentence, AtomEntry, FormulaEntry } from '../types';
7
+ import type { AnalyzedSentence, AtomEntry, FormulaEntry, LogicProfile } from '../types';
8
8
  /**
9
9
  * Construye fórmulas proposicionales para un conjunto de oraciones.
10
10
  * Cada oración se procesa según su tipo detectado.
11
11
  */
12
- export declare function buildPropositional(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], detectedPatterns: string[]): FormulaEntry[];
12
+ export declare function buildPropositional(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], detectedPatterns: string[], profile?: LogicProfile): FormulaEntry[];
13
13
  //# sourceMappingURL=propositional.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"propositional.d.ts","sourceRoot":"","sources":["../../src/formula/propositional.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAG3F;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,YAAY,EAAE,CAiBhB"}
1
+ {"version":3,"file":"propositional.d.ts","sourceRoot":"","sources":["../../src/formula/propositional.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAmB,YAAY,EAAE,MAAM,UAAU,CAAC;AAgCzG;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,OAAO,GAAE,YAAwC,GAChD,YAAY,EAAE,CAiBhB"}
@@ -2,18 +2,44 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildPropositional = buildPropositional;
4
4
  const connectors_1 = require("./connectors");
5
+ const helpers_1 = require("./helpers");
6
+ /**
7
+ * Aplica reglas cuantitativas a un átomo base según el perfil lógico.
8
+ * Útil para extraer `Pr(X) = Y` o ecuaciones aritméticas desde el texto original.
9
+ */
10
+ function applyQuantitativeExtraction(text, baseAtomStr, profile) {
11
+ if (profile === 'probabilistic.basic') {
12
+ const probMatch = text.match(/0\.\d+/);
13
+ const isPercentage = text.match(/(\d+(?:\.\d+)?)%/);
14
+ let pValue = probMatch ? probMatch[0] : null;
15
+ if (!pValue && isPercentage) {
16
+ pValue = (parseFloat(isPercentage[1]) / 100).toString();
17
+ }
18
+ if (pValue) {
19
+ return `(Pr(${baseAtomStr}) = ${pValue})`;
20
+ }
21
+ }
22
+ if (profile === 'arithmetic') {
23
+ // Busca patrones como "a + b = c" o "mod" y los pasa explícitamente a ST-lang en vez de usar átomos textuales
24
+ const mathMatch = text.match(/(\w+)\s*([\+\-\*\/]|mod)\s*(\w+)\s*=\s*(\w+)/);
25
+ if (mathMatch) {
26
+ return text; // Return the raw text equation!
27
+ }
28
+ }
29
+ return baseAtomStr;
30
+ }
5
31
  /**
6
32
  * Construye fórmulas proposicionales para un conjunto de oraciones.
7
33
  * Cada oración se procesa según su tipo detectado.
8
34
  */
9
- function buildPropositional(sentences, atomEntries, detectedPatterns) {
35
+ function buildPropositional(sentences, atomEntries, detectedPatterns, profile = 'classical.propositional') {
10
36
  const formulas = [];
11
37
  let labelCounter = 1;
12
38
  // Construir mapa global de cláusula-texto → atomId
13
39
  const globalClauseAtomMap = buildGlobalAtomMap(sentences, atomEntries);
14
40
  for (let sIdx = 0; sIdx < sentences.length; sIdx++) {
15
41
  const sentence = sentences[sIdx];
16
- const builtFormulas = buildSentenceFormulas(sentence, atomEntries, globalClauseAtomMap, sIdx, labelCounter, detectedPatterns);
42
+ const builtFormulas = buildSentenceFormulas(sentence, atomEntries, globalClauseAtomMap, sIdx, labelCounter, detectedPatterns, profile);
17
43
  formulas.push(...builtFormulas);
18
44
  labelCounter += builtFormulas.length;
19
45
  }
@@ -55,17 +81,26 @@ function buildGlobalAtomMap(sentences, atomEntries) {
55
81
  /**
56
82
  * Construye fórmulas para una oración individual.
57
83
  */
58
- function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, labelStart, patterns) {
84
+ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, labelStart, patterns, profile) {
59
85
  const clauses = sentence.clauses;
60
86
  if (clauses.length === 0)
61
87
  return [];
88
+ const getStr = (clause) => {
89
+ let modTypes = clause?.modifiers ? clause.modifiers.map((m) => m.type) : [];
90
+ if (Array.isArray(clause) && typeof clause[0] === 'string')
91
+ modTypes = clause;
92
+ const text = typeof clause === 'string' ? clause : clause.text;
93
+ const isExplicitNeg = Array.isArray(clause);
94
+ const atomId = (0, helpers_1.resolveAtomId)(text, allAtoms, globalMap);
95
+ const modStr = (0, helpers_1.applyLogicalModifiers)(atomId, isExplicitNeg ? clause : modTypes, profile);
96
+ return applyQuantitativeExtraction(text, modStr, profile);
97
+ };
62
98
  const formulas = [];
63
99
  let label = labelStart;
64
100
  switch (sentence.type) {
65
101
  case 'conditional': {
66
102
  let conditionClauses = clauses.filter(c => c.role === 'condition');
67
103
  let consequentClauses = clauses.filter(c => c.role === 'consequent' || c.role === 'conclusion' || c.role === 'assertion');
68
- // Fallback: si no hay cláusula explícita de condición, inferir por posición
69
104
  if (conditionClauses.length === 0 && clauses.length >= 2) {
70
105
  const nonConsequent = clauses.filter(c => c.role !== 'consequent' && c.role !== 'conclusion');
71
106
  if (nonConsequent.length > 0) {
@@ -73,12 +108,15 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
73
108
  consequentClauses = clauses.filter(c => c !== nonConsequent[0]);
74
109
  }
75
110
  }
111
+ if (conditionClauses.length > 0 && consequentClauses.length === 0) {
112
+ const nonConditions = clauses.filter(c => c.role !== 'condition');
113
+ if (nonConditions.length > 0) {
114
+ consequentClauses = nonConditions;
115
+ }
116
+ }
76
117
  if (conditionClauses.length > 0 && consequentClauses.length > 0) {
77
- const antecedent = resolveAtom(conditionClauses[0].text, globalMap, allAtoms);
78
- const consequent = resolveAtom(consequentClauses[0].text, globalMap, allAtoms);
79
- // Aplicar negación si hay modificadores
80
- const antStr = applyModifiers(antecedent, conditionClauses[0].modifiers.map(m => m.type));
81
- const consStr = applyModifiers(consequent, consequentClauses[0].modifiers.map(m => m.type));
118
+ const antStr = getStr(conditionClauses[0]);
119
+ const consStr = getStr(consequentClauses[0]);
82
120
  formulas.push({
83
121
  formula: `${antStr} ${connectors_1.ST_OPERATORS.implication} ${consStr}`,
84
122
  stType: 'axiom',
@@ -87,15 +125,24 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
87
125
  sourceSentence: sentenceIdx,
88
126
  comment: `Condicional: "${sentence.original}"`,
89
127
  });
128
+ const supplementalClauses = clauses.filter(clause => clause !== conditionClauses[0] && clause !== consequentClauses[0]);
129
+ for (const clause of supplementalClauses) {
130
+ formulas.push({
131
+ formula: getStr(clause),
132
+ stType: clause.role === 'conclusion' ? 'derive' : 'axiom',
133
+ label: `hecho_${++label}`,
134
+ sourceText: clause.text,
135
+ sourceSentence: sentenceIdx,
136
+ comment: `Subcláusula condicional: "${clause.text}"`,
137
+ });
138
+ }
90
139
  }
91
140
  break;
92
141
  }
93
142
  case 'biconditional': {
94
143
  if (clauses.length >= 2) {
95
- const left = resolveAtom(clauses[0].text, globalMap, allAtoms);
96
- const right = resolveAtom(clauses[1].text, globalMap, allAtoms);
97
144
  formulas.push({
98
- formula: `${left} ${connectors_1.ST_OPERATORS.biconditional} ${right}`,
145
+ formula: `${getStr(clauses[0])} ${connectors_1.ST_OPERATORS.biconditional} ${getStr(clauses[1])}`,
99
146
  stType: 'axiom',
100
147
  label: `bicond_${label}`,
101
148
  sourceText: sentence.original,
@@ -106,11 +153,10 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
106
153
  break;
107
154
  }
108
155
  case 'conjunction': {
109
- const atoms = clauses.map(c => resolveAtom(c.text, globalMap, allAtoms));
156
+ const atoms = clauses.map(c => getStr(c));
110
157
  if (atoms.length >= 2) {
111
- const formula = atoms.join(` ${connectors_1.ST_OPERATORS.conjunction} `);
112
158
  formulas.push({
113
- formula,
159
+ formula: atoms.join(` ${connectors_1.ST_OPERATORS.conjunction} `),
114
160
  stType: 'axiom',
115
161
  label: `conj_${label}`,
116
162
  sourceText: sentence.original,
@@ -131,11 +177,10 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
131
177
  break;
132
178
  }
133
179
  case 'disjunction': {
134
- const atoms = clauses.map(c => resolveAtom(c.text, globalMap, allAtoms));
180
+ const atoms = clauses.map(c => getStr(c));
135
181
  if (atoms.length >= 2) {
136
- const formula = atoms.join(` ${connectors_1.ST_OPERATORS.disjunction} `);
137
182
  formulas.push({
138
- formula,
183
+ formula: atoms.join(` ${connectors_1.ST_OPERATORS.disjunction} `),
139
184
  stType: 'axiom',
140
185
  label: `disj_${label}`,
141
186
  sourceText: sentence.original,
@@ -147,9 +192,10 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
147
192
  }
148
193
  case 'negation': {
149
194
  if (clauses.length > 0) {
150
- const atom = resolveAtom(clauses[0].text, globalMap, allAtoms);
195
+ const atomId = (0, helpers_1.resolveAtomId)(clauses[0].text, allAtoms, globalMap);
196
+ const modStr = (0, helpers_1.applyLogicalModifiers)(atomId, ['negation'], profile);
151
197
  formulas.push({
152
- formula: `${connectors_1.ST_OPERATORS.negation}(${atom})`,
198
+ formula: applyQuantitativeExtraction(clauses[0].text, modStr, profile),
153
199
  stType: 'axiom',
154
200
  label: `neg_${label}`,
155
201
  sourceText: sentence.original,
@@ -160,28 +206,33 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
160
206
  break;
161
207
  }
162
208
  case 'complex': {
163
- // Oraciones complejas con premisas y conclusiones explícitas
164
209
  const premiseClauses = clauses.filter(c => c.role === 'premise');
165
210
  const conclusionClauses = clauses.filter(c => c.role === 'conclusion');
166
- // Generar axiomas para premisas
167
- for (const pClause of premiseClauses) {
168
- const atom = resolveAtom(pClause.text, globalMap, allAtoms);
169
- const atomStr = applyModifiers(atom, pClause.modifiers.map(m => m.type));
211
+ if (premiseClauses.length > 0 && conclusionClauses.length > 0) {
212
+ const premiseAtoms = premiseClauses.map(pc => getStr(pc));
213
+ const conclusionStr = getStr(conclusionClauses[0]);
214
+ const antecedent = premiseAtoms.length === 1 ? premiseAtoms[0] : `(${premiseAtoms.join(` ${connectors_1.ST_OPERATORS.conjunction} `)})`;
170
215
  formulas.push({
171
- formula: atomStr,
216
+ formula: `${antecedent} ${connectors_1.ST_OPERATORS.implication} ${conclusionStr}`,
172
217
  stType: 'axiom',
173
- label: `premisa_${label++}`,
174
- sourceText: pClause.text,
218
+ label: `regla_${label++}`,
219
+ sourceText: sentence.original,
175
220
  sourceSentence: sentenceIdx,
176
- comment: `Premisa: "${pClause.text}"`,
221
+ comment: `Causal: "${sentence.original}"`,
177
222
  });
178
- }
179
- // Generar derivaciones para conclusiones
180
- if (conclusionClauses.length > 0 && premiseClauses.length > 0) {
223
+ for (const pClause of premiseClauses) {
224
+ formulas.push({
225
+ formula: getStr(pClause),
226
+ stType: 'axiom',
227
+ label: `premisa_${label++}`,
228
+ sourceText: pClause.text,
229
+ sourceSentence: sentenceIdx,
230
+ comment: `Premisa: "${pClause.text}"`,
231
+ });
232
+ }
181
233
  for (const cClause of conclusionClauses) {
182
- const atom = resolveAtom(cClause.text, globalMap, allAtoms);
183
234
  formulas.push({
184
- formula: atom,
235
+ formula: getStr(cClause),
185
236
  stType: 'derive',
186
237
  label: `conclusion_${label++}`,
187
238
  sourceText: cClause.text,
@@ -190,23 +241,30 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
190
241
  });
191
242
  }
192
243
  }
244
+ else {
245
+ for (const pClause of premiseClauses) {
246
+ formulas.push({
247
+ formula: getStr(pClause),
248
+ stType: 'axiom',
249
+ label: `premisa_${label++}`,
250
+ sourceText: pClause.text,
251
+ sourceSentence: sentenceIdx,
252
+ comment: `Premisa: "${pClause.text}"`,
253
+ });
254
+ }
255
+ }
193
256
  break;
194
257
  }
195
258
  default: {
196
- // Aserción simple o tipo no manejado arriba
197
259
  for (const clause of clauses) {
198
- const atom = resolveAtom(clause.text, globalMap, allAtoms);
199
- const atomStr = applyModifiers(atom, clause.modifiers.map(m => m.type));
200
260
  const isConclusion = clause.role === 'conclusion';
201
261
  formulas.push({
202
- formula: atomStr,
262
+ formula: getStr(clause),
203
263
  stType: isConclusion ? 'derive' : 'axiom',
204
264
  label: isConclusion ? `conclusion_${label}` : `hecho_${label}`,
205
265
  sourceText: clause.text,
206
266
  sourceSentence: sentenceIdx,
207
- comment: isConclusion
208
- ? `Conclusión: "${clause.text}"`
209
- : `Hecho: "${clause.text}"`,
267
+ comment: isConclusion ? `Conclusión: "${clause.text}"` : `Hecho: "${clause.text}"`,
210
268
  });
211
269
  label++;
212
270
  }
@@ -215,51 +273,4 @@ function buildSentenceFormulas(sentence, allAtoms, globalMap, sentenceIdx, label
215
273
  }
216
274
  return formulas;
217
275
  }
218
- /**
219
- * Resuelve el ID de átomo para un texto de cláusula.
220
- * Usa el mapa global, luego busca en todos los átomos.
221
- */
222
- function resolveAtom(clauseText, globalMap, allAtoms) {
223
- // 1. Buscar en el mapa global (ya resuelto)
224
- const fromMap = globalMap.get(clauseText);
225
- if (fromMap)
226
- return fromMap;
227
- // 2. Match parcial en mapa global
228
- for (const [text, id] of globalMap) {
229
- if (clauseText.includes(text) || text.includes(clauseText)) {
230
- return id;
231
- }
232
- }
233
- // 3. Buscar en todos los átomos por texto
234
- const atomMatch = allAtoms.find(a => a.text === clauseText || a.text.includes(clauseText) || clauseText.includes(a.text));
235
- if (atomMatch)
236
- return atomMatch.id;
237
- // 4. Fallback: generar ID del texto
238
- return clauseText
239
- .normalize('NFD').replace(/[\u0300-\u036f]/g, '')
240
- .replace(/[^a-zA-Z0-9\s]/g, '')
241
- .replace(/\s+/g, '_')
242
- .toUpperCase()
243
- .slice(0, 30) || 'ATOM';
244
- }
245
- /**
246
- * Aplica modificadores lógicos a una fórmula atómica.
247
- */
248
- function applyModifiers(atomId, modifiers) {
249
- let formula = atomId;
250
- for (const mod of modifiers) {
251
- switch (mod) {
252
- case 'negation':
253
- formula = `!(${formula})`;
254
- break;
255
- case 'necessity':
256
- formula = `[](${formula})`;
257
- break;
258
- case 'possibility':
259
- formula = `<>(${formula})`;
260
- break;
261
- }
262
- }
263
- return formula;
264
- }
265
276
  //# sourceMappingURL=propositional.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"propositional.js","sourceRoot":"","sources":["../../src/formula/propositional.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"propositional.js","sourceRoot":"","sources":["../../src/formula/propositional.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../src/formula/temporal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG1E;;GAEG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,GACvB,YAAY,EAAE,CAYhB"}
1
+ {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../src/formula/temporal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAS1E;;GAEG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,SAAS,EAAE,GACvB,YAAY,EAAE,CAYhB"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildTemporal = buildTemporal;
4
4
  const connectors_1 = require("./connectors");
5
+ const helpers_1 = require("./helpers");
5
6
  /**
6
7
  * Construye fórmulas temporales LTL.
7
8
  */
@@ -25,110 +26,134 @@ function buildTemporalSentence(sentence, allAtoms, sentenceIdx, labelStart) {
25
26
  const hasUntil = clauses.some(c => c.modifiers.some(m => m.type === 'temporal_until'));
26
27
  const hasAlways = clauses.some(c => c.modifiers.some(m => m.type === 'temporal_always'));
27
28
  const hasEventually = clauses.some(c => c.modifiers.some(m => m.type === 'temporal_eventually'));
28
- if (sentence.type === 'conditional' && hasNext) {
29
- // "Después de A, B" A -> next B
30
- const condClauses = clauses.filter(c => c.role === 'condition' || c.role === 'premise');
31
- const consClauses = clauses.filter(c => c.role === 'consequent' || c.role === 'conclusion' || c.role === 'assertion');
29
+ if (sentence.type === 'conditional') {
30
+ // Temporal condicional general: preservar wrappers sobre la implicación completa.
31
+ let condClauses = clauses.filter(c => c.role === 'condition' || c.role === 'premise');
32
+ let consClauses = clauses.filter(c => c.role === 'consequent' || c.role === 'conclusion' || c.role === 'assertion');
33
+ if (condClauses.length === 0 && clauses.length >= 2) {
34
+ condClauses = [clauses[0]];
35
+ consClauses = [clauses[1]];
36
+ }
32
37
  if (condClauses.length > 0 && consClauses.length > 0) {
33
- const ant = findAtom(condClauses[0].text, allAtoms);
34
- const cons = findAtom(consClauses[0].text, allAtoms);
35
- if (ant && cons) {
38
+ const ant = (0, helpers_1.resolveAtomId)(condClauses[0].text, allAtoms);
39
+ const cons = (0, helpers_1.resolveAtomId)(consClauses[0].text, allAtoms);
40
+ const implication = `${(0, helpers_1.applyLogicalModifiers)(ant, (0, helpers_1.stripModifierFamily)(condClauses[0].modifiers, 'temporal'), 'temporal.ltl')} -> ${(0, helpers_1.applyLogicalModifiers)(cons, consClauses[0].modifiers.map((modifier) => modifier.type), 'temporal.ltl')}`;
41
+ formulas.push({
42
+ formula: (0, helpers_1.applyLogicalModifiers)(implication, (0, helpers_1.pickLeadingSentenceModifiers)(clauses[0].modifiers, 'temporal'), 'temporal.ltl'),
43
+ stType: 'axiom',
44
+ label: `a${label++}`,
45
+ sourceText: sentence.original,
46
+ sourceSentence: sentenceIdx,
47
+ comment: `Temporal: "${sentence.original}"`,
48
+ });
49
+ const supplementalClauses = clauses.filter(clause => clause !== condClauses[0] && clause !== consClauses[0]);
50
+ for (const clause of supplementalClauses) {
51
+ const atom = (0, helpers_1.resolveAtomId)(clause.text, allAtoms);
36
52
  formulas.push({
37
- formula: `${ant.id} -> ${connectors_1.ST_OPERATORS.temporal_next} ${cons.id}`,
38
- stType: 'axiom',
53
+ formula: (0, helpers_1.applyLogicalModifiers)(atom, sanitizeStandaloneTemporalModifiers(clause.modifiers.map((modifier) => modifier.type)), 'temporal.ltl'),
54
+ stType: clause.role === 'conclusion' ? 'derive' : 'axiom',
39
55
  label: `a${label++}`,
40
- sourceText: sentence.original,
56
+ sourceText: clause.text,
41
57
  sourceSentence: sentenceIdx,
42
- comment: `Temporal next: "${sentence.original}"`,
58
+ comment: `Subcláusula temporal: "${clause.text}"`,
43
59
  });
44
60
  }
45
61
  }
46
62
  }
47
63
  else if (hasUntil && clauses.length >= 2) {
48
64
  // "A hasta que B" → A until B
49
- const atomsList = clauses.map(c => findAtom(c.text, allAtoms)).filter(Boolean);
65
+ const atomsList = clauses.map(c => (0, helpers_1.resolveAtomId)(c.text, allAtoms));
50
66
  if (atomsList.length >= 2) {
51
67
  formulas.push({
52
- formula: `${atomsList[0].id} ${connectors_1.ST_OPERATORS.temporal_until} ${atomsList[1].id}`,
68
+ formula: `${(0, helpers_1.applyLogicalModifiers)(atomsList[0], (0, helpers_1.stripModifierFamily)(clauses[0].modifiers, 'temporal'), 'temporal.ltl')} ${connectors_1.ST_OPERATORS.temporal_until} ${(0, helpers_1.applyLogicalModifiers)(atomsList[1], (0, helpers_1.stripModifierFamily)(clauses[1].modifiers, 'temporal'), 'temporal.ltl')}`,
53
69
  stType: 'axiom',
54
70
  label: `a${label++}`,
55
71
  sourceText: sentence.original,
56
72
  sourceSentence: sentenceIdx,
57
73
  comment: `Temporal until: "${sentence.original}"`,
58
74
  });
59
- }
60
- }
61
- else if (hasAlways) {
62
- // "Siempre A" → always A
63
- for (const clause of clauses) {
64
- const atom = findAtom(clause.text, allAtoms);
65
- if (atom) {
75
+ for (let clauseIndex = 2; clauseIndex < clauses.length; clauseIndex++) {
76
+ const clause = clauses[clauseIndex];
77
+ const atom = (0, helpers_1.resolveAtomId)(clause.text, allAtoms);
66
78
  formulas.push({
67
- formula: `${connectors_1.ST_OPERATORS.temporal_always} ${atom.id}`,
68
- stType: 'axiom',
79
+ formula: (0, helpers_1.applyLogicalModifiers)(atom, sanitizeStandaloneTemporalModifiers(clause.modifiers.map((modifier) => modifier.type)), 'temporal.ltl'),
80
+ stType: clause.role === 'conclusion' ? 'derive' : 'axiom',
69
81
  label: `a${label++}`,
70
82
  sourceText: clause.text,
71
83
  sourceSentence: sentenceIdx,
72
- comment: `Temporal always: "${clause.text}"`,
84
+ comment: `Subcláusula temporal: "${clause.text}"`,
73
85
  });
74
86
  }
75
87
  }
76
88
  }
89
+ else if (hasAlways) {
90
+ // "Siempre A" → G(A)
91
+ for (const clause of clauses) {
92
+ const atom = (0, helpers_1.resolveAtomId)(clause.text, allAtoms);
93
+ formulas.push({
94
+ formula: (0, helpers_1.applyLogicalModifiers)(atom, clause.modifiers.map((modifier) => modifier.type), 'temporal.ltl'),
95
+ stType: 'axiom',
96
+ label: `a${label++}`,
97
+ sourceText: clause.text,
98
+ sourceSentence: sentenceIdx,
99
+ comment: `Temporal always: "${clause.text}"`,
100
+ });
101
+ }
102
+ }
77
103
  else if (hasEventually) {
78
- // "Eventualmente A" → eventually A
104
+ // "Eventualmente A" → F(A)
79
105
  for (const clause of clauses) {
80
- const atom = findAtom(clause.text, allAtoms);
81
- if (atom) {
82
- formulas.push({
83
- formula: `${connectors_1.ST_OPERATORS.temporal_eventually} ${atom.id}`,
84
- stType: 'axiom',
85
- label: `a${label++}`,
86
- sourceText: clause.text,
87
- sourceSentence: sentenceIdx,
88
- comment: `Temporal eventually: "${clause.text}"`,
89
- });
90
- }
106
+ const atom = (0, helpers_1.resolveAtomId)(clause.text, allAtoms);
107
+ formulas.push({
108
+ formula: (0, helpers_1.applyLogicalModifiers)(atom, clause.modifiers.map((modifier) => modifier.type), 'temporal.ltl'),
109
+ stType: 'axiom',
110
+ label: `a${label++}`,
111
+ sourceText: clause.text,
112
+ sourceSentence: sentenceIdx,
113
+ comment: `Temporal eventually: "${clause.text}"`,
114
+ });
91
115
  }
92
116
  }
93
117
  else {
94
118
  // Temporal genérico: tratar como condicional con next
95
- if (sentence.type === 'conditional' || clauses.length >= 2) {
96
- const condClauses = clauses.filter(c => c.role === 'condition' || c.role === 'premise');
97
- const restClauses = clauses.filter(c => c.role !== 'condition' && c.role !== 'premise');
119
+ if (clauses.length >= 2) {
120
+ let condClauses = clauses.filter(c => c.role === 'condition' || c.role === 'premise');
121
+ let restClauses = clauses.filter(c => c.role !== 'condition' && c.role !== 'premise');
122
+ if (condClauses.length === 0) {
123
+ condClauses = [clauses[0]];
124
+ restClauses = clauses.slice(1);
125
+ }
98
126
  if (condClauses.length > 0 && restClauses.length > 0) {
99
- const ant = findAtom(condClauses[0].text, allAtoms);
100
- const cons = findAtom(restClauses[0].text, allAtoms);
101
- if (ant && cons) {
102
- formulas.push({
103
- formula: `${ant.id} -> ${connectors_1.ST_OPERATORS.temporal_next} ${cons.id}`,
104
- stType: 'axiom',
105
- label: `a${label++}`,
106
- sourceText: sentence.original,
107
- sourceSentence: sentenceIdx,
108
- comment: `Temporal: "${sentence.original}"`,
109
- });
110
- }
127
+ const ant = (0, helpers_1.resolveAtomId)(condClauses[0].text, allAtoms);
128
+ const cons = (0, helpers_1.resolveAtomId)(restClauses[0].text, allAtoms);
129
+ const implication = `${(0, helpers_1.applyLogicalModifiers)(ant, (0, helpers_1.stripModifierFamily)(condClauses[0].modifiers, 'temporal'), 'temporal.ltl')} -> ${(0, helpers_1.applyLogicalModifiers)(cons, ['temporal_next', ...restClauses[0].modifiers.map((modifier) => modifier.type)], 'temporal.ltl')}`;
130
+ formulas.push({
131
+ formula: (0, helpers_1.applyLogicalModifiers)(implication, (0, helpers_1.pickLeadingSentenceModifiers)(clauses[0].modifiers, 'temporal'), 'temporal.ltl'),
132
+ stType: 'axiom',
133
+ label: `a${label++}`,
134
+ sourceText: sentence.original,
135
+ sourceSentence: sentenceIdx,
136
+ comment: `Temporal: "${sentence.original}"`,
137
+ });
111
138
  }
112
139
  }
113
140
  else {
114
141
  // Aserción temporal simple
115
142
  for (const clause of clauses) {
116
- const atom = findAtom(clause.text, allAtoms);
117
- if (atom) {
118
- formulas.push({
119
- formula: atom.id,
120
- stType: 'axiom',
121
- label: `a${label++}`,
122
- sourceText: clause.text,
123
- sourceSentence: sentenceIdx,
124
- });
125
- }
143
+ const atom = (0, helpers_1.resolveAtomId)(clause.text, allAtoms);
144
+ formulas.push({
145
+ formula: (0, helpers_1.applyLogicalModifiers)(atom, clause.modifiers.map((modifier) => modifier.type), 'temporal.ltl'),
146
+ stType: 'axiom',
147
+ label: `a${label++}`,
148
+ sourceText: clause.text,
149
+ sourceSentence: sentenceIdx,
150
+ });
126
151
  }
127
152
  }
128
153
  }
129
154
  return formulas;
130
155
  }
131
- function findAtom(text, allAtoms) {
132
- return allAtoms.find(a => a.text === text || a.text.includes(text) || text.includes(a.text)) || null;
156
+ function sanitizeStandaloneTemporalModifiers(modifiers) {
157
+ return modifiers.filter((modifier) => modifier !== 'temporal_until');
133
158
  }
134
159
  //# sourceMappingURL=temporal.js.map