
Python および C 向けの高性能代数ループリフティング&厳密有理漸化式エンジン
従来のコンパイラ、ランタイム、JIT エンジン(GCC、Clang、PyPy、Numba など)は、ループを反復的な制御フローシーケンスとして扱い、命令をステップバイステップで実行します:
$$ \text{Runtime Cost} = \mathcal{O}(N) $$
$N = 10^6$ や $N = 10^9$ の場合、逐次実行には数十億の CPU サイクルがかかります。Strilight は記号的代数リフティングによってループ実行を根本から再設計します:
$$ \vec{\mathbf{X}}(N) = \mathbf{A}^N \cdot \vec{\mathbf{X}}0 + \sum{k=0}^{N-1} \mathbf{A}^{N-1-k} \vec{\mathbf{B}} $$
Strilight は難解な魔法を導入するふりはしません。本質的には開発者の QoL ツールです。
物理モデリング、科学技術計算、数値シミュレーションの分野では、エンジニアはしばしば苛立たしいジレンマに直面します:
Strilight はこのジレンマを解決します。 物理的・数学的概念を、好みのわかりやすく自然な構文で書くだけです。Strilight がループ構造を検査し、厳密な閉形式漸化式を導出し、舞台裏で実行を高速化します—コードベースの完全な可読性とシンプルさを保ちながら。
浮動小数点演算は累積的な切り捨て誤差を導入します($1/3 \times 3 \approx 0.9999999999999999$)。Strilight は有理数体 $\mathbb{Q}$ 上でアフィン帰納法とストライド解析を実行します:
Fraction 表現を出力し、100% ビット単位で正確な数学的整合性を保証します。互いに依存し合う変数(例: 位置が速度に依存し、速度が加速度に依存する物理シミュレーション)は自動的に変数結合行列($\mathbf{A}$)に抽出されます。Strilight は $\mathbf{A}$ に対してバイナリ累乗を実行し、数百万回の反復を2 ナノ秒未満で実行します。
@accelerate デコレータ(仕組み)標準的な Python 関数を @accelerate でデコレートすると、関数定義時に自動パイプラインが実行されます(呼び出しごとの実行時解析オーバーヘッドはゼロ):
for ループ構文を特定して、帰納変数を抽出します。Fraction、math)を注入します。_loop_summary と _invariant_contract を付加し、下流のコンパイラや検証ツールが基盤となる遷移行列 $\mathbf{A}$ を検査できるようにします。from strilight import accelerate
@accelerate
def compute_simulation(steps: int) -> int:
acc = 0
for i in range(steps):
acc += (i * 3) + 7
return acc
# Executes in O(1) time (~0.001 ms even if steps = 100,000,000)
result = compute_simulation(100_000_000)
#pragma strilight)Pythonの動的リフレクションとは異なり、StrilightにおけるCコード変換は、OpenMPスタイルのpragmaディレクティブを介した明示的な開発者契約モデルに厳密に従います。エンジンはCソースコードを暗黙的に変更することは決してなく、変換は明示的な開発者契約条項(contract、target、include、model)によって指示された場合にのみ実行されます:
#pragma strilight accelerate:注釈が付けられたCのforループを等価な閉形式数式へ持ち上げることをStrilightに明示的に許可します。#pragma strilight fuse:同一の反復領域を共有する指定された隣接ループを、統合された$\mathcal{O}(\log N)$バイナリ行列漸化式カーネルへ融合するようStrilightに指示する明示的な開発者ディレクティブです。// Example of contract-guided multi-loop fusion via developer directive
int simulate_motion(int n) {
int pos = 0, vel = 10;
#pragma strilight fuse
for (int i = 0; i < n; i++) {
pos += vel;
}
for (int i = 0; i < n; i++) {
vel += 2;
}
return pos;
}
CrossFileResolver)数値シミュレーションでは、パラメータを別のヘッダーファイルや設定モジュールで定義することが頻繁にあります。Strilight の CrossFileResolver は次のことを行います:
#include / #define ディレクティブを静的に追跡します。eval を使用したりすることなく、AST 評価を通じてファイル間のリテラル定数式(例: SOLAR_MASS = 4 * PI * PI)を評価します。table[i % P])を、事前計算された累積和の閉形式へと $\mathcal{O}(1)$ で持ち上げます。memset 呼び出しやベクトルスライス代入(arr[:N] = ...)を合成します。力学や天体物理のシミュレーション(例: $N$ 体問題、軌道力学、粒子運動学)では、物理的な物体が、急激な衝突や方向転換を伴わずに、滑らかで摂動のない軌道を長時間にわたって移動することが頻繁にあります:
@accelerate デコレータ、C では標準の #pragma です。アルゴリズムやビジネスロジックを変更することなく、いつでも追加・削除できます。現代の AI コーディングアシスタント(Claude、Gemini、GPT、Jules など)は、代数式や閉形式の方程式を扱う際に優れた能力を発揮します。Strilight は、開発者や AI エージェントが合成されたコードと数学的契約を直接検査できるようにします:
from strilight import accelerate
@accelerate
def compute_energy(steps: int) -> int:
total = 0
for i in range(steps):
total += 15
return total
# Execute once to trigger definition-time synthesis
result = compute_energy(100)
# Inspect the underlying mathematical contract:
summary = compute_energy._loop_summary
print("Extracted Induction Formulas:", summary.to_induction_formulas())
print("Invariant Contract:", compute_energy._invariant_contract.to_dict())
C ソースコードを直接 accelerate_c_source に渡すことで、検査可能で人間が読める高速化 C カーネルを生成できます:
import strilight as sl
c_source = """
long long simulate(void) {
long long total = 0;
#pragma strilight accelerate target(total)
for (int i = 0; i < 1000000; i++) {
total += 42;
}
return total;
}
"""
accelerated_c = sl.accelerate_c_source(c_source)
print(accelerated_c)
# Emits: total += (42LL * 1000000);
私たちはエンジニアリングの透明性を重視しています:
target、include、model)を指定することで、決定論的な変換保証が得られます。高反復の数値ループ全体で評価し、ネイティブ実行と Strilight による高速化を比較しました:
| ベンチマークシナリオ | 反復回数 ($N$) | ネイティブベースライン | Strilight 高速化 | 測定された高速化率 | 精度の忠実性 |
|---|---|---|---|---|---|
| 結合 4x4 線形システム (Python) | $1,000,000$ | $75.2\text{ ms}$ | $0.0002\text{ ms}$ | $376,000\times$ | 100% ビット完全一致 |
| 結合 4x4 線形システム (GCC -O2) | $1,000,000$ | $1.1\text{ ms}$ | $0.00002\text{ ms}$ | $55,000\times$ | 100% ビット完全一致 |
| 巡回配列ルックアップ総和 | $1,000,000$ | $74.8\text{ ms}$ | $0.0044\text{ ms}$ | $17,000\times$ | 100% ビット完全一致 |
| 惑星 N 体天体力学 | $100,000$ | $7.17\text{ ms}$ | $0.051\text{ ms}$ | $140\times$ | 解析的軌道一致 |
flowchart TD
SRC["Source Code (Python / C)"] --> LIFTER["SourceLifter: AST & Pragma Parser"]
LIFTER --> RESOLV["CrossFileResolver: Static Import Resolution"]
RESOLV --> VSA["Algebraic Induction Engine: models.py"]
VSA --> MATRIX["VariableCouplingMatrix: System Transition Matrix A"]
VSA --> QFIELD["Exact Rational Domain over Q: AffineExpr"]
REDUCE --> CODEGEN["CodeGenerator: C / Python Synthesis"]
VSA --> REDUCE["Schur Reduction & Block-Diagonal Decomposition"]
CODEGEN --> OUT["O(1) / O(log N) Executable Kernel"]
Strilight は、科学、工学、金融の各分野にわたる計算上のボトルネックに対処します: