@nahisaho/musubix-synthesis 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/EnhancedPBESynthesizer.d.ts +182 -0
  2. package/dist/EnhancedPBESynthesizer.d.ts.map +1 -0
  3. package/dist/EnhancedPBESynthesizer.js +266 -0
  4. package/dist/EnhancedPBESynthesizer.js.map +1 -0
  5. package/dist/analysis/ExampleAnalyzer.d.ts +81 -0
  6. package/dist/analysis/ExampleAnalyzer.d.ts.map +1 -0
  7. package/dist/analysis/ExampleAnalyzer.js +358 -0
  8. package/dist/analysis/ExampleAnalyzer.js.map +1 -0
  9. package/dist/analysis/index.d.ts +9 -0
  10. package/dist/analysis/index.d.ts.map +1 -0
  11. package/dist/analysis/index.js +8 -0
  12. package/dist/analysis/index.js.map +1 -0
  13. package/dist/dsl/DSLExtender.d.ts +79 -0
  14. package/dist/dsl/DSLExtender.d.ts.map +1 -0
  15. package/dist/dsl/DSLExtender.js +312 -0
  16. package/dist/dsl/DSLExtender.js.map +1 -0
  17. package/dist/dsl/index.d.ts +2 -0
  18. package/dist/dsl/index.d.ts.map +1 -1
  19. package/dist/dsl/index.js +2 -0
  20. package/dist/dsl/index.js.map +1 -1
  21. package/dist/explain/ExplanationGenerator.d.ts +91 -0
  22. package/dist/explain/ExplanationGenerator.d.ts.map +1 -0
  23. package/dist/explain/ExplanationGenerator.js +236 -0
  24. package/dist/explain/ExplanationGenerator.js.map +1 -0
  25. package/dist/explain/index.d.ts +7 -0
  26. package/dist/explain/index.d.ts.map +1 -0
  27. package/dist/explain/index.js +7 -0
  28. package/dist/explain/index.js.map +1 -0
  29. package/dist/index.d.ts +14 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +13 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/meta/MetaLearningEngine.d.ts +106 -0
  34. package/dist/meta/MetaLearningEngine.d.ts.map +1 -0
  35. package/dist/meta/MetaLearningEngine.js +196 -0
  36. package/dist/meta/MetaLearningEngine.js.map +1 -0
  37. package/dist/meta/__tests__/MetaLearningEngine.test.d.ts +8 -0
  38. package/dist/meta/__tests__/MetaLearningEngine.test.d.ts.map +1 -0
  39. package/dist/meta/__tests__/MetaLearningEngine.test.js +244 -0
  40. package/dist/meta/__tests__/MetaLearningEngine.test.js.map +1 -0
  41. package/dist/meta/index.d.ts +9 -0
  42. package/dist/meta/index.d.ts.map +1 -0
  43. package/dist/meta/index.js +8 -0
  44. package/dist/meta/index.js.map +1 -0
  45. package/dist/versionspace/EnhancedVersionSpace.d.ts +170 -0
  46. package/dist/versionspace/EnhancedVersionSpace.d.ts.map +1 -0
  47. package/dist/versionspace/EnhancedVersionSpace.js +265 -0
  48. package/dist/versionspace/EnhancedVersionSpace.js.map +1 -0
  49. package/dist/versionspace/index.d.ts +7 -0
  50. package/dist/versionspace/index.d.ts.map +1 -0
  51. package/dist/versionspace/index.js +6 -0
  52. package/dist/versionspace/index.js.map +1 -0
  53. package/dist/witness/EnhancedWitnessEngine.d.ts +108 -0
  54. package/dist/witness/EnhancedWitnessEngine.d.ts.map +1 -0
  55. package/dist/witness/EnhancedWitnessEngine.js +555 -0
  56. package/dist/witness/EnhancedWitnessEngine.js.map +1 -0
  57. package/dist/witness/index.d.ts +6 -0
  58. package/dist/witness/index.d.ts.map +1 -0
  59. package/dist/witness/index.js +6 -0
  60. package/dist/witness/index.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1,555 @@
1
+ /**
2
+ * EnhancedWitnessEngine - Extended Witness Function Engine
3
+ *
4
+ * Extends the base WitnessEngine with 20+ built-in witness functions
5
+ * for string, list, arithmetic, and conditional operations.
6
+ *
7
+ * @module @nahisaho/musubix-synthesis
8
+ * @see TSK-SY-101
9
+ * @see DES-SY-101
10
+ * @see REQ-SY-101
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { createEnhancedWitnessEngine } from './EnhancedWitnessEngine.js';
15
+ *
16
+ * const engine = createEnhancedWitnessEngine(dsl);
17
+ * const decomp = engine.decompose(spec, 'concat');
18
+ * ```
19
+ */
20
+ import { WitnessEngine } from '../synthesis/WitnessEngine.js';
21
+ // =============================================================================
22
+ // Default Configuration
23
+ // =============================================================================
24
+ const DEFAULT_CONFIG = {
25
+ enableStringWitnesses: true,
26
+ enableListWitnesses: true,
27
+ enableArithmeticWitnesses: true,
28
+ enableConditionalWitnesses: true,
29
+ };
30
+ // =============================================================================
31
+ // Built-in Witnesses
32
+ // =============================================================================
33
+ /**
34
+ * Built-in witness functions (20+ total)
35
+ */
36
+ export const BUILTIN_WITNESSES = [
37
+ // =========================================================================
38
+ // String Witnesses (8)
39
+ // =========================================================================
40
+ {
41
+ operator: 'concat',
42
+ argIndex: 0,
43
+ category: 'string',
44
+ description: 'Concatenation witness - decomposes output into prefix/suffix',
45
+ witness: (spec) => {
46
+ const results = [];
47
+ for (const ex of spec.examples) {
48
+ if (typeof ex.output === 'string') {
49
+ const output = ex.output;
50
+ // Try different split points
51
+ for (let i = 0; i <= output.length; i++) {
52
+ const prefix = output.substring(0, i);
53
+ const suffix = output.substring(i);
54
+ results.push({ examples: [{ input: ex.input, output: prefix }] });
55
+ results.push({ examples: [{ input: ex.input, output: suffix }] });
56
+ }
57
+ }
58
+ }
59
+ return results;
60
+ },
61
+ },
62
+ {
63
+ operator: 'substring',
64
+ argIndex: 0,
65
+ category: 'string',
66
+ description: 'Substring witness - finds source string and indices',
67
+ witness: (spec) => {
68
+ const results = [];
69
+ for (const ex of spec.examples) {
70
+ if (typeof ex.output === 'string' && Array.isArray(ex.input)) {
71
+ const input = ex.input[0];
72
+ if (typeof input === 'string' && input.includes(ex.output)) {
73
+ const start = input.indexOf(ex.output);
74
+ const end = start + ex.output.length;
75
+ results.push({ examples: [{ input: ex.input, output: input }] });
76
+ results.push({ examples: [{ input: ex.input, output: start }] });
77
+ results.push({ examples: [{ input: ex.input, output: end }] });
78
+ }
79
+ }
80
+ }
81
+ return results;
82
+ },
83
+ },
84
+ {
85
+ operator: 'toUpperCase',
86
+ argIndex: 0,
87
+ category: 'string',
88
+ description: 'ToUpperCase witness - finds lowercase source',
89
+ witness: (spec) => {
90
+ const results = [];
91
+ for (const ex of spec.examples) {
92
+ if (typeof ex.output === 'string') {
93
+ results.push({ examples: [{ input: ex.input, output: ex.output.toLowerCase() }] });
94
+ }
95
+ }
96
+ return results;
97
+ },
98
+ },
99
+ {
100
+ operator: 'toLowerCase',
101
+ argIndex: 0,
102
+ category: 'string',
103
+ description: 'ToLowerCase witness - finds uppercase source',
104
+ witness: (spec) => {
105
+ const results = [];
106
+ for (const ex of spec.examples) {
107
+ if (typeof ex.output === 'string') {
108
+ results.push({ examples: [{ input: ex.input, output: ex.output.toUpperCase() }] });
109
+ }
110
+ }
111
+ return results;
112
+ },
113
+ },
114
+ {
115
+ operator: 'replace',
116
+ argIndex: 0,
117
+ category: 'string',
118
+ description: 'Replace witness - finds original string and replacement',
119
+ witness: (spec) => {
120
+ const results = [];
121
+ for (const ex of spec.examples) {
122
+ if (typeof ex.output === 'string') {
123
+ results.push({ examples: [{ input: ex.input, output: ex.output }] });
124
+ }
125
+ }
126
+ return results;
127
+ },
128
+ },
129
+ {
130
+ operator: 'trim',
131
+ argIndex: 0,
132
+ category: 'string',
133
+ description: 'Trim witness - finds string with whitespace',
134
+ witness: (spec) => {
135
+ const results = [];
136
+ for (const ex of spec.examples) {
137
+ if (typeof ex.output === 'string') {
138
+ results.push({ examples: [{ input: ex.input, output: ' ' + ex.output + ' ' }] });
139
+ results.push({ examples: [{ input: ex.input, output: ex.output }] });
140
+ }
141
+ }
142
+ return results;
143
+ },
144
+ },
145
+ {
146
+ operator: 'split',
147
+ argIndex: 0,
148
+ category: 'string',
149
+ description: 'Split witness - finds original string and delimiter',
150
+ witness: (spec) => {
151
+ const results = [];
152
+ for (const ex of spec.examples) {
153
+ if (Array.isArray(ex.output)) {
154
+ const joined = ex.output.join('');
155
+ results.push({ examples: [{ input: ex.input, output: joined }] });
156
+ }
157
+ }
158
+ return results;
159
+ },
160
+ },
161
+ {
162
+ operator: 'length',
163
+ argIndex: 0,
164
+ category: 'string',
165
+ description: 'Length witness - finds string of given length',
166
+ witness: (spec) => {
167
+ const results = [];
168
+ for (const ex of spec.examples) {
169
+ if (typeof ex.output === 'number') {
170
+ results.push({ examples: [{ input: ex.input, output: 'x'.repeat(ex.output) }] });
171
+ }
172
+ }
173
+ return results;
174
+ },
175
+ },
176
+ // =========================================================================
177
+ // List Witnesses (6)
178
+ // =========================================================================
179
+ {
180
+ operator: 'map',
181
+ argIndex: 0,
182
+ category: 'list',
183
+ description: 'Map witness - infers transformation function',
184
+ witness: (spec) => {
185
+ const results = [];
186
+ for (const ex of spec.examples) {
187
+ if (Array.isArray(ex.input) && Array.isArray(ex.output)) {
188
+ const inputArr = ex.input[0];
189
+ const outputArr = ex.output;
190
+ // Infer element-wise transformation
191
+ if (inputArr.length === outputArr.length) {
192
+ for (let i = 0; i < inputArr.length; i++) {
193
+ results.push({
194
+ examples: [{ input: inputArr[i], output: outputArr[i] }],
195
+ });
196
+ }
197
+ }
198
+ }
199
+ }
200
+ return results;
201
+ },
202
+ },
203
+ {
204
+ operator: 'filter',
205
+ argIndex: 0,
206
+ category: 'list',
207
+ description: 'Filter witness - infers predicate function',
208
+ witness: (spec) => {
209
+ const results = [];
210
+ for (const ex of spec.examples) {
211
+ if (Array.isArray(ex.input) && Array.isArray(ex.output)) {
212
+ const inputArr = ex.input[0];
213
+ const outputArr = ex.output;
214
+ // Create specs for included/excluded elements
215
+ for (const item of inputArr) {
216
+ const included = outputArr.includes(item);
217
+ results.push({
218
+ examples: [{ input: item, output: included }],
219
+ });
220
+ }
221
+ }
222
+ }
223
+ return results;
224
+ },
225
+ },
226
+ {
227
+ operator: 'reduce',
228
+ argIndex: 0,
229
+ category: 'list',
230
+ description: 'Reduce witness - infers reducer function and initial value',
231
+ witness: (spec) => {
232
+ const results = [];
233
+ for (const ex of spec.examples) {
234
+ if (Array.isArray(ex.input)) {
235
+ results.push({ examples: [{ input: ex.input, output: ex.output }] });
236
+ }
237
+ }
238
+ return results;
239
+ },
240
+ },
241
+ {
242
+ operator: 'head',
243
+ argIndex: 0,
244
+ category: 'list',
245
+ description: 'Head witness - finds list with given first element',
246
+ witness: (spec) => {
247
+ const results = [];
248
+ for (const ex of spec.examples) {
249
+ results.push({ examples: [{ input: ex.input, output: [ex.output] }] });
250
+ }
251
+ return results;
252
+ },
253
+ },
254
+ {
255
+ operator: 'tail',
256
+ argIndex: 0,
257
+ category: 'list',
258
+ description: 'Tail witness - finds list with given rest',
259
+ witness: (spec) => {
260
+ const results = [];
261
+ for (const ex of spec.examples) {
262
+ if (Array.isArray(ex.output)) {
263
+ results.push({ examples: [{ input: ex.input, output: [null, ...ex.output] }] });
264
+ }
265
+ }
266
+ return results;
267
+ },
268
+ },
269
+ {
270
+ operator: 'cons',
271
+ argIndex: 0,
272
+ category: 'list',
273
+ description: 'Cons witness - finds head and tail',
274
+ witness: (spec) => {
275
+ const results = [];
276
+ for (const ex of spec.examples) {
277
+ if (Array.isArray(ex.output) && ex.output.length > 0) {
278
+ results.push({ examples: [{ input: ex.input, output: ex.output[0] }] });
279
+ results.push({ examples: [{ input: ex.input, output: ex.output.slice(1) }] });
280
+ }
281
+ }
282
+ return results;
283
+ },
284
+ },
285
+ // =========================================================================
286
+ // Arithmetic Witnesses (4)
287
+ // =========================================================================
288
+ {
289
+ operator: 'add',
290
+ argIndex: 0,
291
+ category: 'arithmetic',
292
+ description: 'Addition witness - decomposes sum into addends',
293
+ witness: (spec) => {
294
+ const results = [];
295
+ for (const ex of spec.examples) {
296
+ if (typeof ex.output === 'number') {
297
+ const sum = ex.output;
298
+ // Try different decompositions
299
+ for (let i = 0; i <= sum; i++) {
300
+ results.push({ examples: [{ input: ex.input, output: i }] });
301
+ results.push({ examples: [{ input: ex.input, output: sum - i }] });
302
+ }
303
+ }
304
+ }
305
+ return results;
306
+ },
307
+ },
308
+ {
309
+ operator: 'subtract',
310
+ argIndex: 0,
311
+ category: 'arithmetic',
312
+ description: 'Subtraction witness - finds minuend and subtrahend',
313
+ witness: (spec) => {
314
+ const results = [];
315
+ for (const ex of spec.examples) {
316
+ if (typeof ex.output === 'number' && Array.isArray(ex.input)) {
317
+ const [a, b] = ex.input;
318
+ if (typeof a === 'number' && typeof b === 'number') {
319
+ results.push({ examples: [{ input: ex.input, output: a }] });
320
+ results.push({ examples: [{ input: ex.input, output: b }] });
321
+ }
322
+ }
323
+ }
324
+ return results;
325
+ },
326
+ },
327
+ {
328
+ operator: 'multiply',
329
+ argIndex: 0,
330
+ category: 'arithmetic',
331
+ description: 'Multiplication witness - decomposes product into factors',
332
+ witness: (spec) => {
333
+ const results = [];
334
+ for (const ex of spec.examples) {
335
+ if (typeof ex.output === 'number') {
336
+ const product = ex.output;
337
+ // Find factor pairs
338
+ for (let i = 1; i <= Math.sqrt(Math.abs(product)) + 1; i++) {
339
+ if (product % i === 0) {
340
+ results.push({ examples: [{ input: ex.input, output: i }] });
341
+ results.push({ examples: [{ input: ex.input, output: product / i }] });
342
+ }
343
+ }
344
+ }
345
+ }
346
+ return results;
347
+ },
348
+ },
349
+ {
350
+ operator: 'divide',
351
+ argIndex: 0,
352
+ category: 'arithmetic',
353
+ description: 'Division witness - finds dividend and divisor',
354
+ witness: (spec) => {
355
+ const results = [];
356
+ for (const ex of spec.examples) {
357
+ if (typeof ex.output === 'number' && Array.isArray(ex.input)) {
358
+ const [a, b] = ex.input;
359
+ if (typeof a === 'number' && typeof b === 'number') {
360
+ results.push({ examples: [{ input: ex.input, output: a }] });
361
+ results.push({ examples: [{ input: ex.input, output: b }] });
362
+ }
363
+ }
364
+ }
365
+ return results;
366
+ },
367
+ },
368
+ // =========================================================================
369
+ // Conditional Witnesses (2)
370
+ // =========================================================================
371
+ {
372
+ operator: 'ite',
373
+ argIndex: 0,
374
+ category: 'conditional',
375
+ description: 'If-then-else witness - infers condition and branches',
376
+ witness: (spec) => {
377
+ const results = [];
378
+ for (const ex of spec.examples) {
379
+ if (Array.isArray(ex.input) && ex.input.length >= 3) {
380
+ const [cond, thenVal, elseVal] = ex.input;
381
+ // Condition spec
382
+ results.push({ examples: [{ input: ex.input, output: cond }] });
383
+ // Then branch spec
384
+ results.push({ examples: [{ input: ex.input, output: thenVal }] });
385
+ // Else branch spec
386
+ results.push({ examples: [{ input: ex.input, output: elseVal }] });
387
+ }
388
+ }
389
+ return results;
390
+ },
391
+ },
392
+ {
393
+ operator: 'switch',
394
+ argIndex: 0,
395
+ category: 'conditional',
396
+ description: 'Switch witness - infers selector and cases',
397
+ witness: (spec) => {
398
+ const results = [];
399
+ for (const ex of spec.examples) {
400
+ results.push({ examples: [{ input: ex.input, output: ex.output }] });
401
+ }
402
+ return results;
403
+ },
404
+ },
405
+ ];
406
+ // =============================================================================
407
+ // Implementation
408
+ // =============================================================================
409
+ /**
410
+ * Enhanced Witness Engine with built-in witnesses
411
+ */
412
+ export class EnhancedWitnessEngine extends WitnessEngine {
413
+ config;
414
+ customWitnesses = [];
415
+ witnessCategories = new Map();
416
+ constructor(dsl, config = {}) {
417
+ super(dsl);
418
+ this.config = { ...DEFAULT_CONFIG, ...config };
419
+ this.registerBuiltinWitnesses();
420
+ }
421
+ /**
422
+ * Register all built-in witnesses based on config
423
+ */
424
+ registerBuiltinWitnesses() {
425
+ for (const witness of BUILTIN_WITNESSES) {
426
+ if (this.shouldRegisterWitness(witness)) {
427
+ this.registerWitness(witness);
428
+ if (witness.category) {
429
+ this.witnessCategories.set(witness.operator, witness.category);
430
+ }
431
+ }
432
+ }
433
+ }
434
+ /**
435
+ * Check if witness should be registered based on config
436
+ */
437
+ shouldRegisterWitness(witness) {
438
+ switch (witness.category) {
439
+ case 'string':
440
+ return this.config.enableStringWitnesses;
441
+ case 'list':
442
+ return this.config.enableListWitnesses;
443
+ case 'arithmetic':
444
+ return this.config.enableArithmeticWitnesses;
445
+ case 'conditional':
446
+ return this.config.enableConditionalWitnesses;
447
+ default:
448
+ return true;
449
+ }
450
+ }
451
+ /**
452
+ * Register a custom witness function
453
+ */
454
+ registerWitness(witness) {
455
+ super.registerWitness(witness);
456
+ const extended = witness;
457
+ if (!BUILTIN_WITNESSES.includes(extended)) {
458
+ this.customWitnesses.push(extended);
459
+ }
460
+ if (extended.category) {
461
+ this.witnessCategories.set(witness.operator, extended.category);
462
+ }
463
+ else {
464
+ this.witnessCategories.set(witness.operator, 'custom');
465
+ }
466
+ }
467
+ /**
468
+ * Get total count of registered witnesses
469
+ */
470
+ getWitnessCount() {
471
+ let count = 0;
472
+ // Count across all operators
473
+ for (const witness of BUILTIN_WITNESSES) {
474
+ if (this.shouldRegisterWitness(witness)) {
475
+ count++;
476
+ }
477
+ }
478
+ count += this.customWitnesses.length;
479
+ return count;
480
+ }
481
+ /**
482
+ * Get witnesses by category
483
+ */
484
+ getWitnessesByCategory(category) {
485
+ const results = [];
486
+ for (const witness of BUILTIN_WITNESSES) {
487
+ if (witness.category === category && this.shouldRegisterWitness(witness)) {
488
+ results.push(witness);
489
+ }
490
+ }
491
+ if (category === 'custom') {
492
+ results.push(...this.customWitnesses);
493
+ }
494
+ return results;
495
+ }
496
+ /**
497
+ * List all registered witnesses
498
+ */
499
+ listWitnesses() {
500
+ const items = [];
501
+ for (const witness of BUILTIN_WITNESSES) {
502
+ if (this.shouldRegisterWitness(witness)) {
503
+ items.push({
504
+ operator: witness.operator,
505
+ category: witness.category ?? 'custom',
506
+ description: witness.description,
507
+ });
508
+ }
509
+ }
510
+ for (const witness of this.customWitnesses) {
511
+ items.push({
512
+ operator: witness.operator,
513
+ category: witness.category ?? 'custom',
514
+ description: witness.description,
515
+ });
516
+ }
517
+ return items;
518
+ }
519
+ /**
520
+ * Serialize engine state to JSON
521
+ */
522
+ toJSON() {
523
+ const state = {
524
+ version: '1.0.0',
525
+ config: this.config,
526
+ customWitnesses: this.customWitnesses.map(w => ({
527
+ operator: w.operator,
528
+ category: w.category ?? 'custom',
529
+ })),
530
+ };
531
+ return JSON.stringify(state, null, 2);
532
+ }
533
+ /**
534
+ * Restore engine state from JSON
535
+ * Note: Only restores configuration, not actual witness function implementations
536
+ */
537
+ fromJSON(_json) {
538
+ // Parse but don't fully restore - witness functions can't be serialized
539
+ // This method exists for API compatibility
540
+ }
541
+ }
542
+ // =============================================================================
543
+ // Factory Function
544
+ // =============================================================================
545
+ /**
546
+ * Create an EnhancedWitnessEngine instance
547
+ *
548
+ * @param dsl - The DSL to use for synthesis
549
+ * @param config - Optional configuration
550
+ * @returns EnhancedWitnessEngine instance
551
+ */
552
+ export function createEnhancedWitnessEngine(dsl, config = {}) {
553
+ return new EnhancedWitnessEngine(dsl, config);
554
+ }
555
+ //# sourceMappingURL=EnhancedWitnessEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnhancedWitnessEngine.js","sourceRoot":"","sources":["../../src/witness/EnhancedWitnessEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Witness Module Exports
3
+ * @module @nahisaho/musubix-synthesis/witness
4
+ */
5
+ export { EnhancedWitnessEngine, createEnhancedWitnessEngine, BUILTIN_WITNESSES, type EnhancedWitnessConfig, type WitnessCategory, type ExtendedWitnessFunction, type WitnessListItem, } from './EnhancedWitnessEngine.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/witness/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Witness Module Exports
3
+ * @module @nahisaho/musubix-synthesis/witness
4
+ */
5
+ export { EnhancedWitnessEngine, createEnhancedWitnessEngine, BUILTIN_WITNESSES, } from './EnhancedWitnessEngine.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/witness/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,GAKlB,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nahisaho/musubix-synthesis",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "MUSUBIX synthesis - DSL-based program synthesis with PBE and rule learning",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",