Metadata-Version: 2.4
Name: kappalogic
Version: 0.77.0
Summary: tanh(x/xi)ベースの擬連続論理ゲート・比較演算子ライブラリ
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: sympy
Provides-Extra: torch
Requires-Dist: torch; extra == "torch"
Dynamic: license-file

# kappalogic

`kappa(x/ξ) = tanh(x/ξ)`(切り替え可能なカーネル、デフォルトは`tanh`。他に`erf`/`algebraic`)を唯一の基本ブロックにして、離散的な論理演算・比較演算・場合分けを「実数上の滑らかな式」として書き直すライブラリ。

ξ→0で厳密な離散論理に、ξ>0で微分可能な緩和になる。同じ`tanh(x/ξ)`が、AND/OR/XORのような論理ゲート・比較演算子だけでなく、熱核・統計力学(フェルミ分布)・場の理論(キンクソリトン)・双曲幾何(ゲージ理論的構造)・情報幾何(Fisher-Rao計量)など、複数の分野に共通して現れることを、実際に手を動かして検証しながら積み上げている。

PyPIに公開済み: `pip install kappalogic`

```bash
pip install -e .          # ローカル開発の場合
pip install kappalogic    # PyPI経由
pip install kappalogic[torch]  # PyTorchバックエンド(オプション)も使う場合
```

## 使用例

```python
from kappalogic import gt, AND, OR, k, sgn
from kappalogic import kink_energy_exact, fermi_occupation
from kappalogic import rapidity, or_n_fusion_is_safe, not_tower_threshold

gt(5, 3)                                    # 1.0 (5 > 3)
AND(0.9, 0.8)                                # ほぼ1.0 (両方とも十分非ゼロ)
kink_energy_exact(xi=1.0)                    # 4/3 (φ^4理論のキンクソリトンの厳密な質量)
fermi_occupation(eps=0.3, mu=0.5, kT=0.1)    # フェルミ・ディラック分布と機械精度で一致

k(5) == sgn(5)                               # True (kはsgnの別名)
rapidity(1.0, xi=0.5)                        # (1+k(x))/(1-k(x)) = exp(2x/xi)
or_n_fusion_is_safe([3.0, 0.01, 0.02], xi=0.1)  # OR_nの安全な融合条件を判定
```

## 構成

| モジュール | 内容 |
|---|---|
| `core.py` | `sgn`/`reg`/`AND`/`OR`/`NAND`/`NOR`/`XOR`/`XNOR`/比較演算子、n項融合版`AND_n`/`OR_n` |
| `funcs.py` | 整数・奇偶判定(`intf`/`par`)、`max`/`min`/`clamp`、MOD演算子、ディラックのデルタ函数近似 |
| `kernels.py` | `tanh`/`erf`/`algebraic`カーネルの切り替え |
| `theory.py` | reg/AND/OR系の勾配構造・誤分類境界の厳密な命題群(命題1〜21、証明・数値検証付き) |
| `identities.py` | `k(x)=tanh(x/ξ)`の加法定理・n倍角公式・連分数・部分分数展開・無限積・Gudermannian函数・積分形(kernel="tanh"限定) |
| `gauge.py` | ξの大域/局所変換とアフィン群構造、(x,ξ)半平面のキリングベクトル場、測地線の保存量 |
| `dynamics.py` | NOT写像の自然な放物型不動点、Koenigs座標・アベル函数・連続反復 |
| `info_theory.py` | de Bruijnの恒等式、フィッシャー情報幾何とgauge.pyの双曲計量の一致 |
| `bridge.py` | Σ(離散和)↔∫(連続積分)、Π(離散積)↔∫の橋渡し、階乗とΓ関数 |
| `torch_backend.py` | PyTorchのautogradによる高速な数値検証・可視化・学習可能なξ(オプション依存) |
| `matrix_backend.py` | 非可換(行列/演算子)版kappalogic。FOE方式で対角化せず行列版k/reg/フェルミ占有数を計算、Eigenlogic流のテンソル積で符号を区別しない版と区別する版のAND/OR、DMPT由来の高速な行列版感度解析(matrix_susceptibility)、**SP2 spectral-projection純化(行列積のみ・対角化なしでT=0密度行列、tanh-FOEのkT→0極限と一致、線形スケーリングDFT)** |
| `heat.py` / `quantum_well.py` | 拡散時間としてのξ、熱核・無限井戸型ポテンシャルの量子プロパゲータ |
| `quantum_logic.py` | soft logicを量子測定に接続。soft_projector=(I+tanh(H/ξ))/2は有効な**弱測定POVM**で、ξ=測定強度(ξ→0で射影測定、ξ大で自明測定)。測定強度S=Tr(reg)/n、Kraus作用素、Eigenlogicゲートの量子真理値 |
| `physics_bridge.py` | OR系SUM定理(命題21・27)の統計力学的再解釈。対数ポテンシャルLのディレーション不変性、加法的log-charge、化学ポテンシャルτ、フェルミ型ステップと実効温度T_eff=√2/A |
| `partition.py` | OR_nの分配関数的描像(命題31)。空状態確率P=∏NOT(a_k)=e^{-S}、sech²型占有数(=真のOR_nと機械精度一致)、log-charge描像の自由エネルギー。相転移は起きないことも診断関数で明示 |
| `field_theory.py` | φ^4理論のキンクソリトン(EOM・厳密エネルギーの証明付き)、線形安定性スペクトル(Poschl-Teller型ポテンシャル、shape mode)、キンク・反キンク衝突の動的シミュレーション |
| `stat_mech.py` / `electronic_structure.py` | 分配関数、Witten指数、フェルミ・ディラック占有数 |
| `topology.py` / `spacetime.py` | モース理論によるオイラー標数、光円錐の指示関数 |
| `applications.py` / `search.py` | クロネッカーのデルタ・コラッツ漸化式、勾配ベース探索・アニーリング |
| `examples/` | 実行できるデモ8本(命題32の順序依存発火、v0.76のSP2線形スケーリングDFT、v0.77の量子測定デモを含む)+ 外付け実験3件(`kappa_cpu/`, `gauge_adder_chain/`, `cuda/`。下記「関連実験」参照) |

開発の経緯・迷った点・次にやりたいことは`dev_notes.md`、進行中の課題は`TODO.md`を参照。

## 命題まとめ(理論的な柱)

`theory.py`を中心に、`reg(x;ξ)=tanh(x/ξ)²`という単一の「非単調な検出器」から作られる6つの論理ゲート(AND, OR, NAND, NOR, XOR, XNOR)の勾配構造・誤分類境界を、閉じた形の式として体系的に導出・数値検証した。すべて`tests/`に対応するテストがある。

| # | 対象 | 結果 |
|---|---|---|
| 1 | `reg'(x)`の最大値 | `x* = ξ·arctanh(1/√3)` で最大 |
| 3 | AND_nの安全条件(修正版) | 全部の値が`|a_k| > C·ξ`なら誤差`≤ n·4·exp(-2C)`(元の"部分積"条件には反例あり、修正済み) |
| 4 | ORの勾配(二重共鳴) | `d/da OR = reg'(a)·(1-reg(b))·reg'(p)`、`p=(1-reg(a))(1-reg(b))` |
| 5 | AND/ORの分類 | ANDは`a·b/ξ`という1変数に還元できる(部分ディレーション不変)、ORはできない |
| 6 | ORの第二共鳴・2D危険地図の尾根 | `v* = -½ln(ξ) - ½ln(w0/(4sech²(c)))`(`w0`は超越方程式の解、(a,b)平面全体の真の尾根でもある) |
| 7 | ゲージ理論的構造(`gauge.py`) | ξの並進+ディレーションがアフィン群Aff(1,R)、(x,ξ)半平面の双曲計量のキリングベクトル場 |
| 8 | ORの誤分類境界(2変数) | `u+v = ½ln(1/ξ) + K`、`K=½ln(16/arctanh(1/√2))` |
| 9 | OR_nの誤分類境界(n変数) | `Σu_k = ½ln(1/ξ) + K(n)`、`K(n)=½ln(4ⁿ/A)` |
| 10 | **OR_nのfold-vs-fuse安全条件** | 少なくとも1つが`ξ·(C*(ξ)+M)`を超え、かつ`ξ≤e^{-2M}`(証明に必要な技術条件、数値的に必要性も確認)なら誤差`≤exp(-4M)`。**v0.56で完全な初等証明を与えた**(数値検証だけの命題から昇格)。詳細は`papers/or_n_safety_theorem.md` |
| — | **必要十分条件への前進+力学系との接続(v0.57)** | 命題10より真に一般的な「累積プレフィックス積」条件を発見(単独では届かない複数の中程度の値でも累積して安全になる)。さらに、naive foldの核心にある写像`g(x)=NOT(NOT(x;ξ);ξ)`(命題18のF=NOT∘NOTそのもの)が**3つの不動点を持つ双安定系**だと判明——「本丸」が命題17・18の力学系研究の延長線上にあったという統一的な見方。厳密な必要十分条件は依然未解決 |
| 23 | **本丸の統一理論(v0.61): naive=MAX / fused=SUM** | naive foldを対数座標の1次元"蹴られた写像"`μ_k=G(μ_{k-1}+L_k)`へ**厳密に**還元(機械精度)。Gは双安定飽和伝達関数(不安定固定点t*で増幅/リセット)で、帰結として「naive fold≈`max L_k>t*`、fused=`ΣL_k>τ`」——逐次foldはORをSUM集約からMAX集約に劣化させる。予測精度99.5%。命題10・17・18・21・v0.57を1つの力学系描像に統一 |
| 24 | **tree fold と pairwise summation(v0.62)** | 平衡木でOR_nを畳み込むと、対数座標で命題23のG写像の**平衡木**(深さlog₂n)に厳密還元。Highamのpairwise summation(誤差O(log n) vs 逐次O(n))の論理ゲート版で、naive foldより fused に一致しやすい(不一致1/7)。集約則は「隣接ペアの和のブロックに対するMAX」——ブロック内でSUMを部分回復するが、強い値が離れると回復しない(順序依存が残る) |
| 25 | **本丸の必要十分の構造(v0.63): 蹴られたwalkの境界超過** | naive foldの真偽は厳密に「蹴られたwalk`μ_{k-1}+L_k`がある`k`で`t*`を超えるか」で決まる(捕獲状態を厳密予測、一致予測99.6%)。破産理論(Lorden 1970「境界超過」)と同じfirst passage構造だが、増分がi.i.d.正値でなくwalkが毎回Gで縮む一般化。閉形式の境界超過評価が最後の一歩 |
| 26/27 | **カーネル横断の統一SUM則 + 極値統計の描像(v0.64)** | fused OR_nが真`⟺ Σ L(a_k;ξ) > ln(1/(ξc))`が**3カーネル全部**(tanh/erf/algebraic)で機械精度成立。カーネルの違いは対数増分`L=-ln NOT`と定数`c`(arctanh(1/√2)/erfinv(1/√2)/1)だけに吸収。`L`の遠方挙動が極値統計の裾分類に対応: tanh/erfは指数裾(Gumbel、`L`線形)、algebraicは多項式裾(Fréchet、`L`対数)。これがalgebraicで閾値理論が崩れる(双安定井戸の深さcap=`L(1)`が`2/ξ`→`2ln(1/ξ)`と激減)理由の説明 |
| 28 | **t*の漸近展開を自己無撞着で確定 + 平均場の裏付け(v0.65)** | `t*(ξ)`の定義方程式`G(t*)=t*`が`2u=ln(1/ξ)+ln8-ln(ln(1/ξ)-ln u)`という**自己無撞着方程式**(u=e^{ln(1/ξ)-t*})に帰着。反復で解くと厳密`t*`に収束(誤差ξ=1e-12で2e-3)。定数項が非単調に見えたのはlnとlnlnの混在が原因で、自己無撞着に解けば解消。この形は`m=tanh(βJm)`型の平均場方程式(Curie-Weiss)と同型で、追加レポートの直観の裏付け |
| 29 | **SUM定理の統計力学的再解釈(v0.66)** | 対数ポテンシャル`L=-ln NOT`はディレーション不変(命題7と同じ対称性)。SUMスコア`S=ΣL`は加法的な**log-charge**、閾値`τ`は**化学ポテンシャル**、`OR_n(S)=sech²(A e^{-(S-τ)})`は`S=τ`で厳密に1/2の**フェルミ型ステップ**。実効温度`T_eff=√2/A≈1.605`はξ非依存。fermi_occupationと地続きの「log-charge空間での占有相転移」描像 |
| 30 | **最適折り畳み順序定理(v0.67)** | naive foldの一致率(命題23の蹴られたwalk描像)は畳み込む順序に依存し、`\|a_k\|`(=`L_k`)の**降順**が他のあらゆる順序と比べて一致率を最大化する(実用上ほぼ最適)。直感: 最初に最大のkickを与えるとwalkが早期にG写像の吸引域に落ち着き、後続の小さな値による撹乱を受けにくい。数値検証: n≤6全順列探索で「解ける」ケースの996/998で降順が的中、n≤14で降順1999/2000 > ランダム1993/2000 > 昇順1981/2000。**(v0.75で強化)** ステップ2最適性は**厳密に証明**(`s_2=`先頭2つの`L`の和なので降順が`s_2`を全順序で最大化→ある順序がステップ2発火なら降順も発火、crossingの98〜100%がステップ2)。また記録の「99.3%」は`fold>0.5`の0.5境界の丸めノイズで、クリーンな crossing 量では全順列12000試行で反例0=**実測で厳密に firing-argmax**(`or_n_descending_is_crossing_argmax`)。完全な argmax 証明(降順が walk のピークを最大化)は`G'`が1をまたぐため未解決 |
| 31 | **OR_nの分配関数的描像(v0.71)** | 空状態確率`P=∏NOT(a_k)=e^{-S}`(「全入力が非アクティブな結合確率」)を導入し、`OR_n=NOT(P)`が真のfused OR_nと**3カーネルで機械精度一致**(RMS~1e-18)。S=τ近傍で`OR_n=sech²(c·e^{-(S-τ)})`という二重指数(Gompertz型)ステップ。**注記**: これは外部提供のκPFT草稿(OR_nをsigmoid型フェルミ占有数と主張、「n→∞で2次相転移」)を検証した結果、占有数の関数形が誤り(真はGompertz型でsigmoidではない、実測RMS~0.07)・相転移も実在しない(L≥0ゆえOR_nはtrueに張り付く)と判明したため、誤りを除いて正しい部分だけ残したもの。v0.66描像の自然な言い換えに近く、新定理としては控えめ |
| 32 | **順序依存の発火反転定理(v0.72)** | 命題30の直接の帰結として、naive fold(飽和する逐次OR)の発火(>0.5)/非発火が**同じ入力集合でも畳み込む順序で反転しうるか**を、全n!順列を試さず**降順・昇順の2ソート(O(n log n))だけで予言**: `反転しうる ⟺ fold(L降順)>0.5 かつ fold(L昇順)≤0.5`(命題30=降順が発火最大、昇順が発火最小)。精度99.9%・適合率100%・再現率98%。**派生定理ノート#6への回答**: naive foldを樹状突起の非線形統合の最小モデルと見なすと「同じシナプス入力でも到着順序で発火が反転する集合を事前特定できる」という定量予測(原理的にパッチクランプで検証可能)。ただし生物物理を含まない最小モデルであり、飽和的統合の定性的性質の定量化にとどまる |
| 33 | **蓄積遷移は平均場二次相転移ではない(v0.73、否定的結果)** | 命題28(t*の自己無撞着=平均場Curie-Weiss同型)が留保していた「臨界指数・普遍性クラス」を詰めた結果、**否定的だが明確な結論**: この蓄積遷移は平均場イジング型の連続(二次)相転移の臨界構造を**持たない**。根拠3点—(1)不安定固定点t*の傾き`G'(t*)`が常に>1(最小~3.2、xi→0で`~13.6 ln(1/xi)`と発散)で、平均場が臨界点で傾き1を横切る分岐がどこにも無い;(2)自己無撞着方程式は全xiで単一解(多重解の分岐なし);(3)高固定点が完全に吸収的で遷移は一次的・急峻。**派生定理ノート#4への回答**: 「平均場と一致」でも「新臨界指数」でもなく、そもそも二次臨界性がない。命題28の同型は方程式の形式的類似で普遍性クラスまでは共有しない、というのが正確な描像 |
| 34 | **双方向の閉形式一致サンドイッチ(v0.74)** | 本丸(naive fold ↔ fused OR_n の必要十分)の**両側を閉形式で挟む2つの証明可能な十分条件**。**FALSE側**(命題10の双対、新規): `Σ_k L_k ≤ t*(ξ)` なら蹴られたwalkは`t*`を絶対に越えず、naive・fused とも false(一致)——初等的な帰納法`s_k ≤ 接頭和 ≤ Σ L_k ≤ t*`で証明(乱数30000試行で反例0件、帰納核`s_k≤P_k`も違反0件)。**TRUE側**: `max_k L_k > τ(ξ)=ln(1/(ξA))` なら単独の蹴りが`t*`を越えて両者 true(一致、30000試行で反例0件)。挟めない **undecided帯** は`t*<ΣL_k かつ max L_k≤τ`——残差蓄積と**順序依存(命題30・32)**が効く帯で、順序不変な閉形式では決定不能な本質部分がここに局在する。帯の位置は`t*~ln(1/ξ)-lnln(1/ξ)`, `τ~ln(1/ξ)+0.126`で`τ-t*~lnln(1/ξ)`(実測0.386@ξ=0.2〜1.053@ξ=0.01)。命題25の未解決核を"安全側の閉形式境界"で確定させ、残る難所を明示した |
| 35 | **最適順序の発火は"最初の数フォールド"で決まる(v0.75)** | 命題23「逐次fold=MAX劣化」の**順序依存の機構を閉形式で確定**。最適順序(L降順=命題30)に畳んだ naive fold の発火は、蹴られた walk が**最初の数ステップ以内**で`t*`を越えるかで決まる(降順は最大の`L_(1)`を先頭に置き reset を受けないので crossing が早期に集中)。**k段打ち切り則**(`or_n_optimal_fold_fires(steps=k)`)は実walkの打ち切りゆえ**任意のkで厳密な十分条件(偽陽性0)**で、kを増やすと必要性が単調改善: k=2(=上位2和則`L_(1)+L_(2)>t*`)で総合99.977%、k=3で99.997%、**k=4で実測100%**(乱数30000試行)。つまり発火は**最大でも上位4値だけで決まる有限地平の決定**。**集約則の補間**: 純粋蓄積レジーム(単独では誰も`t*`未満だが`ΣL_k>t*`)の crossing 率は 降順~90%(SUM則をほぼ回復)>ランダム~55%>昇順~22%(MAX則=非発火に留まる)——命題23のMAX劣化は順序無頓着時の話で、**降順に畳めばSUM集約を大きく回復する**。命題30(降順=発火最大)・32(順序依存発火)の機構的説明。命題34 FALSE側(`ΣL_k≤t*`⟹全順序非発火)と本命題で降順発火を上下から挟む |
| 11 | NANDの閾値 | `a·b ≈ √A·ξ^1.5`(ANDとは異なるスケーリング則) |
| 12 | NORの誤分類境界 | `u+v = ½ln(1/ξ) + K_NOR(ξ)`(二重対数補正) |
| 13〜15 | XOR/XNORのb=0・対角線断面 | 対数のネスト構造、対角線ではLambert W函数が登場 |
| 16 | NOT合成塔の統一理論 | 命題11・13・15を「NOTをn回重ねる」という1つの一般式に統合。`Ψ_n(n≥2)`は「XORにNOTをn-2回重ねたゲートのb=0断面」に厳密一致(n≥4にも具体的なゲートがあった) |
| 17〜18 | NOT写像の自然な不動点(`dynamics.py`) | 乗数がちょうど-1になる臨界ξ、自乗すると3次接触の縮退した放物型になる一般補題。**v0.58で続き**: 標準の2次接触なら対数補正だが、3次接触では`√N`補正になり、その係数が4次テイラー係数で決まることを導出(1ステップの厳密な漸化式では99.3%一致、多数回反復後の大域的な収束の完全な数値確認は道半ば) |
| 19〜20 | XOR/XNORの2D境界 | 片方が大きい極限で`v≈½ln(4u/threshold)`という対数スケールの境界 |
| 21 | 厳密な双曲線恒等式 | `Σln(cosh(a_k/ξ)) = ½ln(1/(ξA))` — 命題6・8・9・12・13・15・19・20の"近似"の正体は、この(初等的だが見落としていた)厳密な恒等式だった。数学的には`sech=1/cosh`の言い換えに過ぎず新しい数学ではないが、複数の命題を統一する整理として有用 |
| — | **対数領域(logit空間)での勾配保存設計** | 命題21の`L(x;ξ)=-ln(NOT(x;ξ))`の勾配は`|x|`が大きい領域でも`tanh(x/ξ)→±1`に収束するだけで消えない(reg/NOTの勾配は同じ領域で指数的に消える)。深さ200のOR鎖で検証、`S:=Σ L(a_k;ξ)`に対する勾配は深さに依らず一定、[0,1]へ潰した通常の出力は深さ50で完全に消失。差分可能論理ゲートネットワークの深い集約層への設計指針として提案。**v0.60で訓練実験により実証**: 確信的に誤った初期化からの刈り込みタスクで、有界出力への損失は重み凍結(精度0.817)、符号つき対数領域スコア(`signed_log_domain_score`、softplus恒等式による数値安定形)へのBCEは精度1.000を達成 |
| 22 | NOT合成塔の厳密版と力学系(命題17〜18)への接続 | `S_{k-1}:=ξ·arctanh(√(1-S_k))`という厳密な逆関数(これも初等的な代数、新しい数学ではない)で命題16を非漸近化。**この逆再帰が実はNOT写像(命題17)の逆軌道そのものだったと判明**——ξ<ξ_c(命題17の臨界値)でのみ収束し、収束レートは`1/多重子`に厳密一致。無限段のNOT合成塔の収束限界と、パラボリック分岐の臨界点が同一だった、という内部的な統一が主な収穫 |

情報幾何: ガウス分布族`N(μ,σ²)`のフィッシャー情報計量が、`μ':=μ/√2`という再スケールで命題7の双曲計量と厳密に(定数2倍を除いて)一致する(ガウス曲率`K=-1/2`)。

## 論文化を目指している結果

`papers/or_n_safety_theorem.md`: 命題10(OR_nのfold-vs-fuse安全条件)を
完全な初等証明付きの定理として書き下した技術ノート(英語、学会・
プレプリント投稿の叩き台)。van Krieken (2022)・Petersen (2022, 2024)の
微分可能論理ゲート研究に対する位置づけ、証明、数値検証、正直な限界
(証明は緩い、AND側には同様の閉形式がないことの確認、必要十分条件は
未解決)まで含む。

`papers/or_n_fold_order_dependence.md`: 上の続編(英語)。単独大でない
「本丸」の領域——多数の中程度の入力で、逐次foldの**順序**が結果を決める
——を扱う。命題23(蹴られたwalkへの厳密還元)・命題34(双方向の閉形式
サンドイッチ、証明付き)・命題35(最適順序の発火は上位数値で決まる有限
地平則)・命題30(降順=ステップ2最適性の厳密証明+firing-argmaxの訂正)を、
「逐次fold=SUMからMAXへの劣化、順序がその間を補間する」という1つの描像に
まとめた。定理1〜4を厳密な核とし、パーセンテージ表記は全て実測、有限地平
100%・完全なargmax優越は未証明、と限界も明記。

## 検証済みの主な結果

- 原案の3件のバグを発見・修正(`(A>B)`が実質`(A≠B)`と同じ値だった、`par(x)`の偶奇判定ミス、コラッツ漸化式の分岐条件ミス)
- `kernel="erf"`が階段状初期条件の熱拡散の厳密解と一致(誤差5.7e-5)
- 有限区間の熱核・無限井戸型ポテンシャルの量子プロパゲータが固有関数展開と機械精度(~1e-13)で一致
- SUSY QMのWitten指数がβ=0.01〜10で厳密に1.000000
- キンクソリトン`tanh(x/ξ)`がφ^4理論のEOMを厳密に満たし、エネルギー`E=4/(3ξ)`を導出
- キンクの線形安定性スペクトルがl=2のPoschl-Teller型ポテンシャルに厳密一致(零モード`ω=0`、内部モード`ω=√3/ξ`、連続スペクトルは`ω≥2/ξ`から。数値対角化でも確認)
- キンク・反キンク衝突の数値シミュレーションで、低速度では"捕獲"、高速度では衝突後に分離する"脱出"という教科書的な速度依存性を定性的に再現。細かい速度走査では、捕獲領域の中に孤立した脱出の窓が現れる"共鳴ウィンドウ"らしき非単調構造も確認(窓の正確な境界は解像度に敏感)
- フェルミ・ディラック分布が`sgn(x,2kT)`と機械精度で一致

## 非可換(行列/演算子)版への拡張(進行中)

`matrix_backend.py`で、行列版のk/reg/フェルミ占有数を、対角化せずに
再帰的な倍角公式(`identities.py`の`n_tuple_angle`を行列に読み替えた
もの、いわゆるFermi Operator Expansion)で計算する。

Eigenlogic (Vourdas & Dubois, 2020)の原論文を実際に読んで確認した
ところ、多入力の論理演算は入力ごとに別々のヒルベルト空間を割り当て、
その**テンソル積**上でKronecker積により演算子を組み合わせる構成
だった(`F_AND = Π_A ⊗ Π_B`)。ここで重要な発見があった: Eigenlogic
の射影演算子`Π`(符号で真偽を区別する)は、kappalogicの`reg`(偶関数
で符号を区別しない)ではなく、`k`自体から作る"柔らかい射影"
`soft_projector(H;ξ)=(I+k(H;ξ))/2`に対応する。つまり**kappalogic
本体のAND(a,b)=「a,bが共に非ゼロか」と、標準的なBoolean論理の
AND=「a,bが共に真か」は、そもそも別の概念だった**。

このため非可換版のAND/ORは2種類実装している:
- `tensor_AND`/`tensor_OR`: kappalogic本体のAND/OR(符号を区別しない)
  をそのまま行列に一般化。1x1行列でkappalogic本体と機械精度で一致。
- `eigenlogic_AND`/`eigenlogic_OR`: Eigenlogic論文の構成を
  `soft_projector`で一般化。符号を区別する正真正銘のBoolean論理で、
  ξ→0で通常の真理値表と厳密に一致する。

いずれもH1,H2が非可換でも常にHermitianになる(v0.43のJordan積の
ような場当たり的な補正が不要)。

**Vourdasの非加法性演算子(2015)は、原論文を読んで実際に検証した
結果、kappalogicとは別物だと判明した**——真の部分空間射影演算子で
検証すると、Vourdasの式(交換子との厳密な関係)は機械精度で成立する
が、kappalogicのJordan積ベースのAND/ORは、xi→0でもこの真の
"交わり・結び"射影には収束しない(むしろ乖離が大きくなる)。無理に
対応させず、「kappalogicの範囲外」と見極めた。

**DMPT (Niklasson et al. 2024)から輸入できた実用的な高速化**:
`matrix_susceptibility`関数を追加した。`Tr[A·f(H)]`のHに関する
全微分行列が、`f(H+λA)`をλについて1方向だけ微分するだけで求まる
(成分ごとの数値微分よりO(n²)倍速い、8x8行列で実測60倍)。
kappalogic自身のmatrix_k(FOEの再帰倍角展開)にそのまま適用できる
ことを検証した(誤差~1e-9で成分ごとの数値微分と一致)。

**SP2 spectral-projection純化(v0.76、DFT接続)**: `sp2_density_matrix`を
追加した。絶対零度の密度行列(占有部分空間への射影 P=θ(μ-H))を、
**対角化なし・逆行列なし・行列積(とGershgorin境界の行ごとの和)だけ**で
構成する、実在の線形スケーリング電子構造法(Niklasson 2002)。matrix_k
(FOE、逆行列を使う倍角展開で有限温度tanh)に対し、SP2はmatmulだけでT=0の
射影を作る——疎なHでは各matmulがO(N)で済むのが「対角化O(N³)を線形
スケーリングO(N)に落とす」DFTの主力アルゴリズム。得られる射影は
matrix_fermi_occupationのkT→0極限と機械精度(~1e-15)で一致し、tanh核
(ξ→0で符号=ステップ)とSP2(ステップへ純化)が同じT=0密度行列に収束する
——kappalogicの「ξ→0で離散へ」という中心テーマの電子構造版。ギャップの
ある絶縁体では機械精度一致し密度行列の減衰長がギャップとともに短縮する
(近視性、O(N) DFTの根拠)が、金属(ギャップ0)ではSP2は収束しない(T=0射影が
縮退フェルミ準位で曖昧)——`examples/linear_scaling_dft_demo.py`で実演。
matmulだけなのでGPU化も素直(将来のCUDA化の自然な入口)。

## 先行研究との関係(誠実な位置づけ)

要素技術のほとんどは既存研究の再発明である。

| このライブラリの要素 | 対応する既存研究 |
|---|---|
| tanhベースの滑らかな指示関数 | 相分離理論(Allen-Cahn方程式、1979年〜) |
| 微分可能論理ゲート・fuzzy論理演算子の勾配消失分析 | van Krieken et al. (2022, *Artificial Intelligence*)、Petersen et al. (2022 NeurIPS, 2024 CVPR)の`difflogic`、2025〜2026年の後続研究 |
| フィッシャー情報幾何(ガウス族)=双曲平面、曲率-1/2 | Rao (1945)以来の古典的結果。Costa, Santos & Strapasson (2015)が同じ再スケール式を明示 |
| アフィン群/双曲計量のキリングベクトル場 | 双曲幾何・連続ウェーブレット変換の表現論の古典的結果("ax+b group") |
| `k(x)=tanh(x/ξ)`の加法定理・連分数・無限積 | 双曲線関数論の古典的結果(Lambertの連分数は1768年) |
| 放物型不動点(乗数-1) | 周期倍分岐そのもの(ロジスティック写像等で教科書的)。「自乗すると3次接触になる」という補題は文献に見当たらなかった |
| フェルミ・ディラック占有数=`sgn(x,2kT)` | DFT計算の電子スメアリング手法(既存技法) |
| 単一プリミティブから論理ゲート全部を演算子として合成(テンソル積で多入力を扱う) | [Eigenlogic (Vourdas, *Entropy* 2020)](https://www.mdpi.com/1099-4300/22/2/139) ([PMC版](https://pmc.ncbi.nlm.nih.gov/articles/PMC7516549/)): 射影演算子からCayley-Hamilton定理・Lagrange補間で構成 |
| 交換子による非可換補正の定式化 | [Möbius operators and non-additive quantum probabilities (Vourdas, 2015)](https://arxiv.org/pdf/1512.07846): 射影演算子の交換子と厳密に結びつく非加法性演算子 |
| 行列版フェルミ占有数`ρ=1-tanh(β/2(H-μ))`、対角化不要の再帰展開(Fermi Operator Expansion) | [Multipole Representation of the Fermi Operator](https://arxiv.org/pdf/0812.4352)(tanhの極展開・Matsubara形式、`identities.py`のMittag-Leffler展開と同じ対象)、[Goedecker (1999) 線形スケーリング電子構造](https://arxiv.org/pdf/cond-mat/9806073)、[Tensor Coreでの混合精度FOE (2021)](https://arxiv.org/pdf/2101.06385)、[大規模DFT向けsubspace再帰FOE (2023)](https://arxiv.org/pdf/2301.04642)、[核物理へのFOE応用](https://arxiv.org/pdf/2211.09448) |
| 密度行列の摂動論(行列版の自動微分に相当) | [Susceptibility Formulation of Density Matrix Perturbation Theory (2024)](https://arxiv.org/pdf/2409.17033)、[Graph-based Quantum Response Theory (2022)](https://arxiv.org/pdf/2212.01997) |
| 非可換fuzzy論理の抽象枠組み | Pykacz (1987〜94年)以来の系譜、[量子論理の幾何学的量子化](https://arxiv.org/pdf/2004.03395)。閉形式の誤分類境界のような具体性はない |
| ξ(温度)をアニーリングしながら学習し最後に離散へ落とす運用 | [Softsign: Smooth Sign in Your Optimizer (2026)](https://arxiv.org/pdf/2605.31371)、[HESTIA: Hessian-Guided Differentiable Quantization (2026)](https://arxiv.org/pdf/2601.20745)。論理ゲートの文脈とは無関係だが同じ構造(τ→0/∞で厳密な離散に収束) |

**確認できていないこと(=おそらく未踏)**: `kappa(x/ξ)=tanh(x/ξ)`という単一の検出器プリミティブからAND/OR/NAND/NOR/XOR/XNOR全部を合成し、その誤分類境界を`log(1/ξ)`スケールの閉形式群として統一的に導出する、という構成そのものは、検索した範囲で他に見当たらなかった。標準的な微分可能論理ゲート研究は`[0,1]`上で単調な演算子(積t-norm等)を対象にしており、`reg(x)=tanh(x/ξ)²`(実数全体を受け取る非単調な検出器)とは系統が異なる。ξを陽に持つ連続緩和パラメータとして非可換版を構成する試み(`matrix_backend.py`)も、検索した範囲では他に見当たらなかった。

## 率直な限界(誇張しないための注記)

- hardモード(reg/AND/OR)は離散的な場合分けをif文なしで解析式に埋め込む用途には向くが、**それ自体を勾配降下の目的関数にしてNP完全問題を解くのには向かない**(勾配消失のため)。
- softモード+アニーリングは「うまくいく場合がある局所探索の補助」であって、P=NPを覆すようなものではない。
- 命題10(OR_nの安全条件)は十分条件であり、必要十分条件までは詰めていない。
- 個々の要素技術はほぼ全て先行研究があり、上の「命題まとめ」もその多くは既知の道具(tanhの飽和、双曲幾何、周期倍分岐)の組み合わせに過ぎない。「大発見」と呼べる新定理・新予想は今のところ出ていない。

## 関連実験(`examples/`内の外付けプロトタイプ)

本体(`kappalogic/`)には手を入れず、その上に外付けで組んだ実験。いずれも
`python3 <script>`で結果を再現できる。

- **`examples/kappa_cpu/`** — `AND`/`OR`/`XOR`/`eq`だけを部品に、if文を
  一切使わず(すべて`eq()`による重み付き和のマルチプレクサとして)
  リップルキャリー加算器→6命令ALU→PC/ACC/CTRを持つトイCPUまでを組み、
  実際にJNZループ(1+2+…+5=15)をbit-exactに実行した存在証明。
  加算器・ALU・CPUの正しさは全て検証済み。**発見**: 「離散論理回路として
  常にきれいな0/1しか流さない」使い方では、連鎖長(ビット幅・ループ長)を
  増やしても安全なξの上限がほぼ縮まない(命題9/10のfold安全条件が本質的に
  効く「生の実数値を融合する」用途との切り分け)。一方で「順方向の計算は
  ビット幅に頑健なのに、逆方向の勾配探索は脆い」という非対称性も観測。
  なお「微分可能なCPU」自体はNTM/NRAM/DNC等の先行研究があり、新規性は
  主張していない。詳細は`REPORT_kappa_cpu.md`。
- **`examples/gauge_adder_chain/`** — `gauge.py`のAff(1,R)対称性・キリング
  ベクトル場を、n個並べた検出器/AND_n/加算器へ拡張。`AND(a,b;ξ)`は
  `(a,b,ξ)→(λa,λb,λ²ξ)`の下で**厳密不変**(重み(1,1,2)、機械精度)だが
  OR/XORはどんな重みでも不変にならない、という結果を得た。これは
  `theory.py`の命題5(ANDは1変数`a·b/ξ`に還元できるがORはできない)を、
  Lie群の言葉で独立に再導出したものになっている。AND_nは重みnで一般化され、
  対応する「重み付き半空間」計量`ds²=ξ^(-2/n)Σdx_i²+ξ^(-2)dξ²`のキリング
  ベクトル場も構成できる。ただし4節の「XORが対称性を壊すから勾配降下が
  難しい」は仮説であって証明ではない旨、本文中に明記。詳細は
  `GAUGE_THEORY_OF_ADDER_CHAIN.md`。
- **`examples/cuda/`(v0.76)** — `matrix_backend.sp2_density_matrix`(SP2純化=
  T=0密度行列を行列積だけで作る線形スケーリングDFT法)の**GPU版**(cuBLAS,
  FP32)。SP2はmatmul主体なのでGPU向き、という点の存在証明。RTX 4060で
  n=2048が収束(trace厳密・冪等性2.96e-5)、cuBLAS SGEMMはnaive CPU三重ループ
  比~1190x。**正直な限界**: FP32なので冪等性は~1e-5止まり(numpy FP64は~1e-15)、
  CPU基準が最適化BLASでないので"1190x"は誇張気味、密行列O(N³)のまま(真のO(N)は
  疎行列化が要る)——速度優位の主張ではなく「GPUでSP2が正しく走る」存在証明。
  CUDA Toolkit+GPU必須のためpytestには含めない。詳細は`examples/cuda/README.md`。

## 可視化

![kappalogic overview](https://github.com/user-attachments/assets/34c1ae48-4430-4f56-9d0e-af0ef6f047fd)

左: OR(a,b)の誤分類地図(命題8)。a,bが両方とも明らかに非ゼロなのに、広い範囲でOR≈0(誤り)になる領域があり、その境界(u+v=一定、黒破線)がぴったり一致することが一目で分かる。
右: NOT合成塔(命題16)とANDの共鳴点のξ→0スケーリング則の比較(log-logプロット)。ゲートによって傾き(スケーリング指数)がはっきり違うことが視覚的に分かる。

![tanh smoothness as xi varies](https://github.com/user-attachments/assets/30e62061-cce7-41fe-b4a8-dcc90b8405b0)

`kappa(x/ξ)=tanh(x/ξ)`が、ξを小さくするにつれて滑らかな曲線から鋭い階段関数(符号関数)へ収束していく様子。

生成スクリプト: `visualization/overview_figure.py`(`pip install -e .`後に
`python visualization/overview_figure.py`で`kappalogic_overview.png`が
生成される)。

## テスト・サンプル実行

```bash
pytest tests/ -v   # torchが無い環境ではtorch関連のテストは自動でskip
python examples/heat_equation_demo.py  # 他、examples/内のデモも実行可能
```
