@polintpro/proposit-core 0.1.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 (58) hide show
  1. package/README.md +521 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/core/ArgumentEngine.d.ts +41 -0
  7. package/dist/lib/core/ArgumentEngine.d.ts.map +1 -0
  8. package/dist/lib/core/ArgumentEngine.js +408 -0
  9. package/dist/lib/core/ArgumentEngine.js.map +1 -0
  10. package/dist/lib/core/ExpressionManager.d.ts +19 -0
  11. package/dist/lib/core/ExpressionManager.d.ts.map +1 -0
  12. package/dist/lib/core/ExpressionManager.js +352 -0
  13. package/dist/lib/core/ExpressionManager.js.map +1 -0
  14. package/dist/lib/core/PremiseManager.d.ts +110 -0
  15. package/dist/lib/core/PremiseManager.d.ts.map +1 -0
  16. package/dist/lib/core/PremiseManager.js +541 -0
  17. package/dist/lib/core/PremiseManager.js.map +1 -0
  18. package/dist/lib/core/VariableManager.d.ts +17 -0
  19. package/dist/lib/core/VariableManager.d.ts.map +1 -0
  20. package/dist/lib/core/VariableManager.js +40 -0
  21. package/dist/lib/core/VariableManager.js.map +1 -0
  22. package/dist/lib/core/evaluation/shared.d.ts +6 -0
  23. package/dist/lib/core/evaluation/shared.d.ts.map +1 -0
  24. package/dist/lib/core/evaluation/shared.js +23 -0
  25. package/dist/lib/core/evaluation/shared.js.map +1 -0
  26. package/dist/lib/index.d.ts +4 -0
  27. package/dist/lib/index.d.ts.map +1 -0
  28. package/dist/lib/index.js +4 -0
  29. package/dist/lib/index.js.map +1 -0
  30. package/dist/lib/schemata/argument.d.ts +9 -0
  31. package/dist/lib/schemata/argument.d.ts.map +1 -0
  32. package/dist/lib/schemata/argument.js +9 -0
  33. package/dist/lib/schemata/argument.js.map +1 -0
  34. package/dist/lib/schemata/index.d.ts +4 -0
  35. package/dist/lib/schemata/index.d.ts.map +1 -0
  36. package/dist/lib/schemata/index.js +4 -0
  37. package/dist/lib/schemata/index.js.map +1 -0
  38. package/dist/lib/schemata/propositional.d.ts +107 -0
  39. package/dist/lib/schemata/propositional.d.ts.map +1 -0
  40. package/dist/lib/schemata/propositional.js +77 -0
  41. package/dist/lib/schemata/propositional.js.map +1 -0
  42. package/dist/lib/schemata/shared.d.ts +4 -0
  43. package/dist/lib/schemata/shared.d.ts.map +1 -0
  44. package/dist/lib/schemata/shared.js +6 -0
  45. package/dist/lib/schemata/shared.js.map +1 -0
  46. package/dist/lib/types/evaluation.d.ts +108 -0
  47. package/dist/lib/types/evaluation.d.ts.map +1 -0
  48. package/dist/lib/types/evaluation.js +2 -0
  49. package/dist/lib/types/evaluation.js.map +1 -0
  50. package/dist/lib/utils/collections.d.ts +6 -0
  51. package/dist/lib/utils/collections.d.ts.map +1 -0
  52. package/dist/lib/utils/collections.js +18 -0
  53. package/dist/lib/utils/collections.js.map +1 -0
  54. package/dist/lib/utils.d.ts +10 -0
  55. package/dist/lib/utils.d.ts.map +1 -0
  56. package/dist/lib/utils.js +31 -0
  57. package/dist/lib/utils.js.map +1 -0
  58. package/package.json +46 -0
@@ -0,0 +1,541 @@
1
+ import { DefaultMap } from "../utils";
2
+ import { sortedCopyById, sortedUnique } from "../utils/collections";
3
+ import { buildDirectionalVacuity, implicationValue, makeErrorIssue, makeValidationResult, } from "./evaluation/shared";
4
+ import { ExpressionManager } from "./ExpressionManager";
5
+ import { VariableManager } from "./VariableManager";
6
+ export class PremiseManager {
7
+ id;
8
+ title;
9
+ rootExpressionId;
10
+ variables;
11
+ expressions;
12
+ expressionsByVariableId;
13
+ argument;
14
+ constructor(id, argument, title) {
15
+ this.id = id;
16
+ this.argument = argument;
17
+ this.title = title;
18
+ this.rootExpressionId = undefined;
19
+ this.variables = new VariableManager();
20
+ this.expressions = new ExpressionManager();
21
+ this.expressionsByVariableId = new DefaultMap(() => new Set());
22
+ }
23
+ /**
24
+ * Registers a propositional variable for use within this premise.
25
+ *
26
+ * @throws If `variable.symbol` is already in use within this premise.
27
+ * @throws If `variable.id` already exists within this premise.
28
+ * @throws If the variable does not belong to this premise's argument.
29
+ */
30
+ addVariable(variable) {
31
+ this.assertBelongsToArgument(variable.argumentId, variable.argumentVersion);
32
+ this.variables.addVariable(variable);
33
+ }
34
+ /**
35
+ * Removes a variable from this premise's registry and returns it, or
36
+ * `undefined` if it was not found.
37
+ *
38
+ * @throws If any expression in this premise still references the variable.
39
+ */
40
+ removeVariable(variableId) {
41
+ if (this.expressionsByVariableId.get(variableId).size > 0) {
42
+ throw new Error(`Variable "${variableId}" cannot be removed because it is referenced by one or more expressions.`);
43
+ }
44
+ return this.variables.removeVariable(variableId);
45
+ }
46
+ /**
47
+ * Adds an expression to this premise's tree.
48
+ *
49
+ * If the expression has `parentId: null` it becomes the root; only one
50
+ * root is permitted per premise. If `parentId` is non-null the parent
51
+ * must already exist within this premise.
52
+ *
53
+ * All other structural rules (`implies`/`iff` root-only, child limits,
54
+ * position uniqueness) are enforced by the underlying `ExpressionManager`.
55
+ *
56
+ * @throws If the premise already has a root expression and this one is also a root.
57
+ * @throws If the expression's parent does not exist in this premise.
58
+ * @throws If the expression is a variable reference and the variable has not been registered.
59
+ * @throws If the expression does not belong to this argument.
60
+ */
61
+ addExpression(expression) {
62
+ this.assertBelongsToArgument(expression.argumentId, expression.argumentVersion);
63
+ if (expression.type === "variable" &&
64
+ !this.variables.hasVariable(expression.variableId)) {
65
+ throw new Error(`Variable expression "${expression.id}" references non-existent variable "${expression.variableId}".`);
66
+ }
67
+ if (expression.parentId === null) {
68
+ if (this.rootExpressionId !== undefined) {
69
+ throw new Error(`Premise "${this.id}" already has a root expression.`);
70
+ }
71
+ }
72
+ else {
73
+ if (!this.expressions.getExpression(expression.parentId)) {
74
+ throw new Error(`Parent expression "${expression.parentId}" does not exist in this premise.`);
75
+ }
76
+ }
77
+ // Delegate structural validation (operator type checks, position
78
+ // uniqueness, child limits) to ExpressionManager.
79
+ this.expressions.addExpression(expression);
80
+ if (expression.parentId === null) {
81
+ this.rootExpressionId = expression.id;
82
+ }
83
+ if (expression.type === "variable") {
84
+ this.expressionsByVariableId
85
+ .get(expression.variableId)
86
+ .add(expression.id);
87
+ }
88
+ }
89
+ /**
90
+ * Removes an expression and its entire descendant subtree, then collapses
91
+ * any ancestor operators with fewer than two children (same semantics as
92
+ * before). Returns the removed root expression, or `undefined` if not
93
+ * found.
94
+ *
95
+ * `rootExpressionId` is recomputed after every removal because operator
96
+ * collapse can silently promote a new expression into the root slot.
97
+ */
98
+ removeExpression(expressionId) {
99
+ // Snapshot the subtree before deletion so we can clean up
100
+ // expressionsByVariableId for cascade-deleted descendants — they are
101
+ // not individually surfaced by ExpressionManager.removeExpression.
102
+ const subtree = this.collectSubtree(expressionId);
103
+ const removed = this.expressions.removeExpression(expressionId);
104
+ if (removed) {
105
+ for (const expr of subtree) {
106
+ if (expr.type === "variable") {
107
+ this.expressionsByVariableId
108
+ .get(expr.variableId)
109
+ ?.delete(expr.id);
110
+ }
111
+ }
112
+ }
113
+ this.syncRootExpressionId();
114
+ return removed;
115
+ }
116
+ /**
117
+ * Splices a new expression between existing nodes in the tree. The new
118
+ * expression inherits the tree slot of the anchor node
119
+ * (`leftNodeId ?? rightNodeId`).
120
+ *
121
+ * `rootExpressionId` is recomputed after every insertion because the
122
+ * anchor may have been the root.
123
+ *
124
+ * See `ArgumentEngine.insertExpression` for the full contract; the same
125
+ * rules apply here.
126
+ *
127
+ * @throws If the expression does not belong to this argument.
128
+ * @throws If the expression is a variable reference and the variable has not been registered.
129
+ */
130
+ insertExpression(expression, leftNodeId, rightNodeId) {
131
+ this.assertBelongsToArgument(expression.argumentId, expression.argumentVersion);
132
+ if (expression.type === "variable" &&
133
+ !this.variables.hasVariable(expression.variableId)) {
134
+ throw new Error(`Variable expression "${expression.id}" references non-existent variable "${expression.variableId}".`);
135
+ }
136
+ this.expressions.insertExpression(expression, leftNodeId, rightNodeId);
137
+ if (expression.type === "variable") {
138
+ this.expressionsByVariableId
139
+ .get(expression.variableId)
140
+ .add(expression.id);
141
+ }
142
+ this.syncRootExpressionId();
143
+ }
144
+ /**
145
+ * Returns an expression by ID, or `undefined` if not found in this
146
+ * premise.
147
+ */
148
+ getExpression(id) {
149
+ return this.expressions.getExpression(id);
150
+ }
151
+ getId() {
152
+ return this.id;
153
+ }
154
+ getTitle() {
155
+ return this.title;
156
+ }
157
+ getRootExpressionId() {
158
+ return this.rootExpressionId;
159
+ }
160
+ getRootExpression() {
161
+ if (this.rootExpressionId === undefined) {
162
+ return undefined;
163
+ }
164
+ const expr = this.expressions.getExpression(this.rootExpressionId);
165
+ return expr ? { ...expr } : undefined;
166
+ }
167
+ getVariables() {
168
+ return sortedCopyById(this.variables.toArray());
169
+ }
170
+ getExpressions() {
171
+ return sortedCopyById(this.expressions.toArray());
172
+ }
173
+ getChildExpressions(parentId) {
174
+ return this.expressions.getChildExpressions(parentId).map((expr) => ({
175
+ ...expr,
176
+ }));
177
+ }
178
+ getPremiseType() {
179
+ const root = this.getRootExpression();
180
+ return root?.type === "operator" &&
181
+ (root.operator === "implies" || root.operator === "iff")
182
+ ? "inference"
183
+ : "constraint";
184
+ }
185
+ validateEvaluability() {
186
+ const issues = [];
187
+ const roots = this.expressions.getChildExpressions(null);
188
+ if (this.expressions.toArray().length === 0) {
189
+ issues.push(makeErrorIssue({
190
+ code: "PREMISE_EMPTY",
191
+ message: `Premise "${this.id}" has no expressions to evaluate.`,
192
+ premiseId: this.id,
193
+ }));
194
+ return makeValidationResult(issues);
195
+ }
196
+ if (roots.length === 0) {
197
+ issues.push(makeErrorIssue({
198
+ code: "PREMISE_ROOT_MISSING",
199
+ message: `Premise "${this.id}" has expressions but no root expression.`,
200
+ premiseId: this.id,
201
+ }));
202
+ }
203
+ if (this.rootExpressionId === undefined) {
204
+ issues.push(makeErrorIssue({
205
+ code: "PREMISE_ROOT_MISSING",
206
+ message: `Premise "${this.id}" does not have rootExpressionId set.`,
207
+ premiseId: this.id,
208
+ }));
209
+ }
210
+ else if (!this.expressions.getExpression(this.rootExpressionId)) {
211
+ issues.push(makeErrorIssue({
212
+ code: "PREMISE_ROOT_MISMATCH",
213
+ message: `Premise "${this.id}" rootExpressionId "${this.rootExpressionId}" does not exist.`,
214
+ premiseId: this.id,
215
+ expressionId: this.rootExpressionId,
216
+ }));
217
+ }
218
+ else if (roots[0] && roots[0].id !== this.rootExpressionId) {
219
+ issues.push(makeErrorIssue({
220
+ code: "PREMISE_ROOT_MISMATCH",
221
+ message: `Premise "${this.id}" rootExpressionId "${this.rootExpressionId}" does not match actual root "${roots[0].id}".`,
222
+ premiseId: this.id,
223
+ expressionId: this.rootExpressionId,
224
+ }));
225
+ }
226
+ for (const expr of this.expressions.toArray()) {
227
+ if (expr.type === "variable" &&
228
+ !this.variables.hasVariable(expr.variableId)) {
229
+ issues.push(makeErrorIssue({
230
+ code: "EXPR_VARIABLE_UNDECLARED",
231
+ message: `Expression "${expr.id}" references undeclared variable "${expr.variableId}".`,
232
+ premiseId: this.id,
233
+ expressionId: expr.id,
234
+ variableId: expr.variableId,
235
+ }));
236
+ }
237
+ if (expr.type !== "operator" && expr.type !== "formula") {
238
+ continue;
239
+ }
240
+ const children = this.expressions.getChildExpressions(expr.id);
241
+ if (expr.type === "formula") {
242
+ if (children.length !== 1) {
243
+ issues.push(makeErrorIssue({
244
+ code: "EXPR_CHILD_COUNT_INVALID",
245
+ message: `Formula expression "${expr.id}" must have exactly 1 child; found ${children.length}.`,
246
+ premiseId: this.id,
247
+ expressionId: expr.id,
248
+ }));
249
+ }
250
+ continue;
251
+ }
252
+ if (expr.operator === "not" && children.length !== 1) {
253
+ issues.push(makeErrorIssue({
254
+ code: "EXPR_CHILD_COUNT_INVALID",
255
+ message: `Operator "${expr.id}" (not) must have exactly 1 child; found ${children.length}.`,
256
+ premiseId: this.id,
257
+ expressionId: expr.id,
258
+ }));
259
+ }
260
+ if ((expr.operator === "implies" || expr.operator === "iff") &&
261
+ children.length !== 2) {
262
+ issues.push(makeErrorIssue({
263
+ code: "EXPR_CHILD_COUNT_INVALID",
264
+ message: `Operator "${expr.id}" (${expr.operator}) must have exactly 2 children; found ${children.length}.`,
265
+ premiseId: this.id,
266
+ expressionId: expr.id,
267
+ }));
268
+ }
269
+ if ((expr.operator === "and" || expr.operator === "or") &&
270
+ children.length < 2) {
271
+ issues.push(makeErrorIssue({
272
+ code: "EXPR_CHILD_COUNT_INVALID",
273
+ message: `Operator "${expr.id}" (${expr.operator}) must have at least 2 children; found ${children.length}.`,
274
+ premiseId: this.id,
275
+ expressionId: expr.id,
276
+ }));
277
+ }
278
+ if (expr.operator === "implies" || expr.operator === "iff") {
279
+ const childPositions = new Set(children.map((child) => child.position));
280
+ if (!childPositions.has(0) || !childPositions.has(1)) {
281
+ issues.push(makeErrorIssue({
282
+ code: "EXPR_BINARY_POSITIONS_INVALID",
283
+ message: `Operator "${expr.id}" (${expr.operator}) must have children at positions 0 and 1.`,
284
+ premiseId: this.id,
285
+ expressionId: expr.id,
286
+ }));
287
+ }
288
+ }
289
+ }
290
+ return makeValidationResult(issues);
291
+ }
292
+ evaluate(assignment, options) {
293
+ const validation = this.validateEvaluability();
294
+ if (!validation.ok) {
295
+ throw new Error(`Premise "${this.id}" is not evaluable: ${validation.issues
296
+ .map((issue) => issue.code)
297
+ .join(", ")}`);
298
+ }
299
+ const rootExpressionId = this.rootExpressionId;
300
+ const referencedVariableIds = sortedUnique(this.expressions
301
+ .toArray()
302
+ .filter((expr) => expr.type === "variable")
303
+ .map((expr) => expr.variableId));
304
+ const missingVariableIds = referencedVariableIds.filter((variableId) => !(variableId in assignment));
305
+ if (missingVariableIds.length > 0) {
306
+ throw new Error(`Missing assignment values for variables: ${missingVariableIds.join(", ")}`);
307
+ }
308
+ if (options?.strictUnknownKeys || options?.requireExactCoverage) {
309
+ const knownVariableIds = new Set(referencedVariableIds);
310
+ const unknownKeys = Object.keys(assignment).filter((variableId) => !knownVariableIds.has(variableId));
311
+ if (unknownKeys.length > 0) {
312
+ throw new Error(`Assignment contains unknown variable IDs for premise "${this.id}": ${unknownKeys.join(", ")}`);
313
+ }
314
+ }
315
+ const expressionValues = {};
316
+ const evaluateExpression = (expressionId) => {
317
+ const expression = this.expressions.getExpression(expressionId);
318
+ if (!expression) {
319
+ throw new Error(`Expression "${expressionId}" was not found.`);
320
+ }
321
+ if (expression.type === "variable") {
322
+ const value = assignment[expression.variableId];
323
+ expressionValues[expression.id] = value;
324
+ return value;
325
+ }
326
+ const children = this.expressions.getChildExpressions(expression.id);
327
+ let value;
328
+ if (expression.type === "formula") {
329
+ value = evaluateExpression(children[0].id);
330
+ expressionValues[expression.id] = value;
331
+ return value;
332
+ }
333
+ switch (expression.operator) {
334
+ case "not":
335
+ value = !evaluateExpression(children[0].id);
336
+ break;
337
+ case "and":
338
+ value = children.every((child) => evaluateExpression(child.id));
339
+ break;
340
+ case "or":
341
+ value = children.some((child) => evaluateExpression(child.id));
342
+ break;
343
+ case "implies": {
344
+ const left = children.find((child) => child.position === 0);
345
+ const right = children.find((child) => child.position === 1);
346
+ value = implicationValue(evaluateExpression(left.id), evaluateExpression(right.id));
347
+ break;
348
+ }
349
+ case "iff": {
350
+ const left = children.find((child) => child.position === 0);
351
+ const right = children.find((child) => child.position === 1);
352
+ value =
353
+ evaluateExpression(left.id) ===
354
+ evaluateExpression(right.id);
355
+ break;
356
+ }
357
+ }
358
+ expressionValues[expression.id] = value;
359
+ return value;
360
+ };
361
+ const rootValue = evaluateExpression(rootExpressionId);
362
+ const variableValues = {};
363
+ for (const variableId of referencedVariableIds) {
364
+ variableValues[variableId] = assignment[variableId];
365
+ }
366
+ let inferenceDiagnostic;
367
+ if (this.getPremiseType() === "inference") {
368
+ const root = this.expressions.getExpression(rootExpressionId);
369
+ if (root?.type === "operator") {
370
+ const children = this.expressions.getChildExpressions(root.id);
371
+ const left = children.find((child) => child.position === 0);
372
+ const right = children.find((child) => child.position === 1);
373
+ if (left && right) {
374
+ const leftValue = expressionValues[left.id];
375
+ const rightValue = expressionValues[right.id];
376
+ if (root.operator === "implies") {
377
+ inferenceDiagnostic = {
378
+ kind: "implies",
379
+ premiseId: this.id,
380
+ rootExpressionId,
381
+ leftValue,
382
+ rightValue,
383
+ rootValue,
384
+ antecedentTrue: leftValue,
385
+ consequentTrue: rightValue,
386
+ isVacuouslyTrue: !leftValue,
387
+ fired: leftValue,
388
+ firedAndHeld: leftValue && rightValue,
389
+ };
390
+ }
391
+ else if (root.operator === "iff") {
392
+ const leftToRight = buildDirectionalVacuity(leftValue, rightValue);
393
+ const rightToLeft = buildDirectionalVacuity(rightValue, leftValue);
394
+ inferenceDiagnostic = {
395
+ kind: "iff",
396
+ premiseId: this.id,
397
+ rootExpressionId,
398
+ leftValue,
399
+ rightValue,
400
+ rootValue,
401
+ leftToRight,
402
+ rightToLeft,
403
+ bothSidesTrue: leftValue && rightValue,
404
+ bothSidesFalse: !leftValue && !rightValue,
405
+ };
406
+ }
407
+ }
408
+ }
409
+ }
410
+ return {
411
+ premiseId: this.id,
412
+ premiseType: this.getPremiseType(),
413
+ rootExpressionId,
414
+ rootValue,
415
+ expressionValues,
416
+ variableValues,
417
+ inferenceDiagnostic,
418
+ };
419
+ }
420
+ /**
421
+ * Returns a human-readable string of this premise's expression tree using
422
+ * standard logical notation (∧ ∨ ¬ → ↔). Missing operands are rendered
423
+ * as `(?)`. Returns an empty string when the premise has no expressions.
424
+ */
425
+ toDisplayString() {
426
+ if (this.rootExpressionId === undefined) {
427
+ return "";
428
+ }
429
+ return this.renderExpression(this.rootExpressionId);
430
+ }
431
+ /**
432
+ * Returns a serialisable snapshot of this premise conforming to
433
+ * `TPremise`. `variables` contains only the variables that are actually
434
+ * referenced by expressions in this premise. `type` is derived from the
435
+ * root expression: `"inference"` if the root is an `implies` or `iff`
436
+ * operator, `"constraint"` otherwise (including when the premise is empty).
437
+ */
438
+ toData() {
439
+ const expressions = this.getExpressions();
440
+ const referencedVariableIds = new Set();
441
+ for (const expr of expressions) {
442
+ if (expr.type === "variable") {
443
+ referencedVariableIds.add(expr.variableId);
444
+ }
445
+ }
446
+ const variables = Array.from(referencedVariableIds)
447
+ .map((id) => this.variables.getVariable(id))
448
+ .filter((v) => v !== undefined)
449
+ .map((v) => ({ ...v }))
450
+ .sort((a, b) => a.id.localeCompare(b.id));
451
+ return {
452
+ id: this.id,
453
+ title: this.title,
454
+ rootExpressionId: this.rootExpressionId,
455
+ variables,
456
+ expressions,
457
+ type: this.getPremiseType(),
458
+ };
459
+ }
460
+ // -------------------------------------------------------------------------
461
+ // Private helpers
462
+ // -------------------------------------------------------------------------
463
+ /**
464
+ * Re-reads the single root from ExpressionManager after any operation
465
+ * that may have caused operator collapse to silently change the root.
466
+ */
467
+ syncRootExpressionId() {
468
+ const roots = this.expressions.getChildExpressions(null);
469
+ this.rootExpressionId = roots[0]?.id;
470
+ }
471
+ collectSubtree(rootId) {
472
+ const result = [];
473
+ const stack = [rootId];
474
+ while (stack.length > 0) {
475
+ const id = stack.pop();
476
+ const expr = this.expressions.getExpression(id);
477
+ if (!expr)
478
+ continue;
479
+ result.push(expr);
480
+ for (const child of this.expressions.getChildExpressions(id)) {
481
+ stack.push(child.id);
482
+ }
483
+ }
484
+ return result;
485
+ }
486
+ assertBelongsToArgument(argumentId, argumentVersion) {
487
+ if (argumentId !== this.argument.id) {
488
+ throw new Error(`Entity argumentId "${argumentId}" does not match engine argument ID "${this.argument.id}".`);
489
+ }
490
+ if (argumentVersion !== this.argument.version) {
491
+ throw new Error(`Entity argumentVersion "${argumentVersion}" does not match engine argument version "${this.argument.version}".`);
492
+ }
493
+ }
494
+ renderExpression(expressionId) {
495
+ const expression = this.expressions.getExpression(expressionId);
496
+ if (!expression) {
497
+ throw new Error(`Expression "${expressionId}" was not found.`);
498
+ }
499
+ if (expression.type === "variable") {
500
+ const variable = this.variables.getVariable(expression.variableId);
501
+ if (!variable) {
502
+ throw new Error(`Variable "${expression.variableId}" for expression "${expressionId}" was not found.`);
503
+ }
504
+ return variable.symbol;
505
+ }
506
+ if (expression.type === "formula") {
507
+ const children = this.expressions.getChildExpressions(expression.id);
508
+ if (children.length === 0) {
509
+ return "(?)";
510
+ }
511
+ return `(${this.renderExpression(children[0].id)})`;
512
+ }
513
+ const children = this.expressions.getChildExpressions(expression.id);
514
+ if (expression.operator === "not") {
515
+ if (children.length === 0) {
516
+ return `${this.operatorSymbol(expression.operator)} (?)`;
517
+ }
518
+ return `${this.operatorSymbol(expression.operator)}(${this.renderExpression(children[0].id)})`;
519
+ }
520
+ if (children.length === 0) {
521
+ return "(?)";
522
+ }
523
+ const renderedChildren = children.map((child) => this.renderExpression(child.id));
524
+ return `(${renderedChildren.join(` ${this.operatorSymbol(expression.operator)} `)})`;
525
+ }
526
+ operatorSymbol(operator) {
527
+ switch (operator) {
528
+ case "and":
529
+ return "∧";
530
+ case "or":
531
+ return "∨";
532
+ case "implies":
533
+ return "→";
534
+ case "iff":
535
+ return "↔";
536
+ case "not":
537
+ return "¬";
538
+ }
539
+ }
540
+ }
541
+ //# sourceMappingURL=PremiseManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PremiseManager.js","sourceRoot":"","sources":["../../../src/lib/core/PremiseManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { TPropositionalVariable } from "../schemata";
2
+ export declare class VariableManager {
3
+ private variables;
4
+ private variableSymbols;
5
+ constructor(initialVariables?: TPropositionalVariable[]);
6
+ toArray(): TPropositionalVariable[];
7
+ addVariable(variable: TPropositionalVariable): void;
8
+ removeVariable(variableId: string): {
9
+ symbol: string;
10
+ id: string;
11
+ argumentId: string;
12
+ argumentVersion: number;
13
+ } | undefined;
14
+ hasVariable(variableId: string): boolean;
15
+ getVariable(variableId: string): TPropositionalVariable | undefined;
16
+ }
17
+ //# sourceMappingURL=VariableManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariableManager.d.ts","sourceRoot":"","sources":["../../../src/lib/core/VariableManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzD,qBAAa,eAAe;IACxB,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,eAAe,CAAa;gBAExB,gBAAgB,GAAE,sBAAsB,EAAO;IASpD,OAAO,IAAI,sBAAsB,EAAE;IAInC,WAAW,CAAC,QAAQ,EAAE,sBAAsB;IAc5C,cAAc,CAAC,UAAU,EAAE,MAAM;;;;;;IAWjC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;CAG7E"}
@@ -0,0 +1,40 @@
1
+ export class VariableManager {
2
+ variables;
3
+ variableSymbols;
4
+ constructor(initialVariables = []) {
5
+ this.variables = new Map();
6
+ this.variableSymbols = new Set();
7
+ for (const variable of initialVariables) {
8
+ this.addVariable(variable);
9
+ }
10
+ }
11
+ toArray() {
12
+ return Array.from(this.variables.values());
13
+ }
14
+ addVariable(variable) {
15
+ if (this.variableSymbols.has(variable.symbol)) {
16
+ throw new Error(`Variable symbol "${variable.symbol}" already exists.`);
17
+ }
18
+ if (this.variables.has(variable.id)) {
19
+ throw new Error(`Variable with ID "${variable.id}" already exists.`);
20
+ }
21
+ this.variables.set(variable.id, variable);
22
+ this.variableSymbols.add(variable.symbol);
23
+ }
24
+ removeVariable(variableId) {
25
+ const variable = this.variables.get(variableId);
26
+ if (!variable) {
27
+ return undefined;
28
+ }
29
+ this.variables.delete(variableId);
30
+ this.variableSymbols.delete(variable.symbol);
31
+ return variable;
32
+ }
33
+ hasVariable(variableId) {
34
+ return this.variables.has(variableId);
35
+ }
36
+ getVariable(variableId) {
37
+ return this.variables.get(variableId);
38
+ }
39
+ }
40
+ //# sourceMappingURL=VariableManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariableManager.js","sourceRoot":"","sources":["../../../src/lib/core/VariableManager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IAChB,SAAS,CAAqC;IAC9C,eAAe,CAAa;IAEpC,YAAY,mBAA6C,EAAE;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;QAEhC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC;IAEM,OAAO;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;IAEM,WAAW,CAAC,QAAgC;QAC/C,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACX,oBAAoB,QAAQ,CAAC,MAAM,mBAAmB,CACzD,CAAA;QACL,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;QACxE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAEM,cAAc,CAAC,UAAkB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC5C,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEM,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACzC,CAAC;IAEM,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACzC,CAAC;CACJ"}
@@ -0,0 +1,6 @@
1
+ import type { TDirectionalVacuity, TValidationIssue, TValidationResult } from "../../types/evaluation";
2
+ export declare function makeValidationResult(issues: TValidationIssue[]): TValidationResult;
3
+ export declare function makeErrorIssue(issue: Omit<TValidationIssue, "severity">): TValidationIssue;
4
+ export declare function implicationValue(antecedent: boolean, consequent: boolean): boolean;
5
+ export declare function buildDirectionalVacuity(antecedentTrue: boolean, consequentTrue: boolean): TDirectionalVacuity;
6
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/evaluation/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACpB,MAAM,wBAAwB,CAAA;AAE/B,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,gBAAgB,EAAE,GAC3B,iBAAiB,CAKnB;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAC1C,gBAAgB,CAElB;AAED,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,OAAO,GACpB,OAAO,CAET;AAED,wBAAgB,uBAAuB,CACnC,cAAc,EAAE,OAAO,EACvB,cAAc,EAAE,OAAO,GACxB,mBAAmB,CASrB"}