@stevenvo780/autologic 1.0.0 → 2.0.1

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 (36) hide show
  1. package/dist/atoms/coreference.d.ts +7 -2
  2. package/dist/atoms/coreference.d.ts.map +1 -1
  3. package/dist/atoms/coreference.js +93 -2
  4. package/dist/atoms/coreference.js.map +1 -1
  5. package/dist/atoms/index.d.ts.map +1 -1
  6. package/dist/atoms/index.js +16 -0
  7. package/dist/atoms/index.js.map +1 -1
  8. package/dist/discourse/markers-es.d.ts.map +1 -1
  9. package/dist/discourse/markers-es.js +3 -1
  10. package/dist/discourse/markers-es.js.map +1 -1
  11. package/dist/discourse/pattern-detector.d.ts.map +1 -1
  12. package/dist/discourse/pattern-detector.js +9 -3
  13. package/dist/discourse/pattern-detector.js.map +1 -1
  14. package/dist/discourse/role-classifier.d.ts.map +1 -1
  15. package/dist/discourse/role-classifier.js +50 -14
  16. package/dist/discourse/role-classifier.js.map +1 -1
  17. package/dist/formula/argument-builder.d.ts +18 -0
  18. package/dist/formula/argument-builder.d.ts.map +1 -0
  19. package/dist/formula/argument-builder.js +289 -0
  20. package/dist/formula/argument-builder.js.map +1 -0
  21. package/dist/formula/index.d.ts +7 -1
  22. package/dist/formula/index.d.ts.map +1 -1
  23. package/dist/formula/index.js +25 -7
  24. package/dist/formula/index.js.map +1 -1
  25. package/dist/formula/propositional.d.ts +2 -0
  26. package/dist/formula/propositional.d.ts.map +1 -1
  27. package/dist/formula/propositional.js +127 -64
  28. package/dist/formula/propositional.js.map +1 -1
  29. package/dist/generator/st-emitter.d.ts +1 -0
  30. package/dist/generator/st-emitter.d.ts.map +1 -1
  31. package/dist/generator/st-emitter.js +4 -12
  32. package/dist/generator/st-emitter.js.map +1 -1
  33. package/dist/segmenter/clause-splitter.d.ts.map +1 -1
  34. package/dist/segmenter/clause-splitter.js +56 -6
  35. package/dist/segmenter/clause-splitter.js.map +1 -1
  36. package/package.json +4 -1
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCrossSentenceDerivations = buildCrossSentenceDerivations;
4
+ const connectors_1 = require("./connectors");
5
+ const coreference_1 = require("../atoms/coreference");
6
+ const keyword_extractor_1 = require("../atoms/keyword-extractor");
7
+ /**
8
+ * Enriquece las fórmulas per-sentence con derivaciones cross-sentence.
9
+ */
10
+ function buildCrossSentenceDerivations(perSentenceFormulas, sentences, atomEntries, detectedPatterns) {
11
+ const extra = [];
12
+ let labelCounter = perSentenceFormulas.length + 1;
13
+ // Clasificar fórmulas existentes
14
+ const conditionals = perSentenceFormulas.filter(f => f.stType === 'axiom' && f.formula.includes(connectors_1.ST_OPERATORS.implication));
15
+ const simpleAxioms = perSentenceFormulas.filter(f => f.stType === 'axiom' && !f.formula.includes(connectors_1.ST_OPERATORS.implication) &&
16
+ !f.formula.includes(connectors_1.ST_OPERATORS.biconditional));
17
+ const negationAxioms = simpleAxioms.filter(f => f.formula.startsWith('!') || f.formula.startsWith('!('));
18
+ const positiveAxioms = simpleAxioms.filter(f => !f.formula.startsWith('!') && !f.formula.startsWith('!('));
19
+ const disjunctions = perSentenceFormulas.filter(f => f.stType === 'axiom' && f.formula.includes(connectors_1.ST_OPERATORS.disjunction)
20
+ && !f.formula.includes(connectors_1.ST_OPERATORS.implication));
21
+ const existingDerives = perSentenceFormulas.filter(f => f.stType === 'derive');
22
+ // Si ya hay derives, no duplicar
23
+ if (existingDerives.length > 0)
24
+ return extra;
25
+ // ── Modus Ponens: A→B, A ⊢ B ──────────────────
26
+ if (detectedPatterns.includes('modus_ponens') || conditionals.length > 0) {
27
+ for (const cond of conditionals) {
28
+ const parsed = parseImplication(cond.formula);
29
+ if (!parsed)
30
+ continue;
31
+ // Buscar un axioma que unifique con el antecedente
32
+ const matchingPremise = findMatchingAxiom(parsed.antecedent, positiveAxioms, atomEntries);
33
+ if (matchingPremise) {
34
+ // Buscar si ya hay conclusión explícita
35
+ const conclusionSentences = sentences.filter(s => s.clauses.some(c => c.role === 'conclusion'));
36
+ extra.push({
37
+ formula: parsed.consequent,
38
+ stType: 'derive',
39
+ label: `mp_${labelCounter++}`,
40
+ sourceText: `Modus Ponens: de ${cond.label} y ${matchingPremise.label}`,
41
+ sourceSentence: cond.sourceSentence,
42
+ comment: `Modus Ponens: ${parsed.antecedent} → ${parsed.consequent}, ${parsed.antecedent} ⊢ ${parsed.consequent}`,
43
+ });
44
+ // Solo una derivación MP por condicional
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ // ── Modus Tollens: A→B, ¬B ⊢ ¬A ──────────────
50
+ if (detectedPatterns.includes('modus_tollens') ||
51
+ (conditionals.length > 0 && negationAxioms.length > 0)) {
52
+ for (const cond of conditionals) {
53
+ const parsed = parseImplication(cond.formula);
54
+ if (!parsed)
55
+ continue;
56
+ // Buscar ¬B entre los axiomas de negación
57
+ const negConsequent = stripNegation(parsed.consequent);
58
+ if (!negConsequent)
59
+ continue;
60
+ const matchingNeg = negationAxioms.find(a => {
61
+ const stripped = stripNegation(a.formula);
62
+ return stripped !== null && atomsUnify(stripped, parsed.consequent, atomEntries);
63
+ });
64
+ // También buscar si el axioma negado es directamente ¬(consequent)
65
+ const matchingNeg2 = negationAxioms.find(a => {
66
+ const innerAtom = extractNegatedAtom(a.formula);
67
+ return innerAtom !== null && atomsUnify(innerAtom, parsed.consequent, atomEntries);
68
+ });
69
+ const foundNeg = matchingNeg || matchingNeg2;
70
+ if (foundNeg) {
71
+ extra.push({
72
+ formula: `${connectors_1.ST_OPERATORS.negation}(${parsed.antecedent})`,
73
+ stType: 'derive',
74
+ label: `mt_${labelCounter++}`,
75
+ sourceText: `Modus Tollens: de ${cond.label} y ${foundNeg.label}`,
76
+ sourceSentence: cond.sourceSentence,
77
+ comment: `Modus Tollens: ${parsed.antecedent}→${parsed.consequent}, ¬${parsed.consequent} ⊢ ¬${parsed.antecedent}`,
78
+ });
79
+ break;
80
+ }
81
+ }
82
+ }
83
+ // ── Silogismo Hipotético: A→B, B→C ⊢ A→C ─────
84
+ if (detectedPatterns.includes('hypothetical_syllogism') || conditionals.length >= 2) {
85
+ const chains = findConditionalChains(conditionals, atomEntries);
86
+ for (const chain of chains) {
87
+ extra.push({
88
+ formula: `${chain.start} ${connectors_1.ST_OPERATORS.implication} ${chain.end}`,
89
+ stType: 'derive',
90
+ label: `hs_${labelCounter++}`,
91
+ sourceText: `Silogismo Hipotético: cadena de ${chain.labels.join(', ')}`,
92
+ sourceSentence: conditionals[0].sourceSentence,
93
+ comment: `Silogismo Hipotético: ${chain.start} → ... → ${chain.end}`,
94
+ });
95
+ }
96
+ }
97
+ // ── Silogismo Disyuntivo: A∨B, ¬A ⊢ B ────────
98
+ if (detectedPatterns.includes('disjunctive_syllogism') ||
99
+ (disjunctions.length > 0 && negationAxioms.length > 0)) {
100
+ for (const disj of disjunctions) {
101
+ const parts = disj.formula.split(` ${connectors_1.ST_OPERATORS.disjunction} `).map(s => s.trim());
102
+ if (parts.length < 2)
103
+ continue;
104
+ for (const negAxiom of negationAxioms) {
105
+ const negated = extractNegatedAtom(negAxiom.formula);
106
+ if (!negated)
107
+ continue;
108
+ const negIdx = parts.findIndex(p => atomsUnify(p, negated, atomEntries));
109
+ if (negIdx >= 0) {
110
+ const remaining = parts.filter((_, i) => i !== negIdx).join(` ${connectors_1.ST_OPERATORS.disjunction} `);
111
+ extra.push({
112
+ formula: remaining,
113
+ stType: 'derive',
114
+ label: `ds_${labelCounter++}`,
115
+ sourceText: `Silogismo Disyuntivo: de ${disj.label} y ${negAxiom.label}`,
116
+ sourceSentence: disj.sourceSentence,
117
+ comment: `Silogismo Disyuntivo: ${disj.formula}, ${negAxiom.formula} ⊢ ${remaining}`,
118
+ });
119
+ break;
120
+ }
121
+ }
122
+ }
123
+ }
124
+ // ── Cadena condicional con MP final ────────────
125
+ // Si tenemos A→B, B→C, C→D y además A, derivar D
126
+ if (conditionals.length >= 2 && positiveAxioms.length > 0) {
127
+ const chains = findConditionalChains(conditionals, atomEntries);
128
+ for (const chain of chains) {
129
+ const matchingStart = findMatchingAxiom(chain.start, positiveAxioms, atomEntries);
130
+ if (matchingStart && extra.every(e => e.formula !== chain.end)) {
131
+ extra.push({
132
+ formula: chain.end,
133
+ stType: 'derive',
134
+ label: `chain_${labelCounter++}`,
135
+ sourceText: `Cadena + MP: de ${chain.labels.join(', ')} y ${matchingStart.label}`,
136
+ sourceSentence: conditionals[conditionals.length - 1].sourceSentence,
137
+ comment: `Cadena condicional + Modus Ponens: ${chain.start} → ... → ${chain.end}, ${chain.start} ⊢ ${chain.end}`,
138
+ });
139
+ }
140
+ }
141
+ }
142
+ // ── Instanciación Universal Proposicional ──────
143
+ // Si hay universal_instantiation + universal_generalization y una conclusión explícita
144
+ // sin condicionales, generar la regla implícita:
145
+ // "Todos F buscan V" (universal) + "S es F" (instancia) → "S busca V" (conclusión)
146
+ // Proposicionalmente: UNIVERSAL & INSTANCIA -> CONCLUSIÓN
147
+ if (detectedPatterns.includes('universal_instantiation') &&
148
+ conditionals.length === 0 && existingDerives.length > 0) {
149
+ // Hay derives per-sentence (la conclusión explícita con "por lo tanto")
150
+ // y axiomas universales + instancias, pero no hay condicionales.
151
+ // Generar regla proposicional: premisas → conclusión
152
+ const premiseFormulas = positiveAxioms.map(a => a.formula);
153
+ if (premiseFormulas.length >= 2 && existingDerives.length > 0) {
154
+ const conclusionFormula = existingDerives[0].formula;
155
+ const antecedent = premiseFormulas.length === 1
156
+ ? premiseFormulas[0]
157
+ : `(${premiseFormulas.join(` ${connectors_1.ST_OPERATORS.conjunction} `)})`;
158
+ const premiseLabels = positiveAxioms.map(a => a.label);
159
+ // Solo agregar si no es redundante con la conclusión ya existente
160
+ if (!extra.some(e => e.formula === conclusionFormula)) {
161
+ extra.push({
162
+ formula: `${antecedent} ${connectors_1.ST_OPERATORS.implication} ${conclusionFormula}`,
163
+ stType: 'axiom',
164
+ label: `ui_regla_${labelCounter++}`,
165
+ sourceText: `Instanciación universal: ${premiseLabels.join(', ')} ⊢ ${conclusionFormula}`,
166
+ sourceSentence: existingDerives[0].sourceSentence,
167
+ comment: `Regla de instanciación universal (proposicional): ${antecedent} → ${conclusionFormula}`,
168
+ });
169
+ }
170
+ }
171
+ }
172
+ return extra;
173
+ }
174
+ // ══════════════════════════════════════════════════════════════
175
+ // Utilidades internas
176
+ // ══════════════════════════════════════════════════════════════
177
+ /** Parsea "A -> B" en { antecedent, consequent } */
178
+ function parseImplication(formula) {
179
+ const idx = formula.indexOf(` ${connectors_1.ST_OPERATORS.implication} `);
180
+ if (idx < 0)
181
+ return null;
182
+ const antecedent = formula.slice(0, idx).trim();
183
+ const consequent = formula.slice(idx + ` ${connectors_1.ST_OPERATORS.implication} `.length).trim();
184
+ if (!antecedent || !consequent)
185
+ return null;
186
+ return { antecedent, consequent };
187
+ }
188
+ /** Extrae el átomo dentro de una negación: "!(X)" → "X", "!X" → "X" */
189
+ function extractNegatedAtom(formula) {
190
+ const trimmed = formula.trim();
191
+ // "!(ATOM)" pattern
192
+ const match1 = trimmed.match(/^!\((.+)\)$/);
193
+ if (match1)
194
+ return match1[1].trim();
195
+ // "!ATOM" pattern
196
+ const match2 = trimmed.match(/^!(\w+)$/);
197
+ if (match2)
198
+ return match2[1].trim();
199
+ return null;
200
+ }
201
+ /** Remueve negación si existe, retorna null si no es negación */
202
+ function stripNegation(formula) {
203
+ const inner = extractNegatedAtom(formula);
204
+ return inner;
205
+ }
206
+ /**
207
+ * Verifica si dos expresiones atómicas se "unifican" (son el mismo concepto).
208
+ * Usa similitud de stems para manejar variaciones morfológicas.
209
+ */
210
+ function atomsUnify(a, b, atomEntries) {
211
+ // Igualdad directa
212
+ if (a === b)
213
+ return true;
214
+ // Normalizar quitando paréntesis externos
215
+ const na = a.replace(/^\(|\)$/g, '').trim();
216
+ const nb = b.replace(/^\(|\)$/g, '').trim();
217
+ if (na === nb)
218
+ return true;
219
+ // Buscar los textos originales de los átomos
220
+ const textA = atomEntries.find(e => e.id === na)?.text;
221
+ const textB = atomEntries.find(e => e.id === nb)?.text;
222
+ if (textA && textB) {
223
+ const stemsA = (0, keyword_extractor_1.bagOfStems)(textA, 'es');
224
+ const stemsB = (0, keyword_extractor_1.bagOfStems)(textB, 'es');
225
+ return (0, coreference_1.diceSimilarity)(stemsA, stemsB) >= 0.5;
226
+ }
227
+ return false;
228
+ }
229
+ /**
230
+ * Busca un axioma simple que unifique con un átomo/fórmula dado.
231
+ */
232
+ function findMatchingAxiom(target, axioms, atomEntries) {
233
+ // Match exacto primero
234
+ const exact = axioms.find(a => a.formula === target);
235
+ if (exact)
236
+ return exact;
237
+ // Match por unificación
238
+ for (const axiom of axioms) {
239
+ if (atomsUnify(axiom.formula, target, atomEntries)) {
240
+ return axiom;
241
+ }
242
+ }
243
+ return null;
244
+ }
245
+ /**
246
+ * Encuentra cadenas de condicionales: A→B, B→C → chain(A, C)
247
+ */
248
+ function findConditionalChains(conditionals, atomEntries) {
249
+ const parsed = conditionals
250
+ .map(c => ({ ...parseImplication(c.formula), label: c.label }))
251
+ .filter(p => p.antecedent && p.consequent);
252
+ if (parsed.length < 2)
253
+ return [];
254
+ const chains = [];
255
+ // Buscar cadenas empezando por cada condicional
256
+ for (let i = 0; i < parsed.length; i++) {
257
+ let current = parsed[i];
258
+ const chain = [current.label];
259
+ let end = current.consequent;
260
+ for (let j = 0; j < parsed.length; j++) {
261
+ if (j === i || chain.includes(parsed[j].label))
262
+ continue;
263
+ if (atomsUnify(end, parsed[j].antecedent, atomEntries)) {
264
+ chain.push(parsed[j].label);
265
+ end = parsed[j].consequent;
266
+ j = -1; // restart search for next link
267
+ }
268
+ }
269
+ if (chain.length >= 2) {
270
+ chains.push({
271
+ start: parsed[i].antecedent,
272
+ end,
273
+ labels: chain,
274
+ });
275
+ }
276
+ }
277
+ // Deduplicar: quedarse con la cadena más larga para cada par start→end
278
+ const seen = new Set();
279
+ return chains
280
+ .sort((a, b) => b.labels.length - a.labels.length)
281
+ .filter(c => {
282
+ const key = `${c.start}->${c.end}`;
283
+ if (seen.has(key))
284
+ return false;
285
+ seen.add(key);
286
+ return true;
287
+ });
288
+ }
289
+ //# sourceMappingURL=argument-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argument-builder.js","sourceRoot":"","sources":["../../src/formula/argument-builder.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,21 @@
1
1
  /**
2
2
  * Formula — Orquestador de construcción de fórmulas
3
+ *
4
+ * Pipeline:
5
+ * 1. Construir fórmulas per-sentence (según perfil lógico)
6
+ * 2. Enriquecer con derivaciones cross-sentence (argument-builder)
3
7
  */
4
8
  export { buildPropositional } from './propositional';
5
9
  export { buildFirstOrder } from './first-order';
6
10
  export { buildModal } from './modal';
7
11
  export { buildTemporal } from './temporal';
12
+ export { buildCrossSentenceDerivations } from './argument-builder';
8
13
  export { roleToOperator, profileSupportsOperator, ST_OPERATORS } from './connectors';
9
14
  import type { AnalyzedSentence, AtomEntry, FormulaEntry, LogicProfile } from '../types';
10
15
  /**
11
16
  * Construye fórmulas ST según el perfil lógico seleccionado.
12
- * Delega al builder específico del perfil.
17
+ * Delega al builder específico del perfil, luego enriquece
18
+ * con derivaciones cross-sentence.
13
19
  */
14
20
  export declare function buildFormulas(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], profile: LogicProfile, detectedPatterns: string[]): FormulaEntry[];
15
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formula/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,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;AAOxF;;;;GAIG;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,CA0ChB"}
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
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;
3
+ exports.ST_OPERATORS = exports.profileSupportsOperator = exports.roleToOperator = exports.buildCrossSentenceDerivations = exports.buildTemporal = exports.buildModal = exports.buildFirstOrder = exports.buildPropositional = void 0;
4
4
  exports.buildFormulas = buildFormulas;
5
5
  /**
6
6
  * Formula — Orquestador de construcción de fórmulas
7
+ *
8
+ * Pipeline:
9
+ * 1. Construir fórmulas per-sentence (según perfil lógico)
10
+ * 2. Enriquecer con derivaciones cross-sentence (argument-builder)
7
11
  */
8
12
  var propositional_1 = require("./propositional");
9
13
  Object.defineProperty(exports, "buildPropositional", { enumerable: true, get: function () { return propositional_1.buildPropositional; } });
@@ -13,6 +17,8 @@ var modal_1 = require("./modal");
13
17
  Object.defineProperty(exports, "buildModal", { enumerable: true, get: function () { return modal_1.buildModal; } });
14
18
  var temporal_1 = require("./temporal");
15
19
  Object.defineProperty(exports, "buildTemporal", { enumerable: true, get: function () { return temporal_1.buildTemporal; } });
20
+ var argument_builder_1 = require("./argument-builder");
21
+ Object.defineProperty(exports, "buildCrossSentenceDerivations", { enumerable: true, get: function () { return argument_builder_1.buildCrossSentenceDerivations; } });
16
22
  var connectors_1 = require("./connectors");
17
23
  Object.defineProperty(exports, "roleToOperator", { enumerable: true, get: function () { return connectors_1.roleToOperator; } });
18
24
  Object.defineProperty(exports, "profileSupportsOperator", { enumerable: true, get: function () { return connectors_1.profileSupportsOperator; } });
@@ -21,29 +27,41 @@ const propositional_2 = require("./propositional");
21
27
  const first_order_2 = require("./first-order");
22
28
  const modal_2 = require("./modal");
23
29
  const temporal_2 = require("./temporal");
30
+ const argument_builder_2 = require("./argument-builder");
24
31
  /**
25
32
  * Construye fórmulas ST según el perfil lógico seleccionado.
26
- * Delega al builder específico del perfil.
33
+ * Delega al builder específico del perfil, luego enriquece
34
+ * con derivaciones cross-sentence.
27
35
  */
28
36
  function buildFormulas(sentences, atomEntries, profile, detectedPatterns) {
37
+ // ── Paso 1: fórmulas per-sentence ─────────────
38
+ let perSentence;
29
39
  switch (profile) {
30
40
  case 'classical.propositional':
31
41
  case 'intuitionistic.propositional':
32
42
  case 'paraconsistent.belnap':
33
43
  case 'arithmetic':
34
44
  case 'probabilistic.basic':
35
- return (0, propositional_2.buildPropositional)(sentences, atomEntries, detectedPatterns);
45
+ perSentence = (0, propositional_2.buildPropositional)(sentences, atomEntries, detectedPatterns);
46
+ break;
36
47
  case 'classical.first_order':
37
48
  case 'aristotelian.syllogistic':
38
- return (0, first_order_2.buildFirstOrder)(sentences, atomEntries, detectedPatterns);
49
+ perSentence = (0, first_order_2.buildFirstOrder)(sentences, atomEntries, detectedPatterns);
50
+ break;
39
51
  case 'modal.k':
40
52
  case 'epistemic.s5':
41
53
  case 'deontic.standard':
42
- return (0, modal_2.buildModal)(sentences, atomEntries, profile);
54
+ perSentence = (0, modal_2.buildModal)(sentences, atomEntries, profile);
55
+ break;
43
56
  case 'temporal.ltl':
44
- return (0, temporal_2.buildTemporal)(sentences, atomEntries);
57
+ perSentence = (0, temporal_2.buildTemporal)(sentences, atomEntries);
58
+ break;
45
59
  default:
46
- return (0, propositional_2.buildPropositional)(sentences, atomEntries, detectedPatterns);
60
+ perSentence = (0, propositional_2.buildPropositional)(sentences, atomEntries, detectedPatterns);
61
+ break;
47
62
  }
63
+ // ── Paso 2: derivaciones cross-sentence ───────
64
+ const crossDerives = (0, argument_builder_2.buildCrossSentenceDerivations)(perSentence, sentences, atomEntries, detectedPatterns);
65
+ return [...perSentence, ...crossDerives];
48
66
  }
49
67
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formula/index.ts"],"names":[],"mappings":";;;AA0BA,sCA+CC;AAzED;;;;;;GAMG;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,uDAAmE;AAA1D,iIAAA,6BAA6B,OAAA;AACtC,2CAAqF;AAA5E,4GAAA,cAAc,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAAE,0GAAA,YAAY,OAAA;AAG9D,mDAAqD;AACrD,+CAAgD;AAChD,mCAAqC;AACrC,yCAA2C;AAC3C,yDAAmE;AAEnE;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,SAA6B,EAC7B,WAAwB,EACxB,OAAqB,EACrB,gBAA0B;IAE1B,iDAAiD;IACjD,IAAI,WAA2B,CAAC;IAEhC,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,WAAW,GAAG,IAAA,kCAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC3E,MAAM;QAER,KAAK,uBAAuB,CAAC;QAC7B,KAAK,0BAA0B;YAC7B,WAAW,GAAG,IAAA,6BAAe,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM;QAER,KAAK,SAAS,CAAC;QACf,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB;YACrB,WAAW,GAAG,IAAA,kBAAU,EAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM;QAER,KAAK,cAAc;YACjB,WAAW,GAAG,IAAA,wBAAa,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACpD,MAAM;QAER;YACE,WAAW,GAAG,IAAA,kCAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC3E,MAAM;IACV,CAAC;IAED,iDAAiD;IACjD,MAAM,YAAY,GAAG,IAAA,gDAA6B,EAChD,WAAW,EACX,SAAS,EACT,WAAW,EACX,gBAAgB,CACjB,CAAC;IAEF,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC;AAC3C,CAAC"}
@@ -2,10 +2,12 @@
2
2
  * Propositional Formula Builder
3
3
  *
4
4
  * Construye fórmulas de lógica proposicional a partir de átomos con roles.
5
+ * Genera fórmulas reales con conectivos: →, ∧, ∨, ¬, ↔
5
6
  */
6
7
  import type { AnalyzedSentence, AtomEntry, FormulaEntry } from '../types';
7
8
  /**
8
9
  * Construye fórmulas proposicionales para un conjunto de oraciones.
10
+ * Cada oración se procesa según su tipo detectado.
9
11
  */
10
12
  export declare function buildPropositional(sentences: AnalyzedSentence[], atomEntries: AtomEntry[], detectedPatterns: string[]): FormulaEntry[];
11
13
  //# sourceMappingURL=propositional.d.ts.map
@@ -1 +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"}
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"}