import Graded.Modality
module Graded.Modality.Properties.Has-well-behaved-zero
{a} {M : Set a}
(open Graded.Modality M)
(๐ : Semiring-with-meet)
(open Semiring-with-meet ๐)
(๐-well-behaved : Has-well-behaved-zero ๐)
where
open Has-well-behaved-zero ๐-well-behaved public
open import Graded.Modality.Natrec-star-instances
open import Graded.Modality.Properties.Meet ๐
open import Graded.Modality.Properties.PartialOrder ๐
open import Tools.PropositionalEquality
open import Tools.Function
open import Tools.Product
import Tools.Reasoning.PartialOrder
import Tools.Reasoning.PropositionalEquality
private
variable
p q r : M
+-positiveสณ : p + q โก ๐ โ q โก ๐
+-positiveสณ p+qโก๐ = +-positiveหก (trans (+-comm _ _) p+qโก๐)
โง-positiveสณ : p โง q โก ๐ โ q โก ๐
โง-positiveสณ pโงqโก๐ = โง-positiveหก (trans (โง-comm _ _) pโงqโก๐)
๐โฎ : ๐ โค p โ p โก ๐
๐โฎ {p = p} ๐โคp = โง-positiveหก (begin
p โง ๐ โกโจ โง-comm _ _ โฉ
๐ โง p โกหโจ ๐โคp โฉ
๐ โ)
where
open Tools.Reasoning.PropositionalEquality
๐โฐ๐ : ๐ โค ๐ โ โฅ
๐โฐ๐ ๐โค๐ = ๐โข๐ (๐โฎ ๐โค๐)
๐โง๐<๐ : ๐ โง ๐ < ๐
๐โง๐<๐ =
โง-decreasingหก _ _
, (๐ โง ๐ โก ๐ โโจ sym โฉ
๐ โค ๐ โโจ ๐โฐ๐ โฉ
โฅ โก)
โโก๐หก :
โฆ has-star : Has-star ๐ โฆ โ
p โ q โท r โก ๐ โ p โก ๐
โโก๐หก {p = p} {q = q} {r = r} pโqโทrโก๐ = ๐โฎ (begin
๐ โหโจ pโqโทrโก๐ โฉ
p โ q โท r โคโจ โ-ineqโ _ _ _ โฉ
p โ)
where
open import Tools.Reasoning.PartialOrder โค-poset
โโก๐สณ :
โฆ has-star : Has-star ๐ โฆ โ
p โ q โท r โก ๐ โ q โก ๐
โโก๐สณ {p = p} {q = q} {r = r} pโqโทrโก๐ = +-positiveหก (๐โฎ (begin
๐ โหโจ pโqโทrโก๐ โฉ
p โ q โท r โคโจ โ-ineqโ _ _ _ โฉ
q + r ยท p โ q โท r โ))
where
open import Tools.Reasoning.PartialOrder โค-poset