mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-11 06:38:39 +00:00
28 lines
1.1 KiB
Agda
28 lines
1.1 KiB
Agda
{-# OPTIONS --safe --warning=error --without-K #-}
|
|
|
|
open import LogicalFormulae
|
|
open import Monoids.Definition
|
|
|
|
module Semirings.Definition where
|
|
|
|
record Semiring {a : _} {A : Set a} (Zero One : A) (_+_ : A → A → A) (_*_ : A → A → A) : Set a where
|
|
field
|
|
monoid : Monoid Zero _+_
|
|
commutative : (a b : A) → a + b ≡ b + a
|
|
multMonoid : Monoid One _*_
|
|
productZeroLeft : (a : A) → Zero * a ≡ Zero
|
|
productZeroRight : (a : A) → a * Zero ≡ Zero
|
|
+DistributesOver* : (a b c : A) → a * (b + c) ≡ (a * b) + (a * c)
|
|
+DistributesOver*' : (a b c : A) → (a + b) * c ≡ (a * c) + (b * c)
|
|
+Associative = Monoid.associative monoid
|
|
*Associative = Monoid.associative multMonoid
|
|
productOneLeft = Monoid.idLeft multMonoid
|
|
productOneRight = Monoid.idRight multMonoid
|
|
sumZeroLeft = Monoid.idLeft monoid
|
|
sumZeroRight = Monoid.idRight monoid
|
|
+WellDefined : {a b c d : A} → (a ≡ c) → (b ≡ d) → (a + b) ≡ (c + d)
|
|
+WellDefined refl refl = refl
|
|
|
|
-- (b+c)(a+a) == b(a+a) + c(a+a) == ba+ba+ca+ca == (ba+ca) + (ba+ca)
|
|
-- (b+c)(a+a) ==? (b+c)a+(b+c)a
|