{-# OPTIONS --without-K --safe #-}
module Polynomial.Parameters where
open import Function
open import Algebra
open import Relation.Unary
open import Level
open import Algebra.Solver.Ring.AlmostCommutativeRing
open import Data.Bool using (Bool; T)
record RawCoeff ℓ : Set (suc ℓ) where
field
coeffs : RawRing ℓ
Zero-C : RawRing.Carrier coeffs → Bool
open RawRing coeffs public
record Homomorphism ℓ₁ ℓ₂ ℓ₃ : Set (suc (ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃)) where
field
coeffs : RawCoeff ℓ₁
module Raw = RawCoeff coeffs
field
ring : AlmostCommutativeRing ℓ₂ ℓ₃
morphism : Raw.coeffs -Raw-AlmostCommutative⟶ ring
open _-Raw-AlmostCommutative⟶_ morphism renaming (⟦_⟧ to ⟦_⟧ᵣ) public
open AlmostCommutativeRing ring public
field
Zero-C⟶Zero-R : ∀ x → T (Raw.Zero-C x) → 0# ≈ ⟦ x ⟧ᵣ