def
Hex.MvPoly.Kernel.CoeffMap.map
{α : Type u}
{β : Type v}
(f : α → β)
(p : PolyList α)
:
PolyList β
Change the coefficient representation without changing support.
Equations
- Hex.MvPoly.Kernel.CoeffMap.map f p = List.map (fun (t : Hex.MvPoly.Kernel.Term α) => (t.fst, f t.snd)) p
Instances For
theorem
Hex.MvPoly.Kernel.CoeffMap.map_injective
{α : Type u}
{β : Type v}
(f : α → β)
(hf : Function.Injective f)
:
theorem
Hex.MvPoly.Kernel.CoeffMap.map_mulTerm
{α : Type u}
{β : Type v}
[Zero α]
[Zero β]
(f : α → β)
(hz : ∀ (a : α), f a = 0 ↔ a = 0)
[DecidableEq α]
[DecidableEq β]
[Add α]
[Add β]
(ha : ∀ (a b : α), f (a + b) = f a + f b)
[Mul α]
[Mul β]
(hm : ∀ (a b : α), f (a * b) = f a * f b)
(t : Term α)
(p : PolyList α)
:
theorem
Hex.MvPoly.Kernel.CoeffMap.map_mul
{α : Type u}
{β : Type v}
[Zero α]
[Zero β]
(f : α → β)
(hz : ∀ (a : α), f a = 0 ↔ a = 0)
[DecidableEq α]
[DecidableEq β]
[Add α]
[Add β]
(ha : ∀ (a b : α), f (a + b) = f a + f b)
[Mul α]
[Mul β]
(hm : ∀ (a b : α), f (a * b) = f a * f b)
(p q : PolyList α)
:
theorem
Hex.MvPoly.Kernel.coeffs_insert
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(t : Term κ)
(a : PolyList κ)
(ht : P t.snd)
(ha : ∀ (u : Term κ), u ∈ a → P u.snd)
(u : Term κ)
:
Insertion preserves a coefficient predicate closed under addition.
theorem
Hex.MvPoly.Kernel.coeffs_insertSum
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(a b : PolyList κ)
(ha : ∀ (t : Term κ), t ∈ a → P t.snd)
(hb : ∀ (t : Term κ), t ∈ b → P t.snd)
(t : Term κ)
:
Insertion summation preserves a coefficient predicate.
theorem
Hex.MvPoly.Kernel.coeffs_merge
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(fuel : Nat)
(a b : PolyList κ)
(ha : ∀ (t : Term κ), t ∈ a → P t.snd)
(hb : ∀ (t : Term κ), t ∈ b → P t.snd)
(t : Term κ)
:
Every budgeted merge preserves a coefficient predicate.
theorem
Hex.MvPoly.Kernel.coeffs_add
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(a b : PolyList κ)
(ha : ∀ (t : Term κ), t ∈ a → P t.snd)
(hb : ∀ (t : Term κ), t ∈ b → P t.snd)
(t : Term κ)
:
Polynomial addition preserves a coefficient predicate.
theorem
Hex.MvPoly.Kernel.coeffs_sumRows
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(as : List (PolyList κ))
(ha : ∀ (a : PolyList κ), a ∈ as → ∀ (t : Term κ), t ∈ a → P t.snd)
(t : Term κ)
:
Summing rows preserves a coefficient predicate.
theorem
Hex.MvPoly.Kernel.coeffs_mergeRound
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(as : List (PolyList κ))
(ha : ∀ (a : PolyList κ), a ∈ as → ∀ (t : Term κ), t ∈ a → P t.snd)
(a : PolyList κ)
:
a ∈ mergeRound as → ∀ (t : Term κ), t ∈ a → P t.snd
One round of pairwise row merging preserves a coefficient predicate.
theorem
Hex.MvPoly.Kernel.coeffs_mergeRows
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
(fuel : Nat)
(as : List (PolyList κ))
(ha : ∀ (a : PolyList κ), a ∈ as → ∀ (t : Term κ), t ∈ a → P t.snd)
(t : Term κ)
:
Balanced row merging preserves a coefficient predicate.
theorem
Hex.MvPoly.Kernel.coeffs_mulTerm
{κ : Type u}
[Zero κ]
[DecidableEq κ]
[Add κ]
(P : κ → Prop)
(hadd : ∀ (a b : κ), P a → P b → P (a + b))
[Mul κ]
(hmul : ∀ (a b : κ), P (a * b))
(t : Term κ)
(a : PolyList κ)
(u : Term κ)
:
Translating a multiplication row preserves a predicate on products and sums.