musubix 1.8.0 → 2.0.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.
- package/AGENTS.md +23 -11
- package/README.ja.md +10 -4
- package/README.md +49 -19
- package/docs/USER-GUIDE-v1.8.0.md +2371 -0
- package/docs/USER-GUIDE.ja.md +170 -5
- package/docs/USER-GUIDE.md +836 -6
- package/docs/overview/MUSUBIX-Phase1-Complete.md +271 -0
- package/docs/overview/MUSUBIX-Phase2-Complete.md +310 -0
- package/docs/overview/MUSUBIX-Security.md +891 -0
- package/package.json +4 -2
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# MUSUBIX Phase 1: Deep Symbolic Integration - 完了レポート
|
|
2
|
+
|
|
3
|
+
**完了日**: 2026-01-08
|
|
4
|
+
**バージョン**: 2.0.0-alpha.1
|
|
5
|
+
**ステータス**: ✅ Phase 1 完了
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 概要
|
|
10
|
+
|
|
11
|
+
Phase 1「Deep Symbolic Integration」の全3パッケージの開発が完了しました。合計238テストが全て合格し、MUSUBIX v2.0.0-alpha.1としてリリース準備が整いました。
|
|
12
|
+
|
|
13
|
+
### 1.1 完了サマリー
|
|
14
|
+
|
|
15
|
+
| パッケージ | バージョン | テスト数 | 結果 |
|
|
16
|
+
|-----------|------------|----------|------|
|
|
17
|
+
| **@nahisaho/musubix-dfg** | 2.0.0-alpha.1 | 30 | ✅ 全合格 |
|
|
18
|
+
| **@nahisaho/musubix-lean** | 2.0.0-alpha.1 | 151 | ✅ 全合格 |
|
|
19
|
+
| **@nahisaho/yata-scale** | 2.0.0-alpha.1 | 57 | ✅ 全合格 |
|
|
20
|
+
| **合計** | - | **238** | ✅ |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. @nahisaho/musubix-dfg
|
|
25
|
+
|
|
26
|
+
### 2.1 パッケージ概要
|
|
27
|
+
|
|
28
|
+
データフローグラフ (DFG) と制御フローグラフ (CFG) の抽出・分析を提供するパッケージです。GraphCodeBERT、JetBrains PSIを参考に設計しました。
|
|
29
|
+
|
|
30
|
+
### 2.2 主要機能
|
|
31
|
+
|
|
32
|
+
| 機能 | 説明 |
|
|
33
|
+
|------|------|
|
|
34
|
+
| **DFG抽出** | TypeScript/JavaScript ASTからデータフローグラフを抽出 |
|
|
35
|
+
| **CFG抽出** | 制御フローグラフの抽出(分岐、ループ、例外) |
|
|
36
|
+
| **依存関係分析** | 変数・関数間の依存関係マップ |
|
|
37
|
+
| **Def-Use分析** | 定義-使用チェーンの構築 |
|
|
38
|
+
| **変数追跡** | スコープを考慮した変数ライフサイクル追跡 |
|
|
39
|
+
|
|
40
|
+
### 2.3 アーキテクチャ
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
packages/dfg/
|
|
44
|
+
├── src/
|
|
45
|
+
│ ├── index.ts # Main exports
|
|
46
|
+
│ ├── types.ts # 型定義
|
|
47
|
+
│ ├── errors.ts # エラークラス
|
|
48
|
+
│ ├── DFGExtractor.ts # データフローグラフ抽出
|
|
49
|
+
│ ├── CFGExtractor.ts # 制御フローグラフ抽出
|
|
50
|
+
│ ├── DependencyAnalyzer.ts # 依存関係分析
|
|
51
|
+
│ └── DataFlowAnalyzer.ts # 統合分析
|
|
52
|
+
└── tests/
|
|
53
|
+
└── dfg.test.ts
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 2.4 使用例
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
import { DataFlowAnalyzer } from '@nahisaho/musubix-dfg';
|
|
60
|
+
|
|
61
|
+
const analyzer = new DataFlowAnalyzer();
|
|
62
|
+
const result = await analyzer.analyze('./src/service.ts');
|
|
63
|
+
|
|
64
|
+
// DFG取得
|
|
65
|
+
console.log(result.dfg.nodes);
|
|
66
|
+
console.log(result.dfg.edges);
|
|
67
|
+
|
|
68
|
+
// CFG取得
|
|
69
|
+
console.log(result.cfg.nodes);
|
|
70
|
+
console.log(result.cfg.edges);
|
|
71
|
+
|
|
72
|
+
// 依存関係
|
|
73
|
+
console.log(result.dependencies);
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 3. @nahisaho/musubix-lean
|
|
79
|
+
|
|
80
|
+
### 3.1 パッケージ概要
|
|
81
|
+
|
|
82
|
+
Lean 4定理証明支援系との統合を提供するパッケージです。LeanDojo/ReProverを参考に設計しました。
|
|
83
|
+
|
|
84
|
+
### 3.2 主要機能
|
|
85
|
+
|
|
86
|
+
| 機能 | 説明 |
|
|
87
|
+
|------|------|
|
|
88
|
+
| **Lean 4 AST** | Lean 4構文のパース・生成 |
|
|
89
|
+
| **EARS→Lean変換** | EARS要件からLean定理への変換 |
|
|
90
|
+
| **証明戦術生成** | simp, rfl, intro, apply等の戦術生成 |
|
|
91
|
+
| **ReProver統合** | ベストファースト証明探索 |
|
|
92
|
+
| **Mathlib互換** | 標準数学ライブラリとの互換性 |
|
|
93
|
+
|
|
94
|
+
### 3.3 アーキテクチャ
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
packages/lean/
|
|
98
|
+
├── src/
|
|
99
|
+
│ ├── index.ts
|
|
100
|
+
│ ├── types.ts
|
|
101
|
+
│ ├── errors.ts
|
|
102
|
+
│ ├── ast/ # AST定義・操作
|
|
103
|
+
│ ├── parser/ # Lean構文パーサー
|
|
104
|
+
│ ├── generator/ # Leanコード生成
|
|
105
|
+
│ ├── ears-to-lean/ # EARS変換
|
|
106
|
+
│ ├── tactics/ # 証明戦術
|
|
107
|
+
│ ├── reprover/ # 証明探索
|
|
108
|
+
│ └── utils/ # ユーティリティ
|
|
109
|
+
└── tests/
|
|
110
|
+
└── *.test.ts (10ファイル)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 3.4 使用例
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import {
|
|
117
|
+
EARSToLeanConverter,
|
|
118
|
+
ReProverSearch,
|
|
119
|
+
TacticGenerator
|
|
120
|
+
} from '@nahisaho/musubix-lean';
|
|
121
|
+
|
|
122
|
+
// EARS → Lean変換
|
|
123
|
+
const converter = new EARSToLeanConverter();
|
|
124
|
+
const theorem = converter.convert({
|
|
125
|
+
pattern: 'event-driven',
|
|
126
|
+
trigger: 'user submits form',
|
|
127
|
+
response: 'system validates input'
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// 証明探索
|
|
131
|
+
const prover = new ReProverSearch();
|
|
132
|
+
const result = await prover.prove(theorem, {
|
|
133
|
+
maxDepth: 10,
|
|
134
|
+
timeout: 30000
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// 戦術生成
|
|
138
|
+
const generator = new TacticGenerator();
|
|
139
|
+
const tactics = generator.generateForGoal(goal);
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 4. @nahisaho/yata-scale
|
|
145
|
+
|
|
146
|
+
### 4.1 パッケージ概要
|
|
147
|
+
|
|
148
|
+
知識グラフのスケールアップを実現するパッケージです。GraphGen4Codeを参考に、分散ストレージ、シャーディング、キャッシュ層を提供します。
|
|
149
|
+
|
|
150
|
+
### 4.2 主要機能
|
|
151
|
+
|
|
152
|
+
| 機能 | 説明 |
|
|
153
|
+
|------|------|
|
|
154
|
+
| **シャード管理** | 一貫性ハッシュによる分散配置 |
|
|
155
|
+
| **インデックス管理** | B+Tree、全文検索、グラフインデックス |
|
|
156
|
+
| **多層キャッシュ** | L1/L2/L3階層キャッシュ |
|
|
157
|
+
| **クエリ最適化** | 分散クエリ実行・結果マージ |
|
|
158
|
+
| **同期制御** | ベクトルクロック、WAL、競合解決 |
|
|
159
|
+
|
|
160
|
+
### 4.3 アーキテクチャ
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
packages/yata-scale/
|
|
164
|
+
├── src/
|
|
165
|
+
│ ├── index.ts # Main exports
|
|
166
|
+
│ ├── types.ts # 型定義
|
|
167
|
+
│ ├── errors.ts # エラークラス
|
|
168
|
+
│ ├── ShardManager.ts # シャード管理
|
|
169
|
+
│ ├── IndexManager.ts # インデックス管理
|
|
170
|
+
│ ├── CacheManager.ts # キャッシュ管理
|
|
171
|
+
│ ├── QueryCoordinator.ts # クエリ調整
|
|
172
|
+
│ ├── SyncController.ts # 同期制御
|
|
173
|
+
│ └── YataScaleManager.ts # 統合マネージャー
|
|
174
|
+
└── tests/
|
|
175
|
+
└── yata-scale.test.ts
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 4.4 使用例
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { YataScaleManager } from '@nahisaho/yata-scale';
|
|
182
|
+
|
|
183
|
+
const manager = new YataScaleManager();
|
|
184
|
+
|
|
185
|
+
await manager.initialize({
|
|
186
|
+
shards: { count: 3, replicationFactor: 2, strategy: 'hash' },
|
|
187
|
+
cache: { l1MaxEntries: 10000, l2MaxSize: 100_000_000, l3MaxEntries: 1_000_000, ttlMs: 60000 },
|
|
188
|
+
query: { maxConcurrency: 8, defaultTimeout: 5000 }
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// エンティティ操作
|
|
192
|
+
await manager.createEntity({
|
|
193
|
+
id: 'entity-001',
|
|
194
|
+
type: 'Person',
|
|
195
|
+
name: 'Alice',
|
|
196
|
+
properties: { age: 30 },
|
|
197
|
+
metadata: { createdAt: new Date(), updatedAt: new Date(), version: 1 }
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// クエリ実行
|
|
201
|
+
const result = await manager.query({
|
|
202
|
+
type: 'traverse',
|
|
203
|
+
startEntityIds: ['entity-001'],
|
|
204
|
+
maxDepth: 3
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// 統計取得
|
|
208
|
+
const stats = manager.getStats();
|
|
209
|
+
console.log(stats);
|
|
210
|
+
|
|
211
|
+
await manager.shutdown();
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 5. 目標達成状況
|
|
217
|
+
|
|
218
|
+
### 5.1 Phase 1 目標 vs 実績
|
|
219
|
+
|
|
220
|
+
| 目標 | 計画 | 実績 | 達成率 |
|
|
221
|
+
|------|------|------|--------|
|
|
222
|
+
| **DFG/CFG抽出** | TypeScript対応 | ✅ 完全実装 | 100% |
|
|
223
|
+
| **依存関係分析** | 変数・関数レベル | ✅ 完全実装 | 100% |
|
|
224
|
+
| **Lean 4統合** | 基本統合 | ✅ AST/Parser/Generator | 100% |
|
|
225
|
+
| **EARS→Lean変換** | 5パターン対応 | ✅ 5パターン全対応 | 100% |
|
|
226
|
+
| **証明探索** | ReProver基本 | ✅ BFS/Tactic生成 | 100% |
|
|
227
|
+
| **分散ストレージ** | シャーディング | ✅ 一貫性ハッシュ | 100% |
|
|
228
|
+
| **キャッシュ層** | 3層キャッシュ | ✅ L1/L2/L3 | 100% |
|
|
229
|
+
| **同期制御** | 競合解決 | ✅ ベクトルクロック/WAL | 100% |
|
|
230
|
+
|
|
231
|
+
### 5.2 品質メトリクス
|
|
232
|
+
|
|
233
|
+
| メトリクス | 目標 | 実績 |
|
|
234
|
+
|-----------|------|------|
|
|
235
|
+
| テストカバレッジ | 80%+ | 対応完了 |
|
|
236
|
+
| テスト合格率 | 100% | 100% (238/238) |
|
|
237
|
+
| TypeScriptエラー | 0 | 0 |
|
|
238
|
+
| 型安全性 | neverthrow Result型 | 完全適用 |
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 6. 次のステップ
|
|
243
|
+
|
|
244
|
+
### 6.1 Phase 2への準備
|
|
245
|
+
|
|
246
|
+
Phase 2「Advanced Learning (v2.5)」の準備:
|
|
247
|
+
|
|
248
|
+
1. **DreamCoder式ライブラリ学習**: 階層的抽象化の設計
|
|
249
|
+
2. **Neural Search Guidance**: 分岐スコアリングモデルの検討
|
|
250
|
+
3. **プログラム合成DSL**: FlashMeta形式のWitness関数設計
|
|
251
|
+
|
|
252
|
+
### 6.2 v2.0.0正式リリースに向けて
|
|
253
|
+
|
|
254
|
+
- ドキュメント整備
|
|
255
|
+
- npmパッケージ公開
|
|
256
|
+
- 統合テスト追加
|
|
257
|
+
- パフォーマンスベンチマーク
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## 7. 参考資料
|
|
262
|
+
|
|
263
|
+
- [MUSUBIX Roadmap v2](./MUSUBIX-Roadmap-v2.md)
|
|
264
|
+
- [Neuro-Symbolic AI Overview](./Neuro-SymbolicAI.md)
|
|
265
|
+
- [REQ-DFG-001](../../storage/specs/REQ-DFG-001.md)
|
|
266
|
+
- [REQ-LEAN-001](../../storage/specs/REQ-LEAN-001.md)
|
|
267
|
+
- [REQ-YATA-SCALE-001](../../storage/specs/REQ-YATA-SCALE-001.md)
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
*Generated: 2026-01-08*
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# MUSUBIX Phase 2: Advanced Learning - 完了レポート
|
|
2
|
+
|
|
3
|
+
**完了日**: 2026-01-08
|
|
4
|
+
**バージョン**: 2.0.0
|
|
5
|
+
**ステータス**: ✅ Phase 2 完了
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 概要
|
|
10
|
+
|
|
11
|
+
Phase 2「Advanced Learning」の全3パッケージの開発が完了しました。合計422テストが全て合格し、MUSUBIX v2.0.0としてリリース準備が整いました。
|
|
12
|
+
|
|
13
|
+
### 1.1 完了サマリー
|
|
14
|
+
|
|
15
|
+
| パッケージ | バージョン | テスト数 | 結果 |
|
|
16
|
+
|-----------|------------|----------|------|
|
|
17
|
+
| **@nahisaho/musubix-library-learner** | 2.0.0 | 132 | ✅ 全合格 |
|
|
18
|
+
| **@nahisaho/musubix-neural-search** | 2.0.0 | 144 | ✅ 全合格 |
|
|
19
|
+
| **@nahisaho/musubix-synthesis** | 2.0.0 | 146 | ✅ 全合格 |
|
|
20
|
+
| **合計** | - | **422** | ✅ |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. @nahisaho/musubix-library-learner
|
|
25
|
+
|
|
26
|
+
### 2.1 パッケージ概要
|
|
27
|
+
|
|
28
|
+
DreamCoder(10^72探索削減を達成)を参考にした階層的ライブラリ学習パッケージです。パターンの抽象化と圧縮により、探索空間を劇的に削減します。
|
|
29
|
+
|
|
30
|
+
### 2.2 主要機能
|
|
31
|
+
|
|
32
|
+
| 機能 | 説明 |
|
|
33
|
+
|------|------|
|
|
34
|
+
| **階層的抽象化** | Multi-level Abstractionによるパターンの階層化 |
|
|
35
|
+
| **パターン圧縮** | CompressionEngineによる冗長性削減 |
|
|
36
|
+
| **Wake-Sleep学習** | 観察と統合のサイクルによる継続的学習 |
|
|
37
|
+
| **型指向探索** | 型システムによる探索空間削減 |
|
|
38
|
+
| **E-graph最適化** | 等価性グラフによる表現最適化 |
|
|
39
|
+
|
|
40
|
+
### 2.3 アーキテクチャ
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
packages/library-learner/
|
|
44
|
+
├── src/
|
|
45
|
+
│ ├── index.ts # Main exports
|
|
46
|
+
│ ├── types.ts # 型定義
|
|
47
|
+
│ ├── LibraryLearner.ts # メイン学習器
|
|
48
|
+
│ ├── AbstractionEngine.ts # 抽象化エンジン
|
|
49
|
+
│ ├── CompressionEngine.ts # 圧縮エンジン
|
|
50
|
+
│ ├── PatternMatcher.ts # パターンマッチング
|
|
51
|
+
│ ├── TypeDirectedSearch.ts # 型指向探索
|
|
52
|
+
│ └── EGraphOptimizer.ts # E-graph最適化
|
|
53
|
+
└── tests/
|
|
54
|
+
└── ... (132 tests)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2.4 使用例
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import { LibraryLearner, AbstractionEngine, CompressionEngine } from '@nahisaho/musubix-library-learner';
|
|
61
|
+
|
|
62
|
+
// ライブラリ学習器の初期化
|
|
63
|
+
const learner = new LibraryLearner({
|
|
64
|
+
abstractionLevels: 3,
|
|
65
|
+
minOccurrences: 5,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// コーパスから学習
|
|
69
|
+
await learner.learnFromCorpus(codeCorpus);
|
|
70
|
+
|
|
71
|
+
// 学習済みプリミティブで合成
|
|
72
|
+
const solution = await learner.synthesize(specification, {
|
|
73
|
+
useLearnedPrimitives: true,
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 3. @nahisaho/musubix-neural-search
|
|
80
|
+
|
|
81
|
+
### 3.1 パッケージ概要
|
|
82
|
+
|
|
83
|
+
DeepCoder、NGDSを参考にしたニューラル誘導探索パッケージです。ニューラルモデルによる分岐スコアリングで効率的な探索を実現します。
|
|
84
|
+
|
|
85
|
+
### 3.2 主要機能
|
|
86
|
+
|
|
87
|
+
| 機能 | 説明 |
|
|
88
|
+
|------|------|
|
|
89
|
+
| **分岐スコアリング** | ニューラルモデルで探索分岐を評価 |
|
|
90
|
+
| **探索優先順位付け** | 有望な探索パスを優先 |
|
|
91
|
+
| **学習ベースプルーニング** | 不毛な探索を早期打ち切り |
|
|
92
|
+
| **探索履歴学習** | 過去の探索から学習 |
|
|
93
|
+
| **ベストファースト探索** | スコアベースの最良優先探索 |
|
|
94
|
+
|
|
95
|
+
### 3.3 アーキテクチャ
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
packages/neural-search/
|
|
99
|
+
├── src/
|
|
100
|
+
│ ├── index.ts # Main exports
|
|
101
|
+
│ ├── types.ts # 型定義
|
|
102
|
+
│ ├── NeuralSearchEngine.ts # メインエンジン
|
|
103
|
+
│ ├── embedding/
|
|
104
|
+
│ │ ├── EmbeddingModel.ts # 埋め込みモデル
|
|
105
|
+
│ │ └── EmbeddingScorer.ts # スコアリング
|
|
106
|
+
│ ├── search/
|
|
107
|
+
│ │ ├── BeamSearch.ts # ビームサーチ
|
|
108
|
+
│ │ ├── BestFirstSearch.ts # 最良優先探索
|
|
109
|
+
│ │ └── PruningStrategy.ts # プルーニング戦略
|
|
110
|
+
│ └── learning/
|
|
111
|
+
│ └── HistoryLearner.ts # 履歴学習
|
|
112
|
+
└── tests/
|
|
113
|
+
└── ... (144 tests)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3.4 使用例
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import { NeuralSearchEngine, EmbeddingScorer, BeamSearch } from '@nahisaho/musubix-neural-search';
|
|
120
|
+
|
|
121
|
+
// ニューラル探索エンジンの初期化
|
|
122
|
+
const engine = new NeuralSearchEngine({
|
|
123
|
+
embeddingModel: model,
|
|
124
|
+
beamWidth: 10,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// スコアリング
|
|
128
|
+
const scorer = new EmbeddingScorer();
|
|
129
|
+
const scores = scorer.scoreBranches(candidates);
|
|
130
|
+
|
|
131
|
+
// ビームサーチ
|
|
132
|
+
const search = new BeamSearch({ width: 10, maxDepth: 20 });
|
|
133
|
+
const result = await search.search(spec);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 4. @nahisaho/musubix-synthesis
|
|
139
|
+
|
|
140
|
+
### 4.1 パッケージ概要
|
|
141
|
+
|
|
142
|
+
Microsoft PROSE/FlashMetaを参考にしたプログラム合成DSLフレームワークです。例示合成(PBE)とWitness関数による演繹的合成をサポートします。
|
|
143
|
+
|
|
144
|
+
### 4.2 主要機能
|
|
145
|
+
|
|
146
|
+
| 機能 | 説明 |
|
|
147
|
+
|------|------|
|
|
148
|
+
| **DSL定義フレームワーク** | ドメイン固有言語の宣言的定義 |
|
|
149
|
+
| **型システム** | 型推論・型チェック・型統一 |
|
|
150
|
+
| **プログラム列挙** | 網羅的なプログラム空間探索 |
|
|
151
|
+
| **例示合成 (PBE)** | 入出力例からの合成 |
|
|
152
|
+
| **Witness関数** | 演繹的合成のためのWitness関数 |
|
|
153
|
+
| **バージョン空間** | 候補プログラムの効率的管理 |
|
|
154
|
+
| **合成ルール学習** | メタ学習による合成ルール自動学習 |
|
|
155
|
+
|
|
156
|
+
### 4.3 アーキテクチャ
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
packages/synthesis/
|
|
160
|
+
├── src/
|
|
161
|
+
│ ├── index.ts # Main exports
|
|
162
|
+
│ ├── types.ts # 型定義
|
|
163
|
+
│ ├── dsl/
|
|
164
|
+
│ │ ├── DSL.ts # DSL実行エンジン
|
|
165
|
+
│ │ ├── DSLBuilder.ts # DSLビルダー
|
|
166
|
+
│ │ └── TypeSystem.ts # 型システム
|
|
167
|
+
│ ├── synthesis/
|
|
168
|
+
│ │ ├── Enumerator.ts # プログラム列挙
|
|
169
|
+
│ │ ├── PBESynthesizer.ts # PBE合成器
|
|
170
|
+
│ │ ├── WitnessEngine.ts # Witness関数エンジン
|
|
171
|
+
│ │ └── VersionSpace.ts # バージョン空間
|
|
172
|
+
│ └── rules/
|
|
173
|
+
│ ├── RuleExtractor.ts # ルール抽出
|
|
174
|
+
│ ├── RuleLibrary.ts # ルールライブラリ
|
|
175
|
+
│ └── MetaLearner.ts # メタ学習器
|
|
176
|
+
└── tests/
|
|
177
|
+
└── ... (146 tests)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### 4.4 使用例
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
import { DSL, DSLBuilder, PBESynthesizer, WitnessEngine } from '@nahisaho/musubix-synthesis';
|
|
184
|
+
|
|
185
|
+
// DSL定義
|
|
186
|
+
const config = new DSLBuilder()
|
|
187
|
+
.type('int', { kind: 'primitive', name: 'int' })
|
|
188
|
+
.operator('add', {
|
|
189
|
+
name: 'add',
|
|
190
|
+
inputTypes: ['int', 'int'],
|
|
191
|
+
outputType: 'int',
|
|
192
|
+
implementation: (a, b) => a + b,
|
|
193
|
+
})
|
|
194
|
+
.constant('zero', { name: 'zero', type: 'int', value: 0 })
|
|
195
|
+
.build();
|
|
196
|
+
|
|
197
|
+
const dsl = new DSL(config);
|
|
198
|
+
|
|
199
|
+
// 例示合成(PBE)
|
|
200
|
+
const synthesizer = new PBESynthesizer();
|
|
201
|
+
const result = await synthesizer.synthesize(spec, dsl);
|
|
202
|
+
|
|
203
|
+
// Witness関数による演繹的合成
|
|
204
|
+
const witness = new WitnessEngine(dsl);
|
|
205
|
+
const program = await witness.synthesizeWithWitness(spec);
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 5. Phase 1 + Phase 2 統合
|
|
211
|
+
|
|
212
|
+
### 5.1 パッケージ間の連携
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
216
|
+
│ MUSUBIX v2.0.0 │
|
|
217
|
+
├─────────────────────────────────────────────────────────────┤
|
|
218
|
+
│ Phase 1: Deep Symbolic Integration │
|
|
219
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
220
|
+
│ │ musubix- │ │ musubix- │ │ yata- │ │
|
|
221
|
+
│ │ dfg │ │ lean │ │ scale │ │
|
|
222
|
+
│ │ (30 tests) │ │ (151 tests)│ │ (57 tests) │ │
|
|
223
|
+
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
|
|
224
|
+
│ │ │ │ │
|
|
225
|
+
│ └────────────────┼────────────────┘ │
|
|
226
|
+
│ ▼ │
|
|
227
|
+
│ Phase 2: Advanced Learning │
|
|
228
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
229
|
+
│ │ library- │ │ neural- │ │ musubix- │ │
|
|
230
|
+
│ │ learner │ │ search │ │ synthesis │ │
|
|
231
|
+
│ │ (132 tests)│ │ (144 tests)│ │ (146 tests)│ │
|
|
232
|
+
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
233
|
+
├─────────────────────────────────────────────────────────────┤
|
|
234
|
+
│ Total: 660 tests (Phase 1: 238 + Phase 2: 422) │
|
|
235
|
+
└─────────────────────────────────────────────────────────────┘
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### 5.2 統合API例
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
import { DFGExtractor } from '@nahisaho/musubix-dfg';
|
|
242
|
+
import { LibraryLearner } from '@nahisaho/musubix-library-learner';
|
|
243
|
+
import { NeuralSearchEngine } from '@nahisaho/musubix-neural-search';
|
|
244
|
+
import { PBESynthesizer, DSLBuilder } from '@nahisaho/musubix-synthesis';
|
|
245
|
+
|
|
246
|
+
// 1. DFGからパターンを抽出
|
|
247
|
+
const dfg = new DFGExtractor().extract(sourceCode);
|
|
248
|
+
|
|
249
|
+
// 2. パターンをライブラリとして学習
|
|
250
|
+
const learner = new LibraryLearner();
|
|
251
|
+
await learner.learnFromPatterns(dfg.patterns);
|
|
252
|
+
|
|
253
|
+
// 3. ニューラル誘導で探索を効率化
|
|
254
|
+
const search = new NeuralSearchEngine({
|
|
255
|
+
library: learner.getLibrary(),
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// 4. DSLベースで合成
|
|
259
|
+
const synthesizer = new PBESynthesizer();
|
|
260
|
+
const result = await synthesizer.synthesize(spec, dsl, {
|
|
261
|
+
searchEngine: search,
|
|
262
|
+
});
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 6. 成功指標(KPI)達成状況
|
|
268
|
+
|
|
269
|
+
| 指標 | 目標 | 実績 | 状態 |
|
|
270
|
+
|------|------|------|------|
|
|
271
|
+
| library-learnerテスト数 | 100+ | 132 | ✅ |
|
|
272
|
+
| neural-searchテスト数 | 80+ | 144 | ✅ |
|
|
273
|
+
| synthesisテスト数 | 120+ | 146 | ✅ |
|
|
274
|
+
| 合計テスト数 | 300+ | 422 | ✅ |
|
|
275
|
+
| ビルド成功 | 100% | 100% | ✅ |
|
|
276
|
+
| 型チェック通過 | 100% | 100% | ✅ |
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 7. 次のステップ
|
|
281
|
+
|
|
282
|
+
### 7.1 Phase 3への準備
|
|
283
|
+
|
|
284
|
+
Phase 3「Enterprise Ready (v3.0)」の準備:
|
|
285
|
+
|
|
286
|
+
1. **JetBrains/VS Code深い統合**: IDE拡張機能の開発
|
|
287
|
+
2. **セキュリティ特化機能**: 高度な脆弱性検出
|
|
288
|
+
3. **大規模知識グラフ**: 1億+トリプル対応
|
|
289
|
+
|
|
290
|
+
### 7.2 v2.0.0正式リリース
|
|
291
|
+
|
|
292
|
+
- ✅ 全パッケージバージョン更新
|
|
293
|
+
- ✅ CHANGELOG更新
|
|
294
|
+
- ✅ README更新
|
|
295
|
+
- ✅ ドキュメント整備
|
|
296
|
+
- ⏳ npm公開
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 8. 参考文献
|
|
301
|
+
|
|
302
|
+
1. **DreamCoder**: Ellis et al., "DreamCoder: Bootstrapping Inductive Program Synthesis with Wake-Sleep Library Learning" (PLDI 2021)
|
|
303
|
+
2. **DeepCoder**: Balog et al., "DeepCoder: Learning to Write Programs" (ICLR 2017)
|
|
304
|
+
3. **PROSE**: Gulwani et al., "Program Synthesis" (Foundations and Trends in Programming Languages 2017)
|
|
305
|
+
4. **FlashMeta**: Polozov & Gulwani, "FlashMeta: A Framework for Inductive Program Synthesis" (OOPSLA 2015)
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
**作成者**: MUSUBIX Development Team
|
|
310
|
+
**最終更新**: 2026-01-08
|