@nahisaho/musubix-formal-verify 1.7.5

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 (78) hide show
  1. package/README.md +62 -0
  2. package/dist/converters/EarsToSmtConverter.d.ts +102 -0
  3. package/dist/converters/EarsToSmtConverter.d.ts.map +1 -0
  4. package/dist/converters/EarsToSmtConverter.js +368 -0
  5. package/dist/converters/EarsToSmtConverter.js.map +1 -0
  6. package/dist/converters/index.d.ts +6 -0
  7. package/dist/converters/index.d.ts.map +1 -0
  8. package/dist/converters/index.js +5 -0
  9. package/dist/converters/index.js.map +1 -0
  10. package/dist/converters/types.d.ts +103 -0
  11. package/dist/converters/types.d.ts.map +1 -0
  12. package/dist/converters/types.js +7 -0
  13. package/dist/converters/types.js.map +1 -0
  14. package/dist/index.d.ts +22 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +23 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/tools/formal-verify-tools.d.ts +60 -0
  19. package/dist/tools/formal-verify-tools.d.ts.map +1 -0
  20. package/dist/tools/formal-verify-tools.js +371 -0
  21. package/dist/tools/formal-verify-tools.js.map +1 -0
  22. package/dist/tools/index.d.ts +5 -0
  23. package/dist/tools/index.d.ts.map +1 -0
  24. package/dist/tools/index.js +5 -0
  25. package/dist/tools/index.js.map +1 -0
  26. package/dist/traceability/ImpactAnalyzer.d.ts +103 -0
  27. package/dist/traceability/ImpactAnalyzer.d.ts.map +1 -0
  28. package/dist/traceability/ImpactAnalyzer.js +281 -0
  29. package/dist/traceability/ImpactAnalyzer.js.map +1 -0
  30. package/dist/traceability/TraceabilityDB.d.ts +123 -0
  31. package/dist/traceability/TraceabilityDB.d.ts.map +1 -0
  32. package/dist/traceability/TraceabilityDB.js +379 -0
  33. package/dist/traceability/TraceabilityDB.js.map +1 -0
  34. package/dist/traceability/index.d.ts +8 -0
  35. package/dist/traceability/index.d.ts.map +1 -0
  36. package/dist/traceability/index.js +6 -0
  37. package/dist/traceability/index.js.map +1 -0
  38. package/dist/traceability/types.d.ts +156 -0
  39. package/dist/traceability/types.d.ts.map +1 -0
  40. package/dist/traceability/types.js +7 -0
  41. package/dist/traceability/types.js.map +1 -0
  42. package/dist/verifiers/PostconditionVerifier.d.ts +105 -0
  43. package/dist/verifiers/PostconditionVerifier.d.ts.map +1 -0
  44. package/dist/verifiers/PostconditionVerifier.js +326 -0
  45. package/dist/verifiers/PostconditionVerifier.js.map +1 -0
  46. package/dist/verifiers/PreconditionVerifier.d.ts +87 -0
  47. package/dist/verifiers/PreconditionVerifier.d.ts.map +1 -0
  48. package/dist/verifiers/PreconditionVerifier.js +286 -0
  49. package/dist/verifiers/PreconditionVerifier.js.map +1 -0
  50. package/dist/verifiers/index.d.ts +7 -0
  51. package/dist/verifiers/index.d.ts.map +1 -0
  52. package/dist/verifiers/index.js +6 -0
  53. package/dist/verifiers/index.js.map +1 -0
  54. package/dist/verifiers/types.d.ts +109 -0
  55. package/dist/verifiers/types.d.ts.map +1 -0
  56. package/dist/verifiers/types.js +7 -0
  57. package/dist/verifiers/types.js.map +1 -0
  58. package/dist/z3/Z3Adapter.d.ts +92 -0
  59. package/dist/z3/Z3Adapter.d.ts.map +1 -0
  60. package/dist/z3/Z3Adapter.js +189 -0
  61. package/dist/z3/Z3Adapter.js.map +1 -0
  62. package/dist/z3/Z3ProcessFallback.d.ts +67 -0
  63. package/dist/z3/Z3ProcessFallback.d.ts.map +1 -0
  64. package/dist/z3/Z3ProcessFallback.js +287 -0
  65. package/dist/z3/Z3ProcessFallback.js.map +1 -0
  66. package/dist/z3/Z3WasmClient.d.ts +55 -0
  67. package/dist/z3/Z3WasmClient.d.ts.map +1 -0
  68. package/dist/z3/Z3WasmClient.js +172 -0
  69. package/dist/z3/Z3WasmClient.js.map +1 -0
  70. package/dist/z3/index.d.ts +9 -0
  71. package/dist/z3/index.d.ts.map +1 -0
  72. package/dist/z3/index.js +7 -0
  73. package/dist/z3/index.js.map +1 -0
  74. package/dist/z3/types.d.ts +82 -0
  75. package/dist/z3/types.d.ts.map +1 -0
  76. package/dist/z3/types.js +7 -0
  77. package/dist/z3/types.js.map +1 -0
  78. package/package.json +79 -0
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Z3 WebAssembly Client
3
+ *
4
+ * z3-wasmを使用したブラウザ/Node.js両対応のZ3クライアント
5
+ *
6
+ * @implements {Z3Client}
7
+ */
8
+ /**
9
+ * Z3 WebAssemblyクライアント
10
+ *
11
+ * z3-wasmパッケージを使用してZ3ソルバーをWebAssemblyで実行します。
12
+ * ネイティブZ3が利用できない環境でのフォールバックとして機能します。
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const client = new Z3WasmClient({ timeout: 5000 });
17
+ * await client.initialize();
18
+ * const result = await client.checkSat('(declare-const x Int) (assert (> x 0))');
19
+ * console.log(result); // 'sat'
20
+ * ```
21
+ */
22
+ export class Z3WasmClient {
23
+ z3Instance = null;
24
+ initialized = false;
25
+ options;
26
+ constructor(options = {}) {
27
+ this.options = {
28
+ timeout: options.timeout ?? 30000,
29
+ logLevel: options.logLevel ?? 'silent',
30
+ memoryLimit: options.memoryLimit ?? 512,
31
+ };
32
+ }
33
+ /**
34
+ * Z3 WebAssemblyモジュールを初期化
35
+ *
36
+ * @throws {Error} z3-wasmモジュールのロードに失敗した場合
37
+ */
38
+ async initialize() {
39
+ if (this.initialized) {
40
+ return;
41
+ }
42
+ try {
43
+ // z3-wasmの動的インポート
44
+ // Note: z3-wasmがインストールされていない場合はエラーになる
45
+ // その場合はZ3ProcessFallbackにフォールバック
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ const z3Module = await import('z3-solver').catch(() => null);
48
+ if (!z3Module) {
49
+ throw new Error('z3-solver module not found. Install with: npm install z3-solver');
50
+ }
51
+ const { init } = z3Module;
52
+ this.z3Instance = await init();
53
+ this.initialized = true;
54
+ if (this.options.logLevel !== 'silent') {
55
+ console.log('[Z3WasmClient] Initialized successfully');
56
+ }
57
+ }
58
+ catch (error) {
59
+ const message = error instanceof Error ? error.message : String(error);
60
+ throw new Error(`Failed to initialize Z3 WebAssembly: ${message}`);
61
+ }
62
+ }
63
+ /**
64
+ * SMT-LIB2形式のアサーションの充足可能性をチェック
65
+ */
66
+ async checkSat(smtLib2) {
67
+ if (!this.initialized || !this.z3Instance) {
68
+ throw new Error('Z3WasmClient not initialized. Call initialize() first.');
69
+ }
70
+ try {
71
+ const z3 = this.z3Instance;
72
+ const ctx = new z3.Context('main');
73
+ // SMT-LIB2をパースして評価
74
+ // タイムアウト付きで実行
75
+ const timeoutPromise = new Promise((_, reject) => {
76
+ setTimeout(() => reject(new Error('Z3 timeout')), this.options.timeout);
77
+ });
78
+ const evalPromise = (async () => {
79
+ try {
80
+ // SMT-LIB2形式を評価
81
+ const fullScript = `${smtLib2}\n(check-sat)`;
82
+ const result = await ctx.eval(fullScript);
83
+ const resultStr = result.toString().toLowerCase();
84
+ if (resultStr.includes('sat') && !resultStr.includes('unsat')) {
85
+ return 'sat';
86
+ }
87
+ else if (resultStr.includes('unsat')) {
88
+ return 'unsat';
89
+ }
90
+ else if (resultStr.includes('unknown')) {
91
+ return 'unknown';
92
+ }
93
+ return 'unknown';
94
+ }
95
+ catch {
96
+ return 'error';
97
+ }
98
+ })();
99
+ return await Promise.race([evalPromise, timeoutPromise]);
100
+ }
101
+ catch (error) {
102
+ if (this.options.logLevel !== 'silent') {
103
+ console.error('[Z3WasmClient] checkSat error:', error);
104
+ }
105
+ return 'error';
106
+ }
107
+ }
108
+ /**
109
+ * モデルを取得(sat の場合のみ有効)
110
+ */
111
+ async getModel(smtLib2) {
112
+ if (!this.initialized || !this.z3Instance) {
113
+ throw new Error('Z3WasmClient not initialized. Call initialize() first.');
114
+ }
115
+ try {
116
+ const result = await this.checkSat(smtLib2);
117
+ if (result !== 'sat') {
118
+ return null;
119
+ }
120
+ const z3 = this.z3Instance;
121
+ const ctx = new z3.Context('main');
122
+ const fullScript = `${smtLib2}\n(check-sat)\n(get-model)`;
123
+ const modelResult = await ctx.eval(fullScript);
124
+ return modelResult.toString();
125
+ }
126
+ catch (error) {
127
+ if (this.options.logLevel !== 'silent') {
128
+ console.error('[Z3WasmClient] getModel error:', error);
129
+ }
130
+ return null;
131
+ }
132
+ }
133
+ /**
134
+ * 証明を取得(unsat の場合のみ有効)
135
+ */
136
+ async getProof(smtLib2) {
137
+ if (!this.initialized || !this.z3Instance) {
138
+ throw new Error('Z3WasmClient not initialized. Call initialize() first.');
139
+ }
140
+ try {
141
+ const result = await this.checkSat(smtLib2);
142
+ if (result !== 'unsat') {
143
+ return null;
144
+ }
145
+ const z3 = this.z3Instance;
146
+ const ctx = new z3.Context('main');
147
+ const fullScript = `(set-option :produce-proofs true)\n${smtLib2}\n(check-sat)\n(get-proof)`;
148
+ const proofResult = await ctx.eval(fullScript);
149
+ return proofResult.toString();
150
+ }
151
+ catch (error) {
152
+ if (this.options.logLevel !== 'silent') {
153
+ console.error('[Z3WasmClient] getProof error:', error);
154
+ }
155
+ return null;
156
+ }
157
+ }
158
+ /**
159
+ * リソースを解放
160
+ */
161
+ async dispose() {
162
+ this.z3Instance = null;
163
+ this.initialized = false;
164
+ }
165
+ /**
166
+ * クライアントが利用可能かどうか
167
+ */
168
+ isAvailable() {
169
+ return this.initialized && this.z3Instance !== null;
170
+ }
171
+ }
172
+ //# sourceMappingURL=Z3WasmClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Z3WasmClient.js","sourceRoot":"","sources":["../../src/z3/Z3WasmClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Z3 Module Exports
3
+ */
4
+ export { Z3Adapter } from './Z3Adapter.js';
5
+ export type { Z3AdapterOptions } from './Z3Adapter.js';
6
+ export { Z3WasmClient } from './Z3WasmClient.js';
7
+ export { Z3ProcessFallback } from './Z3ProcessFallback.js';
8
+ export type { Z3Client, Z3Result, Z3Options, Z3Context, Z3Error } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/z3/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Z3 Module Exports
3
+ */
4
+ export { Z3Adapter } from './Z3Adapter.js';
5
+ export { Z3WasmClient } from './Z3WasmClient.js';
6
+ export { Z3ProcessFallback } from './Z3ProcessFallback.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/z3/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Z3 Client Interface and Types
3
+ *
4
+ * Z3ソルバーとの通信インターフェース定義
5
+ */
6
+ /**
7
+ * Z3ソルバーの結果
8
+ */
9
+ export type Z3Result = 'sat' | 'unsat' | 'unknown' | 'error';
10
+ /**
11
+ * Z3クライアントオプション
12
+ */
13
+ export interface Z3Options {
14
+ /** タイムアウト(ミリ秒) */
15
+ timeout?: number;
16
+ /** ログレベル */
17
+ logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
18
+ /** メモリ制限(MB) */
19
+ memoryLimit?: number;
20
+ }
21
+ /**
22
+ * Z3クライアントインターフェース
23
+ *
24
+ * Z3WasmClientとZ3ProcessFallbackが実装
25
+ */
26
+ export interface Z3Client {
27
+ /**
28
+ * Z3ソルバーを初期化
29
+ */
30
+ initialize(): Promise<void>;
31
+ /**
32
+ * SMT-LIB2形式のアサーションの充足可能性をチェック
33
+ * @param smtLib2 - SMT-LIB2形式の文字列
34
+ * @returns 充足可能性の結果
35
+ */
36
+ checkSat(smtLib2: string): Promise<Z3Result>;
37
+ /**
38
+ * モデルを取得(sat の場合のみ有効)
39
+ * @param smtLib2 - SMT-LIB2形式の文字列
40
+ * @returns モデルの文字列表現、またはnull
41
+ */
42
+ getModel(smtLib2: string): Promise<string | null>;
43
+ /**
44
+ * 証明を取得(unsat の場合のみ有効)
45
+ * @param smtLib2 - SMT-LIB2形式の文字列
46
+ * @returns 証明の文字列表現、またはnull
47
+ */
48
+ getProof(smtLib2: string): Promise<string | null>;
49
+ /**
50
+ * リソースを解放
51
+ */
52
+ dispose(): Promise<void>;
53
+ /**
54
+ * クライアントが利用可能かどうか
55
+ */
56
+ isAvailable(): boolean;
57
+ }
58
+ /**
59
+ * Z3検証コンテキスト
60
+ */
61
+ export interface Z3Context {
62
+ /** 宣言された変数 */
63
+ declarations: Map<string, string>;
64
+ /** アサーション */
65
+ assertions: string[];
66
+ /** オプション */
67
+ options: Z3Options;
68
+ }
69
+ /**
70
+ * Z3エラー情報
71
+ */
72
+ export interface Z3Error {
73
+ /** エラーコード */
74
+ code: string;
75
+ /** エラーメッセージ */
76
+ message: string;
77
+ /** 発生位置(行番号) */
78
+ line?: number;
79
+ /** 発生位置(列番号) */
80
+ column?: number;
81
+ }
82
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/z3/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1D,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAElD;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,cAAc;IACd,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY;IACZ,OAAO,EAAE,SAAS,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Z3 Client Interface and Types
3
+ *
4
+ * Z3ソルバーとの通信インターフェース定義
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/z3/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "@nahisaho/musubix-formal-verify",
3
+ "version": "1.7.5",
4
+ "description": "Formal verification tools for MUSUBIX - Z3 integration, precondition/postcondition verification, and EARS-to-SMT conversion",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./z3": {
14
+ "import": "./dist/z3/index.js",
15
+ "types": "./dist/z3/index.d.ts"
16
+ },
17
+ "./verifiers": {
18
+ "import": "./dist/verifiers/index.js",
19
+ "types": "./dist/verifiers/index.d.ts"
20
+ },
21
+ "./converters": {
22
+ "import": "./dist/converters/index.js",
23
+ "types": "./dist/converters/index.d.ts"
24
+ },
25
+ "./traceability": {
26
+ "import": "./dist/traceability/index.js",
27
+ "types": "./dist/traceability/index.d.ts"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "README.md"
33
+ ],
34
+ "scripts": {
35
+ "build": "tsc",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest",
38
+ "test:coverage": "vitest run --coverage",
39
+ "typecheck": "tsc --noEmit",
40
+ "clean": "rm -rf dist",
41
+ "prepublishOnly": "npm run build"
42
+ },
43
+ "keywords": [
44
+ "musubix",
45
+ "formal-verification",
46
+ "z3",
47
+ "smt",
48
+ "ears",
49
+ "precondition",
50
+ "postcondition",
51
+ "traceability"
52
+ ],
53
+ "author": "nahisaho",
54
+ "license": "MIT",
55
+ "repository": {
56
+ "type": "git",
57
+ "url": "git+https://github.com/nahisaho/MUSUBIX.git",
58
+ "directory": "packages/formal-verify"
59
+ },
60
+ "bugs": {
61
+ "url": "https://github.com/nahisaho/MUSUBIX/issues"
62
+ },
63
+ "homepage": "https://github.com/nahisaho/MUSUBIX/tree/main/packages/formal-verify#readme",
64
+ "engines": {
65
+ "node": ">=20.0.0"
66
+ },
67
+ "dependencies": {
68
+ "better-sqlite3": "^11.0.0"
69
+ },
70
+ "devDependencies": {
71
+ "@types/better-sqlite3": "^7.6.11",
72
+ "@types/node": "^20.10.0",
73
+ "typescript": "^5.3.0",
74
+ "vitest": "^2.0.0"
75
+ },
76
+ "peerDependencies": {
77
+ "@nahisaho/musubix-core": "^1.7.0"
78
+ }
79
+ }