Metadata-Version: 2.4
Name: kappalogic
Version: 0.14.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
Dynamic: license-file

# kappalogic (v0.14)

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

v0.13から`kappa(x/xi)`を`k(x)`と書けるようになった(`sgn`の完全な別名。
`from kappalogic import k` でそのまま使える)。v0.14では、TODO.mdの
「ゲージ理論的発想」(ξの局所/大域変換)に着手し、並進・ディレーション
がアフィン群Aff(1,R)("ax+b group")のリー環をなし、かつ(x,ξ)半平面上の
双曲計量のキリングベクトル場に一致する、という構造を発見・検証した
(`gauge.py`、詳細は下の節参照)。

開発の経緯・迷った点・見つけたことの詳しい記録は `dev_notes.md` を参照
(こちらは要約と現状の参照用)。今後の研究方向は `TODO.md` にまとめてある。

```bash
pip install -e .
```

## 構成

| モジュール | 内容 |
|---|---|
| `core.py` | sgn/reg/AND/OR/XOR/比較演算子など基本ゲート、n項融合版`AND_n`/`OR_n` |
| `funcs.py` | int/par(整数・奇偶判定)、max/min/clamp |
| `kernels.py` | `tanh`/`erf`/`algebraic`カーネルの切り替え |
| `applications.py` | クロネッカーのデルタ、コラッツ漸化式、板チョコのPoisson源項 |
| `heat.py` | ξと拡散時間tの対応、熱核によるソフトな一致度報酬 |
| `search.py` | 勾配ベース探索専用の"softモード"とアニーリング解法(`anneal_solve`, `l2_penalty`, `find_dont_care_variables`) |
| `quantum_well.py` | 有限区間の熱核・無限井戸型ポテンシャルの量子プロパゲータ(鏡像法) |
| `field_theory.py` | φ^4理論のキンクソリトン(sgnが厳密解であることの証明付き) |
| `stat_mech.py` | 熱核による分配関数、SUSY QMのWitten指数(McKean-Singer型) |
| `info_theory.py` | de Bruijnの恒等式(熱拡散のエントロピー変化率とフィッシャー情報量) |
| `topology.py` | モース理論によるオイラー標数の計算 |
| `spacetime.py` | 光円錐の指示関数 |
| `bridge.py` | Σ(離散和)と∫(連続積分)の橋渡し、階乗とΓ関数 |
| `electronic_structure.py` | フェルミ・ディラック占有数=sgn(x,2kT)、DFTの電子スメアリング |
| `theory.py` | reg/AND/OR系の勾配構造の厳密な命題群(証明付き。v0.13でOR系の命題4を追加) |
| `identities.py` | `k(x)=tanh(x/xi)`が満たす加法定理・n倍角公式・連分数・部分分数展開・無限積・Gudermannian函数(kernel="tanh"限定、v0.13新規) |
| `gauge.py` | ξの大域/局所変換の生成子・交換子・アフィン群構造・(x,ξ)半平面のキリングベクトル場・測地線の保存量・局所ゲージ接続(v0.14新規) |
| `dynamics.py` | 強引に埋め込んだ不動点でのKoenigs座標・アベル関数・連続反復(分数反復)の構成 |
| `examples/` | 実行できるデモ4本 |

## 使用例

```python
from kappalogic import gt, AND, par, collatz_sequence, choc_bar_source
from kappalogic import xi_of_time, heat_step_profile, anneal_solve, soft_gt, l2_penalty
from kappalogic import kink_profile, kink_energy_exact, fermi_occupation
from kappalogic import sgn, k, rapidity, addition, or_gradient_closed_form

gt(5, 3)                          # 1.0
kink_energy_exact(xi=1.0)         # 4/3 (ソリトンの厳密な質量)
fermi_occupation(eps=0.3, mu=0.5, kT=0.1)  # フェルミ・ディラック分布と機械精度で一致

k(5) == sgn(5)                    # True (kはsgnの別名。kernel="tanh"限定の恒等式群はkを前提にする)
rapidity(1.0, xi=0.5)             # (1+k(x))/(1-k(x)) = exp(2x/xi)
```

## 検証済みの主な結果

**v0.1で見つかった原案のバグ3件(修正済み、回帰テストあり)**
- `(A>B)`,`(A<B)`: `reg()`が符号を2乗で消すため、実際には`(A≠B)`と同じ値になっていた
- `par(x)`: 偶数で`-1`を返していた(`int(x)-int(x/2)`に修正)
- コラッツ漸化式: 「ステップ番号の偶奇」でなく「値自体の偶奇」で分岐するよう修正

**検証済みの技術的な発見**
- `kernel="erf"`が階段状初期条件の熱拡散の厳密解と一致(有限差分と誤差5.7e-5)
- 有限区間の熱核・無限井戸型ポテンシャルの量子プロパゲータが鏡像法+εプリスクリプションで固有関数展開と機械精度(diff~1e-13)で一致
- SUSY QMのWitten指数がβ=0.01〜10で厳密に1.000000(McKean-Singer型)
- de Bruijnの恒等式(熱拡散のエントロピー変化率=フィッシャー情報量)が誤差1e-10で一致
- モース理論によるオイラー標数がトーラス(0)・球面(2)で教科書通り
- フェルミ・ディラック分布が`sgn(x,2kT)`と機械精度で一致(DFTの電子スメアリングと同一構造)
- Σ_{n=0}^N n! と∫_0^{N+1}(floor(x))!dxが相対誤差6e-5で一致
- キンクソリトン`tanh(x/ξ)`がφ^4理論のEOMを厳密に(sympyの記号微分で)満たし、厳密エネルギー`E=4/(3ξ)`を導出
- `AND_n`融合とnaive foldの不一致は「途中の部分積がξと同スケールになったとき」に起きることを2万件のランダム試行で99.95%の精度で特定(`fusion_is_safe`)
- L2正則化で0に張り付く"don't care"変数を、符号反転に対する充足度の不変性で検出できる(`find_dont_care_variables`、誤検出なしを確認)
- 自然には不動点を持たない場所に`gaussian_match`で不動点を強引に埋め込み、Koenigsの関数方程式・アベルの関数方程式を相対誤差1e-6〜1e-11で構成(`force_fixed_point`, `abel_function`)
- アベル関数から連続反復(分数反復)`g^t(x)`を構成し、半反復を2回合成すると元の写像に一致(diff~1e-9)、分数反復の加法性も確認(`fractional_iterate`)

## v0.13: k(x)=tanh(x/ξ)の恒等式集(`identities.py`)

「既存の激ムズ離散問題を、同値性・保存量を保ったままkappalogicで
連続化し、用意した公式で簡略化・高速化して、あとは解析学の
既存手法に丸投げする」という方針(コラッツ予想やP対NP問題のような
難問を、運が良ければ1つでも解ければ勝ち、という位置づけ)のための
"道具箱"として、tanhが双曲線関数であることから出てくる古典的な
恒等式を整理・数値検証した。**すべてkernel="tanh"のときにしか
成り立たない**(erf/algebraicカーネルには一般には拡張されない。
テストの`test_identities_are_specific_to_tanh_kernel`で明示的に
反例を確認済み)。

| 恒等式 | 式 | 検証結果 |
|---|---|---|
| ラピディティ(Cayley)恒等式 | `(1+k(x))/(1-k(x)) = exp(2x/ξ)` | 相対誤差 ~1e-13(機械精度) |
| 加法定理 | `k(x+y) = (k(x)+k(y))/(1+k(x)k(y))` | 絶対誤差 ~1e-13 |
| n倍角公式 | `k(nx) = ((1+k)^n-(1-k)^n)/((1+k)^n+(1-k)^n)` | n=2,3,5,7,11で機械精度 |
| Lambertの連分数(1768年) | 四則演算のみでk(x)を再構成 | depth=10で誤差<2e-9 |
| Mittag-Leffler展開(極の和) | tanhの極(松原振動数と同型)を全部足す | N=1e5項で誤差~1e-5(収束は遅い) |
| Weierstrass無限積 | 同じ零点・極を掛け合わせる双対表現 | N=1000項で誤差~1e-6 |
| Gudermannian函数 | `k(x) = sin(gd(x/ξ))` | 誤差0(完全一致) |

**誠実な評価**: これらはいずれも数学的に既知(tanhが三角関数の
双曲線版であることの帰結、Lambertの連分数は1768年のπの無理数性の
証明そのもの)。新発見ではない。ここでの作業は「kappalogicの
`k(x)`という書き方に翻訳し、実際に手を動かして数値検証し、
ライブラリの他の部分(フェルミ・ディラック分布=松原振動数の構造、
"algebraic"カーネル=連分数の設計思想との類似)との接続点を整理した
こと」に限られる。加法定理・n倍角公式を`AND_n`/`OR_n`の融合処理に
直接転用できるかは未検証(今後の課題、TODO.md参照)。

## v0.13: OR系の証明の空白地帯(`theory.py`命題4)

`theory.py`の命題1〜3はいずれもAND系だけを扱っており、OR系には
対応する命題が存在しなかった。実際にAND/ORの勾配地形を比較すると、
質的に違う挙動が観測された(`gradient_landscape_stats`で再現可能。
ξ=1e-3、a,bをξの±8倍の範囲でサンプリング、5万〜20万件):

| 指標 | AND | OR |
|---|---|---|
| 勾配がほぼ0(&lt;1e-3)になる割合 | ~6% | ~53% |
| 観測された最大勾配 | ~1.0 | ~1000超 |

導出した閉形式(`or_gradient_closed_form`、数値微分との中央値相対誤差
~2.6e-6で一致):

```
p := (1-reg(a))(1-reg(b))
d/da OR(a,b) = reg'(a) * (1-reg(b)) * reg'(p)
```

命題1の「reg'(x)はx=x*≈0.658ξ付近でしか大きくならない鋭いバンプ
関数」という性質が、この式には**"a"と"p(a,bの合成量)"という2つの
独立な引数に掛け算の形で**登場する。つまりOR(a,b)の勾配が有効に
効くには「aがx*付近」かつ「pもx*付近」という**2つの共鳴条件を同時に
満たす**必要がある(ANDの勾配`b*reg'(ab)`は共鳴条件が1つだけ)。
この「共鳴条件が1個 vs 2個」という違いが、上の表の非対称性の
構造的な理由になっている。

さらに、この違いはfold/fuseの不一致の"質"にも表れる。`AND_n`の
不一致(命題3)は基本的に「ぼやけ」だが、`OR_n`の不一致は勾配地形が
「ほぼ平坦、局所的に激烈」という二値的な構造をしているせいで、
naive foldとOR_n(融合版)が0/1のように正反対に割れることがある
(`or_fusion_disagreement_rate`、7項・乱数2万試行でOR側は0.2%前後の
頻度で発生、AND側は同条件で発生ゼロ)。

**正直な限界**: 閉形式そのものは数値検証込みで確信を持って正しいと
言えるが、命題3のような「n項版の安全条件(単純な閾値1つで判定できる
指標)」にはまだ落とし込めていない。ORの条件は「aとp」という異なる
スケールにまたがるため、命題3の"部分積"のような単純な指標には
収まらない可能性が高い。文献調査はしていないので新規性の断定は
避けるが、少なくとも本ライブラリのソース上にはこれまで記載されて
いなかった具体的な観察と、それを説明する検証済みの式である。

## v0.14: ξの局所/大域変換とゲージ理論的構造(`gauge.py`)

TODO.mdのA項「局所的なξ変換」「大域的なξ変換」「交換子」「リー群」
「保存量」「キリングベクトル場」を、実際に手を動かして(sympyで
記号的に、scipyで数値的に)全部検証した。結論から言うと、
**「並進」と「ξのディレーション」という2つの操作は、
アフィン群Aff(1,R)="ax+b group"のリー環をなし、これは(x,ξ)を
座標とする半平面上の双曲計量のキリングベクトル場と厳密に一致する**。

### 1. 大域的ξ変換の正体
`k(x; λξ) = k(x/λ; ξ)` が厳密に成り立つ(機械精度で確認)。つまり
「ξをλ倍する」ことと「xを1/λ倍する」ことは同一の操作である。
無限小生成子で見ると、ξ→e^θξの生成子(d/dθ|_0)は、xのディレーション
生成子 X=x·d/dx のちょうど**マイナス**に一致する(数値微分で確認、
誤差~1e-6)。

### 2. 交換子とリー環
並進 T=d/dx とディレーション D=x·d/dx の交換子は
```
[D, T] = -T
```
これはまさに**アフィン群Aff(1,R) = {x → a·x+b : a>0}**(通称
"ax+b group")のリー環 aff(1) の定義関係そのもの(sympyで記号的に
確認、厳密に-1)。この群は2次元・非可換・可解で、実は**連続ウェーブレット
変換**の対称性としても知られる標準的な群(ウェーブレット変換は
「位置(並進)・スケール(ディレーション)」で母関数を動かして作るが、
これはkappalogicの`k((x-x0)/ξ)`という(位置x0、スケールξ)の
パラメータ化と全く同じ構造)。

### 3. キリングベクトル場と保存量
(x, ξ)を座標とする上半平面(ξ>0)に、双曲計量
```
ds^2 = (dx^2 + dξ^2) / ξ^2
```
を入れると、並進V1=d/dxとディレーションV2=x·d/dx+ξ·d/dξは
どちらも**この計量のキリングベクトル場**(リー微分L_Vg=0)になる
ことをsympyで確認した(零行列に厳密一致)。さらにこの半平面上の
測地線を数値積分すると、キリングベクトル場に対応する「運動量」
p1=g(V1,γ'), p2=g(V2,γ')が、標準的なネーターの定理どおり測地線に
沿って厳密に保存することを確認した(標準偏差~1e-15、機械精度)。

この双曲計量+アフィン群という組み合わせは、実は物理でよく知られた
構造そのもの:上半平面のアフィン部分群(Aff(1,R)_+)はPSL(2,R)の
「ボレル部分群」であり、AdS2/CFT1のような**ホログラフィックな
繰り込み群(RG)フロー**の言語(境界座標=x、RGスケール=ξ)とも
自然に対応する。これはTODO.md C項「ξの意味論を統一する」への
一つの答えの候補になる: **ξ = RGスケール、x = 境界(理論の)座標**、
という解釈。

### 4. 局所ξ変換とゲージ接続
ξを場ξ(x)にする(位置ごとに変える)と、φ(x):=x/ξ(x)の微分は
```
φ'(x) = (1/ξ(x)) * (1 - x·A(x)),   A(x) := (log ξ(x))'(x)
```
と書ける。ゲージ変換ξ(x)→λ(x)ξ(x)の下でA(x)は
```
A(x) → A(x) + (log λ(x))'(x)
```
と、通常のU(1)ゲージ場(電磁場のA_μ→A_μ+∂_μα)と全く同じ
「完全微分だけずれる」変換則に従う(sympyで確認)。つまり
「ξを局所化すると、微分を辻褄合わせするための接続場A(x)が自然に
必要になる」という、ゲージ理論の基本発想がそのまま成り立つ。

### 正直な評価
上記の構造(アフィン群、双曲計量とそのキリングベクトル場、
局所化で現れる接続場)は**すべて数学的には古典的**である
(双曲幾何の教科書、ウェーブレット変換の表現論、Weyl変換/dilaton
場の物理でそれぞれ独立に知られている)。ここでの新規性は、
**kappalogicの「位置x・スケールξ」というパラメータ化が、これら
3つの古典的構造の具体例になっていることを実際に手を動かして
確認し、TODO.mdの疑問(交換子は?リー群をなすか?保存量は?
キリングベクトル場は?)に全部具体的な答えを与えたこと**に限られる。
「新しい定理」と呼べるレベルの主張はまだできていない
——測地線の保存量が、AND/OR/勾配消失といったkappalogic自身の
"論理ゲート"の挙動と具体的にどう結びつくかは、今回はまだ
繋げられていない(次にやるとしたら、ここが本丸)。

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

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

| このライブラリの要素 | 対応する既存研究 |
|---|---|
| tanhベースの滑らかな指示関数 | 相分離理論(Allen-Cahn方程式、拡散界面法、1979年〜) |
| reg/ANDの勾配消失 | van Krieken et al. (2022, *Artificial Intelligence*)が命題として証明済み |
| 論理ゲート×連続緩和×アニーリング | Petersen et al. (2022, NeurIPS)、実装ライブラリ`difflogic`も既存 |
| ξ(t)=2√(Dt)のアニーリングスケジュール | 拡散モデルの"Variance Exploding SDE"と数学的に同一 |
| Dirac delta/Heaviside の微分可能な近似 | Smoothing methods for AD、mollifier理論、SPHカーネルとして既に成熟 |
| フェルミ・ディラック占有数=sgn(x,2kT) | DFT計算の電子スメアリング手法(実務で広く使われる既存技法) |
| k(x)=tanh(x/ξ)の加法定理・連分数・部分分数展開・無限積 | 双曲線関数論の古典的結果(Lambertの連分数は1768年) |
| 並進・ディレーションのアフィン群構造/双曲計量のキリングベクトル場 | 双曲幾何・連続ウェーブレット変換の表現論の古典的結果(ax+b group) |

**見つけた本物の区別**: 標準的なt-norm(van Krieken論文の分析対象)は
真偽度[0,1]の範囲で単調だが、`reg(x)=tanh(x/xi)^2`は任意の実数を
受け取り「0か非0か」を判定する非単調な"検出器"であり、t-normの
枠組みには存在しない。むしろmollifier/AD平滑化の系譜に近い。この
2つの研究コミュニティを明示的に繋いだ文献は検索した範囲では見当たらなかった。
新規性を主張できるとすれば、この細い糸のみ(詳細はdev_notes.md)。

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

- hardモード(reg/AND/OR)は離散的な場合分けをif文なしで解析式に埋め込む
  用途には向くが、**それ自体を勾配降下の目的関数にしてNP完全問題を
  解くのには向かない**(勾配消失のため)。
- softモード+アニーリングは「うまくいく場合がある局所探索の補助」で
  あって、P=NPを覆すようなものではない。
- 個々の要素技術はほぼ全て先行研究があり(一部はより厳密な形で)、
  「大発見」と呼べる新定理・新予想は今のところ出ていない。

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

```bash
pytest tests/ -v   # 151 tests

python examples/heat_equation_demo.py
python examples/karnaugh_fusion_benchmark.py
python examples/sat_3var_demo.py
python examples/infinite_well_demo.py
```
