@nahisaho/musubix-lean 1.8.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/dist/converters/EarsToLeanConverter.d.ts +61 -0
- package/dist/converters/EarsToLeanConverter.d.ts.map +1 -0
- package/dist/converters/EarsToLeanConverter.js +300 -0
- package/dist/converters/EarsToLeanConverter.js.map +1 -0
- package/dist/converters/TypeScriptSpecifier.d.ts +63 -0
- package/dist/converters/TypeScriptSpecifier.d.ts.map +1 -0
- package/dist/converters/TypeScriptSpecifier.js +307 -0
- package/dist/converters/TypeScriptSpecifier.js.map +1 -0
- package/dist/converters/index.d.ts +7 -0
- package/dist/converters/index.d.ts.map +1 -0
- package/dist/converters/index.js +7 -0
- package/dist/converters/index.js.map +1 -0
- package/dist/environment/LeanEnvironmentDetector.d.ts +57 -0
- package/dist/environment/LeanEnvironmentDetector.d.ts.map +1 -0
- package/dist/environment/LeanEnvironmentDetector.js +221 -0
- package/dist/environment/LeanEnvironmentDetector.js.map +1 -0
- package/dist/environment/LeanProjectInitializer.d.ts +49 -0
- package/dist/environment/LeanProjectInitializer.d.ts.map +1 -0
- package/dist/environment/LeanProjectInitializer.js +232 -0
- package/dist/environment/LeanProjectInitializer.js.map +1 -0
- package/dist/environment/index.d.ts +7 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/environment/index.js +7 -0
- package/dist/environment/index.js.map +1 -0
- package/dist/errors.d.ts +141 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +254 -0
- package/dist/errors.js.map +1 -0
- package/dist/hybrid/HybridVerifier.d.ts +113 -0
- package/dist/hybrid/HybridVerifier.d.ts.map +1 -0
- package/dist/hybrid/HybridVerifier.js +247 -0
- package/dist/hybrid/HybridVerifier.js.map +1 -0
- package/dist/hybrid/index.d.ts +6 -0
- package/dist/hybrid/index.d.ts.map +1 -0
- package/dist/hybrid/index.js +6 -0
- package/dist/hybrid/index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/LeanFileGenerator.d.ts +70 -0
- package/dist/infrastructure/LeanFileGenerator.d.ts.map +1 -0
- package/dist/infrastructure/LeanFileGenerator.js +253 -0
- package/dist/infrastructure/LeanFileGenerator.js.map +1 -0
- package/dist/infrastructure/LeanRunner.d.ts +93 -0
- package/dist/infrastructure/LeanRunner.d.ts.map +1 -0
- package/dist/infrastructure/LeanRunner.js +296 -0
- package/dist/infrastructure/LeanRunner.js.map +1 -0
- package/dist/infrastructure/index.d.ts +7 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +7 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/integration/LeanIntegration.d.ts +138 -0
- package/dist/integration/LeanIntegration.d.ts.map +1 -0
- package/dist/integration/LeanIntegration.js +352 -0
- package/dist/integration/LeanIntegration.js.map +1 -0
- package/dist/proof/ProofGenerator.d.ts +53 -0
- package/dist/proof/ProofGenerator.d.ts.map +1 -0
- package/dist/proof/ProofGenerator.js +324 -0
- package/dist/proof/ProofGenerator.js.map +1 -0
- package/dist/proof/ReProverClient.d.ts +58 -0
- package/dist/proof/ReProverClient.d.ts.map +1 -0
- package/dist/proof/ReProverClient.js +260 -0
- package/dist/proof/ReProverClient.js.map +1 -0
- package/dist/proof/index.d.ts +7 -0
- package/dist/proof/index.d.ts.map +1 -0
- package/dist/proof/index.js +7 -0
- package/dist/proof/index.js.map +1 -0
- package/dist/reporting/VerificationReporter.d.ts +89 -0
- package/dist/reporting/VerificationReporter.d.ts.map +1 -0
- package/dist/reporting/VerificationReporter.js +296 -0
- package/dist/reporting/VerificationReporter.js.map +1 -0
- package/dist/reporting/index.d.ts +6 -0
- package/dist/reporting/index.d.ts.map +1 -0
- package/dist/reporting/index.js +6 -0
- package/dist/reporting/index.js.map +1 -0
- package/dist/traceability/TraceabilityManager.d.ts +104 -0
- package/dist/traceability/TraceabilityManager.d.ts.map +1 -0
- package/dist/traceability/TraceabilityManager.js +299 -0
- package/dist/traceability/TraceabilityManager.js.map +1 -0
- package/dist/traceability/index.d.ts +6 -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/types.d.ts +466 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Lean execution runner
|
|
3
|
+
* @module @nahisaho/musubix-lean/infrastructure
|
|
4
|
+
* @traceability REQ-LEAN-CORE-004
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'child_process';
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { LeanExecutionError, LeanNotFoundError } from '../errors.js';
|
|
10
|
+
/**
|
|
11
|
+
* Runs Lean commands and validates proofs
|
|
12
|
+
* @traceability REQ-LEAN-CORE-004
|
|
13
|
+
*/
|
|
14
|
+
export class LeanRunner {
|
|
15
|
+
leanPath;
|
|
16
|
+
projectPath;
|
|
17
|
+
timeout;
|
|
18
|
+
lakeEnabled;
|
|
19
|
+
verbose;
|
|
20
|
+
leanVersion = null;
|
|
21
|
+
constructor(config = {}) {
|
|
22
|
+
this.leanPath = config.leanPath ?? 'lean';
|
|
23
|
+
this.projectPath = config.projectPath ?? process.cwd();
|
|
24
|
+
this.lakeEnabled = config.lakeEnabled ?? true;
|
|
25
|
+
this.timeout = config.timeout ?? 30000;
|
|
26
|
+
this.verbose = config.verbose ?? false;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Execute Lean code file
|
|
30
|
+
* @traceability REQ-LEAN-CORE-004
|
|
31
|
+
*/
|
|
32
|
+
async execute(filePath, options) {
|
|
33
|
+
const timeout = options?.timeout ?? this.timeout;
|
|
34
|
+
const startTime = Date.now();
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const args = this.buildLeanArgs(filePath);
|
|
37
|
+
if (this.verbose) {
|
|
38
|
+
console.log(`[LeanRunner] Executing: ${this.leanPath} ${args.join(' ')}`);
|
|
39
|
+
}
|
|
40
|
+
const proc = spawn(this.leanPath, args, {
|
|
41
|
+
cwd: this.projectPath,
|
|
42
|
+
env: {
|
|
43
|
+
...process.env,
|
|
44
|
+
LEAN_PATH: process.env.LEAN_PATH || '',
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
let stdout = '';
|
|
48
|
+
let stderr = '';
|
|
49
|
+
let killed = false;
|
|
50
|
+
const timeoutId = setTimeout(() => {
|
|
51
|
+
killed = true;
|
|
52
|
+
proc.kill('SIGTERM');
|
|
53
|
+
}, timeout);
|
|
54
|
+
proc.stdout?.on('data', (data) => {
|
|
55
|
+
stdout += data.toString();
|
|
56
|
+
});
|
|
57
|
+
proc.stderr?.on('data', (data) => {
|
|
58
|
+
stderr += data.toString();
|
|
59
|
+
});
|
|
60
|
+
proc.on('error', (error) => {
|
|
61
|
+
clearTimeout(timeoutId);
|
|
62
|
+
if (error.message.includes('ENOENT')) {
|
|
63
|
+
reject(new LeanNotFoundError(this.leanPath));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
reject(new LeanExecutionError('Execution failed', error.message, stderr));
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
proc.on('close', (exitCode) => {
|
|
70
|
+
clearTimeout(timeoutId);
|
|
71
|
+
const duration = Date.now() - startTime;
|
|
72
|
+
if (killed) {
|
|
73
|
+
resolve({
|
|
74
|
+
success: false,
|
|
75
|
+
stdout,
|
|
76
|
+
stderr: 'Execution timed out',
|
|
77
|
+
exitCode: -1,
|
|
78
|
+
duration,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
resolve({
|
|
83
|
+
success: exitCode === 0,
|
|
84
|
+
stdout,
|
|
85
|
+
stderr,
|
|
86
|
+
exitCode: exitCode ?? 1,
|
|
87
|
+
duration,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Execute Lean code string (creates temp file)
|
|
95
|
+
*/
|
|
96
|
+
async executeCode(code, options) {
|
|
97
|
+
const tempDir = path.join(this.projectPath, '.musubix-temp');
|
|
98
|
+
const tempFile = path.join(tempDir, `temp_${Date.now()}.lean`);
|
|
99
|
+
try {
|
|
100
|
+
await fs.mkdir(tempDir, { recursive: true });
|
|
101
|
+
await fs.writeFile(tempFile, code, 'utf-8');
|
|
102
|
+
const result = await this.execute(tempFile, options);
|
|
103
|
+
// Clean up
|
|
104
|
+
await fs.unlink(tempFile).catch(() => { });
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
// Clean up on error
|
|
109
|
+
await fs.unlink(tempFile).catch(() => { });
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if Lean can type-check a file
|
|
115
|
+
*/
|
|
116
|
+
async typeCheck(filePath) {
|
|
117
|
+
const result = await this.execute(filePath);
|
|
118
|
+
if (result.success) {
|
|
119
|
+
return { valid: true, errors: [] };
|
|
120
|
+
}
|
|
121
|
+
// Parse errors from stderr
|
|
122
|
+
const errors = this.parseErrors(result.stderr);
|
|
123
|
+
return { valid: false, errors };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get current proof state (goals and hypotheses)
|
|
127
|
+
*/
|
|
128
|
+
async getGoalState(_filePath, _line, _column) {
|
|
129
|
+
// In a real implementation, this would use the Lean server protocol
|
|
130
|
+
// For now, return a placeholder
|
|
131
|
+
return {
|
|
132
|
+
goals: [],
|
|
133
|
+
hypotheses: [],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Run Lake build
|
|
138
|
+
*/
|
|
139
|
+
async lakeBuild(projectPath) {
|
|
140
|
+
const cwd = projectPath ?? this.projectPath;
|
|
141
|
+
const startTime = Date.now();
|
|
142
|
+
return new Promise((resolve, reject) => {
|
|
143
|
+
const proc = spawn('lake', ['build'], {
|
|
144
|
+
cwd,
|
|
145
|
+
});
|
|
146
|
+
let stdout = '';
|
|
147
|
+
let stderr = '';
|
|
148
|
+
const timeoutId = setTimeout(() => {
|
|
149
|
+
proc.kill('SIGTERM');
|
|
150
|
+
}, this.timeout * 2);
|
|
151
|
+
proc.stdout?.on('data', (data) => {
|
|
152
|
+
stdout += data.toString();
|
|
153
|
+
});
|
|
154
|
+
proc.stderr?.on('data', (data) => {
|
|
155
|
+
stderr += data.toString();
|
|
156
|
+
});
|
|
157
|
+
proc.on('error', (error) => {
|
|
158
|
+
clearTimeout(timeoutId);
|
|
159
|
+
reject(new LeanExecutionError('Lake build failed', error.message, stderr));
|
|
160
|
+
});
|
|
161
|
+
proc.on('close', (exitCode) => {
|
|
162
|
+
clearTimeout(timeoutId);
|
|
163
|
+
const duration = Date.now() - startTime;
|
|
164
|
+
resolve({
|
|
165
|
+
success: exitCode === 0,
|
|
166
|
+
stdout,
|
|
167
|
+
stderr,
|
|
168
|
+
exitCode: exitCode ?? 1,
|
|
169
|
+
duration,
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get Lean version information
|
|
176
|
+
*/
|
|
177
|
+
async getVersion() {
|
|
178
|
+
if (this.leanVersion) {
|
|
179
|
+
return this.leanVersion;
|
|
180
|
+
}
|
|
181
|
+
return new Promise((resolve, reject) => {
|
|
182
|
+
const proc = spawn(this.leanPath, ['--version']);
|
|
183
|
+
let stdout = '';
|
|
184
|
+
const timeoutId = setTimeout(() => {
|
|
185
|
+
proc.kill('SIGTERM');
|
|
186
|
+
reject(new LeanExecutionError('Version check timed out', '', ''));
|
|
187
|
+
}, 5000);
|
|
188
|
+
proc.stdout?.on('data', (data) => {
|
|
189
|
+
stdout += data.toString();
|
|
190
|
+
});
|
|
191
|
+
proc.on('error', (_error) => {
|
|
192
|
+
clearTimeout(timeoutId);
|
|
193
|
+
reject(new LeanNotFoundError(this.leanPath));
|
|
194
|
+
});
|
|
195
|
+
proc.on('close', (exitCode) => {
|
|
196
|
+
clearTimeout(timeoutId);
|
|
197
|
+
if (exitCode !== 0) {
|
|
198
|
+
reject(new LeanExecutionError('Failed to get Lean version', '', ''));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const version = this.parseVersion(stdout);
|
|
202
|
+
this.leanVersion = version;
|
|
203
|
+
resolve(version);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Parse version from Lean output
|
|
209
|
+
*/
|
|
210
|
+
parseVersion(output) {
|
|
211
|
+
// Parse "Lean (version 4.x.x, ...)"
|
|
212
|
+
const match = output.match(/version (\d+)\.(\d+)\.(\d+)/);
|
|
213
|
+
if (match) {
|
|
214
|
+
return {
|
|
215
|
+
major: parseInt(match[1], 10),
|
|
216
|
+
minor: parseInt(match[2], 10),
|
|
217
|
+
patch: parseInt(match[3], 10),
|
|
218
|
+
full: `${match[1]}.${match[2]}.${match[3]}`,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// Fallback
|
|
222
|
+
return {
|
|
223
|
+
major: 4,
|
|
224
|
+
minor: 0,
|
|
225
|
+
patch: 0,
|
|
226
|
+
full: 'unknown',
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Build Lean command arguments
|
|
231
|
+
*/
|
|
232
|
+
buildLeanArgs(filePath) {
|
|
233
|
+
if (this.lakeEnabled) {
|
|
234
|
+
// When using Lake, we run the file through Lake
|
|
235
|
+
return ['env', this.leanPath, filePath];
|
|
236
|
+
}
|
|
237
|
+
// Direct Lean execution
|
|
238
|
+
return [filePath];
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Parse Lean error messages
|
|
242
|
+
*/
|
|
243
|
+
parseErrors(stderr) {
|
|
244
|
+
const errors = [];
|
|
245
|
+
const lines = stderr.split('\n');
|
|
246
|
+
for (const line of lines) {
|
|
247
|
+
// Lean error format: "file:line:col: error: message"
|
|
248
|
+
if (line.includes('error:')) {
|
|
249
|
+
errors.push(line.trim());
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return errors.length > 0 ? errors : [stderr.trim()];
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Check if Lean is available
|
|
256
|
+
*/
|
|
257
|
+
async isAvailable() {
|
|
258
|
+
try {
|
|
259
|
+
await this.getVersion();
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Get configuration
|
|
268
|
+
*/
|
|
269
|
+
getConfig() {
|
|
270
|
+
return {
|
|
271
|
+
leanPath: this.leanPath,
|
|
272
|
+
projectPath: this.projectPath,
|
|
273
|
+
timeout: this.timeout,
|
|
274
|
+
lakeEnabled: this.lakeEnabled,
|
|
275
|
+
verbose: this.verbose,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Update configuration
|
|
280
|
+
*/
|
|
281
|
+
updateConfig(config) {
|
|
282
|
+
if (config.leanPath) {
|
|
283
|
+
this.leanPath = config.leanPath;
|
|
284
|
+
this.leanVersion = null;
|
|
285
|
+
}
|
|
286
|
+
if (config.projectPath)
|
|
287
|
+
this.projectPath = config.projectPath;
|
|
288
|
+
if (config.timeout)
|
|
289
|
+
this.timeout = config.timeout;
|
|
290
|
+
if (config.lakeEnabled !== undefined)
|
|
291
|
+
this.lakeEnabled = config.lakeEnabled;
|
|
292
|
+
if (config.verbose !== undefined)
|
|
293
|
+
this.verbose = config.verbose;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=LeanRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeanRunner.js","sourceRoot":"","sources":["../../src/infrastructure/LeanRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Infrastructure module exports
|
|
3
|
+
* @module @nahisaho/musubix-lean/infrastructure
|
|
4
|
+
*/
|
|
5
|
+
export { LeanFileGenerator, type GeneratedFile, type GenerationOptions, } from './LeanFileGenerator.js';
|
|
6
|
+
export { LeanRunner, type LeanExecutionResult, type LeanGoalInfo, } from './LeanRunner.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,UAAU,GAGX,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Main integration facade for Lean 4 formal verification
|
|
3
|
+
* @module @nahisaho/musubix-lean
|
|
4
|
+
* @traceability REQ-LEAN-001 to REQ-LEAN-006
|
|
5
|
+
*/
|
|
6
|
+
import { Result } from 'neverthrow';
|
|
7
|
+
import type { LeanConfig, LeanTheorem, LeanProof, LeanVersion, VerificationResult, VerificationReport, HybridVerificationResult, EarsRequirement, TypeScriptSpec } from '../types.js';
|
|
8
|
+
import { type RuntimeTestResult } from '../hybrid/HybridVerifier.js';
|
|
9
|
+
import { LeanIntegrationError, LeanEnvironmentError, LeanVerificationError } from '../errors.js';
|
|
10
|
+
/**
|
|
11
|
+
* Integration status
|
|
12
|
+
*/
|
|
13
|
+
export interface IntegrationStatus {
|
|
14
|
+
initialized: boolean;
|
|
15
|
+
leanAvailable: boolean;
|
|
16
|
+
leanVersion?: LeanVersion;
|
|
17
|
+
projectInitialized: boolean;
|
|
18
|
+
mathlibAvailable: boolean;
|
|
19
|
+
reprovarAvailable: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Verification options
|
|
23
|
+
*/
|
|
24
|
+
export interface VerificationOptions {
|
|
25
|
+
generateProofs?: boolean;
|
|
26
|
+
useReProver?: boolean;
|
|
27
|
+
timeout?: number;
|
|
28
|
+
traceability?: boolean;
|
|
29
|
+
hybridMode?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Main integration class for Lean 4 formal verification
|
|
33
|
+
* Provides a unified API for all verification capabilities
|
|
34
|
+
*
|
|
35
|
+
* @traceability REQ-LEAN-001
|
|
36
|
+
*/
|
|
37
|
+
export declare class LeanIntegration {
|
|
38
|
+
private leanConfig;
|
|
39
|
+
private detector;
|
|
40
|
+
private initializer;
|
|
41
|
+
private runner;
|
|
42
|
+
private generator;
|
|
43
|
+
private earsConverter;
|
|
44
|
+
private tsSpecifier;
|
|
45
|
+
private proofGenerator;
|
|
46
|
+
private reprovarClient;
|
|
47
|
+
private reporter;
|
|
48
|
+
private traceability;
|
|
49
|
+
private hybridVerifier;
|
|
50
|
+
private status;
|
|
51
|
+
constructor(config?: Partial<LeanConfig>);
|
|
52
|
+
/**
|
|
53
|
+
* Initialize the integration
|
|
54
|
+
* @traceability REQ-LEAN-ENV-001
|
|
55
|
+
*/
|
|
56
|
+
initialize(): Promise<Result<IntegrationStatus, LeanIntegrationError>>;
|
|
57
|
+
/**
|
|
58
|
+
* Initialize a new Lean project
|
|
59
|
+
* @traceability REQ-LEAN-ENV-002
|
|
60
|
+
*/
|
|
61
|
+
initProject(name: string, path?: string): Promise<Result<void, LeanIntegrationError>>;
|
|
62
|
+
/**
|
|
63
|
+
* Convert EARS requirement to Lean theorem
|
|
64
|
+
* @traceability REQ-LEAN-CONV-001
|
|
65
|
+
*/
|
|
66
|
+
convertRequirement(requirement: EarsRequirement): Result<LeanTheorem, LeanIntegrationError>;
|
|
67
|
+
/**
|
|
68
|
+
* Convert TypeScript specification to Lean
|
|
69
|
+
* @traceability REQ-LEAN-CONV-002
|
|
70
|
+
*/
|
|
71
|
+
convertTypeScript(spec: TypeScriptSpec): Result<LeanTheorem[], LeanIntegrationError>;
|
|
72
|
+
/**
|
|
73
|
+
* Generate proof for a theorem
|
|
74
|
+
* @traceability REQ-LEAN-PROOF-001
|
|
75
|
+
*/
|
|
76
|
+
generateProof(theorem: LeanTheorem, options?: {
|
|
77
|
+
useReProver?: boolean;
|
|
78
|
+
}): Promise<Result<LeanProof, LeanIntegrationError>>;
|
|
79
|
+
/**
|
|
80
|
+
* Verify a theorem
|
|
81
|
+
* @traceability REQ-LEAN-VERIFY-001
|
|
82
|
+
*/
|
|
83
|
+
verify(theorem: LeanTheorem, options?: VerificationOptions): Promise<Result<VerificationResult, LeanVerificationError>>;
|
|
84
|
+
/**
|
|
85
|
+
* Perform hybrid verification
|
|
86
|
+
* @traceability REQ-LEAN-HYBRID-001
|
|
87
|
+
*/
|
|
88
|
+
verifyHybrid(functionId: string, runtimeTests: () => RuntimeTestResult, theorem: LeanTheorem): Promise<Result<HybridVerificationResult, LeanVerificationError>>;
|
|
89
|
+
/**
|
|
90
|
+
* Batch verify multiple theorems
|
|
91
|
+
*/
|
|
92
|
+
verifyBatch(theorems: LeanTheorem[], options?: VerificationOptions): Promise<Map<string, VerificationResult>>;
|
|
93
|
+
/**
|
|
94
|
+
* Generate verification report
|
|
95
|
+
* @traceability REQ-LEAN-FEEDBACK-001
|
|
96
|
+
*/
|
|
97
|
+
generateReport(): VerificationReport;
|
|
98
|
+
/**
|
|
99
|
+
* Export report in specified format
|
|
100
|
+
*/
|
|
101
|
+
exportReport(format: 'json' | 'markdown' | 'html' | 'csv'): string;
|
|
102
|
+
/**
|
|
103
|
+
* Get traceability coverage
|
|
104
|
+
* @traceability REQ-LEAN-TRACE-003
|
|
105
|
+
*/
|
|
106
|
+
getTraceabilityCoverage(requirementIds: string[]): {
|
|
107
|
+
totalRequirements: number;
|
|
108
|
+
coveredRequirements: number;
|
|
109
|
+
coveragePercentage: number;
|
|
110
|
+
untraced: string[];
|
|
111
|
+
fullyTraced: string[];
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Get traceability matrix as Markdown
|
|
115
|
+
*/
|
|
116
|
+
getTraceabilityMatrix(): string;
|
|
117
|
+
/**
|
|
118
|
+
* Get current status
|
|
119
|
+
*/
|
|
120
|
+
getStatus(): IntegrationStatus;
|
|
121
|
+
/**
|
|
122
|
+
* Get Lean version
|
|
123
|
+
*/
|
|
124
|
+
getLeanVersion(): Promise<Result<LeanVersion, LeanEnvironmentError>>;
|
|
125
|
+
/**
|
|
126
|
+
* Check if a file has valid Lean syntax
|
|
127
|
+
*/
|
|
128
|
+
validateSyntax(filePath: string): Promise<Result<boolean, LeanVerificationError>>;
|
|
129
|
+
/**
|
|
130
|
+
* Clear all state
|
|
131
|
+
*/
|
|
132
|
+
reset(): void;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Factory function for creating LeanIntegration instance
|
|
136
|
+
*/
|
|
137
|
+
export declare function createLeanIntegration(config?: Partial<LeanConfig>): LeanIntegration;
|
|
138
|
+
//# sourceMappingURL=LeanIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeanIntegration.d.ts","sourceRoot":"","sources":["../../src/integration/LeanIntegration.ts"],"names":[],"mappings":"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"}
|