@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.
- package/README.md +62 -0
- package/dist/converters/EarsToSmtConverter.d.ts +102 -0
- package/dist/converters/EarsToSmtConverter.d.ts.map +1 -0
- package/dist/converters/EarsToSmtConverter.js +368 -0
- package/dist/converters/EarsToSmtConverter.js.map +1 -0
- package/dist/converters/index.d.ts +6 -0
- package/dist/converters/index.d.ts.map +1 -0
- package/dist/converters/index.js +5 -0
- package/dist/converters/index.js.map +1 -0
- package/dist/converters/types.d.ts +103 -0
- package/dist/converters/types.d.ts.map +1 -0
- package/dist/converters/types.js +7 -0
- package/dist/converters/types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/formal-verify-tools.d.ts +60 -0
- package/dist/tools/formal-verify-tools.d.ts.map +1 -0
- package/dist/tools/formal-verify-tools.js +371 -0
- package/dist/tools/formal-verify-tools.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/traceability/ImpactAnalyzer.d.ts +103 -0
- package/dist/traceability/ImpactAnalyzer.d.ts.map +1 -0
- package/dist/traceability/ImpactAnalyzer.js +281 -0
- package/dist/traceability/ImpactAnalyzer.js.map +1 -0
- package/dist/traceability/TraceabilityDB.d.ts +123 -0
- package/dist/traceability/TraceabilityDB.d.ts.map +1 -0
- package/dist/traceability/TraceabilityDB.js +379 -0
- package/dist/traceability/TraceabilityDB.js.map +1 -0
- package/dist/traceability/index.d.ts +8 -0
- package/dist/traceability/index.d.ts.map +1 -0
- package/dist/traceability/index.js +6 -0
- package/dist/traceability/index.js.map +1 -0
- package/dist/traceability/types.d.ts +156 -0
- package/dist/traceability/types.d.ts.map +1 -0
- package/dist/traceability/types.js +7 -0
- package/dist/traceability/types.js.map +1 -0
- package/dist/verifiers/PostconditionVerifier.d.ts +105 -0
- package/dist/verifiers/PostconditionVerifier.d.ts.map +1 -0
- package/dist/verifiers/PostconditionVerifier.js +326 -0
- package/dist/verifiers/PostconditionVerifier.js.map +1 -0
- package/dist/verifiers/PreconditionVerifier.d.ts +87 -0
- package/dist/verifiers/PreconditionVerifier.d.ts.map +1 -0
- package/dist/verifiers/PreconditionVerifier.js +286 -0
- package/dist/verifiers/PreconditionVerifier.js.map +1 -0
- package/dist/verifiers/index.d.ts +7 -0
- package/dist/verifiers/index.d.ts.map +1 -0
- package/dist/verifiers/index.js +6 -0
- package/dist/verifiers/index.js.map +1 -0
- package/dist/verifiers/types.d.ts +109 -0
- package/dist/verifiers/types.d.ts.map +1 -0
- package/dist/verifiers/types.js +7 -0
- package/dist/verifiers/types.js.map +1 -0
- package/dist/z3/Z3Adapter.d.ts +92 -0
- package/dist/z3/Z3Adapter.d.ts.map +1 -0
- package/dist/z3/Z3Adapter.js +189 -0
- package/dist/z3/Z3Adapter.js.map +1 -0
- package/dist/z3/Z3ProcessFallback.d.ts +67 -0
- package/dist/z3/Z3ProcessFallback.d.ts.map +1 -0
- package/dist/z3/Z3ProcessFallback.js +287 -0
- package/dist/z3/Z3ProcessFallback.js.map +1 -0
- package/dist/z3/Z3WasmClient.d.ts +55 -0
- package/dist/z3/Z3WasmClient.d.ts.map +1 -0
- package/dist/z3/Z3WasmClient.js +172 -0
- package/dist/z3/Z3WasmClient.js.map +1 -0
- package/dist/z3/index.d.ts +9 -0
- package/dist/z3/index.d.ts.map +1 -0
- package/dist/z3/index.js +7 -0
- package/dist/z3/index.js.map +1 -0
- package/dist/z3/types.d.ts +82 -0
- package/dist/z3/types.d.ts.map +1 -0
- package/dist/z3/types.js +7 -0
- package/dist/z3/types.js.map +1 -0
- 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"}
|
package/dist/z3/index.js
ADDED
|
@@ -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"}
|
package/dist/z3/types.js
ADDED
|
@@ -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
|
+
}
|