@cavelang/solver 0.27.14 → 0.29.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.
@@ -0,0 +1,420 @@
1
+ import * as Canonical from "./canonical.js";
2
+ import * as Exact from "./exact.js";
3
+ import * as Explain from "./explain.js";
4
+ import * as Solve from "./solve.js";
5
+ import * as Validate from "./validate.js";
6
+ export const schema = 'cave.solver/workflow@1';
7
+ const syntheticPrefix = 'cave.workflow/';
8
+ const defaultMaxSensitivityRuns = 64;
9
+ const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
10
+ export class WorkflowValidationError extends Error {
11
+ constructor(message) {
12
+ super(`invalid solver workflow: ${message}`);
13
+ this.name = 'WorkflowValidationError';
14
+ }
15
+ }
16
+ export const maxSensitivityRuns = defaultMaxSensitivityRuns;
17
+ const boundedScope = (model, limits = {}) => {
18
+ Validate.model(model, limits);
19
+ const domainsById = new Map((model.enums ?? []).map(domain => [domain.id, domain.values]));
20
+ const domains = model.variables
21
+ .map((variable) => {
22
+ switch (variable.sort) {
23
+ case 'bool':
24
+ return { variableId: variable.id, kind: 'finite', sort: variable.sort, values: [false, true] };
25
+ case 'enum': {
26
+ const values = domainsById.get(variable.domain);
27
+ if (values === undefined)
28
+ throw new WorkflowValidationError(`variable ${JSON.stringify(variable.id)} has no enum domain`);
29
+ return {
30
+ variableId: variable.id,
31
+ kind: 'finite',
32
+ sort: variable.sort,
33
+ domain: variable.domain,
34
+ values: [...values].sort(compareText)
35
+ };
36
+ }
37
+ case 'int':
38
+ return {
39
+ variableId: variable.id,
40
+ kind: 'interval',
41
+ sort: variable.sort,
42
+ min: String(Exact.integer(variable.min)),
43
+ max: String(Exact.integer(variable.max))
44
+ };
45
+ case 'real':
46
+ if (variable.min === undefined || variable.max === undefined) {
47
+ throw new WorkflowValidationError(`real variable ${JSON.stringify(variable.id)} needs explicit min and max bounds`);
48
+ }
49
+ return {
50
+ variableId: variable.id,
51
+ kind: 'interval',
52
+ sort: variable.sort,
53
+ min: Exact.rational(variable.min),
54
+ max: Exact.rational(variable.max)
55
+ };
56
+ }
57
+ })
58
+ .sort((left, right) => compareText(left.variableId, right.variableId));
59
+ const sorts = new Set(model.variables.map(variable => variable.sort));
60
+ const theories = ['booleans'];
61
+ if (sorts.has('int'))
62
+ theories.push('bounded-integers');
63
+ if (sorts.has('real'))
64
+ theories.push('exact-rationals');
65
+ if (sorts.has('enum'))
66
+ theories.push('finite-enums');
67
+ return {
68
+ domains,
69
+ assumptions: model.constraints.map(constraint => constraint.id),
70
+ theories
71
+ };
72
+ };
73
+ const variableMap = (model) => new Map(model.variables.map(variable => [variable.id, variable]));
74
+ const normalizedValue = (variable, value, domains) => {
75
+ if (variable.sort !== value.sort) {
76
+ throw new WorkflowValidationError(`variable ${JSON.stringify(variable.id)} is ${variable.sort}, received ${value.sort}`);
77
+ }
78
+ switch (value.sort) {
79
+ case 'bool': return value;
80
+ case 'int': {
81
+ const normalized = String(Exact.integer(value.value));
82
+ if (Exact.compare(normalized, String(Exact.integer(variable.min))) < 0 ||
83
+ Exact.compare(normalized, String(Exact.integer(variable.max))) > 0) {
84
+ throw new WorkflowValidationError(`value ${normalized} is outside ${JSON.stringify(variable.id)} bounds`);
85
+ }
86
+ return { sort: value.sort, value: normalized };
87
+ }
88
+ case 'real': {
89
+ const normalized = Exact.rational(value);
90
+ const real = variable;
91
+ if ((real.min !== undefined && Exact.compare(normalized, real.min) < 0) ||
92
+ (real.max !== undefined && Exact.compare(normalized, real.max) > 0)) {
93
+ throw new WorkflowValidationError(`value ${normalized.numerator}/${normalized.denominator} is outside ${JSON.stringify(variable.id)} bounds`);
94
+ }
95
+ return { sort: value.sort, ...normalized };
96
+ }
97
+ case 'enum': {
98
+ const enumeration = variable;
99
+ if (value.domain !== enumeration.domain) {
100
+ throw new WorkflowValidationError(`variable ${JSON.stringify(variable.id)} uses enum ${JSON.stringify(enumeration.domain)}, received ${JSON.stringify(value.domain)}`);
101
+ }
102
+ if (!(domains.get(value.domain) ?? []).includes(value.value)) {
103
+ throw new WorkflowValidationError(`value ${JSON.stringify(value.value)} is outside enum ${JSON.stringify(value.domain)}`);
104
+ }
105
+ return value;
106
+ }
107
+ }
108
+ };
109
+ const literal = (value) => {
110
+ switch (value.sort) {
111
+ case 'bool': return { kind: 'literal', sort: value.sort, value: value.value };
112
+ case 'int': return { kind: 'literal', sort: value.sort, value: value.value };
113
+ case 'real': return { kind: 'literal', sort: value.sort, value: { numerator: value.numerator, denominator: value.denominator } };
114
+ case 'enum': return { kind: 'literal', sort: value.sort, domain: value.domain, value: value.value };
115
+ }
116
+ };
117
+ const freshId = (used, name) => {
118
+ let id = `${syntheticPrefix}${name}`;
119
+ let suffix = 2;
120
+ while (used.has(id))
121
+ id = `${syntheticPrefix}${name}-${suffix++}`;
122
+ used.add(id);
123
+ return id;
124
+ };
125
+ const enumRank = (variable, values) => {
126
+ const sorted = [...values].sort(compareText);
127
+ return sorted.slice(0, -1).reduceRight((otherwise, value, index) => ({
128
+ kind: 'if',
129
+ condition: {
130
+ kind: 'eq',
131
+ left: { kind: 'variable', id: variable.id },
132
+ right: { kind: 'literal', sort: 'enum', domain: variable.domain, value }
133
+ },
134
+ then: { kind: 'literal', sort: 'int', value: index },
135
+ else: otherwise
136
+ }), { kind: 'literal', sort: 'int', value: Math.max(0, sorted.length - 1) });
137
+ };
138
+ const tieBreak = (model, used) => {
139
+ const domains = new Map((model.enums ?? []).map(domain => [domain.id, domain.values]));
140
+ const ordered = [...model.variables].sort((left, right) => compareText(left.id, right.id));
141
+ return {
142
+ objectives: ordered.map(variable => ({
143
+ id: freshId(used, `tie/${variable.id}`),
144
+ direction: 'minimize',
145
+ expression: (() => {
146
+ switch (variable.sort) {
147
+ case 'bool': return {
148
+ kind: 'if',
149
+ condition: { kind: 'variable', id: variable.id },
150
+ then: { kind: 'literal', sort: 'int', value: 1 },
151
+ else: { kind: 'literal', sort: 'int', value: 0 }
152
+ };
153
+ case 'int':
154
+ case 'real': return { kind: 'variable', id: variable.id };
155
+ case 'enum': return enumRank(variable, domains.get(variable.domain) ?? []);
156
+ }
157
+ })()
158
+ })),
159
+ descriptions: ordered.map(variable => ({
160
+ variableId: variable.id,
161
+ preference: variable.sort === 'bool' ? 'false-first' : variable.sort === 'enum' ? 'lexical-first' : 'smallest-first'
162
+ }))
163
+ };
164
+ };
165
+ const softObjective = (model, used) => {
166
+ const expressions = (model.softConstraints ?? []).map((constraint) => ({
167
+ kind: 'if',
168
+ condition: constraint.expression,
169
+ then: { kind: 'literal', sort: 'real', value: constraint.weight },
170
+ else: { kind: 'literal', sort: 'real', value: '0' }
171
+ }));
172
+ if (expressions.length === 0)
173
+ return undefined;
174
+ return {
175
+ id: freshId(used, 'soft-score'),
176
+ direction: 'maximize',
177
+ expression: expressions.length === 1 ? expressions[0] : { kind: 'add', operands: expressions }
178
+ };
179
+ };
180
+ const preparedModel = (model, kind) => {
181
+ const used = new Set((model.objectives ?? []).map(objective => objective.id));
182
+ const tie = tieBreak(model, used);
183
+ const authoredObjectiveIds = new Set((model.objectives ?? []).map(objective => objective.id));
184
+ if (kind === 'feasibility') {
185
+ return {
186
+ model: { ...model, softConstraints: [], objectives: tie.objectives },
187
+ tieBreak: tie.descriptions,
188
+ authoredObjectiveIds
189
+ };
190
+ }
191
+ if ((model.objectives?.length ?? 0) === 0 && (model.softConstraints?.length ?? 0) === 0) {
192
+ throw new WorkflowValidationError('optimization needs at least one objective or soft constraint');
193
+ }
194
+ const soft = softObjective(model, used);
195
+ return {
196
+ model: {
197
+ ...model,
198
+ softConstraints: [],
199
+ objectives: [...(model.objectives ?? []), ...(soft === undefined ? [] : [soft]), ...tie.objectives]
200
+ },
201
+ tieBreak: tie.descriptions,
202
+ authoredObjectiveIds
203
+ };
204
+ };
205
+ const feasibleResult = (result) => result.status !== 'optimal' ? result : {
206
+ status: 'satisfied',
207
+ assignment: result.assignment,
208
+ backend: result.backend,
209
+ diagnostics: result.diagnostics,
210
+ elapsedMs: result.elapsedMs
211
+ };
212
+ const optimizedResult = (result, authoredObjectiveIds) => {
213
+ if (result.status === 'satisfied') {
214
+ return {
215
+ status: 'unknown',
216
+ reason: { kind: 'indeterminate', message: 'backend returned a feasible assignment without proving optimality' },
217
+ backend: result.backend,
218
+ diagnostics: result.diagnostics,
219
+ elapsedMs: result.elapsedMs
220
+ };
221
+ }
222
+ if (result.status !== 'optimal')
223
+ return result;
224
+ return {
225
+ ...result,
226
+ objectives: result.objectives.filter(objective => authoredObjectiveIds.has(objective.objectiveId))
227
+ };
228
+ };
229
+ const run = async (adapter, sourceModel, solveModel, kind, options, context) => {
230
+ const limits = Validate.mergeLimits(options.limits);
231
+ const prepared = preparedModel(solveModel, kind);
232
+ const result = await Solve.run(adapter, prepared.model, {
233
+ limits,
234
+ unsatCore: options.unsatCore ?? (kind === 'feasibility')
235
+ });
236
+ const normalized = kind === 'feasibility'
237
+ ? feasibleResult(result)
238
+ : optimizedResult(result, prepared.authoredObjectiveIds);
239
+ return {
240
+ explanation: Explain.report(sourceModel, normalized, limits, context),
241
+ tieBreak: prepared.tieBreak
242
+ };
243
+ };
244
+ const report = (model, operation, scope, tie, explanation) => ({
245
+ schema,
246
+ operation,
247
+ modelDigest: Canonical.digest(model),
248
+ scope,
249
+ tieBreak: tie,
250
+ explanation
251
+ });
252
+ export const feasibility = async (adapter, model, options = {}, context = {}) => {
253
+ const scope = boundedScope(model, options.limits);
254
+ const result = await run(adapter, model, model, 'feasibility', options, context);
255
+ return report(model, { kind: 'feasibility' }, scope, result.tieBreak, result.explanation);
256
+ };
257
+ export const optimization = async (adapter, model, options = {}, context = {}) => {
258
+ const scope = boundedScope(model, options.limits);
259
+ const result = await run(adapter, model, model, 'optimization', options, context);
260
+ return report(model, { kind: 'optimization' }, scope, result.tieBreak, result.explanation);
261
+ };
262
+ export const counterexample = async (adapter, model, invariantId, options = {}, context = {}) => {
263
+ const baseScope = boundedScope(model, options.limits);
264
+ const invariant = model.constraints.find(constraint => constraint.id === invariantId);
265
+ if (invariant === undefined) {
266
+ throw new WorkflowValidationError(`unknown invariant constraint ${JSON.stringify(invariantId)}`);
267
+ }
268
+ const negated = { ...invariant, expression: { kind: 'not', value: invariant.expression } };
269
+ const solveModel = {
270
+ ...model,
271
+ constraints: model.constraints.map(constraint => constraint.id === invariantId ? negated : constraint)
272
+ };
273
+ const result = await run(adapter, model, solveModel, 'feasibility', { ...options, unsatCore: options.unsatCore ?? true }, context);
274
+ const verdict = result.explanation.outcome.status === 'satisfied'
275
+ ? 'counterexample'
276
+ : result.explanation.outcome.status === 'unsatisfied'
277
+ ? 'holds-within-scope'
278
+ : 'unknown';
279
+ const scope = {
280
+ ...baseScope,
281
+ assumptions: baseScope.assumptions.filter(id => id !== invariantId)
282
+ };
283
+ return report(model, { kind: 'counterexample', invariantId, verdict }, scope, result.tieBreak, result.explanation);
284
+ };
285
+ const bindingConstraint = (binding, id) => ({
286
+ id,
287
+ expression: {
288
+ kind: 'eq',
289
+ left: { kind: 'variable', id: binding.variableId },
290
+ right: literal(binding.value)
291
+ },
292
+ scenarioInputIds: [binding.variableId]
293
+ });
294
+ const normalizeBindings = (model, bindings) => {
295
+ const variables = variableMap(model);
296
+ const domains = new Map((model.enums ?? []).map(domain => [domain.id, domain.values]));
297
+ const seen = new Set();
298
+ return bindings.map(binding => {
299
+ if (seen.has(binding.variableId)) {
300
+ throw new WorkflowValidationError(`variable ${JSON.stringify(binding.variableId)} is fixed more than once`);
301
+ }
302
+ seen.add(binding.variableId);
303
+ const variable = variables.get(binding.variableId);
304
+ if (variable === undefined)
305
+ throw new WorkflowValidationError(`unknown variable ${JSON.stringify(binding.variableId)}`);
306
+ return { variableId: binding.variableId, value: normalizedValue(variable, binding.value, domains) };
307
+ });
308
+ };
309
+ const assignmentSignature = (report, observe) => {
310
+ const outcome = report.explanation.outcome;
311
+ if (outcome.status !== 'satisfied' && outcome.status !== 'optimal')
312
+ return outcome.status;
313
+ const assignment = Object.fromEntries(outcome.assignments.map(item => [item.id, item.value]));
314
+ return JSON.stringify({
315
+ status: outcome.status,
316
+ assignment: Object.fromEntries(observe.map(id => [id, assignment[id] ?? null]))
317
+ });
318
+ };
319
+ const transitions = (points, observe) => {
320
+ const result = [];
321
+ for (let index = 1; index < points.length; index += 1) {
322
+ const previous = points[index - 1];
323
+ const current = points[index];
324
+ const fromSignature = assignmentSignature(previous.report, observe);
325
+ const toSignature = assignmentSignature(current.report, observe);
326
+ if (fromSignature !== toSignature) {
327
+ result.push({
328
+ afterIndex: index - 1,
329
+ from: previous.value,
330
+ to: current.value,
331
+ fromSignature,
332
+ toSignature
333
+ });
334
+ }
335
+ }
336
+ return result;
337
+ };
338
+ const unknownRegions = (points) => {
339
+ const result = [];
340
+ let start;
341
+ for (let index = 0; index <= points.length; index += 1) {
342
+ const unknown = index < points.length && points[index].report.explanation.outcome.status === 'unknown';
343
+ if (unknown && start === undefined)
344
+ start = index;
345
+ if (!unknown && start !== undefined) {
346
+ const end = index - 1;
347
+ result.push({
348
+ startIndex: start,
349
+ endIndex: end,
350
+ from: points[start].value,
351
+ to: points[end].value
352
+ });
353
+ start = undefined;
354
+ }
355
+ }
356
+ return result;
357
+ };
358
+ export const sensitivity = async (adapter, model, request, options = {}, context = {}) => {
359
+ const scope = boundedScope(model, options.limits);
360
+ const maxRuns = request.maxRuns ?? defaultMaxSensitivityRuns;
361
+ if (!Number.isSafeInteger(maxRuns) || maxRuns <= 0) {
362
+ throw new WorkflowValidationError(`maxRuns must be a positive safe integer, received ${String(maxRuns)}`);
363
+ }
364
+ if (request.samples.length === 0)
365
+ throw new WorkflowValidationError('sensitivity needs at least one sample');
366
+ if (request.samples.length > maxRuns) {
367
+ throw new WorkflowValidationError(`sensitivity samples exceed maxRuns: ${request.samples.length} > ${maxRuns}`);
368
+ }
369
+ const variables = variableMap(model);
370
+ const selected = variables.get(request.variableId);
371
+ if (selected === undefined)
372
+ throw new WorkflowValidationError(`unknown sensitivity variable ${JSON.stringify(request.variableId)}`);
373
+ const domains = new Map((model.enums ?? []).map(domain => [domain.id, domain.values]));
374
+ const samples = request.samples.map(value => normalizedValue(selected, value, domains));
375
+ if (new Set(samples.map(value => JSON.stringify(value))).size !== samples.length) {
376
+ throw new WorkflowValidationError('sensitivity samples contain duplicate values');
377
+ }
378
+ const fixed = normalizeBindings(model, request.fixed ?? []);
379
+ if (fixed.some(binding => binding.variableId === request.variableId)) {
380
+ throw new WorkflowValidationError(`sensitivity variable ${JSON.stringify(request.variableId)} is also fixed`);
381
+ }
382
+ const observe = [...new Set(request.observe ?? [])];
383
+ for (const id of observe) {
384
+ if (!variables.has(id))
385
+ throw new WorkflowValidationError(`unknown observed variable ${JSON.stringify(id)}`);
386
+ }
387
+ const kind = request.operation ?? 'optimization';
388
+ const used = new Set(model.constraints.map(constraint => constraint.id));
389
+ const fixedConstraints = fixed.map((binding, index) => bindingConstraint(binding, freshId(used, `fixed/${index}`)));
390
+ const points = [];
391
+ for (const [index, value] of samples.entries()) {
392
+ const sample = { variableId: request.variableId, value };
393
+ const solveModel = {
394
+ ...model,
395
+ constraints: [
396
+ ...model.constraints,
397
+ ...fixedConstraints,
398
+ bindingConstraint(sample, freshId(used, `sample/${index}`))
399
+ ]
400
+ };
401
+ const solved = await run(adapter, model, solveModel, kind, options, context);
402
+ points.push({
403
+ index,
404
+ value,
405
+ report: report(model, { kind }, scope, solved.tieBreak, solved.explanation)
406
+ });
407
+ }
408
+ return {
409
+ schema,
410
+ operation: 'sensitivity',
411
+ modelDigest: Canonical.digest(model),
412
+ variableId: request.variableId,
413
+ fixed,
414
+ observe,
415
+ points,
416
+ transitions: transitions(points, observe),
417
+ unknownRegions: unknownRegions(points)
418
+ };
419
+ };
420
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,18 @@
1
1
  {
2
2
  "name": "@cavelang/solver",
3
- "version": "0.27.14",
3
+ "version": "0.29.1",
4
4
  "type": "module",
5
- "description": "Solver-neutral models, validation, capability negotiation, and result contracts for CAVE formal reasoning.",
5
+ "description": "Solver-neutral models, bounded verification workflows, validation, and result contracts for CAVE formal reasoning.",
6
+ "keywords": [
7
+ "cave",
8
+ "knowledge-graph",
9
+ "knowledge-representation",
10
+ "typescript"
11
+ ],
12
+ "homepage": "https://github.com/mirek/cave#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/mirek/cave/issues"
15
+ },
6
16
  "license": "CC0-1.0",
7
17
  "author": "Mirek Rusin (https://github.com/mirek)",
8
18
  "repository": {
@@ -26,14 +36,15 @@
26
36
  "src",
27
37
  "!src/**/*.test.ts",
28
38
  "README.md",
29
- "License.md"
39
+ "License.md",
40
+ "Authors.md"
30
41
  ],
31
42
  "publishConfig": {
32
43
  "access": "public"
33
44
  },
34
45
  "scripts": {
35
46
  "build": "tsc -b",
36
- "test": "node --disable-warning=ExperimentalWarning --test 'test/*.test.ts'",
47
+ "test": "node --disable-warning=ExperimentalWarning --test \"test/*.test.ts\"",
37
48
  "typecheck": "tsc -b"
38
49
  }
39
50
  }