{-# OPTIONS --without-K --safe #-}
module Polynomial.Simple.AlmostCommutativeRing.Instances where
open import Polynomial.Simple.AlmostCommutativeRing
open import Level using (0ℓ)
open import Agda.Builtin.Reflection
module Nat where
open import Data.Nat using (zero; suc)
open import Relation.Binary.PropositionalEquality using (refl)
open import Data.Nat.Properties using (*-+-commutativeSemiring)
open import Data.Maybe using (just; nothing)
ring : AlmostCommutativeRing 0ℓ 0ℓ
ring =
fromCommutativeSemiring
*-+-commutativeSemiring
λ { zero → just refl; _ → nothing }
module Reflection where
open import Polynomial.Simple.Reflection using (solveOver-macro)
open import Data.Unit using (⊤)
macro
∀⟨_⟩ : Term → Term → TC ⊤
∀⟨ n ⟩ = solveOver-macro n (quote ring)
module Int where
open import Data.Nat using (zero)
open import Data.Integer using (+_)
open import Data.Integer.Properties using(+-*-commutativeRing)
open import Data.Maybe using (just; nothing)
open import Relation.Binary.PropositionalEquality using (refl)
ring : AlmostCommutativeRing 0ℓ 0ℓ
ring =
fromCommutativeRing
+-*-commutativeRing
λ { (+ zero) → just refl; _ → nothing }
module Reflection where
open import Polynomial.Simple.Reflection using (solveOver-macro)
open import Data.Unit using (⊤)
macro
∀⟨_⟩ : Term → Term → TC ⊤
∀⟨ n ⟩ = solveOver-macro n (quote ring)