@proposit/proposit-core 0.12.3 → 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.
- package/README.md +104 -93
- package/dist/cli/commands/premises.d.ts.map +1 -1
- package/dist/cli/commands/premises.js +28 -24
- package/dist/cli/commands/premises.js.map +1 -1
- package/dist/cli/commands/repair.d.ts.map +1 -1
- package/dist/cli/commands/repair.js +4 -2
- package/dist/cli/commands/repair.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +7 -1
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/engine.d.ts.map +1 -1
- package/dist/cli/engine.js +7 -25
- package/dist/cli/engine.js.map +1 -1
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +66 -28
- package/dist/cli/import.js.map +1 -1
- package/dist/lib/core/argument-engine.d.ts +275 -10
- package/dist/lib/core/argument-engine.d.ts.map +1 -1
- package/dist/lib/core/argument-engine.js +442 -82
- package/dist/lib/core/argument-engine.js.map +1 -1
- package/dist/lib/core/argument-library.d.ts +5 -1
- package/dist/lib/core/argument-library.d.ts.map +1 -1
- package/dist/lib/core/argument-library.js +7 -3
- package/dist/lib/core/argument-library.js.map +1 -1
- package/dist/lib/core/expression-manager.d.ts +68 -73
- package/dist/lib/core/expression-manager.d.ts.map +1 -1
- package/dist/lib/core/expression-manager.js +242 -762
- package/dist/lib/core/expression-manager.js.map +1 -1
- package/dist/lib/core/fork.d.ts +5 -1
- package/dist/lib/core/fork.d.ts.map +1 -1
- package/dist/lib/core/fork.js +16 -6
- package/dist/lib/core/fork.js.map +1 -1
- package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts +68 -7
- package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts.map +1 -1
- package/dist/lib/core/interfaces/library.interfaces.d.ts +8 -3
- package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
- package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts +50 -47
- package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts.map +1 -1
- package/dist/lib/core/premise-engine.d.ts +80 -11
- package/dist/lib/core/premise-engine.d.ts.map +1 -1
- package/dist/lib/core/premise-engine.js +232 -80
- package/dist/lib/core/premise-engine.js.map +1 -1
- package/dist/lib/core/proposit-core.d.ts.map +1 -1
- package/dist/lib/core/proposit-core.js +13 -3
- package/dist/lib/core/proposit-core.js.map +1 -1
- package/dist/lib/grammar/an-rules.d.ts +158 -0
- package/dist/lib/grammar/an-rules.d.ts.map +1 -0
- package/dist/lib/grammar/an-rules.js +778 -0
- package/dist/lib/grammar/an-rules.js.map +1 -0
- package/dist/lib/grammar/auto-normalize.d.ts +14 -0
- package/dist/lib/grammar/auto-normalize.d.ts.map +1 -0
- package/dist/lib/grammar/auto-normalize.js +35 -0
- package/dist/lib/grammar/auto-normalize.js.map +1 -0
- package/dist/lib/grammar/bounded-subtree.d.ts +30 -0
- package/dist/lib/grammar/bounded-subtree.d.ts.map +1 -0
- package/dist/lib/grammar/bounded-subtree.js +74 -0
- package/dist/lib/grammar/bounded-subtree.js.map +1 -0
- package/dist/lib/grammar/naked-q.d.ts +20 -0
- package/dist/lib/grammar/naked-q.d.ts.map +1 -0
- package/dist/lib/grammar/naked-q.js +58 -0
- package/dist/lib/grammar/naked-q.js.map +1 -0
- package/dist/lib/grammar/normalize.d.ts +12 -0
- package/dist/lib/grammar/normalize.d.ts.map +1 -0
- package/dist/lib/grammar/normalize.js +45 -0
- package/dist/lib/grammar/normalize.js.map +1 -0
- package/dist/lib/grammar/populate-from.d.ts +25 -0
- package/dist/lib/grammar/populate-from.d.ts.map +1 -0
- package/dist/lib/grammar/populate-from.js +252 -0
- package/dist/lib/grammar/populate-from.js.map +1 -0
- package/dist/lib/grammar/repair.d.ts +65 -0
- package/dist/lib/grammar/repair.d.ts.map +1 -0
- package/dist/lib/grammar/repair.js +251 -0
- package/dist/lib/grammar/repair.js.map +1 -0
- package/dist/lib/grammar/types.d.ts +17 -0
- package/dist/lib/grammar/types.d.ts.map +1 -0
- package/dist/lib/grammar/types.js +82 -0
- package/dist/lib/grammar/types.js.map +1 -0
- package/dist/lib/grammar/validate.d.ts +4 -0
- package/dist/lib/grammar/validate.d.ts.map +1 -0
- package/dist/lib/grammar/validate.js +28 -0
- package/dist/lib/grammar/validate.js.map +1 -0
- package/dist/lib/grammar/validators/context.d.ts +11 -0
- package/dist/lib/grammar/validators/context.d.ts.map +1 -0
- package/dist/lib/grammar/validators/context.js +5 -0
- package/dist/lib/grammar/validators/context.js.map +1 -0
- package/dist/lib/grammar/validators/derivable.d.ts +63 -0
- package/dist/lib/grammar/validators/derivable.d.ts.map +1 -0
- package/dist/lib/grammar/validators/derivable.js +502 -0
- package/dist/lib/grammar/validators/derivable.js.map +1 -0
- package/dist/lib/grammar/validators/evaluable.d.ts +48 -0
- package/dist/lib/grammar/validators/evaluable.d.ts.map +1 -0
- package/dist/lib/grammar/validators/evaluable.js +226 -0
- package/dist/lib/grammar/validators/evaluable.js.map +1 -0
- package/dist/lib/grammar/validators/presentable.d.ts +45 -0
- package/dist/lib/grammar/validators/presentable.d.ts.map +1 -0
- package/dist/lib/grammar/validators/presentable.js +231 -0
- package/dist/lib/grammar/validators/presentable.js.map +1 -0
- package/dist/lib/grammar/validators/structural.d.ts +103 -0
- package/dist/lib/grammar/validators/structural.d.ts.map +1 -0
- package/dist/lib/grammar/validators/structural.js +602 -0
- package/dist/lib/grammar/validators/structural.js.map +1 -0
- package/dist/lib/index.d.ts +4 -3
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsing/argument-parser.d.ts.map +1 -1
- package/dist/lib/parsing/argument-parser.js +52 -10
- package/dist/lib/parsing/argument-parser.js.map +1 -1
- package/dist/lib/types/evaluation.d.ts +1 -1
- package/dist/lib/types/evaluation.d.ts.map +1 -1
- package/dist/lib/types/fork.d.ts +12 -3
- package/dist/lib/types/fork.d.ts.map +1 -1
- package/dist/lib/types/validation.d.ts +0 -6
- package/dist/lib/types/validation.d.ts.map +1 -1
- package/dist/lib/types/validation.js +23 -6
- package/dist/lib/types/validation.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/core/managed-derivation-premise-engine.d.ts +0 -172
- package/dist/lib/core/managed-derivation-premise-engine.d.ts.map +0 -1
- package/dist/lib/core/managed-derivation-premise-engine.js +0 -550
- package/dist/lib/core/managed-derivation-premise-engine.js.map +0 -1
- package/dist/lib/types/grammar.d.ts +0 -83
- package/dist/lib/types/grammar.d.ts.map +0 -1
- package/dist/lib/types/grammar.js +0 -24
- package/dist/lib/types/grammar.js.map +0 -1
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
// Structural-tier validators (S-1..S-14). Each rule has an exported
|
|
2
|
+
// function with the signature (ctx: TValidatorContext) => readonly
|
|
3
|
+
// TViolation[]. The aggregator validateStructural runs every rule and
|
|
4
|
+
// concatenates the results.
|
|
5
|
+
//
|
|
6
|
+
// S-1 FK soundness
|
|
7
|
+
// S-2 operator types
|
|
8
|
+
// S-3 variable required reference
|
|
9
|
+
// S-4 no cycles
|
|
10
|
+
// S-5 root-only IMPLIES/IFF
|
|
11
|
+
// S-6 premise type discriminator consistency
|
|
12
|
+
// S-7 claim type immutability (creation-time invariant; runtime no-op)
|
|
13
|
+
// S-8 binary operator arity + positions
|
|
14
|
+
// S-9 sibling position uniqueness
|
|
15
|
+
// S-10 entity ID uniqueness
|
|
16
|
+
// S-11 variable symbol uniqueness
|
|
17
|
+
// S-12 NOT unary arity
|
|
18
|
+
// S-13 formula unary arity
|
|
19
|
+
// S-14 derivation premise root operator
|
|
20
|
+
import { isClaimBound, isPremiseBound } from "../../schemata/propositional.js";
|
|
21
|
+
/**
|
|
22
|
+
* S-1 — FK soundness.
|
|
23
|
+
*
|
|
24
|
+
* For every entity in the context, check that its foreign-key fields
|
|
25
|
+
* resolve to an existing target:
|
|
26
|
+
* - `expression.parentId` (when non-null) resolves to another expression
|
|
27
|
+
* in the context.
|
|
28
|
+
* - Claim-bound variable's `claimId` resolves to a claim in the context.
|
|
29
|
+
* - Premise-bound variable's `boundPremiseId` resolves to a premise in the
|
|
30
|
+
* context **only when** the binding is internal
|
|
31
|
+
* (`boundArgumentId === argument.id`); externally-bound variables
|
|
32
|
+
* resolve in a different argument and are not S-1's concern.
|
|
33
|
+
*
|
|
34
|
+
* Premise `argumentId`/`argumentVersion` matching its container argument
|
|
35
|
+
* is checked here too (same-FK-soundness umbrella).
|
|
36
|
+
*/
|
|
37
|
+
export function validateS1(ctx) {
|
|
38
|
+
const violations = [];
|
|
39
|
+
const expressionIds = new Set(ctx.expressions.map((e) => e.id));
|
|
40
|
+
const premiseIds = new Set(ctx.premises.map((p) => p.id));
|
|
41
|
+
const claimIds = new Set(ctx.claims.map((c) => c.id));
|
|
42
|
+
// Expression parent refs.
|
|
43
|
+
for (const e of ctx.expressions) {
|
|
44
|
+
if (e.parentId !== null && !expressionIds.has(e.parentId)) {
|
|
45
|
+
violations.push({
|
|
46
|
+
tier: "structural",
|
|
47
|
+
code: "S-1",
|
|
48
|
+
message: `expression ${e.id} has parentId ${e.parentId} which does not resolve`,
|
|
49
|
+
argumentId: ctx.argument.id,
|
|
50
|
+
premiseId: e.premiseId,
|
|
51
|
+
expressionId: e.id,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Variable refs.
|
|
56
|
+
for (const v of ctx.variables) {
|
|
57
|
+
if (isClaimBound(v)) {
|
|
58
|
+
if (!claimIds.has(v.claimId)) {
|
|
59
|
+
violations.push({
|
|
60
|
+
tier: "structural",
|
|
61
|
+
code: "S-1",
|
|
62
|
+
message: `variable ${v.id} has claimId ${v.claimId} which does not resolve`,
|
|
63
|
+
argumentId: ctx.argument.id,
|
|
64
|
+
variableId: v.id,
|
|
65
|
+
claimId: v.claimId,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (isPremiseBound(v)) {
|
|
70
|
+
// Internal binding: same argument; FK must resolve here. External
|
|
71
|
+
// binding: different argument; resolves elsewhere — not S-1.
|
|
72
|
+
if (v.boundArgumentId === ctx.argument.id &&
|
|
73
|
+
!premiseIds.has(v.boundPremiseId)) {
|
|
74
|
+
violations.push({
|
|
75
|
+
tier: "structural",
|
|
76
|
+
code: "S-1",
|
|
77
|
+
message: `variable ${v.id} has boundPremiseId ${v.boundPremiseId} which does not resolve in argument ${ctx.argument.id}`,
|
|
78
|
+
argumentId: ctx.argument.id,
|
|
79
|
+
variableId: v.id,
|
|
80
|
+
premiseId: v.boundPremiseId,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Premise → argument refs.
|
|
86
|
+
for (const p of ctx.premises) {
|
|
87
|
+
if (p.argumentId !== ctx.argument.id ||
|
|
88
|
+
p.argumentVersion !== ctx.argument.version) {
|
|
89
|
+
violations.push({
|
|
90
|
+
tier: "structural",
|
|
91
|
+
code: "S-1",
|
|
92
|
+
message: `premise ${p.id} has argumentId/argumentVersion ${p.argumentId}/${p.argumentVersion} which does not match container ${ctx.argument.id}/${ctx.argument.version}`,
|
|
93
|
+
argumentId: ctx.argument.id,
|
|
94
|
+
premiseId: p.id,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return violations;
|
|
99
|
+
}
|
|
100
|
+
// Static-string allow-lists used by S-2 below. Kept as `string[]` (not the
|
|
101
|
+
// narrow literal union) so `.includes(...)` accepts a widened input from
|
|
102
|
+
// runtime data — the whole point of S-2 is to detect deserialized data
|
|
103
|
+
// whose discriminant value doesn't match the legal union at compile time.
|
|
104
|
+
const validExpressionTypes = ["variable", "operator", "formula"];
|
|
105
|
+
const validOperatorTypes = ["not", "and", "or", "implies", "iff"];
|
|
106
|
+
/**
|
|
107
|
+
* S-2 — Operator types. Every expression's `type` is one of `variable`,
|
|
108
|
+
* `operator`, `formula`. For operator-typed expressions, the `operator`
|
|
109
|
+
* field is one of `not`, `and`, `or`, `implies`, `iff`.
|
|
110
|
+
*/
|
|
111
|
+
export function validateS2(ctx) {
|
|
112
|
+
const violations = [];
|
|
113
|
+
for (const e of ctx.expressions) {
|
|
114
|
+
// Widen `type` to `string` so .includes() accepts it without a cast.
|
|
115
|
+
// TS thinks the field can only be the legal union; the widening is
|
|
116
|
+
// a defensive read against malformed runtime data.
|
|
117
|
+
const eType = e.type;
|
|
118
|
+
if (!validExpressionTypes.includes(eType)) {
|
|
119
|
+
violations.push({
|
|
120
|
+
tier: "structural",
|
|
121
|
+
code: "S-2",
|
|
122
|
+
message: `expression ${e.id} has unknown type '${eType}'`,
|
|
123
|
+
argumentId: ctx.argument.id,
|
|
124
|
+
premiseId: e.premiseId,
|
|
125
|
+
expressionId: e.id,
|
|
126
|
+
});
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (e.type === "operator") {
|
|
130
|
+
const op = e.operator;
|
|
131
|
+
if (!validOperatorTypes.includes(op)) {
|
|
132
|
+
violations.push({
|
|
133
|
+
tier: "structural",
|
|
134
|
+
code: "S-2",
|
|
135
|
+
message: `operator expression ${e.id} has unknown operator '${op}'`,
|
|
136
|
+
argumentId: ctx.argument.id,
|
|
137
|
+
premiseId: e.premiseId,
|
|
138
|
+
expressionId: e.id,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return violations;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* S-3 — Variable required reference. Every variable has either a claim ref
|
|
147
|
+
* or a premise ref, not both, not neither.
|
|
148
|
+
*/
|
|
149
|
+
export function validateS3(ctx) {
|
|
150
|
+
const violations = [];
|
|
151
|
+
for (const v of ctx.variables) {
|
|
152
|
+
// Capture id before type-guard narrowing: the "neither" branch
|
|
153
|
+
// below corresponds to malformed data that TypeScript narrows to
|
|
154
|
+
// `never` (the static union is exhaustive). Preserving the id via
|
|
155
|
+
// a separate read works around the narrowing.
|
|
156
|
+
const variableId = v.id;
|
|
157
|
+
const hasClaimRef = isClaimBound(v);
|
|
158
|
+
const hasPremiseRef = isPremiseBound(v);
|
|
159
|
+
if (hasClaimRef && hasPremiseRef) {
|
|
160
|
+
violations.push({
|
|
161
|
+
tier: "structural",
|
|
162
|
+
code: "S-3",
|
|
163
|
+
message: `variable ${variableId} has both claim and premise references`,
|
|
164
|
+
argumentId: ctx.argument.id,
|
|
165
|
+
variableId,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else if (!hasClaimRef && !hasPremiseRef) {
|
|
169
|
+
violations.push({
|
|
170
|
+
tier: "structural",
|
|
171
|
+
code: "S-3",
|
|
172
|
+
message: `variable ${variableId} has neither claim nor premise reference`,
|
|
173
|
+
argumentId: ctx.argument.id,
|
|
174
|
+
variableId,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return violations;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* S-4 — No cycles. The expression tree of every premise (parent-pointer
|
|
182
|
+
* graph) is acyclic.
|
|
183
|
+
*/
|
|
184
|
+
export function validateS4(ctx) {
|
|
185
|
+
const violations = [];
|
|
186
|
+
const byId = new Map();
|
|
187
|
+
for (const e of ctx.expressions)
|
|
188
|
+
byId.set(e.id, e);
|
|
189
|
+
for (const start of ctx.expressions) {
|
|
190
|
+
const seen = new Set();
|
|
191
|
+
let cursor = start.id;
|
|
192
|
+
let cycleDetected = false;
|
|
193
|
+
while (cursor !== null) {
|
|
194
|
+
if (seen.has(cursor)) {
|
|
195
|
+
cycleDetected = true;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
seen.add(cursor);
|
|
199
|
+
const node = byId.get(cursor);
|
|
200
|
+
if (node === undefined)
|
|
201
|
+
break;
|
|
202
|
+
cursor = node.parentId;
|
|
203
|
+
}
|
|
204
|
+
if (cycleDetected) {
|
|
205
|
+
violations.push({
|
|
206
|
+
tier: "structural",
|
|
207
|
+
code: "S-4",
|
|
208
|
+
message: `expression ${start.id} is in a parent-pointer cycle`,
|
|
209
|
+
argumentId: ctx.argument.id,
|
|
210
|
+
premiseId: start.premiseId,
|
|
211
|
+
expressionId: start.id,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return violations;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* S-5 — Root-only IMPLIES/IFF. Within a single premise's AST, `implies`
|
|
219
|
+
* and `iff` may appear at most once and only at the root (parentId === null).
|
|
220
|
+
*/
|
|
221
|
+
export function validateS5(ctx) {
|
|
222
|
+
const violations = [];
|
|
223
|
+
const rootImplIffByPremise = new Map();
|
|
224
|
+
for (const e of ctx.expressions) {
|
|
225
|
+
if (e.type !== "operator")
|
|
226
|
+
continue;
|
|
227
|
+
if (e.operator !== "implies" && e.operator !== "iff")
|
|
228
|
+
continue;
|
|
229
|
+
if (e.parentId !== null) {
|
|
230
|
+
// Non-root implies/iff — violation regardless of count.
|
|
231
|
+
violations.push({
|
|
232
|
+
tier: "structural",
|
|
233
|
+
code: "S-5",
|
|
234
|
+
message: `${e.operator} expression ${e.id} appears as a non-root child`,
|
|
235
|
+
argumentId: ctx.argument.id,
|
|
236
|
+
premiseId: e.premiseId,
|
|
237
|
+
expressionId: e.id,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
// Root-level — track for >1-per-premise check.
|
|
242
|
+
const list = rootImplIffByPremise.get(e.premiseId) ?? [];
|
|
243
|
+
list.push(e.id);
|
|
244
|
+
rootImplIffByPremise.set(e.premiseId, list);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
for (const [premiseId, ids] of rootImplIffByPremise) {
|
|
248
|
+
if (ids.length > 1) {
|
|
249
|
+
// Every root-level implies/iff in a premise with >1 is in
|
|
250
|
+
// violation — there's no canonical "first" that's correct and
|
|
251
|
+
// the rest wrong, so flag each. Consumers that prefer
|
|
252
|
+
// first-wins can dedupe by `premiseId` at the UI layer.
|
|
253
|
+
for (const offendingId of ids) {
|
|
254
|
+
violations.push({
|
|
255
|
+
tier: "structural",
|
|
256
|
+
code: "S-5",
|
|
257
|
+
message: `premise ${premiseId} has more than one root-level implies/iff (${ids.length} total; offender: ${offendingId})`,
|
|
258
|
+
argumentId: ctx.argument.id,
|
|
259
|
+
premiseId,
|
|
260
|
+
expressionId: offendingId,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return violations;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* S-6 — Premise type discriminator consistency. `type='derivation'`
|
|
269
|
+
* premises have a non-null `derivedClaimId`; `type='freeform'` premises
|
|
270
|
+
* have no `derivedClaimId` (or it is null/undefined).
|
|
271
|
+
*
|
|
272
|
+
* `TCoreFreeformPremise` and `TCoreDerivationPremise` are both
|
|
273
|
+
* `additionalProperties: true` in their TypeBox schemas, so a freeform
|
|
274
|
+
* premise CAN carry a stray `derivedClaimId` field at runtime even
|
|
275
|
+
* though the TS shape doesn't surface it. We use the `in` operator and
|
|
276
|
+
* a narrow shape cast to read the field as `unknown` rather than the
|
|
277
|
+
* earlier `as unknown` double-cast.
|
|
278
|
+
*/
|
|
279
|
+
export function validateS6(ctx) {
|
|
280
|
+
const violations = [];
|
|
281
|
+
for (const p of ctx.premises) {
|
|
282
|
+
if (p.type === "derivation") {
|
|
283
|
+
if (p.derivedClaimId === null ||
|
|
284
|
+
p.derivedClaimId === undefined ||
|
|
285
|
+
p.derivedClaimId === "") {
|
|
286
|
+
violations.push({
|
|
287
|
+
tier: "structural",
|
|
288
|
+
code: "S-6",
|
|
289
|
+
message: `derivation premise ${p.id} has missing derivedClaimId`,
|
|
290
|
+
argumentId: ctx.argument.id,
|
|
291
|
+
premiseId: p.id,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
// Freeform branch. Check for a stray derivedClaimId via the
|
|
297
|
+
// additionalProperties extension slot.
|
|
298
|
+
if (!("derivedClaimId" in p))
|
|
299
|
+
continue;
|
|
300
|
+
const stray = p.derivedClaimId;
|
|
301
|
+
if (stray !== null && stray !== undefined && stray !== "") {
|
|
302
|
+
violations.push({
|
|
303
|
+
tier: "structural",
|
|
304
|
+
code: "S-6",
|
|
305
|
+
message: `freeform premise ${p.id} has non-null derivedClaimId (${typeof stray === "string" ? stray : typeof stray})`,
|
|
306
|
+
argumentId: ctx.argument.id,
|
|
307
|
+
premiseId: p.id,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return violations;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* S-7 — Claim type immutability. Creation-time invariant enforced by
|
|
315
|
+
* `ClaimLibrary.update()` via the engine-error code `CLAIM_TYPE_IMMUTABLE`.
|
|
316
|
+
* The AST-level validator is intentionally a no-op; callers cannot
|
|
317
|
+
* observe a type-mutation event from a static argument snapshot.
|
|
318
|
+
*/
|
|
319
|
+
export function validateS7(_ctx) {
|
|
320
|
+
return [];
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Build a Map<parentId, children-sorted-by-position> view of the
|
|
324
|
+
* expression tree. Internal helper for the arity/position validators.
|
|
325
|
+
*/
|
|
326
|
+
function childrenByParent(expressions) {
|
|
327
|
+
const out = new Map();
|
|
328
|
+
for (const e of expressions) {
|
|
329
|
+
if (e.parentId === null)
|
|
330
|
+
continue;
|
|
331
|
+
const list = out.get(e.parentId) ?? [];
|
|
332
|
+
list.push(e);
|
|
333
|
+
out.set(e.parentId, list);
|
|
334
|
+
}
|
|
335
|
+
for (const list of out.values()) {
|
|
336
|
+
list.sort((a, b) => a.position - b.position);
|
|
337
|
+
}
|
|
338
|
+
return out;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* S-8 — Binary operator arity + positions. `implies` and `iff` have
|
|
342
|
+
* exactly 2 children, at positions `0` and `1`.
|
|
343
|
+
*
|
|
344
|
+
* One violation per binary expression. When arity is wrong the position
|
|
345
|
+
* check is skipped — position invariants are only meaningful for an
|
|
346
|
+
* exactly-2-child shape; reporting both would noise the violation list
|
|
347
|
+
* with the same structural problem.
|
|
348
|
+
*/
|
|
349
|
+
export function validateS8(ctx) {
|
|
350
|
+
const violations = [];
|
|
351
|
+
const children = childrenByParent(ctx.expressions);
|
|
352
|
+
for (const e of ctx.expressions) {
|
|
353
|
+
if (e.type !== "operator")
|
|
354
|
+
continue;
|
|
355
|
+
if (e.operator !== "implies" && e.operator !== "iff")
|
|
356
|
+
continue;
|
|
357
|
+
const kids = children.get(e.id) ?? [];
|
|
358
|
+
if (kids.length !== 2) {
|
|
359
|
+
violations.push({
|
|
360
|
+
tier: "structural",
|
|
361
|
+
code: "S-8",
|
|
362
|
+
message: `${e.operator} expression ${e.id} has ${kids.length} children (expected 2)`,
|
|
363
|
+
argumentId: ctx.argument.id,
|
|
364
|
+
premiseId: e.premiseId,
|
|
365
|
+
expressionId: e.id,
|
|
366
|
+
});
|
|
367
|
+
// Position check only meaningful with exactly 2 children.
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
if (kids[0].position !== 0 || kids[1].position !== 1) {
|
|
371
|
+
violations.push({
|
|
372
|
+
tier: "structural",
|
|
373
|
+
code: "S-8",
|
|
374
|
+
message: `${e.operator} expression ${e.id} children are at positions ${kids[0].position},${kids[1].position} (expected 0,1)`,
|
|
375
|
+
argumentId: ctx.argument.id,
|
|
376
|
+
premiseId: e.premiseId,
|
|
377
|
+
expressionId: e.id,
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return violations;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* S-9 — Sibling position uniqueness. Within a single parent's children,
|
|
385
|
+
* no two siblings share the same `position`.
|
|
386
|
+
*/
|
|
387
|
+
export function validateS9(ctx) {
|
|
388
|
+
const violations = [];
|
|
389
|
+
// Group by parentId (including null root group, scoped per premise).
|
|
390
|
+
const groups = new Map();
|
|
391
|
+
for (const e of ctx.expressions) {
|
|
392
|
+
// Root-level siblings: scope by premise (each premise's roots are
|
|
393
|
+
// their own sibling set). We key root groups by `__root__::premiseId`.
|
|
394
|
+
const key = e.parentId === null
|
|
395
|
+
? `__root__::${e.premiseId}`
|
|
396
|
+
: `parent::${e.parentId}`;
|
|
397
|
+
const list = groups.get(key) ?? [];
|
|
398
|
+
list.push(e);
|
|
399
|
+
groups.set(key, list);
|
|
400
|
+
}
|
|
401
|
+
for (const list of groups.values()) {
|
|
402
|
+
const seenAt = new Map();
|
|
403
|
+
for (const e of list) {
|
|
404
|
+
const existing = seenAt.get(e.position);
|
|
405
|
+
if (existing !== undefined) {
|
|
406
|
+
violations.push({
|
|
407
|
+
tier: "structural",
|
|
408
|
+
code: "S-9",
|
|
409
|
+
message: `siblings ${existing} and ${e.id} share position ${e.position}`,
|
|
410
|
+
argumentId: ctx.argument.id,
|
|
411
|
+
premiseId: e.premiseId,
|
|
412
|
+
expressionId: e.id,
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
seenAt.set(e.position, e.id);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return violations;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Collect duplicate-ID violations from a collection.
|
|
424
|
+
*/
|
|
425
|
+
function duplicateIdsIn(items) {
|
|
426
|
+
const seen = new Set();
|
|
427
|
+
const dups = [];
|
|
428
|
+
for (const item of items) {
|
|
429
|
+
if (seen.has(item.id))
|
|
430
|
+
dups.push(item.id);
|
|
431
|
+
seen.add(item.id);
|
|
432
|
+
}
|
|
433
|
+
return dups;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* S-10 — Entity ID uniqueness. Within an argument, premises, expressions,
|
|
437
|
+
* and variables each have unique IDs in their respective collection.
|
|
438
|
+
*/
|
|
439
|
+
export function validateS10(ctx) {
|
|
440
|
+
const violations = [];
|
|
441
|
+
for (const dup of duplicateIdsIn(ctx.premises)) {
|
|
442
|
+
violations.push({
|
|
443
|
+
tier: "structural",
|
|
444
|
+
code: "S-10",
|
|
445
|
+
message: `duplicate premise id ${dup}`,
|
|
446
|
+
argumentId: ctx.argument.id,
|
|
447
|
+
premiseId: dup,
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
for (const dup of duplicateIdsIn(ctx.expressions)) {
|
|
451
|
+
violations.push({
|
|
452
|
+
tier: "structural",
|
|
453
|
+
code: "S-10",
|
|
454
|
+
message: `duplicate expression id ${dup}`,
|
|
455
|
+
argumentId: ctx.argument.id,
|
|
456
|
+
expressionId: dup,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
for (const dup of duplicateIdsIn(ctx.variables)) {
|
|
460
|
+
violations.push({
|
|
461
|
+
tier: "structural",
|
|
462
|
+
code: "S-10",
|
|
463
|
+
message: `duplicate variable id ${dup}`,
|
|
464
|
+
argumentId: ctx.argument.id,
|
|
465
|
+
variableId: dup,
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
return violations;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* S-11 — Variable symbol uniqueness. Within a single argument, no two
|
|
472
|
+
* variables share the same `symbol`.
|
|
473
|
+
*/
|
|
474
|
+
export function validateS11(ctx) {
|
|
475
|
+
const violations = [];
|
|
476
|
+
const seenAt = new Map();
|
|
477
|
+
for (const v of ctx.variables) {
|
|
478
|
+
const existing = seenAt.get(v.symbol);
|
|
479
|
+
if (existing !== undefined) {
|
|
480
|
+
violations.push({
|
|
481
|
+
tier: "structural",
|
|
482
|
+
code: "S-11",
|
|
483
|
+
message: `variables ${existing} and ${v.id} share symbol '${v.symbol}'`,
|
|
484
|
+
argumentId: ctx.argument.id,
|
|
485
|
+
variableId: v.id,
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
seenAt.set(v.symbol, v.id);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
return violations;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* S-12 — NOT unary arity. Every `not` expression has exactly one child.
|
|
496
|
+
*/
|
|
497
|
+
export function validateS12(ctx) {
|
|
498
|
+
const violations = [];
|
|
499
|
+
const children = childrenByParent(ctx.expressions);
|
|
500
|
+
for (const e of ctx.expressions) {
|
|
501
|
+
if (e.type !== "operator" || e.operator !== "not")
|
|
502
|
+
continue;
|
|
503
|
+
const count = (children.get(e.id) ?? []).length;
|
|
504
|
+
if (count !== 1) {
|
|
505
|
+
violations.push({
|
|
506
|
+
tier: "structural",
|
|
507
|
+
code: "S-12",
|
|
508
|
+
message: `not expression ${e.id} has ${count} children (expected 1)`,
|
|
509
|
+
argumentId: ctx.argument.id,
|
|
510
|
+
premiseId: e.premiseId,
|
|
511
|
+
expressionId: e.id,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
return violations;
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* S-13 — Formula unary arity. Every `formula` expression has exactly one
|
|
519
|
+
* child.
|
|
520
|
+
*/
|
|
521
|
+
export function validateS13(ctx) {
|
|
522
|
+
const violations = [];
|
|
523
|
+
const children = childrenByParent(ctx.expressions);
|
|
524
|
+
for (const e of ctx.expressions) {
|
|
525
|
+
if (e.type !== "formula")
|
|
526
|
+
continue;
|
|
527
|
+
const count = (children.get(e.id) ?? []).length;
|
|
528
|
+
if (count !== 1) {
|
|
529
|
+
violations.push({
|
|
530
|
+
tier: "structural",
|
|
531
|
+
code: "S-13",
|
|
532
|
+
message: `formula expression ${e.id} has ${count} children (expected 1)`,
|
|
533
|
+
argumentId: ctx.argument.id,
|
|
534
|
+
premiseId: e.premiseId,
|
|
535
|
+
expressionId: e.id,
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
return violations;
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* S-14 — Derivation premise root operator. Every `type='derivation'`
|
|
543
|
+
* premise's root expression is one of `variable`, `implies`, or `iff`.
|
|
544
|
+
* (`iff` is Structurally allowed; D-1 narrows the populated form to
|
|
545
|
+
* `implies` only — Derivable concern.)
|
|
546
|
+
*/
|
|
547
|
+
export function validateS14(ctx) {
|
|
548
|
+
const violations = [];
|
|
549
|
+
const expressionsByPremise = new Map();
|
|
550
|
+
for (const e of ctx.expressions) {
|
|
551
|
+
const list = expressionsByPremise.get(e.premiseId) ?? [];
|
|
552
|
+
list.push(e);
|
|
553
|
+
expressionsByPremise.set(e.premiseId, list);
|
|
554
|
+
}
|
|
555
|
+
for (const p of ctx.premises) {
|
|
556
|
+
if (p.type !== "derivation")
|
|
557
|
+
continue;
|
|
558
|
+
const inThisPremise = expressionsByPremise.get(p.id) ?? [];
|
|
559
|
+
const roots = inThisPremise.filter((e) => e.parentId === null);
|
|
560
|
+
// Zero or multiple roots is a different invariant (S-1 / S-10 may
|
|
561
|
+
// catch shape issues); S-14 specifically guards the root operator
|
|
562
|
+
// *kind* when a root exists.
|
|
563
|
+
if (roots.length === 0)
|
|
564
|
+
continue;
|
|
565
|
+
for (const root of roots) {
|
|
566
|
+
const isAllowed = root.type === "variable" ||
|
|
567
|
+
(root.type === "operator" &&
|
|
568
|
+
(root.operator === "implies" || root.operator === "iff"));
|
|
569
|
+
if (!isAllowed) {
|
|
570
|
+
const rootDesc = root.type === "operator" ? root.operator : root.type;
|
|
571
|
+
violations.push({
|
|
572
|
+
tier: "structural",
|
|
573
|
+
code: "S-14",
|
|
574
|
+
message: `derivation premise ${p.id} root operator is '${rootDesc}' (must be variable, implies, or iff)`,
|
|
575
|
+
argumentId: ctx.argument.id,
|
|
576
|
+
premiseId: p.id,
|
|
577
|
+
expressionId: root.id,
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
return violations;
|
|
583
|
+
}
|
|
584
|
+
export function validateStructural(ctx) {
|
|
585
|
+
return [
|
|
586
|
+
...validateS1(ctx),
|
|
587
|
+
...validateS2(ctx),
|
|
588
|
+
...validateS3(ctx),
|
|
589
|
+
...validateS4(ctx),
|
|
590
|
+
...validateS5(ctx),
|
|
591
|
+
...validateS6(ctx),
|
|
592
|
+
...validateS7(ctx),
|
|
593
|
+
...validateS8(ctx),
|
|
594
|
+
...validateS9(ctx),
|
|
595
|
+
...validateS10(ctx),
|
|
596
|
+
...validateS11(ctx),
|
|
597
|
+
...validateS12(ctx),
|
|
598
|
+
...validateS13(ctx),
|
|
599
|
+
...validateS14(ctx),
|
|
600
|
+
];
|
|
601
|
+
}
|
|
602
|
+
//# sourceMappingURL=structural.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../../../src/lib/grammar/validators/structural.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -7,8 +7,6 @@ export { ArgumentEngine, defaultGenerateId } from "./core/argument-engine.js";
|
|
|
7
7
|
export type { TLogicEngineOptions, TArgumentEngineSnapshot, } from "./core/argument-engine.js";
|
|
8
8
|
export { PremiseEngine } from "./core/premise-engine.js";
|
|
9
9
|
export type { TPremiseEngineSnapshot } from "./core/premise-engine.js";
|
|
10
|
-
export { ManagedDerivationPremiseEngine } from "./core/managed-derivation-premise-engine.js";
|
|
11
|
-
export type { TVariableMaterializer } from "./core/managed-derivation-premise-engine.js";
|
|
12
10
|
export { validateDerivationStructure } from "./utils/derivation-validation.js";
|
|
13
11
|
export type * from "./core/interfaces/index.js";
|
|
14
12
|
export type { TExpressionManagerSnapshot } from "./core/expression-manager.js";
|
|
@@ -47,7 +45,10 @@ export type { TExpressionInput, TExpressionWithoutPosition, TExpressionUpdate, }
|
|
|
47
45
|
export { POSITION_MIN, POSITION_MAX, POSITION_INITIAL, DEFAULT_POSITION_CONFIG, midpoint, } from "./utils/position.js";
|
|
48
46
|
export type { TCorePositionConfig } from "./utils/position.js";
|
|
49
47
|
export * from "./types/reactive.js";
|
|
50
|
-
export
|
|
48
|
+
export { GrammarTierSchema, GrammarRuleCodeSchema, ViolationSchema, } from "./grammar/types.js";
|
|
49
|
+
export type { TGrammarTier, TGrammarRuleCode, TViolation, } from "./grammar/types.js";
|
|
50
|
+
export { validate as validateGrammar } from "./grammar/validate.js";
|
|
51
|
+
export type { TValidatorContext } from "./grammar/validators/context.js";
|
|
51
52
|
export * from "./types/fork.js";
|
|
52
53
|
export { forkArgumentEngine } from "./core/fork.js";
|
|
53
54
|
export * from "./parsing/index.js";
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7E,YAAY,EACR,mBAAmB,EACnB,uBAAuB,GAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}
|