@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,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Proof generation for Lean theorems
|
|
3
|
+
* @module @nahisaho/musubix-lean/proof
|
|
4
|
+
* @traceability REQ-LEAN-PROOF-001 to REQ-LEAN-PROOF-003
|
|
5
|
+
*/
|
|
6
|
+
import { ProofTimeoutError } from '../errors.js';
|
|
7
|
+
/**
|
|
8
|
+
* Standard proof tactics
|
|
9
|
+
* @traceability REQ-LEAN-PROOF-001
|
|
10
|
+
*/
|
|
11
|
+
const STANDARD_TACTICS = [
|
|
12
|
+
'rfl',
|
|
13
|
+
'decide',
|
|
14
|
+
'native_decide',
|
|
15
|
+
'simp',
|
|
16
|
+
'trivial',
|
|
17
|
+
'assumption',
|
|
18
|
+
'contradiction',
|
|
19
|
+
'exact h',
|
|
20
|
+
'intro',
|
|
21
|
+
'constructor',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Induction tactics for recursive data
|
|
25
|
+
* @traceability REQ-LEAN-PROOF-002
|
|
26
|
+
*/
|
|
27
|
+
const INDUCTION_TACTICS = [
|
|
28
|
+
'induction',
|
|
29
|
+
'cases',
|
|
30
|
+
'match_hyp',
|
|
31
|
+
'rcases',
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Default proof strategies
|
|
35
|
+
*/
|
|
36
|
+
const DEFAULT_STRATEGIES = [
|
|
37
|
+
{
|
|
38
|
+
name: 'simple',
|
|
39
|
+
tactics: ['rfl', 'decide', 'trivial'],
|
|
40
|
+
applicability: () => true,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'simplification',
|
|
44
|
+
tactics: ['simp', 'simp_all', 'simp [*]'],
|
|
45
|
+
applicability: () => true,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'assumption-based',
|
|
49
|
+
tactics: ['assumption', 'exact h', 'exact h_event', 'exact h_pre_0'],
|
|
50
|
+
applicability: (theorem) => theorem.hypotheses.length > 0,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'induction',
|
|
54
|
+
tactics: ['induction n with n ih', 'cases h'],
|
|
55
|
+
applicability: (theorem) => (theorem.conclusion?.leanCode.includes('Nat') ?? false) ||
|
|
56
|
+
(theorem.conclusion?.leanCode.includes('List') ?? false),
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'propositional',
|
|
60
|
+
tactics: ['intro', 'constructor', 'left', 'right', 'apply And.intro'],
|
|
61
|
+
applicability: (theorem) => (theorem.conclusion?.leanCode.includes('∧') ?? false) ||
|
|
62
|
+
(theorem.conclusion?.leanCode.includes('∨') ?? false) ||
|
|
63
|
+
(theorem.conclusion?.leanCode.includes('→') ?? false),
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
/**
|
|
67
|
+
* Create initial proof state from theorem
|
|
68
|
+
*/
|
|
69
|
+
function createInitialProofState(theorem) {
|
|
70
|
+
return {
|
|
71
|
+
goals: [
|
|
72
|
+
{
|
|
73
|
+
id: 0,
|
|
74
|
+
type: theorem.conclusion?.type ?? '',
|
|
75
|
+
leanCode: theorem.conclusion?.leanCode ?? '',
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
hypotheses: theorem.hypotheses,
|
|
79
|
+
currentGoal: 0,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate proof for a Lean theorem
|
|
84
|
+
* @traceability REQ-LEAN-PROOF-001
|
|
85
|
+
*/
|
|
86
|
+
export async function generateProof(theorem, options = {}) {
|
|
87
|
+
const startTime = Date.now();
|
|
88
|
+
const timeout = options.timeout ?? 30000;
|
|
89
|
+
const maxTactics = options.maxTactics ?? 5;
|
|
90
|
+
const strategies = options.strategies ?? DEFAULT_STRATEGIES;
|
|
91
|
+
const tacticsAttempted = [];
|
|
92
|
+
let proofState = createInitialProofState(theorem);
|
|
93
|
+
try {
|
|
94
|
+
// Try each applicable strategy
|
|
95
|
+
for (const strategy of strategies) {
|
|
96
|
+
if (strategy.applicability && !strategy.applicability(theorem)) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// Try tactics from strategy
|
|
100
|
+
for (const tactic of strategy.tactics) {
|
|
101
|
+
if (tacticsAttempted.length >= maxTactics) {
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (Date.now() - startTime > timeout) {
|
|
105
|
+
throw new ProofTimeoutError(theorem.name, timeout);
|
|
106
|
+
}
|
|
107
|
+
tacticsAttempted.push(tactic);
|
|
108
|
+
// Simulate tactic application
|
|
109
|
+
const result = await applyTactic(proofState, tactic);
|
|
110
|
+
if (result.success && result.newState) {
|
|
111
|
+
proofState = result.newState;
|
|
112
|
+
// Check if proof is complete
|
|
113
|
+
if (proofState.goals.length === 0) {
|
|
114
|
+
const proof = {
|
|
115
|
+
id: `proof-${theorem.id}`,
|
|
116
|
+
theoremId: theorem.id,
|
|
117
|
+
tactics: tacticsAttempted,
|
|
118
|
+
leanCode: generateProofCode(theorem, tacticsAttempted),
|
|
119
|
+
isComplete: true,
|
|
120
|
+
generatedAt: new Date().toISOString(),
|
|
121
|
+
};
|
|
122
|
+
return {
|
|
123
|
+
success: true,
|
|
124
|
+
proof,
|
|
125
|
+
proofState: null,
|
|
126
|
+
tacticsAttempted,
|
|
127
|
+
duration: Date.now() - startTime,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Proof not found with standard tactics
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
proof: null,
|
|
137
|
+
proofState,
|
|
138
|
+
tacticsAttempted,
|
|
139
|
+
duration: Date.now() - startTime,
|
|
140
|
+
error: 'Could not complete proof with available tactics',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
if (error instanceof ProofTimeoutError) {
|
|
145
|
+
return {
|
|
146
|
+
success: false,
|
|
147
|
+
proof: null,
|
|
148
|
+
proofState,
|
|
149
|
+
tacticsAttempted,
|
|
150
|
+
duration: Date.now() - startTime,
|
|
151
|
+
error: error.message,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Apply a single tactic to proof state
|
|
159
|
+
*/
|
|
160
|
+
export async function applyTactic(state, tactic) {
|
|
161
|
+
// This is a simplified simulation
|
|
162
|
+
// In real implementation, this would call Lean via LeanRunner
|
|
163
|
+
// Simulate success for certain tactics on certain goals
|
|
164
|
+
const currentGoal = state.goals[state.currentGoal];
|
|
165
|
+
if (!currentGoal) {
|
|
166
|
+
return { success: false, newState: null, error: 'No goals' };
|
|
167
|
+
}
|
|
168
|
+
// Simple heuristics for tactic success
|
|
169
|
+
const goalCode = currentGoal.leanCode.toLowerCase();
|
|
170
|
+
if (tactic === 'rfl' && goalCode.includes('=')) {
|
|
171
|
+
// rfl succeeds on reflexive equality
|
|
172
|
+
return {
|
|
173
|
+
success: true,
|
|
174
|
+
newState: {
|
|
175
|
+
...state,
|
|
176
|
+
goals: state.goals.filter((_, i) => i !== state.currentGoal),
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (tactic === 'trivial' && goalCode === 'true') {
|
|
181
|
+
return {
|
|
182
|
+
success: true,
|
|
183
|
+
newState: {
|
|
184
|
+
...state,
|
|
185
|
+
goals: state.goals.filter((_, i) => i !== state.currentGoal),
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
if (tactic === 'assumption' && state.hypotheses.length > 0) {
|
|
190
|
+
// Check if any hypothesis matches the goal
|
|
191
|
+
const matchingHyp = state.hypotheses.find((h) => h.type.toLowerCase() === goalCode);
|
|
192
|
+
if (matchingHyp) {
|
|
193
|
+
return {
|
|
194
|
+
success: true,
|
|
195
|
+
newState: {
|
|
196
|
+
...state,
|
|
197
|
+
goals: state.goals.filter((_, i) => i !== state.currentGoal),
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Default: tactic doesn't change state
|
|
203
|
+
return {
|
|
204
|
+
success: false,
|
|
205
|
+
newState: null,
|
|
206
|
+
error: `Tactic '${tactic}' did not make progress`,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Generate Lean proof code
|
|
211
|
+
*/
|
|
212
|
+
function generateProofCode(theorem, tactics) {
|
|
213
|
+
const tacticBlock = tactics.length > 0
|
|
214
|
+
? tactics.map((t) => ` ${t}`).join('\n')
|
|
215
|
+
: ' sorry';
|
|
216
|
+
return `
|
|
217
|
+
theorem ${theorem.name} : ${theorem.conclusion?.leanCode ?? 'True'} := by
|
|
218
|
+
${tacticBlock}
|
|
219
|
+
`;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Generate proof sketch with sorry markers
|
|
223
|
+
* @traceability REQ-LEAN-PROOF-003
|
|
224
|
+
*/
|
|
225
|
+
export function generateProofSketch(theorem, partialTactics = []) {
|
|
226
|
+
const sorryLocations = [];
|
|
227
|
+
const hints = [];
|
|
228
|
+
let completionRate = 0;
|
|
229
|
+
// Analyze theorem to provide hints
|
|
230
|
+
const conclusion = theorem.conclusion?.leanCode ?? '';
|
|
231
|
+
if (conclusion.includes('∧')) {
|
|
232
|
+
hints.push('Use "constructor" to split conjunction');
|
|
233
|
+
hints.push('Prove each side separately');
|
|
234
|
+
}
|
|
235
|
+
if (conclusion.includes('→')) {
|
|
236
|
+
hints.push('Use "intro" to introduce hypothesis');
|
|
237
|
+
}
|
|
238
|
+
if (conclusion.includes('∀')) {
|
|
239
|
+
hints.push('Use "intro" to introduce universally quantified variable');
|
|
240
|
+
}
|
|
241
|
+
if (conclusion.includes('¬')) {
|
|
242
|
+
hints.push('Use "intro h_unwanted" and derive contradiction');
|
|
243
|
+
}
|
|
244
|
+
// Build partial proof with sorry
|
|
245
|
+
const tacticBlock = partialTactics.length > 0
|
|
246
|
+
? partialTactics.map((t) => ` ${t}`).join('\n') + '\n sorry'
|
|
247
|
+
: ' sorry';
|
|
248
|
+
sorryLocations.push({
|
|
249
|
+
line: partialTactics.length + 2,
|
|
250
|
+
expectedType: conclusion,
|
|
251
|
+
hint: hints[0] || 'Complete the proof',
|
|
252
|
+
});
|
|
253
|
+
const partialProof = `
|
|
254
|
+
theorem ${theorem.name} : ${conclusion} := by
|
|
255
|
+
${tacticBlock}
|
|
256
|
+
`;
|
|
257
|
+
// Calculate completion rate (simplified)
|
|
258
|
+
completionRate = partialTactics.length > 0 ? partialTactics.length * 20 : 0;
|
|
259
|
+
completionRate = Math.min(completionRate, 80); // Max 80% without verification
|
|
260
|
+
return {
|
|
261
|
+
theoremName: theorem.name,
|
|
262
|
+
partialProof,
|
|
263
|
+
sorryLocations,
|
|
264
|
+
hints,
|
|
265
|
+
completionRate,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Select best strategy for theorem
|
|
270
|
+
*/
|
|
271
|
+
export function selectStrategy(theorem, strategies = DEFAULT_STRATEGIES) {
|
|
272
|
+
// Find first applicable strategy
|
|
273
|
+
for (const strategy of strategies) {
|
|
274
|
+
if (strategy.applicability && strategy.applicability(theorem)) {
|
|
275
|
+
return strategy;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Default to simple strategy
|
|
279
|
+
return strategies[0];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* ProofGenerator class implementation
|
|
283
|
+
* @traceability REQ-LEAN-PROOF-001
|
|
284
|
+
*/
|
|
285
|
+
export class ProofGenerator {
|
|
286
|
+
strategies;
|
|
287
|
+
constructor(strategies = DEFAULT_STRATEGIES) {
|
|
288
|
+
this.strategies = strategies;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Generate proof for theorem
|
|
292
|
+
*/
|
|
293
|
+
async generate(theorem, options) {
|
|
294
|
+
return generateProof(theorem, {
|
|
295
|
+
...options,
|
|
296
|
+
strategies: options?.strategies ?? this.strategies,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Apply single tactic
|
|
301
|
+
*/
|
|
302
|
+
async applyTactic(state, tactic) {
|
|
303
|
+
return applyTactic(state, tactic);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Generate proof sketch
|
|
307
|
+
*/
|
|
308
|
+
generateSketch(theorem, partialTactics) {
|
|
309
|
+
return generateProofSketch(theorem, partialTactics);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Select best strategy
|
|
313
|
+
*/
|
|
314
|
+
selectStrategy(theorem) {
|
|
315
|
+
return selectStrategy(theorem, this.strategies);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Add custom strategy
|
|
319
|
+
*/
|
|
320
|
+
addStrategy(strategy) {
|
|
321
|
+
this.strategies.push(strategy);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=ProofGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProofGenerator.js","sourceRoot":"","sources":["../../src/proof/ProofGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ReProver client for external proof search
|
|
3
|
+
* @module @nahisaho/musubix-lean/proof
|
|
4
|
+
* @traceability REQ-LEAN-REPROVER-001 to REQ-LEAN-REPROVER-003
|
|
5
|
+
*/
|
|
6
|
+
import type { ReProverConfig, ReProverSearchResult, ProofState, ProofFeedback } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* ReProver client for neural proof search
|
|
9
|
+
* @traceability REQ-LEAN-REPROVER-001
|
|
10
|
+
*/
|
|
11
|
+
export declare class ReProverClient {
|
|
12
|
+
private config;
|
|
13
|
+
private connected;
|
|
14
|
+
constructor(config?: Partial<ReProverConfig>);
|
|
15
|
+
/**
|
|
16
|
+
* Connect to ReProver service
|
|
17
|
+
* @traceability REQ-LEAN-REPROVER-001
|
|
18
|
+
*/
|
|
19
|
+
connect(config?: Partial<ReProverConfig>): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Check if connected to ReProver
|
|
22
|
+
*/
|
|
23
|
+
isAvailable(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Perform health check on ReProver service
|
|
26
|
+
*/
|
|
27
|
+
private healthCheck;
|
|
28
|
+
/**
|
|
29
|
+
* Search for proof using ReProver
|
|
30
|
+
* @traceability REQ-LEAN-REPROVER-002
|
|
31
|
+
*/
|
|
32
|
+
search(proofState: ProofState, options?: {
|
|
33
|
+
maxDepth?: number;
|
|
34
|
+
timeout?: number;
|
|
35
|
+
}): Promise<ReProverSearchResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Parse ReProver response into SearchResult
|
|
38
|
+
*/
|
|
39
|
+
private parseSearchResult;
|
|
40
|
+
/**
|
|
41
|
+
* Parse search path from response
|
|
42
|
+
*/
|
|
43
|
+
private parseSearchPath;
|
|
44
|
+
/**
|
|
45
|
+
* Get feedback for failed proof attempt
|
|
46
|
+
* @traceability REQ-LEAN-REPROVER-003
|
|
47
|
+
*/
|
|
48
|
+
getFeedback(failedState: ProofState): ProofFeedback;
|
|
49
|
+
/**
|
|
50
|
+
* Disconnect from ReProver
|
|
51
|
+
*/
|
|
52
|
+
disconnect(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Get current configuration
|
|
55
|
+
*/
|
|
56
|
+
getConfig(): ReProverConfig;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ReProverClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReProverClient.d.ts","sourceRoot":"","sources":["../../src/proof/ReProverClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,aAAa,EAEd,MAAM,aAAa,CAAC;AAYrB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;;OAGG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9D;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;YACW,WAAW;IAmBzB;;;OAGG;IACG,MAAM,CACV,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,OAAO,CAAC,oBAAoB,CAAC;IAwEhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;OAGG;IACH,WAAW,CAAC,WAAW,EAAE,UAAU,GAAG,aAAa;IAsEnD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,SAAS,IAAI,cAAc;CAG5B"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ReProver client for external proof search
|
|
3
|
+
* @module @nahisaho/musubix-lean/proof
|
|
4
|
+
* @traceability REQ-LEAN-REPROVER-001 to REQ-LEAN-REPROVER-003
|
|
5
|
+
*/
|
|
6
|
+
import { ReProverConnectionError } from '../errors.js';
|
|
7
|
+
/**
|
|
8
|
+
* Default ReProver configuration
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_CONFIG = {
|
|
11
|
+
endpoint: 'http://localhost:8000/api/prove',
|
|
12
|
+
timeout: 60000,
|
|
13
|
+
maxDepth: 10,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* ReProver client for neural proof search
|
|
17
|
+
* @traceability REQ-LEAN-REPROVER-001
|
|
18
|
+
*/
|
|
19
|
+
export class ReProverClient {
|
|
20
|
+
config;
|
|
21
|
+
connected = false;
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Connect to ReProver service
|
|
27
|
+
* @traceability REQ-LEAN-REPROVER-001
|
|
28
|
+
*/
|
|
29
|
+
async connect(config) {
|
|
30
|
+
if (config) {
|
|
31
|
+
this.config = { ...this.config, ...config };
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
// Health check
|
|
35
|
+
const response = await this.healthCheck();
|
|
36
|
+
if (response) {
|
|
37
|
+
this.connected = true;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
throw new Error('Health check failed');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
this.connected = false;
|
|
45
|
+
throw new ReProverConnectionError(this.config.endpoint, error instanceof Error ? error.message : String(error));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if connected to ReProver
|
|
50
|
+
*/
|
|
51
|
+
isAvailable() {
|
|
52
|
+
return this.connected;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Perform health check on ReProver service
|
|
56
|
+
*/
|
|
57
|
+
async healthCheck() {
|
|
58
|
+
try {
|
|
59
|
+
const controller = new AbortController();
|
|
60
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
61
|
+
const healthEndpoint = this.config.endpoint.replace('/api/prove', '/health');
|
|
62
|
+
const response = await fetch(healthEndpoint, {
|
|
63
|
+
method: 'GET',
|
|
64
|
+
signal: controller.signal,
|
|
65
|
+
});
|
|
66
|
+
clearTimeout(timeoutId);
|
|
67
|
+
return response.ok;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// If fetch fails, ReProver is not available
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Search for proof using ReProver
|
|
76
|
+
* @traceability REQ-LEAN-REPROVER-002
|
|
77
|
+
*/
|
|
78
|
+
async search(proofState, options) {
|
|
79
|
+
if (!this.connected) {
|
|
80
|
+
return {
|
|
81
|
+
found: false,
|
|
82
|
+
proof: null,
|
|
83
|
+
searchPath: [],
|
|
84
|
+
suggestions: ['ReProver is not connected. Use basic proof tactics.'],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const maxDepth = options?.maxDepth ?? this.config.maxDepth;
|
|
88
|
+
const timeout = options?.timeout ?? this.config.timeout;
|
|
89
|
+
try {
|
|
90
|
+
const controller = new AbortController();
|
|
91
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
92
|
+
const response = await fetch(this.config.endpoint, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
headers: {
|
|
95
|
+
'Content-Type': 'application/json',
|
|
96
|
+
...(this.config.apiKey && {
|
|
97
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
98
|
+
}),
|
|
99
|
+
},
|
|
100
|
+
body: JSON.stringify({
|
|
101
|
+
proof_state: {
|
|
102
|
+
goals: proofState.goals.map((g) => ({
|
|
103
|
+
id: g.id,
|
|
104
|
+
type: g.type,
|
|
105
|
+
lean_code: g.leanCode,
|
|
106
|
+
})),
|
|
107
|
+
hypotheses: proofState.hypotheses.map((h) => ({
|
|
108
|
+
name: h.name,
|
|
109
|
+
type: h.type,
|
|
110
|
+
})),
|
|
111
|
+
current_goal: proofState.currentGoal,
|
|
112
|
+
},
|
|
113
|
+
max_depth: maxDepth,
|
|
114
|
+
}),
|
|
115
|
+
signal: controller.signal,
|
|
116
|
+
});
|
|
117
|
+
clearTimeout(timeoutId);
|
|
118
|
+
if (!response.ok) {
|
|
119
|
+
throw new Error(`ReProver request failed: ${response.status}`);
|
|
120
|
+
}
|
|
121
|
+
const result = await response.json();
|
|
122
|
+
return this.parseSearchResult(result);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
126
|
+
return {
|
|
127
|
+
found: false,
|
|
128
|
+
proof: null,
|
|
129
|
+
searchPath: [],
|
|
130
|
+
suggestions: [`Proof search timed out after ${timeout}ms`],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
found: false,
|
|
135
|
+
proof: null,
|
|
136
|
+
searchPath: [],
|
|
137
|
+
suggestions: [
|
|
138
|
+
`ReProver error: ${error instanceof Error ? error.message : String(error)}`,
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Parse ReProver response into SearchResult
|
|
145
|
+
*/
|
|
146
|
+
parseSearchResult(response) {
|
|
147
|
+
const data = response;
|
|
148
|
+
if (data.found && data.proof) {
|
|
149
|
+
return {
|
|
150
|
+
found: true,
|
|
151
|
+
proof: String(data.proof),
|
|
152
|
+
searchPath: this.parseSearchPath(data.search_path),
|
|
153
|
+
suggestions: [],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
found: false,
|
|
158
|
+
proof: null,
|
|
159
|
+
searchPath: this.parseSearchPath(data.search_path),
|
|
160
|
+
suggestions: Array.isArray(data.suggestions)
|
|
161
|
+
? data.suggestions.map(String)
|
|
162
|
+
: [],
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parse search path from response
|
|
167
|
+
*/
|
|
168
|
+
parseSearchPath(path) {
|
|
169
|
+
if (!Array.isArray(path)) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
return path.map((node) => {
|
|
173
|
+
const n = node;
|
|
174
|
+
return {
|
|
175
|
+
tactic: String(n.tactic || ''),
|
|
176
|
+
state: {
|
|
177
|
+
goals: [],
|
|
178
|
+
hypotheses: [],
|
|
179
|
+
currentGoal: 0,
|
|
180
|
+
},
|
|
181
|
+
score: Number(n.score || 0),
|
|
182
|
+
children: [],
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get feedback for failed proof attempt
|
|
188
|
+
* @traceability REQ-LEAN-REPROVER-003
|
|
189
|
+
*/
|
|
190
|
+
getFeedback(failedState) {
|
|
191
|
+
const guidance = [];
|
|
192
|
+
const suggestions = [];
|
|
193
|
+
// Analyze the stuck state
|
|
194
|
+
const currentGoal = failedState.goals[failedState.currentGoal];
|
|
195
|
+
if (currentGoal) {
|
|
196
|
+
const goalType = currentGoal.leanCode;
|
|
197
|
+
// Provide guidance based on goal structure
|
|
198
|
+
if (goalType.includes('∧')) {
|
|
199
|
+
guidance.push('This is a conjunction. Try using "constructor" to split it.');
|
|
200
|
+
suggestions.push('constructor');
|
|
201
|
+
}
|
|
202
|
+
if (goalType.includes('∨')) {
|
|
203
|
+
guidance.push('This is a disjunction. Try "left" or "right" to choose a side.');
|
|
204
|
+
suggestions.push('left', 'right');
|
|
205
|
+
}
|
|
206
|
+
if (goalType.includes('→')) {
|
|
207
|
+
guidance.push('This is an implication. Use "intro h" to assume the antecedent.');
|
|
208
|
+
suggestions.push('intro h');
|
|
209
|
+
}
|
|
210
|
+
if (goalType.includes('∀')) {
|
|
211
|
+
guidance.push('This is a universal statement. Use "intro x" to introduce a variable.');
|
|
212
|
+
suggestions.push('intro x');
|
|
213
|
+
}
|
|
214
|
+
if (goalType.includes('∃')) {
|
|
215
|
+
guidance.push('This is an existential statement. Use "use value" to provide a witness.');
|
|
216
|
+
suggestions.push('use _');
|
|
217
|
+
}
|
|
218
|
+
if (goalType.includes('¬')) {
|
|
219
|
+
guidance.push('This is a negation. Use "intro h" and derive a contradiction.');
|
|
220
|
+
suggestions.push('intro h');
|
|
221
|
+
}
|
|
222
|
+
if (goalType.includes('Nat') || goalType.includes('List')) {
|
|
223
|
+
guidance.push('Consider using induction on the data structure.');
|
|
224
|
+
suggestions.push('induction n', 'cases n');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Check hypotheses for applicable tactics
|
|
228
|
+
if (failedState.hypotheses.length > 0) {
|
|
229
|
+
guidance.push('You have hypotheses available. Try "assumption" or "exact h".');
|
|
230
|
+
for (const hyp of failedState.hypotheses) {
|
|
231
|
+
if (hyp.type === currentGoal?.type) {
|
|
232
|
+
suggestions.push(`exact ${hyp.name}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (guidance.length === 0) {
|
|
237
|
+
guidance.push('Try simplification tactics: simp, simp_all, or decide.');
|
|
238
|
+
suggestions.push('simp', 'decide');
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
stuckState: failedState,
|
|
242
|
+
attemptedTactics: [],
|
|
243
|
+
similarTheorems: [], // Would be populated from a theorem database
|
|
244
|
+
guidance,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Disconnect from ReProver
|
|
249
|
+
*/
|
|
250
|
+
disconnect() {
|
|
251
|
+
this.connected = false;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get current configuration
|
|
255
|
+
*/
|
|
256
|
+
getConfig() {
|
|
257
|
+
return { ...this.config };
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=ReProverClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReProverClient.js","sourceRoot":"","sources":["../../src/proof/ReProverClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD;;GAEG;AACH,MAAM,cAAc,GAAmB;IACrC,QAAQ,EAAE,iCAAiC;IAC3C,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,CAAiB;IACvB,SAAS,GAAY,KAAK,CAAC;IAEnC,YAAY,SAAkC,EAAE;QAC9C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,MAAgC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,eAAe;YACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,MAAM,IAAI,uBAAuB,CAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YAE7D,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;gBAC3C,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,UAAsB,EACtB,OAAiD;QAEjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,CAAC,qDAAqD,CAAC;aACrE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI;wBACxB,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;qBAC9C,CAAC;iBACH;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,WAAW,EAAE;wBACX,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAClC,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,SAAS,EAAE,CAAC,CAAC,QAAQ;yBACtB,CAAC,CAAC;wBACH,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,IAAI,EAAE,CAAC,CAAC,IAAI;yBACb,CAAC,CAAC;wBACH,YAAY,EAAE,UAAU,CAAC,WAAW;qBACrC;oBACD,SAAS,EAAE,QAAQ;iBACpB,CAAC;gBACF,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,IAAI;oBACX,UAAU,EAAE,EAAE;oBACd,WAAW,EAAE,CAAC,gCAAgC,OAAO,IAAI,CAAC;iBAC3D,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE;oBACX,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC5E;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAiB;QACzC,MAAM,IAAI,GAAG,QAAmC,CAAC;QAEjD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;gBAClD,WAAW,EAAE,EAAE;aAChB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;YAClD,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9B,CAAC,CAAC,EAAE;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAa;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE;YAChC,MAAM,CAAC,GAAG,IAA+B,CAAC;YAC1C,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC9B,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,WAAW,EAAE,CAAC;iBACf;gBACD,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC3B,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,WAAuB;QACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YAEtC,2CAA2C;YAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAC7E,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;gBAChF,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;gBACjF,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;gBACvF,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;gBACzF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;gBAC/E,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBACjE,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAE/E,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,IAAI,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACxE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,OAAO;YACL,UAAU,EAAE,WAAW;YACvB,gBAAgB,EAAE,EAAE;YACpB,eAAe,EAAE,EAAE,EAAE,6CAA6C;YAClE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Proof module exports
|
|
3
|
+
* @module @nahisaho/musubix-lean/proof
|
|
4
|
+
*/
|
|
5
|
+
export { ProofGenerator, generateProof, generateProofSketch } from './ProofGenerator.js';
|
|
6
|
+
export { ReProverClient } from './ReProverClient.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proof/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|