#vlab — 向量空間與有限維內積空間之組合式演算法庫(MoonBit)

    以 MoonBit(v0.1.20260920 工具鏈)實作向量空間與有限維內積空間之公理化框架, 將十二類具體空間以「字典記錄」統一,並提供空間組合子(直和、函數空間), 使任意空間可迭代組合。全庫 228 條編號演算法,其中 82 條帶可執行義務自證, 另有 152 項定理級白盒測試。零第三方依賴(僅用語言內建與官方工具鏈)。

    #覆蓋之具體空間

    空間檔案字典
    標準歐幾里得空間 Rⁿeuclid.mbteuc_ip(n)
    矩陣空間 M_{m×n}(Frobenius)matrix.mbt 等經 mat_frob_inner
    對稱矩陣空間 Sym(n)symm.mbtsym_ip(n)
    對角矩陣空間 Diag(n) ≅ Rⁿdiag.mbtdiag_ip(n)
    複空間 Cⁿ(Hermitian 內積)hermitian.mbtcvec_real_ip(n)
    Hermitian 矩陣空間hermitian.mbtcmat_jacobi_hermitian
    多項式空間 Pₙ(L²[0,1] 精確內積)poly.mbtpoly_ip(n)
    多變量多項式空間 R[x₁,…,xₙ]mpoly.mbtmpoly_ip(n)
    有限集合上函數空間 Fun(X,F)(加權 ℓ²、DFT)fspace.mbtfn_ip(n,w)
    張量空間 R^m ⊗ R^ntensor.mbttensor_ip(m,n)
    外代數 Λ^k(Rⁿ)exterior.mbtext_ip(n,k)
    對偶空間 V*dual.mbtdual_ip(n)
    四元數空間 Hⁿ(實內積 ⟨q,p⟩=Re(q̄p))quat.mbthvec_ip(n)

    #空間組合

    • ips_prod(a, b) / ips_prod_weighted — 直和 V ⊕ W(可迭代)
    • fn_space_ip(n, w, ip) — 函數空間 Fun(X, V):V 為任意內積空間, 例如 Fun(X, Sym(2))、Fun(X, R²⊕R²)
    • map_direct_sum — 線性映射直和;tensor_of_maps — 映射張量積

    #衍生演算法摘錄(完整見 ALGORITHMS.md)

    • 通用內積演算法:範數、角度、正交投影、鏡射、Gram–Schmidt、 Fourier 座標重構、Bessel 殘差、Gram 行列式、平行多面體體積
    • 矩陣:行列式(部分主元)、RREF、秩、逆、LU、Cholesky、QR、 Jacobi 對角化、冪迭代、列/行/零空間基、最小二乘、Kronecker 積、矩陣指數
    • 多項式:Horner、導數/積分、帶餘除法、GCD(歐幾里得)、 Lagrange/Newton 插值、複合、Durand–Kerner 全複根、移位 Legendre
    • 函數空間:循環差分、DFT/IDFT、循環卷積、Parseval
    • 外代數:外積、Hodge 星、內縮、外積行列式、叉積導出、面積/體積
    • 四元數:Hamilton 乘法、軸角↔四元數、三維旋轉、Hⁿ 實 Gram–Schmidt

    #運行

    moon test # 152 項定理/公理自證測試 moon run cmd/main # 執行 82 條演算法義務自證並輸出報告

    #義務自證結構

    1. 公理層(*_wbtest.mbt):每個具體實例驗證向量空間八條公理 / 內積三條公理;
    2. 定理層:Cauchy–Schwarz、三角不等式、勾股、Parseval、Cayley–Hamilton、 譜定理、秩-零度、det 乘法性、Riesz、Bezout、Clairaut、歐拉齊次函數定理等;
    3. 註冊表層(registry.mbt):82 條演算法各帶自證閉包,registry_run() 回傳 (通過數, 總數, 失敗列表),由 registry_wbtest 強制全部通過。

    #突變測試(自研,零依賴)

    python3 tools/mutate.py # MAX_MUTANTS=400 固定種子抽樣 cat tools/mutation_report.json # 結果

    突變算子:+↔−、*↔/、<↔<=、>↔>=、&&↔||、數值字面量邊界。 分類:UNVIABLE(moon check 拒絕)/KILLED(moon test 失敗)/SURVIVED。 擊殺率 = KILLED/(KILLED+SURVIVED)。registry.mbt 屬測試預言(oracle),按慣例排除。

    AlgoEntry

    pub struct AlgoEntry {
    id : String
    name : String
    check : () -> Bool
    }
    演算法條目
    pub struct C {
    re : Double
    im : Double
    } derive(Eq,
    Debug
    )
    複數:re + im·i

    CMat

    pub struct CMat {
    rows : Int
    cols : Int
    data : Array[C]
    }
    複矩陣

    DualVec

    pub struct DualVec {
    coef : Array[Double]
    } derive(Eq,
    Debug
    )
    對偶向量(線性泛函,行向量表示)

    ExtVec

    pub struct ExtVec {
    n : Int
    k : Int
    data : Array[Double]
    } derive(Eq,
    Debug
    )
    k-向量(Λ^k(R^n) 之元素)

    HVec

    pub struct HVec {
    comps : Array[Quat]
    } derive(Eq,
    Debug
    )
    H^n 之元素

    IPSp

    pub struct IPSp[V] {
    sp : VecSp[V]
    inner : (V, V) -> Double
    }
    內積空間字典 = 向量空間 + 內積

    MPoly

    pub struct MPoly {
    nvars : Int
    terms : Array[(Array[Int], Double)]
    }
    多變量多項式

    Mat

    pub struct Mat {
    rows : Int
    cols : Int
    data : Array[Double]
    } derive(Eq,
    Debug
    )
    矩陣(列主序)

    Quat

    pub struct Quat {
    w : Double
    x : Double
    y : Double
    z : Double
    } derive(Eq,
    Debug
    )
    四元數 q = w + xi + yj + zk

    Tensor

    pub struct Tensor {
    m : Int
    n : Int
    data : Array[Double]
    } derive(Eq,
    Debug
    )
    張量(R^m ⊗ R^n 之元素)

    VecSp

    pub struct VecSp[V] {
    zero : V
    add : (V, V) -> V
    neg : (V) -> V
    scale : (Double, V) -> V
    }
    實向量空間字典

    cabs

    fn cabs(a : C) -> Double
    z

    cadd

    fn cadd(a : C, b : C) -> C
    加法

    carg

    fn carg(a : C) -> Double
    輻角主值

    cconj

    fn cconj(a : C) -> C
    共軛

    cdiv

    fn cdiv(a : C, b : C) -> C
    除法

    ceq_eps

    fn ceq_eps(a : C, b : C, eps : Double) -> Bool
    近似相等

    cexp

    fn cexp(a : C) -> C
    指數函數 e^{a}

    cfrom_real

    fn cfrom_real(x : Double) -> C
    實數嵌入
    fn ci() -> C
    i

    cinv

    fn cinv(a : C) -> C
    乘法逆元 z⁻¹ = z̄/|z|²

    cmat_dagger

    fn cmat_dagger(m : CMat) -> CMat
    H-15 共軛轉置(dagger)

    cmat_get

    fn cmat_get(m : CMat, i : Int, j : Int) -> C
    H-13 取元素

    cmat_is_hermitian

    fn cmat_is_hermitian(m : CMat, eps : Double) -> Bool
    H-16 Hermitian 判定 A = A†

    cmat_jacobi_hermitian

    fn cmat_jacobi_hermitian(m : CMat, max_sweeps : Int) -> (Array[Double], CMat)
    H-20 Hermitian 矩陣特徵值(複 Jacobi 旋轉,非對角元消去) 回傳實特徵值陣列與酉矩陣 Q(行為特徵向量)

    cmat_mul

    fn cmat_mul(a : CMat, b : CMat) -> CMat
    H-18 複矩陣乘法

    cmat_new

    fn cmat_new(rows : Int, cols : Int) -> CMat
    H-12 複零矩陣

    cmat_rayleigh

    fn cmat_rayleigh(m : CMat, x : Array[C]) -> Double
    H-19 複 Rayleigh 商(Hermitian 時為實數)

    cmat_set

    fn cmat_set(m : CMat, i : Int, j : Int, v : C) -> Unit
    H-14 設元素

    cmat_unitary_error

    fn cmat_unitary_error(q : CMat) -> Double
    H-21 酉性誤差 ‖Q†Q − I‖_F

    cmat_vec

    fn cmat_vec(m : CMat, x : Array[C]) -> Array[C]
    H-17 複矩陣-向量乘

    cmul

    fn cmul(a : C, b : C) -> C
    乘法 (a+bi)(c+di) = (ac−bd) + (ad+bc)i

    cneg

    fn cneg(a : C) -> C
    負元

    cnew

    fn cnew(re : Double, im : Double) -> C
    構造

    cnorm2

    fn cnorm2(a : C) -> Double
    |z|²

    comb_count

    fn comb_count(n : Int, k : Int) -> Int
    X-1 組合數 C(n, k)

    comb_index

    fn comb_index(combs : Array[Array[Int]], c : Array[Int]) -> Int
    X-2 組合 → 分量索引

    comb_list

    fn comb_list(n : Int, k : Int) -> Array[Array[Int]]
    列舉全部遞增 k-組合(字典序)

    cone

    fn cone() -> C
    1

    cpolar

    fn cpolar(r : Double, theta : Double) -> C
    極式 r·e^{iθ}

    cscale

    fn cscale(s : Double, a : C) -> C
    實純量乘法

    csqr

    fn csqr(a : C) -> C
    平方

    csqrt

    fn csqrt(a : C) -> C
    主平方根

    cstr

    fn cstr(a : C) -> String
    顯示

    csub

    fn csub(a : C, b : C) -> C
    減法

    cvec_add

    fn cvec_add(a : Array[C], b : Array[C]) -> Array[C]
    H-2 C^n 加法

    cvec_cscale

    fn cvec_cscale(c : C, a : Array[C]) -> Array[C]
    H-4 C^n 複純量乘法

    cvec_inner

    fn cvec_inner(a : Array[C], b : Array[C]) -> C
    H-6 Hermitian 內積 ⟨u,v⟩ = Σ conj(uᵢ)vᵢ

    cvec_is_orthogonal

    fn cvec_is_orthogonal(a : Array[C], b : Array[C], eps : Double) -> Bool
    H-10 正交性(複)

    cvec_neg

    fn cvec_neg(a : Array[C]) -> Array[C]
    H-3 C^n 負元

    cvec_norm

    fn cvec_norm(v : Array[C]) -> Double
    H-8 範數

    cvec_norm2

    fn cvec_norm2(v : Array[C]) -> Double
    H-7 實值二次範數 ⟨v,v⟩ ∈ R

    cvec_orthonormal

    fn cvec_orthonormal(vs : Array[Array[C]], eps : Double) -> Array[Array[C]]
    H-11 複 Gram–Schmidt 標準正交化

    cvec_real_ip

    fn cvec_real_ip(n : Int) -> IPSp[Array[C]]
    H-9 C^n 之內積空間字典(視為實內積空間:取內積實部)

    cvec_scale

    fn cvec_scale(s : Double, a : Array[C]) -> Array[C]
    H-5 C^n 實純量乘法(視為實向量空間)

    cvec_zero

    fn cvec_zero(n : Int) -> Array[C]
    H-1 C^n 零向量

    czero

    fn czero() -> C
    0

    diag_add

    fn diag_add(a : Array[Double], b : Array[Double]) -> Array[Double]
    D-2 對角加法(逐點)

    diag_apply

    fn diag_apply(a : Array[Double], x : Array[Double]) -> Array[Double]
    D-6 作用於向量:diag(a)·x

    diag_det

    fn diag_det(a : Array[Double]) -> Double
    D-7 行列式 = 對角線之積

    diag_dim

    fn diag_dim(n : Int) -> Int
    D-1 對角空間維數

    diag_embed

    fn[V] diag_embed(v : V) -> (V, V)
    PR-4 對角嵌入 Δ : V → V ⊕ V,v ↦ (v, v)

    diag_inner

    fn diag_inner(a : Array[Double], b : Array[Double]) -> Double
    D-5 對角內積 ≙ Σ aᵢbᵢ(Frobenius 內積的限制)

    diag_inv

    fn diag_inv(a : Array[Double]) -> Array[Double]?
    D-8 逆(無零分量時)

    diag_ip

    fn diag_ip(n : Int) -> IPSp[Array[Double]]
    D-10 Diag(n) 內積空間字典

    diag_mul

    fn diag_mul(a : Array[Double], b : Array[Double]) -> Array[Double]
    D-4 對角矩陣乘法 ≙ 逐點積

    diag_scale

    fn diag_scale(c : Double, a : Array[Double]) -> Array[Double]
    D-3 對角純量乘法

    diag_spectral_radius

    fn diag_spectral_radius(a : Array[Double]) -> Double
    D-11 譜半徑(對角矩陣之算子範數)

    diag_to_mat

    fn diag_to_mat(a : Array[Double]) -> Mat
    D-9 轉為完整矩陣(與 Diag(n) → M_n 之嵌入)

    diag_trace

    fn diag_trace(a : Array[Double]) -> Double
    D-12 跡 = 分量和

    double_dual_action

    fn double_dual_action(v : Array[Double], phis : Array[DualVec]) -> Array[Double]
    D-12 雙重對偶嵌入 J : V → V**(有限維時為同構,自證 J = id)

    dual_action

    fn dual_action(phi : DualVec, v : Array[Double]) -> Double
    D-2 泛函作用 φ(v)

    dual_add

    fn dual_add(a : DualVec, b : DualVec) -> DualVec
    D-3 對偶加法

    dual_basis

    fn dual_basis(n : Int) -> Array[DualVec]
    D-7 對偶基(對標準基即 δᵢ = eᵢ*)

    dual_in_annihilator

    fn dual_in_annihilator(phi : DualVec, span_gen : Array[Array[Double]], eps : Double) -> Bool
    D-13 核之判定:φ ∈ (span S)° ⟺ ∀s∈S: φ(s)=0(回傳是否屬零化子)

    dual_inner

    fn dual_inner(a : DualVec, b : DualVec) -> Double
    D-5 對偶內積(標準歐氏度量下 V ≅ V* 之誘導內積)

    dual_ip

    fn dual_ip(n : Int) -> IPSp[DualVec]
    D-6 對偶空間字典(n 維)

    dual_map

    fn dual_map(a : Mat) -> Mat
    D-10 對偶映射(拉回):線性映射 A : V → W 誘導 A* : W* → V*,矩陣表示為轉置。輸入 A(m×n 行主序, 作用 V=R^n → W=R^m),輸出 A* 之矩陣(n×m)

    dual_pairing_matrix

    fn dual_pairing_matrix(phis : Array[DualVec], n : Int) -> Mat
    D-11 對偶配對矩陣:Pᵢⱼ = φᵢ(eⱼ)(對偶基與基之配對)

    dual_scale

    fn dual_scale(c : Double, phi : DualVec) -> DualVec
    D-4 對偶純量乘法

    dual_zero

    fn dual_zero(n : Int) -> DualVec
    D-1 零泛函

    euc_add

    fn euc_add(a : Array[Double], b : Array[Double]) -> Array[Double]
    E-2 逐點加法

    euc_basis

    fn euc_basis(n : Int) -> Array[Array[Double]]
    E-8 標準基 {e_0, ..., e_{n-1}}

    euc_cross3

    fn euc_cross3(a : Array[Double], b : Array[Double]) -> Array[Double]
    E-10 三維叉積

    euc_eq_eps

    fn euc_eq_eps(a : Array[Double], b : Array[Double], eps : Double) -> Bool
    E-14 近似相等

    euc_hadamard

    fn euc_hadamard(a : Array[Double], b : Array[Double]) -> Array[Double]
    E-11 Hadamard 逐點積

    euc_inf_norm

    fn euc_inf_norm(a : Array[Double]) -> Double
    E-16 最大絕對值分量(∞-範數)

    euc_inner

    fn euc_inner(a : Array[Double], b : Array[Double]) -> Double
    E-5 標準內積(點積)Σ aᵢbᵢ

    euc_ip

    fn euc_ip(n : Int) -> IPSp[Array[Double]]
    E-7 R^n 內積空間字典

    euc_max_component

    fn euc_max_component(a : Array[Double]) -> Double
    E-15 最大值分量

    euc_mean

    fn euc_mean(a : Array[Double]) -> Double
    E-13 均值

    euc_neg

    fn euc_neg(a : Array[Double]) -> Array[Double]
    E-3 負元

    euc_scale

    fn euc_scale(c : Double, a : Array[Double]) -> Array[Double]
    E-4 純量乘法

    euc_sp

    fn euc_sp(n : Int) -> VecSp[Array[Double]]
    E-6 R^n 向量空間字典

    euc_sum

    fn euc_sum(a : Array[Double]) -> Double
    E-12 分量總和(線性泛函)

    euc_zero

    fn euc_zero(n : Int) -> Array[Double]
    E-1 零向量

    evec

    fn evec(n : Int, i : Int) -> Array[Double]
    E-9 第 i 個標準基向量

    ext_cross3

    fn ext_cross3(u : Array[Double], v : Array[Double]) -> Array[Double]
    X-13 R³ 叉積由外代數導出:u × v = ⋆(u ∧ v)

    ext_det

    fn ext_det(vectors : Array[Array[Double]]) -> Double
    X-12 頂層外積判定行列式:v_1 ∧ … ∧ v_n = det(V)·e₁∧…∧e_n

    ext_from_vec

    fn ext_from_vec(n : Int, v : Array[Double]) -> ExtVec
    X-5 向量 v ∈ R^n 嵌入 Λ^1

    ext_hodge_star

    fn ext_hodge_star(a : ExtVec) -> ExtVec
    X-10 Hodge 星 ⋆ : Λ^k → Λ^{n−k}(標準定向)

    ext_inner

    fn ext_inner(a : ExtVec, b : ExtVec) -> Double
    X-8 Λ^k 之誘導內積(單形分量逐點積;對一般元素用 Gram 行列式性質)

    ext_interior

    fn ext_interior(v : Array[Double], a : ExtVec) -> ExtVec
    X-11 內縮 i_v : Λ^k → Λ^{k−1}(與向量之內積)

    ext_ip

    fn ext_ip(n : Int, k : Int) -> IPSp[ExtVec]
    X-14 Λ^k 之內積空間字典

    ext_norm

    fn ext_norm(a : ExtVec) -> Double
    X-9 k-向量範數(= 對應平行體之體積,當為純量時)

    ext_parallelogram_area

    fn ext_parallelogram_area(u : Array[Double], v : Array[Double]) -> Double
    X-15 兩向量張成平行四邊形之面積 = ‖u ∧ v‖

    ext_wedge

    fn ext_wedge(a : ExtVec, b : ExtVec) -> ExtVec
    X-7 一般外積:α ∈ Λ^p ∧ β ∈ Λ^q → Λ^{p+q}

    ext_wedge_vecs

    fn ext_wedge_vecs(n : Int, u : Array[Double], v : Array[Double]) -> ExtVec
    X-6 外積 u ∧ v(兩個 1-向量 → 2-向量)

    ext_zero

    fn ext_zero(n : Int, k : Int) -> ExtVec
    X-4 Λ^k 之零元素

    flat_det

    fn flat_det(data : Array[Double], n : Int) -> Double
    M-18 扁平方陣行列式(部分主元高斯消去)——供內積空間體積公式使用

    fn_convolution

    fn fn_convolution(f : Array[Double], g : Array[Double]) -> Array[Double]
    F-10 循環卷積 (f ∗ g)(k) = Σⱼ f[j] g(k−j mod n)

    fn_delta_basis

    fn fn_delta_basis(n : Int) -> Array[Array[Double]]
    F-4 delta 基 {δ_0,…,δ_{n−1}}

    fn_dft

    fn fn_dft(f : Array[C]) -> Array[C]
    F-8 離散傅里葉變換:F[k] = Σⱼ f[j] e^{−2πi·jk/n}

    fn_finite_diff

    fn fn_finite_diff(f : Array[Double]) -> Array[Double]
    F-7 循環前向差分 (Δf)(i) = f(i+1) − f(i)(指標模 n)

    fn_idft

    fn fn_idft(fc : Array[C]) -> Array[C]
    F-9 逆 DFT:f[j] = (1/n) Σₖ F[k] e^{2πi·jk/n}

    fn_inner

    fn fn_inner(f : Array[Double], g : Array[Double]) -> Double
    F-2 標準(等權)內積

    fn_inner_weighted

    fn fn_inner_weighted(f : Array[Double], g : Array[Double], w : Array[Double]) -> Double
    F-1 加權 ℓ² 內積 Σ wᵢ f(i) g(i)

    fn_ip

    fn fn_ip(n : Int, w : Array[Double]) -> IPSp[Array[Double]]
    F-3 Fun(X, R) 內積空間字典(加權)

    fn_parseval_residual

    fn fn_parseval_residual(f : Array[C]) -> Double
    F-12 Parseval 殘差 ‖f‖² − (1/n)‖F‖²(對 DFT 必為 0)

    fn_pointwise_mul

    fn fn_pointwise_mul(f : Array[Double], g : Array[Double]) -> Array[Double]
    F-5 逐點乘法(代數結構)

    fn_space_ip

    fn[V] fn_space_ip(n : Int, w : Array[Double], ip : IPSp[V]) -> IPSp[Array[V]]
    F-11 函數空間組合子:Fun(X, V),V 為任意內積空間 內積 = Σᵢ wᵢ ⟨f(i), g(i)⟩_V(空間 × 空間之組合)

    fn_sum

    fn fn_sum(f : Array[Double]) -> Double
    F-6 總和泛函

    hvec_add

    fn hvec_add(a : HVec, b : HVec) -> HVec
    Q-18 H^n 加法

    hvec_inner

    fn hvec_inner(a : HVec, b : HVec) -> Double
    Q-20 H^n 之實內積 Σ Re(q̄ᵢ pᵢ)

    hvec_ip

    fn hvec_ip(n : Int) -> IPSp[HVec]
    Q-21 H^n 作為實內積空間之字典(實維數 4n)

    hvec_orthonormal

    fn hvec_orthonormal(vs : Array[HVec], eps : Double) -> Array[HVec]
    Q-23 Gram–Schmidt 於 H^n(經由實內積字典)

    hvec_real_dim

    fn hvec_real_dim(n : Int) -> Int
    Q-22 H^n 之實維數 = 4n

    hvec_scale

    fn hvec_scale(c : Double, a : HVec) -> HVec
    Q-19 H^n 實純量乘法(H^n 視為實向量空間)

    hvec_zero

    fn hvec_zero(n : Int) -> HVec
    Q-17 H^n 零向量

    inj1

    fn[V, W] inj1(a : IPSp[V], b : IPSp[W], v : V) -> (V, W)
    PR-7 單射 ι₁ : V → V ⊕ W(w 取零)

    inj2

    fn[V, W] inj2(a : IPSp[V], b : IPSp[W], w : W) -> (V, W)
    PR-8 單射 ι₂ : W → V ⊕ W

    inversion_count

    fn inversion_count(p : Array[Int]) -> Int
    X-3 逆序數(排列奇偶性用)

    ip_angle

    fn[V] ip_angle(ip : IPSp[V], a : V, b : V) -> Double
    I-4 角度 θ = arccos(cos θ) ∈ [0, π]

    ip_bessel_residual

    fn[V] ip_bessel_residual(ip : IPSp[V], v : V, onb : Array[V]) -> Double
    I-19 Bessel 殘差 ‖v‖² − Σ⟨v,eᵢ⟩²(對標準正交系必 ≥ 0)

    ip_coords

    fn[V] ip_coords(ip : IPSp[V], v : V, onb : Array[V]) -> Array[Double]
    I-12 標準正交基下的座標 ⟨v, eᵢ⟩

    ip_cos

    fn[V] ip_cos(ip : IPSp[V], a : V, b : V) -> Double
    I-3 餘弦角 cos θ = ⟨u,v⟩/(‖u‖‖v‖)(零向量時回 1)

    ip_dist

    fn[V] ip_dist(ip : IPSp[V], a : V, b : V) -> Double
    I-2 距離 d(u,v) = ‖u−v‖

    ip_dist_subspace

    fn[V] ip_dist_subspace(ip : IPSp[V], v : V, onb : Array[V]) -> Double
    I-15 到子空間之距離 ‖v − proj v‖

    ip_from_coords

    fn[V] ip_from_coords(ip : IPSp[V], cs : Array[Double], onb : Array[V]) -> V
    I-13 由座標重構向量 Σ cᵢeᵢ(Fourier 重構)

    ip_gram_matrix

    fn[V] ip_gram_matrix(ip : IPSp[V], vs : Array[V]) -> Array[Double]
    I-17 Gram 矩陣 Gᵢⱼ = ⟨vᵢ, vⱼ⟩(傳回扁平方陣,列主序)

    ip_gram_schmidt

    fn[V] ip_gram_schmidt(ip : IPSp[V], vs : Array[V], eps : Double) -> Array[V]
    I-10 Gram–Schmidt 正交化(丟棄線性相關者,容差 eps)

    ip_is_orthogonal

    fn[V] ip_is_orthogonal(ip : IPSp[V], a : V, b : V, eps : Double) -> Bool
    I-5 正交判定 |⟨u,v⟩| < eps

    ip_norm

    fn[V] ip_norm(ip : IPSp[V], v : V) -> Double
    I-1 範數 ‖v‖ = √⟨v,v⟩

    ip_normalize

    fn[V] ip_normalize(ip : IPSp[V], v : V) -> V
    I-6 單位化 v/‖v‖(零向量回零)

    ip_orthonormal

    fn[V] ip_orthonormal(ip : IPSp[V], vs : Array[V], eps : Double) -> Array[V]
    I-11 Gram–Schmidt 標準正交化

    ip_proj

    fn[V] ip_proj(ip : IPSp[V], u : V, v : V) -> V
    I-8 正交投影 proj_v(u) = ⟨u,v⟩/⟨v,v⟩ · v

    ip_proj_coeff

    fn[V] ip_proj_coeff(ip : IPSp[V], u : V, v : V) -> Double
    I-7 投影係數 ⟨u,v⟩/⟨v,v⟩

    ip_proj_subspace

    fn[V] ip_proj_subspace(ip : IPSp[V], v : V, onb : Array[V]) -> V
    I-14 子空間正交投影(輸入為子空間之標準正交基)

    ip_reflect

    fn[V] ip_reflect(ip : IPSp[V], v : V, n_unit : V) -> V
    I-16 鏡射(Householder 型):沿單位法向量 n 反射 v ↦ v − 2⟨v,n⟩n

    ip_rej

    fn[V] ip_rej(ip : IPSp[V], u : V, v : V) -> V
    I-9 正交分量(拒絕)rej_v(u) = u − proj_v(u)

    ip_volume

    fn[V] ip_volume(ip : IPSp[V], vs : Array[V]) -> Double
    I-18 平行多面體體積 = √det(Gram)(依賴 matrix.mbt 之 det)

    ips_make

    fn[V] ips_make(sp : VecSp[V], inner : (V, V) -> Double) -> IPSp[V]
    從向量空間字典與內積構造

    ips_prod

    fn[V, W] ips_prod(a : IPSp[V], b : IPSp[W]) -> IPSp[(V, W)]
    PR-2 內積空間直和:⟨(v₁,w₁),(v₂,w₂)⟩ = ⟨v₁,v₂⟩ + ⟨w₁,w₂⟩

    ips_prod_weighted

    fn[V, W] ips_prod_weighted(a : IPSp[V], b : IPSp[W], alpha : Double, beta : Double) -> IPSp[(V, W)]
    PR-3 加權直和:⟨,⟩ = α⟨,⟩_V + β⟨,⟩_W

    ips_scale

    fn[V] ips_scale(ip : IPSp[V], c : Double) -> IPSp[V]
    I-20 加權內積尺度變換:⟨,⟩' = c·⟨,⟩

    jacobi_eigen

    fn jacobi_eigen(a : Mat, max_sweeps : Int) -> (Array[Double], Mat)
    M-29 Jacobi 旋轉法求對稱矩陣特徵值 回傳 (特徵值, Q),Q 之行為對應標準正交特徵向量

    least_squares

    fn least_squares(a : Mat, b : Array[Double]) -> Array[Double]
    M-34 最小二乘解(法方程 AᵀAx = Aᵀb,經 Cholesky 或 LU)

    lu_solve

    fn lu_solve(l : Mat, u : Mat, perm : Array[Int], b : Array[Double]) -> Array[Double]
    M-26 由 LU 解方程:先解 Ly = Pb,再解 Ux = y

    map_direct_sum

    fn map_direct_sum(a : Mat, b : Mat) -> Mat
    PR-10 線性映射直和 A ⊕ B 之矩陣(分塊對角)

    mat_add

    fn mat_add(a : Mat, b : Mat) -> Mat
    M-7 加法

    mat_cholesky

    fn mat_cholesky(a : Mat) -> Mat?
    M-27 Cholesky 分解 A = LLᵀ(A 須對稱正定;失敗回 None)

    mat_col

    fn mat_col(m : Mat, j : Int) -> Array[Double]
    M-6 第 j 行

    mat_col_space_basis

    fn mat_col_space_basis(a : Mat, eps : Double) -> Array[Array[Double]]
    M-31 列空間基(A 的主元行)

    mat_det

    fn mat_det(a : Mat) -> Double
    M-19 行列式(部分主元高斯消去,O(n³))

    mat_diag

    fn mat_diag(d : Array[Double]) -> Mat
    M-43 對角矩陣構造

    mat_diagonal

    fn mat_diagonal(a : Mat) -> Array[Double]
    M-44 取對角線

    mat_eq_eps

    fn mat_eq_eps(a : Mat, b : Mat, eps : Double) -> Bool
    M-17 近似相等

    mat_exp

    fn mat_exp(a : Mat) -> Mat
    M-40 矩陣指數 e^A(scaling-and-squaring + Taylor 20 項)

    mat_eye

    fn mat_eye(n : Int) -> Mat
    M-13 單位矩陣

    mat_frob_inner

    fn mat_frob_inner(a : Mat, b : Mat) -> Double
    M-15 Frobenius 內積 ⟨A,B⟩_F = Σ AᵢⱼBᵢⱼ = tr(AᵀB)

    mat_frob_norm

    fn mat_frob_norm(a : Mat) -> Double
    M-16 Frobenius 範數

    mat_from_rows

    fn mat_from_rows(rs : Array[Array[Double]]) -> Mat
    M-2 由列向量陣列構造

    mat_get

    fn mat_get(m : Mat, i : Int, j : Int) -> Double
    M-3 取元素

    mat_inv

    fn mat_inv(a : Mat) -> Mat?
    M-23 逆矩陣(Gauss–Jordan;奇異時回 None)

    mat_is_symmetric

    fn mat_is_symmetric(a : Mat, eps : Double) -> Bool
    M-39 對稱判定

    mat_kronecker

    fn mat_kronecker(a : Mat, b : Mat) -> Mat
    M-36 Kronecker 積 A⊗B

    mat_lu

    fn mat_lu(a : Mat) -> (Mat, Mat, Array[Int])
    M-25 LU 分解(部分主元):PA = LU,回傳 (L, U, perm)

    mat_mul

    fn mat_mul(a : Mat, b : Mat) -> Mat
    M-10 矩陣乘法 (AB)ᵢₖ = Σⱼ AᵢⱼBⱼₖ

    mat_new

    fn mat_new(rows : Int, cols : Int) -> Mat
    M-1 零矩陣

    mat_null_space_basis

    fn mat_null_space_basis(a : Mat, eps : Double) -> Array[Array[Double]]
    M-33 零空間基(自由變量法)

    mat_pivot_cols

    fn mat_pivot_cols(a : Mat, eps : Double) -> Array[Int]
    M-22 主元行位置(RREF 中每列首個非零元之行號)

    mat_qr

    fn mat_qr(a : Mat) -> (Mat, Mat)
    M-30 QR 分解(Gram–Schmidt 於行上):A = QR,Q 行標準正交

    mat_rank

    fn mat_rank(a : Mat, eps : Double) -> Int
    M-21 秩 = RREF 中主元數

    mat_row

    fn mat_row(m : Mat, i : Int) -> Array[Double]
    M-5 第 i 列

    mat_row_space_basis

    fn mat_row_space_basis(a : Mat, eps : Double) -> Array[Array[Double]]
    M-32 行空間基(RREF 非零列)

    mat_rref

    fn mat_rref(a : Mat, eps : Double) -> Mat
    M-20 約化列梯形(RREF,部分主元,容差 eps)

    mat_scale

    fn mat_scale(c : Double, a : Mat) -> Mat
    M-9 純量乘法

    mat_set

    fn mat_set(m : Mat, i : Int, j : Int, v : Double) -> Unit
    M-4 設元素

    mat_skew

    fn mat_skew(a : Mat) -> Mat
    M-38 反對稱化:skew(A) = (A − Aᵀ)/2

    mat_solve

    fn mat_solve(a : Mat, b : Array[Double]) -> Array[Double]?
    M-24 解 Ax = b(唯一解;奇異時回 None)

    mat_sub

    fn mat_sub(a : Mat, b : Mat) -> Mat
    M-8 減法

    mat_symmetrize

    fn mat_symmetrize(a : Mat) -> Mat
    M-37 對稱化:sym(A) = (A + Aᵀ)/2(到對稱矩陣空間之正交投影)

    mat_to_tensor

    fn mat_to_tensor(m : Mat) -> Tensor
    T-8 矩陣 → 張量(同構之逆)

    mat_trace

    fn mat_trace(a : Mat) -> Double
    M-14 跡 tr(A) = Σ Aᵢᵢ

    mat_transpose

    fn mat_transpose(a : Mat) -> Mat
    M-12 轉置

    mat_vec

    fn mat_vec(a : Mat, x : Array[Double]) -> Array[Double]
    M-11 矩陣-向量乘

    monomial_count

    fn monomial_count(n : Int, d : Int) -> Int
    MP-13 單項式計數:n 變量次數 ≤ d 之單項式數 = C(n+d, d)

    monomial_eval

    fn monomial_eval(e : Array[Int], x : Array[Double]) -> Double
    MP-7 單項式求值

    mpoly_add

    fn mpoly_add(a : MPoly, b : MPoly) -> MPoly
    MP-4 加法

    mpoly_eval

    fn mpoly_eval(p : MPoly, x : Array[Double]) -> Double
    MP-8 多項式求值

    mpoly_gradient

    fn mpoly_gradient(p : MPoly) -> Array[MPoly]
    MP-10 梯度(全部偏導)

    mpoly_homogenize

    fn mpoly_homogenize(p : MPoly) -> MPoly
    MP-15 齊次化:引入新變量 x_n 使總次數齊次

    mpoly_inner

    fn mpoly_inner(a : MPoly, b : MPoly) -> Double
    MP-12 係數內積(單項式基下之 ℓ² 內積)

    mpoly_ip

    fn mpoly_ip(nvars : Int) -> IPSp[MPoly]
    MP-14 多項式空間之內積字典(限制於次數 ≤ d 之子空間)

    mpoly_monomial

    fn mpoly_monomial(e : Array[Int], c : Double) -> MPoly
    MP-3 單項式 c·x^e

    mpoly_mul

    fn mpoly_mul(a : MPoly, b : MPoly) -> MPoly
    MP-6 乘法

    mpoly_normalize

    fn mpoly_normalize(nvars : Int, terms : Array[(Array[Int], Double)]) -> MPoly
    MP-1 正規化:排序、合併同類項、去零

    mpoly_partial

    fn mpoly_partial(p : MPoly, i : Int) -> MPoly
    MP-9 偏導 ∂/∂x_i

    mpoly_scale

    fn mpoly_scale(c : Double, p : MPoly) -> MPoly
    MP-5 純量乘法

    mpoly_total_degree

    fn mpoly_total_degree(p : MPoly) -> Int
    MP-11 總次數

    mpoly_zero

    fn mpoly_zero(nvars : Int) -> MPoly
    MP-2 零多項式

    outer_product

    fn outer_product(u : Array[Double], v : Array[Double]) -> Mat
    M-35 外積 u vᵀ

    poly_add

    fn poly_add(a : Array[Double], b : Array[Double]) -> Array[Double]
    P-5 加法

    poly_compose

    fn poly_compose(p : Array[Double], q : Array[Double]) -> Array[Double]
    P-20 複合 p∘q

    poly_const

    fn poly_const(c : Double) -> Array[Double]
    P-2 常數多項式

    poly_degree

    fn poly_degree(p : Array[Double]) -> Int
    P-3 次數(零多項式定為 0)

    poly_deriv

    fn poly_deriv(p : Array[Double]) -> Array[Double]
    P-9 導數

    poly_dim

    fn poly_dim(n : Int) -> Int
    P-24 多項式空間之維數(次數 ≤ n 者為 n+1)

    poly_divmod

    fn poly_divmod(p : Array[Double], q : Array[Double]) -> (Array[Double], Array[Double])
    P-15 帶餘除法:p = q·quot + rem(deg rem < deg q)

    poly_eval

    fn poly_eval(p : Array[Double], x : Double) -> Double
    P-11 Horner 求值

    poly_from_roots

    fn poly_from_roots(rs : Array[Double]) -> Array[Double]
    P-21 由根構造 Π(x − rᵢ)

    poly_gcd

    fn poly_gcd(a : Array[Double], b : Array[Double]) -> Array[Double]
    P-17 最大公因式(歐幾里得演算法,首一化)

    poly_inner

    fn poly_inner(a : Array[Double], b : Array[Double]) -> Double
    P-12 L²[0,1] 內積(精確):Σ aᵢbⱼ/(i+j+1)

    poly_integral

    fn poly_integral(p : Array[Double]) -> Array[Double]
    P-10 不定積分(常數項為 0)

    poly_ip

    fn poly_ip(n : Int) -> IPSp[Array[Double]]
    P-13 P_n 內積空間字典(次數 ≤ n)

    poly_lagrange

    fn poly_lagrange(xs : Array[Double], ys : Array[Double]) -> Array[Double]
    P-18 Lagrange 插值:過點 (xs[i], ys[i])

    poly_leading

    fn poly_leading(p : Array[Double]) -> Double
    P-4 首項係數

    poly_mod

    fn poly_mod(p : Array[Double], q : Array[Double]) -> Array[Double]
    P-16 餘式

    poly_mul

    fn poly_mul(a : Array[Double], b : Array[Double]) -> Array[Double]
    P-8 乘法(卷積)

    poly_newton

    fn poly_newton(xs : Array[Double], ys : Array[Double]) -> Array[Double]
    P-19 Newton 插值(均差表)

    poly_roots_dk

    fn poly_roots_dk(p : Array[Double], iters : Int) -> Array[C]
    P-23 Durand–Kerner 求全部複根(首一化後迭代)

    poly_roots_quadratic

    fn poly_roots_quadratic(a : Double, b : Double, c : Double) -> (C, C)
    P-22 二次方程實/複根(回傳 (重數意義下) 兩複數根)

    poly_scale

    fn poly_scale(c : Double, p : Array[Double]) -> Array[Double]
    P-7 純量乘法

    poly_sub

    fn poly_sub(a : Array[Double], b : Array[Double]) -> Array[Double]
    P-6 減法

    poly_zero

    fn poly_zero() -> Array[Double]
    P-1 零多項式

    power_iteration

    fn power_iteration(a : Mat, iters : Int) -> (Double, Array[Double])
    M-28 冪迭代:主特徵值與特徵向量(Rayleigh 商)

    prod_dim_sum

    fn prod_dim_sum(dv : Int, dw : Int) -> Int
    PR-9 直和維數相加

    prod_proj1

    fn[V, W] prod_proj1(p : (V, W)) -> V
    PR-5 投影 π₁ : V ⊕ W → V

    prod_proj2

    fn[V, W] prod_proj2(p : (V, W)) -> W
    PR-6 投影 π₂ : V ⊕ W → W

    pure_tensor

    fn pure_tensor(u : Array[Double], v : Array[Double]) -> Tensor
    T-2 純張量 u ⊗ v

    quat_add

    fn quat_add(a : Quat, b : Quat) -> Quat
    Q-5 加法

    quat_compose

    fn quat_compose(q1 : Quat, q2 : Quat) -> Quat
    Q-24 四元數旋轉複合:q₂∘q₁ 對應四元數乘法(注意次序)

    quat_conj

    fn quat_conj(a : Quat) -> Quat
    Q-9 共軛

    quat_from_axis_angle

    fn quat_from_axis_angle(axis : Array[Double], theta : Double) -> Quat
    Q-14 由軸角構造單位四元數(旋轉角 θ 繞單位軸 u)

    quat_imag

    fn quat_imag(x : Double, y : Double, z : Double) -> Quat
    Q-4 純虛四元數(對應 R³ 向量)

    quat_inner

    fn quat_inner(a : Quat, b : Quat) -> Double
    Q-16 H 上之內積 ⟨q,p⟩ = Re(q̄p)

    quat_inv

    fn quat_inv(a : Quat) -> Quat
    Q-12 逆 q⁻¹ = q̄/‖q‖²

    quat_mul

    fn quat_mul(a : Quat, b : Quat) -> Quat
    Q-8 Hamilton 乘法

    quat_neg

    fn quat_neg(a : Quat) -> Quat
    Q-6 負元

    quat_new

    fn quat_new(w : Double, x : Double, y : Double, z : Double) -> Quat
    Q-1 構造

    quat_norm

    fn quat_norm(a : Quat) -> Double
    Q-11 範數

    quat_norm2

    fn quat_norm2(a : Quat) -> Double
    Q-10 範數平方

    quat_real

    fn quat_real(w : Double) -> Quat
    Q-3 純量四元數

    quat_rotate_vec

    fn quat_rotate_vec(q : Quat, v : Array[Double]) -> Array[Double]
    Q-15 旋轉 R³ 向量:v ↦ q v q̄(q 為單位四元數)

    quat_scale

    fn quat_scale(c : Double, a : Quat) -> Quat
    Q-7 實純量乘法

    quat_unit

    fn quat_unit(a : Quat) -> Quat
    Q-13 單位化

    quat_zero

    fn quat_zero() -> Quat
    Q-2 零

    rayleigh_quotient

    fn rayleigh_quotient(a : Mat, x : Array[Double]) -> Double
    M-42 Rayleigh 商 xᵀAx / xᵀx

    registry

    fn registry() -> Array[AlgoEntry]
    全部演算法註冊表

    registry_run

    fn registry_run() -> (Int, Int, Array[String])
    執行全部自證,回傳 (通過數, 總數, 失敗者)

    riesz_inverse

    fn riesz_inverse(v : Array[Double]) -> DualVec
    D-9 Riesz 逆:向量 ↦ 泛函 ⟨v, ·⟩

    riesz_represent

    fn riesz_represent(phi : DualVec) -> Array[Double]
    D-8 Riesz 表示定理(歐氏情形):泛函 φ ↦ 表示向量 r, 使得 φ(v) = ⟨r, v⟩。標準度量下 r = φ 之係數。

    shifted_legendre

    fn shifted_legendre(n : Int) -> Array[Array[Double]]
    P-14 移位 Legendre 多項式:Gram–Schmidt 於 {1,x,…,x^n}

    spectral_reconstruct

    fn spectral_reconstruct(vals : Array[Double], q : Mat) -> Mat
    M-41 譜分解重構:由 (特徵值, Q) 重建 A ≈ Q diag(λ) Qᵀ

    sym_add

    fn sym_add(a : Mat, b : Mat) -> Mat
    S-5 Sym(n) 加法

    sym_basis

    fn sym_basis(n : Int) -> Array[Mat]
    S-10 Sym(n) 標準正交基:{E_ii} ∪ {(E_ij+E_ji)/√2}

    sym_dim

    fn sym_dim(n : Int) -> Int
    S-1 對稱空間維數 n(n+1)/2

    sym_index

    fn sym_index(n : Int, i : Int, j : Int) -> Int
    S-2 上三角座標 (i≤j) → 線性索引

    sym_inner

    fn sym_inner(a : Mat, b : Mat) -> Double
    S-7 Sym(n) 內積(Frobenius 限制)

    sym_ip

    fn sym_ip(n : Int) -> IPSp[Mat]
    S-9 Sym(n) 內積空間字典

    sym_pack

    fn sym_pack(n : Int, v : Array[Double]) -> Mat
    S-3 向量打包為對稱矩陣(維數 n(n+1)/2 之座標)

    sym_quadratic

    fn sym_quadratic(a : Mat, x : Array[Double]) -> Double
    S-12 二次型 q(x) = xᵀAx

    sym_scale

    fn sym_scale(c : Double, a : Mat) -> Mat
    S-6 Sym(n) 純量乘法

    sym_sp

    fn sym_sp(n : Int) -> VecSp[Mat]
    S-8 Sym(n) 向量空間字典

    sym_spectral_error

    fn sym_spectral_error(a : Mat) -> Double
    S-11 譜定理驗證用:對稱矩陣特徵分解重構誤差

    sym_unpack

    fn sym_unpack(m : Mat) -> Array[Double]
    S-4 對稱矩陣展開為向量(pack 之逆)

    tensor_add

    fn tensor_add(a : Tensor, b : Tensor) -> Tensor
    T-3 加法

    tensor_bilinear_eval

    fn tensor_bilinear_eval(t : Tensor, phi : Array[Double], psi : Array[Double]) -> Double
    T-12 雙線性求值:(φ ⊗ ψ)(T) = Σ tᵢⱼ φᵢ ψⱼ

    tensor_contract

    fn tensor_contract(t : Tensor) -> Double
    T-9 全收縮(m = n 時):Σᵢ tᵢᵢ ∈ R

    tensor_contract_first

    fn tensor_contract_first(t : Tensor, phi : Array[Double]) -> Array[Double]
    T-10 單腿收縮:以 φ ∈ (R^m)* 收縮第一腿,得 R^n 之向量

    tensor_contract_second

    fn tensor_contract_second(t : Tensor, psi : Array[Double]) -> Array[Double]
    T-11 單腿收縮:以 ψ ∈ (R^n)* 收縮第二腿,得 R^m 之向量

    tensor_flatten_rank

    fn tensor_flatten_rank(t : Tensor, eps : Double) -> Int
    T-14 張量秩上界估计(平坦化矩陣之秩)

    tensor_inner

    fn tensor_inner(a : Tensor, b : Tensor) -> Double
    T-5 誘導內積 ⟨Σ aᵢⱼ eᵢ⊗fⱼ, Σ bᵢⱼ eᵢ⊗fⱼ⟩ = Σ aᵢⱼbᵢⱼ

    tensor_ip

    fn tensor_ip(m : Int, n : Int) -> IPSp[Tensor]
    T-6 內積空間字典(R^m ⊗ R^n)

    tensor_of_maps

    fn tensor_of_maps(a : Mat, b : Mat) -> Tensor
    T-13 線性映射之張量積 A ⊗ B(Kronecker)

    tensor_scale

    fn tensor_scale(c : Double, a : Tensor) -> Tensor
    T-4 純量乘法

    tensor_to_mat

    fn tensor_to_mat(t : Tensor) -> Mat
    T-7 與矩陣空間之同構(平坦化)

    tensor_zero

    fn tensor_zero(m : Int, n : Int) -> Tensor
    T-1 零張量

    vaffine

    fn[V] vaffine(sp : VecSp[V], cs : Array[Double], vs : Array[V]) -> V
    A-7 仿射組合 Σ cᵢvᵢ(Σcᵢ=1 時結果與原點無關之性質由測試驗證)

    vaxpy

    fn[V] vaxpy(sp : VecSp[V], a : Double, x : V, y : V) -> V
    A-3 axpy: a·x + y(BLAS 基本算式)

    vdouble_iter

    fn[V] vdouble_iter(sp : VecSp[V], v : V, n : Int) -> V
    A-6 倍增迭代:2ⁿ·v(僅用加法實作純量乘法,驗證分配律用)

    vec_prod

    fn[V, W] vec_prod(a : VecSp[V], b : VecSp[W]) -> VecSp[(V, W)]
    PR-1 向量空間直和 V ⊕ W

    vlinc

    fn[V] vlinc(sp : VecSp[V], cs : Array[Double], vs : Array[V]) -> V
    A-2 線性組合 Σ cᵢvᵢ

    vmidpoint

    fn[V] vmidpoint(sp : VecSp[V], a : V, b : V) -> V
    A-5 中點(仿射組合 ½a + ½b)

    vsub

    fn[V] vsub(sp : VecSp[V], a : V, b : V) -> V
    A-1 減法 u−v := u+(−v)

    vsum

    fn[V] vsum(sp : VecSp[V], vs : Array[V]) -> V
    A-4 向量列求和

    vunscale

    fn[V] vunscale(sp : VecSp[V], c : Double, v : V) -> V
    A-8 純量乘法之逆:(1/c)·v