mutable API

Luna-Flow/luna-poly/mutable はミュータブルな多項式層のファサードです。自前の定義は持たず、共有の core の語彙、Luna-Flow/luna-generic の共通代数トレイト、4 つのミュータブル表現を再エクスポートするため、1 回のインポートで実行指向の API 全体を利用できます。immut ファサードと同じ名前をエクスポートします。

import {
  "Luna-Flow/luna-poly/mutable",
}

以下の名前はすべて pub using による別名です。@mutable.DensePolynomial は @mutable/dense.DensePolynomial そのもの であり、@mutable.ExponentVector は @core.ExponentVector そのもの、つまり @immut.ExponentVector と同じ型です。メソッドは型を定義しているパッケージのページで説明しています。

多項式型

DensePolynomial

ミュータブルな密な一変数多項式です。mutable/dense API を参照してください。

pub using @dense {type DensePolynomial}

TermPolynomial

ソート済みの項配列で表されたミュータブルな多変数多項式です。mutable/term API を参照してください。

pub using @term {type TermPolynomial}

SparsePolynomial

順序付きマップで表されたミュータブルな多変数多項式です。mutable/sparse API を参照してください。

pub using @sparse {type SparsePolynomial}

ContextPolynomial, ContextSubstitutionValue

名前付き変数コンテキスト上のミュータブルな多項式と、その代入のペイロードです。mutable/context API を参照してください。

pub using @context {type ContextPolynomial}
pub using @context {type ContextSubstitutionValue}

この別名は型を再エクスポートしますが、コンストラクタを独立した値としては再エクスポートしません。期待される型が分かる位置では Scalar(v) と Polynomial(p) と書くか、完全な形 @mutable.ContextSubstitutionValue::Polynomial(p) を使ってください。

core の共有語彙

ExponentVector, Variable, VariableContext, PolynomialShape

単項式、名前付き変数、変数コンテキスト、形状メタデータです。core API を参照してください。

pub using @core {type ExponentVector}
pub using @core {type Variable}
pub using @core {type VariableContext}
pub using @core {type PolynomialShape}

UnivariateOps, MultivariateOps, ContextOps

辞書渡しによるジェネリックコードのための演算レコードです。core API を参照してください。

pub using @core {type UnivariateOps}
pub using @core {type MultivariateOps}
pub using @core {type ContextOps}

能力トレイト

観測トレイトとそのバンドルです。core API を参照してください。

pub using @core {trait HasLength}
pub using @core {trait HasDegree}
pub using @core {trait IsZero}
pub using @core {trait HasTermCount}
pub using @core {trait HasArity}
pub using @core {trait HasTotalDegree}
pub using @core {trait HasContext}
pub using @core {trait HasShape}
pub using @core {trait Clearable}
pub using @core {trait Copyable}
pub using @core {trait UnivariatePolynomial}
pub using @core {trait MultivariatePolynomial}
pub using @core {trait ContextualPolynomial}
pub using @core {trait MutablePolynomial}

すべてのミュータブルなコンテナは、それぞれの系統の観測バンドルに加えて Clearable、Copyable、MutablePolynomial を実装します。

luna-generic の代数トレイト

Zero, One, AddMonoid, MulMonoid, AddGroup, MulGroup, Semiring, Ring, Field, Num

Luna-Flow/luna-generic の代数的能力トレイトです。2 つ目のインポートなしで係数の制約を書けるように再エクスポートされています。

pub using @luna-generic {trait Zero}
pub using @luna-generic {trait One}
pub using @luna-generic {trait AddMonoid}
pub using @luna-generic {trait MulMonoid}
pub using @luna-generic {trait AddGroup}
pub using @luna-generic {trait MulGroup}
pub using @luna-generic {trait Semiring}
pub using @luna-generic {trait Ring}
pub using @luna-generic {trait Field}
pub using @luna-generic {trait Num}
fn[P : @mutable.MutablePolynomial + @mutable.IsZero] reset(p : P) -> Bool {
  @mutable.Clearable::clear(p)
  @mutable.IsZero::is_zero(p)
}

test "one import" {
  let p = @mutable.DensePolynomial::from_coefficients([1, 1])
  inspect(reset(p), content="true")
  let s = @mutable.SparsePolynomial::from_array([([1U], 2)])
  inspect(reset(s), content="true")
}