open import Tools.Bool using (Bool; true; false; if_then_else_; T)
module Graded.Modality.Instances.Zero-one-many
(πβ€π : Bool)
where
import Tools.Algebra
open import Tools.Empty
open import Tools.Function
open import Tools.Level
open import Tools.Product
open import Tools.PropositionalEquality as PE
import Tools.Reasoning.PartialOrder
import Tools.Reasoning.PropositionalEquality
open import Tools.Relation
open import Tools.Sum using (_β_; injβ; injβ)
import Graded.Modality
import Graded.Modality.Instances.LowerBounded as LowerBounded
import Graded.Modality.Properties.Addition as Addition
import Graded.Modality.Properties.Meet as Meet
import Graded.Modality.Properties.Multiplication as Multiplication
import Graded.Modality.Properties.PartialOrder as PartialOrder
import Graded.Modality.Properties.Star as Star
open import Graded.Modality.Variant lzero
data Zero-one-many : Set where
π π Ο : Zero-one-many
private variable
n nβ nβ p pβ pβ q r result s sβ sβ z zβ zβ : Zero-one-many
open Graded.Modality Zero-one-many
open Tools.Algebra Zero-one-many
infix 10 _β_
_β_ : Decidable (_β‘_ {A = Zero-one-many})
π β π = yes refl
π β π = no (Ξ» ())
π β Ο = no (Ξ» ())
π β π = no (Ξ» ())
π β π = yes refl
π β Ο = no (Ξ» ())
Ο β π = no (Ξ» ())
Ο β π = no (Ξ» ())
Ο β Ο = yes refl
Meet-requirements :
(Zero-one-many β Zero-one-many β Zero-one-many) β Set
Meet-requirements _β§_ =
(π β§ π β‘ π) Γ
(π β§ π β‘ π) Γ
(Ο β§ Ο β‘ Ο) Γ
(π β§ Ο β‘ Ο) Γ
(Ο β§ π β‘ Ο) Γ
(π β§ Ο β‘ Ο) Γ
(Ο β§ π β‘ Ο) Γ
(π β§ π β’ π) Γ
(π β§ π β’ π)
Meet-requirements-required :
(M : Semiring-with-meet) β
Semiring-with-meet.π M β‘ π β
Semiring-with-meet.π M β‘ π β
Semiring-with-meet._β§_ M π π β’ π β
(β p β Semiring-with-meet._β€_ M Ο p) β
Meet-requirements (Semiring-with-meet._β§_ M)
Meet-requirements-required M refl refl πβ§πβ’π Οβ€ =
(π β§ π β‘β¨ β§-idem _ β©
π β)
, (π β§ π β‘β¨ β§-idem _ β©
π β)
, (Ο β§ Ο β‘β¨ β§-idem _ β©
Ο β)
, (π β§ Ο β‘β¨ β§-comm _ _ β©
Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, (Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, (π β§ Ο β‘β¨ β§-comm _ _ β©
Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, (Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, πβ§πβ’π
, (Ξ» πβ§πβ‘π β πβ§πβ’π (
π β§ π β‘β¨ β§-comm _ _ β©
π β§ π β‘β¨ πβ§πβ‘π β©
π β))
where
open Semiring-with-meet M hiding (π; π; Ο)
open Meet M
open PartialOrder M
open Tools.Reasoning.PropositionalEquality
πβ§π : Zero-one-many
πβ§π = if πβ€π then π else Ο
infixr 40 _β§_
_β§_ : Zero-one-many β Zero-one-many β Zero-one-many
π β§ π = π
π β§ π = π
π β§ π = πβ§π
π β§ π = πβ§π
_ β§ _ = Ο
πβ§πβ‘π : T πβ€π β πβ§π β‘ π
πβ§πβ‘π = lemma _
where
lemma : β b β T b β (if b then π else Ο) β‘ π
lemma true _ = refl
πβ§πβ‘πβπβ€π : πβ§π β‘ π β T πβ€π
πβ§πβ‘πβπβ€π = lemma _
where
lemma : β b β (if b then π else Ο) β‘ π β T b
lemma true _ = _
πβ§πβ‘Ο : Β¬ T πβ€π β πβ§π β‘ Ο
πβ§πβ‘Ο = lemma _
where
lemma : β b β Β¬ T b β (if b then π else Ο) β‘ Ο
lemma false _ = refl
lemma true Β¬β€ = β₯-elim (Β¬β€ _)
πβ§πβ’πβπβ°π : πβ§π β’ π β Β¬ T πβ€π
πβ§πβ’πβπβ°π = lemma _
where
lemma : β b β (if b then π else Ο) β’ π β Β¬ T b
lemma true πβ’π = Ξ» _ β πβ’π refl
lemma false _ = idαΆ
πβ§πβ’π : πβ§π β’ π
πβ§πβ’π = lemma _
where
lemma : β b β (if b then π else Ο) β’ π
lemma false ()
lemma true ()
πβ§π-elim :
β {p} (P : Zero-one-many β Set p) β
(πβ§π β‘ π β P π) β
(πβ§π β‘ Ο β P Ο) β
P πβ§π
πβ§π-elim P one omega = lemma _ refl
where
lemma : β p β πβ§π β‘ p β P p
lemma π πβ§πβ‘π = β₯-elim (πβ§πβ’π πβ§πβ‘π)
lemma π πβ§πβ‘π = one πβ§πβ‘π
lemma Ο πβ§πβ‘Ο = omega πβ§πβ‘Ο
πβ§[πβ§π] : π β§ πβ§π β‘ πβ§π
πβ§[πβ§π] = πβ§π-elim
(Ξ» p β π β§ p β‘ p)
(Ξ» πβ§πβ‘π β πβ§πβ‘π)
(Ξ» _ β refl)
πβ§[πβ§π] : π β§ πβ§π β‘ πβ§π
πβ§[πβ§π] = πβ§π-elim
(Ξ» p β π β§ p β‘ p)
(Ξ» _ β refl)
(Ξ» _ β refl)
β§-zeroΚ³ : RightZero Ο _β§_
β§-zeroΚ³ π = refl
β§-zeroΚ³ π = refl
β§-zeroΚ³ Ο = refl
β§-zero : Zero Ο _β§_
β§-zero = (Ξ» _ β refl) , β§-zeroΚ³
β§β‘π :
p β§ q β‘ π β
p β‘ π Γ q β‘ π Γ T πβ€π β
p β‘ π Γ q β‘ π Γ T πβ€π β
p β‘ π Γ q β‘ π
β§β‘π {p = π} {q = π} eq = injβ (refl , refl , πβ§πβ‘πβπβ€π eq)
β§β‘π {p = π} {q = π} eq = injβ (injβ (refl , refl , πβ§πβ‘πβπβ€π eq))
β§β‘π {p = π} {q = π} _ = injβ (injβ (refl , refl))
Order-requirements : (Zero-one-many β Zero-one-many β Set) β Set
Order-requirements _β€_ = (Ο β€ π) Γ (Ο β€ π) Γ Β¬ (π β€ π)
Order-requirements-required :
(M : Semiring-with-meet) β
Semiring-with-meet.π M β‘ π β
Semiring-with-meet.π M β‘ π β
Semiring-with-meet._β§_ M π π β’ π β
(β p β Semiring-with-meet._β€_ M Ο p) β
Order-requirements (Semiring-with-meet._β€_ M)
Order-requirements-required M refl refl πβ§πβ’π Οβ€ =
case Meet-requirements-required M refl refl πβ§πβ’π Οβ€ of Ξ» where
(_ , _ , _ , _ , Οβπβ‘Ο , _ , Οβπβ‘Ο , πβπβ’π , _) β
(Ο β‘Λβ¨ Οβπβ‘Ο β©
Ο β π β)
, (Ο β‘Λβ¨ Οβπβ‘Ο β©
Ο β π β)
, (Ξ» πβ‘πβπ β πβπβ’π (
π β π β‘Λβ¨ πβ‘πβπ β©
π β))
where
open Semiring-with-meet M using () renaming (_β§_ to _β_)
open Tools.Reasoning.PropositionalEquality
infix 10 _β€_
_β€_ : Zero-one-many β Zero-one-many β Set
p β€ q = p β‘ p β§ q
Οβ€ : β p β Ο β€ p
Οβ€ _ = refl
π-maximal : π β€ p β p β‘ π
π-maximal {p = π} refl = refl
π-maximal {p = π} = πβ§π-elim
(Ξ» q β π β‘ q β π β‘ π)
(Ξ» _ β sym)
(Ξ» _ ())
πβ°πβ§π : Β¬ π β€ πβ§π
πβ°πβ§π = πβ§πβ’π ββ π-maximal
πβ€πβπβ€π : T πβ€π β π β€ π
πβ€πβπβ€π πβ€π =
π β‘Λβ¨ πβ§πβ‘π πβ€π β©
π β§ π β
where
open Tools.Reasoning.PropositionalEquality
π-maximal : Β¬ T πβ€π β π β€ p β p β‘ π
π-maximal {p = π} _ refl = refl
π-maximal {p = π} πβ°π πβ€π = β₯-elim (
case
π β‘β¨ πβ€π β©
π β§ π β‘β¨ πβ§πβ‘Ο πβ°π β©
Ο β
of Ξ» ())
where
open Tools.Reasoning.PropositionalEquality
infixr 40 _+_
_+_ : Zero-one-many β Zero-one-many β Zero-one-many
π + q = q
π + π = π
_ + _ = Ο
+-decreasingΛ‘ : T πβ€π β β p q β p + q β€ p
+-decreasingΛ‘ πβ€π = Ξ» where
π π β refl
π π β πβ€πβπβ€π πβ€π
π Ο β refl
π π β refl
π π β refl
π Ο β refl
Ο _ β refl
Β¬-+-decreasingΛ‘ : Β¬ T πβ€π β Β¬ (β p q β p + q β€ p)
Β¬-+-decreasingΛ‘ πβ°π hyp =
case π-maximal {p = π} πβ°π (hyp π π) of Ξ» ()
β’π+β’π : p β’ π β q β’ π β p + q β‘ Ο
β’π+β’π {p = π} πβ’π _ = β₯-elim (πβ’π refl)
β’π+β’π {p = π} {q = π} _ πβ’π = β₯-elim (πβ’π refl)
β’π+β’π {p = π} {q = π} _ _ = refl
β’π+β’π {p = π} {q = Ο} _ _ = refl
β’π+β’π {p = Ο} _ _ = refl
+β‘π : p + q β‘ π β p β‘ π Γ q β‘ π β p β‘ π Γ q β‘ π
+β‘π {p = π} {q = π} refl = injβ (refl , refl)
+β‘π {p = π} {q = π} refl = injβ (refl , refl)
+-zeroΚ³ : RightZero Ο _+_
+-zeroΚ³ π = refl
+-zeroΚ³ π = refl
+-zeroΚ³ Ο = refl
+-zero : Zero Ο _+_
+-zero = (Ξ» _ β refl) , +-zeroΚ³
infixr 45 _Β·_
_Β·_ : Zero-one-many β Zero-one-many β Zero-one-many
π Β· _ = π
_ Β· π = π
π Β· π = π
_ Β· _ = Ο
Β·-idempotent : Idempotent _Β·_
Β·-idempotent π = refl
Β·-idempotent π = refl
Β·-idempotent Ο = refl
Β·-comm : Commutative _Β·_
Β·-comm = Ξ» where
π π β refl
π π β refl
π Ο β refl
π π β refl
π π β refl
π Ο β refl
Ο π β refl
Ο π β refl
Ο Ο β refl
ΟΒ·β’π : p β’ π β Ο Β· p β‘ Ο
ΟΒ·β’π {p = π} πβ’π = β₯-elim (πβ’π refl)
ΟΒ·β’π {p = π} _ = refl
ΟΒ·β’π {p = Ο} _ = refl
πΒ·β’π : p β’ π β π Β· p β’ π
πΒ·β’π {p = π} πβ’π = πβ’π
πΒ·β’π {p = π} πβ’π = πβ’π
πΒ·β’π {p = Ο} Οβ’π = Οβ’π
ΟΒ·β’π : Ο Β· p β’ π
ΟΒ·β’π {p = π} ()
ΟΒ·β’π {p = π} ()
ΟΒ·β’π {p = Ο} ()
opaque
ΟΒ·+β€ΟΒ·Κ³ : β p β Ο Β· (p + q) β€ Ο Β· q
ΟΒ·+β€ΟΒ·Κ³ {q = π} π = refl
ΟΒ·+β€ΟΒ·Κ³ {q = π} π = refl
ΟΒ·+β€ΟΒ·Κ³ {q = Ο} π = refl
ΟΒ·+β€ΟΒ·Κ³ {q = π} π = refl
ΟΒ·+β€ΟΒ·Κ³ {q = π} π = refl
ΟΒ·+β€ΟΒ·Κ³ {q = Ο} π = refl
ΟΒ·+β€ΟΒ·Κ³ Ο = refl
zero-one-many-semiring-with-meet : Semiring-with-meet
zero-one-many-semiring-with-meet = record
{ _+_ = _+_
; _Β·_ = _Β·_
; _β§_ = _β§_
; π = π
; π = π
; Ο = Ο
; Οβ€π = refl
; ΟΒ·+β€ΟΒ·Κ³ = Ξ» {p = p} β ΟΒ·+β€ΟΒ·Κ³ p
; is-π? = _β π
; +-Β·-Semiring = record
{ isSemiringWithoutAnnihilatingZero = record
{ +-isCommutativeMonoid = record
{ isMonoid = record
{ isSemigroup = record
{ isMagma = record
{ isEquivalence = PE.isEquivalence
; β-cong = congβ _+_
}
; assoc = Ξ» where
π _ _ β refl
π π _ β refl
π π π β refl
π π π β refl
π π Ο β refl
π Ο _ β refl
Ο _ _ β refl
}
; identity =
(Ξ» _ β refl)
, commβ§idΛ‘βidΚ³ +-comm (Ξ» _ β refl)
}
; comm = +-comm
}
; *-cong = congβ _Β·_
; *-assoc = Ξ» where
π _ _ β refl
π π _ β refl
π π π β refl
π π π β refl
π π Ο β refl
π Ο π β refl
π Ο π β refl
π Ο Ο β refl
Ο π _ β refl
Ο π π β refl
Ο π π β refl
Ο π Ο β refl
Ο Ο π β refl
Ο Ο π β refl
Ο Ο Ο β refl
; *-identity =
Β·-identityΛ‘
, commβ§idΛ‘βidΚ³ Β·-comm Β·-identityΛ‘
; distrib =
Β·-distrib-+Λ‘
, commβ§distrΛ‘βdistrΚ³ Β·-comm Β·-distrib-+Λ‘
}
; zero =
(Ξ» _ β refl)
, commβ§zeΛ‘βzeΚ³ Β·-comm (Ξ» _ β refl)
}
; β§-Semilattice = record
{ isBand = record
{ isSemigroup = record
{ isMagma = record
{ isEquivalence = PE.isEquivalence
; β-cong = congβ _β§_
}
; assoc = Ξ» where
π π π β refl
π π π β
πβ§π β‘Λβ¨ πβ§[πβ§π] β©
π β§ πβ§π β
π π Ο β refl
π π π β
πβ§π β§ π β‘β¨β©
πβ§π β§ π β‘β¨ β§-comm πβ§π _ β©
π β§ πβ§π β
π π π β
πβ§π β§ π β‘β¨ β§-comm πβ§π _ β©
π β§ πβ§π β‘β¨ πβ§[πβ§π] β©
πβ§π β
π π Ο β
πβ§π β§ Ο β‘β¨ β§-comm πβ§π _ β©
Ο β§ πβ§π β‘β¨β©
Ο β
π Ο _ β refl
π π π β
πβ§π β§ π β‘β¨ β§-comm πβ§π _ β©
π β§ πβ§π β‘β¨ πβ§[πβ§π] β©
πβ§π β
π π π β
πβ§π β§ π β‘β¨β©
πβ§π β§ π β‘β¨ β§-comm πβ§π _ β©
π β§ πβ§π β
π π Ο β
πβ§π β§ Ο β‘β¨ β§-comm πβ§π _ β©
Ο β§ πβ§π β‘β¨β©
Ο β
π π π β
πβ§π β‘Λβ¨ πβ§[πβ§π] β©
π β§ πβ§π β
π π π β refl
π π Ο β refl
π Ο _ β refl
Ο _ _ β refl
}
; idem = Ξ» where
π β refl
π β refl
Ο β refl
}
; comm = β§-comm
}
; Β·-distrib-β§ =
Β·-distrib-β§Λ‘
, commβ§distrΛ‘βdistrΚ³ Β·-comm Β·-distrib-β§Λ‘
; +-distrib-β§ =
+-distrib-β§Λ‘
, commβ§distrΛ‘βdistrΚ³ +-comm +-distrib-β§Λ‘
}
where
open Tools.Reasoning.PropositionalEquality
+-comm : Commutative _+_
+-comm = Ξ» where
π π β refl
π π β refl
π Ο β refl
π π β refl
π π β refl
π Ο β refl
Ο π β refl
Ο π β refl
Ο Ο β refl
Β·-identityΛ‘ : LeftIdentity π _Β·_
Β·-identityΛ‘ = Ξ» where
π β refl
π β refl
Ο β refl
Β·-distrib-+Λ‘ : _Β·_ DistributesOverΛ‘ _+_
Β·-distrib-+Λ‘ = Ξ» where
π _ _ β refl
π π _ β refl
π π π β refl
π π π β refl
π π Ο β refl
π Ο _ β refl
Ο π _ β refl
Ο π π β refl
Ο π π β refl
Ο π Ο β refl
Ο Ο _ β refl
β§-comm : Commutative _β§_
β§-comm = Ξ» where
π π β refl
π π β refl
π Ο β refl
π π β refl
π π β refl
π Ο β refl
Ο π β refl
Ο π β refl
Ο Ο β refl
Β·-distrib-β§Λ‘ : _Β·_ DistributesOverΛ‘ _β§_
Β·-distrib-β§Λ‘ = Ξ» where
π _ _ β refl
π π π β refl
π π π β
π Β· πβ§π β‘β¨ Β·-identityΛ‘ _ β©
πβ§π β
π π Ο β refl
π π π β
π Β· πβ§π β‘β¨ Β·-identityΛ‘ _ β©
πβ§π β
π π π β refl
π π Ο β refl
π Ο _ β refl
Ο π π β refl
Ο π π β
Ο Β· πβ§π β‘β¨ ΟΒ·β’π πβ§πβ’π β©
Ο β
Ο π Ο β refl
Ο π π β
Ο Β· πβ§π β‘β¨ ΟΒ·β’π πβ§πβ’π β©
Ο β
Ο π π β refl
Ο π Ο β refl
Ο Ο _ β refl
+-distrib-β§Λ‘ : _+_ DistributesOverΛ‘ _β§_
+-distrib-β§Λ‘ = Ξ» where
π _ _ β refl
π π π β refl
π π π β
π + πβ§π β‘β¨ β’π+β’π (Ξ» ()) πβ§πβ’π β©
Ο β
π π Ο β refl
π π π β
π + πβ§π β‘β¨ β’π+β’π (Ξ» ()) πβ§πβ’π β©
Ο β
π π π β refl
π π Ο β refl
π Ο _ β refl
Ο _ _ β refl
instance
zero-one-many-has-well-behaved-zero :
Has-well-behaved-zero zero-one-many-semiring-with-meet
zero-one-many-has-well-behaved-zero = record
{ non-trivial = Ξ» ()
; zero-product = Ξ» where
{p = π} _ β injβ refl
{q = π} _ β injβ refl
; +-positiveΛ‘ = Ξ» where
{p = π} {q = π} _ β refl
{p = π} {q = π} ()
{p = π} {q = Ο} ()
; β§-positiveΛ‘ = Ξ» where
{p = π} {q = π} _ β refl
{p = π} {q = π} _ β refl
{p = π} {q = π} πβ§πβ‘π β
β₯-elim (
case
π β‘β¨ π-maximal (sym πβ§πβ‘π) β©
π β
of Ξ» ())
}
where open Tools.Reasoning.PropositionalEquality
Star-requirements :
(Zero-one-many β Zero-one-many β Zero-one-many β Zero-one-many) β
(Zero-one-many β Zero-one-many β Zero-one-many) β
Set
Star-requirements _β_β·_ _β§_ =
let _β€_ : Zero-one-many β Zero-one-many β Set
p β€ q = p β‘ (p β§ q)
in
(β {q r} β (Ο β q β· r) β‘ Ο) Γ
(β {p r} β (p β Ο β· r) β‘ Ο) Γ
(β {p q} β Β¬ (p β‘ π Γ q β‘ π) β (p β q β· Ο) β‘ Ο) Γ
(β {r} β (π β π β· r) β‘ π) Γ
(β {p} β (p β π β· π) β‘ Ο) Γ
((π β π β· π) β€ (π β§ π)) Γ
((π β π β· π) β€ (π β§ π)) Γ
((π β π β· π) β€ π) Γ
((π β π β· π) β€ π)
Star-requirements-requiredβ² :
(M : Semiring-with-meet) β
Semiring-with-meet.π M β‘ π β
Semiring-with-meet.π M β‘ π β
Semiring-with-meet._+_ M β‘ _+_ β
Semiring-with-meet._Β·_ M β‘ _Β·_ β
Semiring-with-meet._β§_ M β‘ _β§_ β
(_β_β·_ :
Zero-one-many β Zero-one-many β Zero-one-many β Zero-one-many) β
(β p q r β (p β q β· r) β€ q + r Β· (p β q β· r)) β
(β p q r β (p β q β· r) β€ p) β
(β r β _Β·_ SubDistributesOverΚ³ (_β_β· r) by _β€_) β
Star-requirements _β_β·_ _β§_
Star-requirements-requiredβ²
M refl refl refl refl refl star β-ineqβ β-ineqβ Β·-sub-distribΚ³-β =
case Meet-requirements-required M refl refl πβ§πβ’π Οβ€ of Ξ» where
(_ , _ , ΟβΟβ‘Ο , _ , Οβπβ‘Ο , _ , Οβπβ‘Ο , _ , _) β
(Ξ» {_ _} β Οββ·)
, (Ξ» {_ _} β βΟβ·)
, (Ξ» {_ _} β ββ·Ο _ _)
, (Ξ» {r = r} β β€-antisym
(begin
π β π β· r β€β¨ β-ineqβ _ _ _ β©
π β)
(begin
π β‘Λβ¨ Β·-zeroΚ³ _ β©
π β π β· r Β· π β€β¨ Β·-sub-distribΚ³-β _ _ _ _ β©
π β π β· r β))
, (Ξ» {p = p} β β€-antisym
(begin
p β π β· π β€β¨ β-ineqβ _ _ _ β©
π + π Β· p β π β· π ββ¨ β’π+β’π (Ξ» ()) (πΒ·β’π βπβ·) β©
Ο β)
(Οβ€ (p β π β· π)))
, β§-greatest-lower-bound
(β-ineqβ _ _ _)
(begin
π β π β· π β€β¨ β-ineqβ _ _ _ β©
π + π Β· π β π β· π β‘β¨β©
π β)
, β§-greatest-lower-bound
(begin
π β π β· π β€β¨ β-ineqβ _ _ _ β©
π + π Β· π β π β· π β‘β¨β©
π β)
(β-ineqβ _ _ _)
, β-ineqβ _ _ _
, β-ineqβ _ _ _
where
open Semiring-with-meet M hiding (π; π; Ο; _+_; _Β·_; _β§_; _β€_)
open PartialOrder M
open Meet M
open Tools.Reasoning.PartialOrder β€-poset
infix 50 _β_β·_
_β_β·_ : Zero-one-many β Zero-one-many β Zero-one-many β Zero-one-many
_β_β·_ = star
Οββ· : Ο β q β· r β‘ Ο
Οββ· {q = q} {r = r} = β€-antisym
(begin
Ο β q β· r β€β¨ β-ineqβ _ _ _ β©
Ο β)
(Οβ€ (Ο β q β· r))
βΟβ· : p β Ο β· r β‘ Ο
βΟβ· {p = p} {r = r} = β€-antisym
(begin
p β Ο β· r β€β¨ β-ineqβ _ _ _ β©
Ο + r Β· p β Ο β· r β‘β¨β©
Ο β)
(Οβ€ (p β Ο β· r))
πββ· : π β q β· r β’ π
πββ· {q = q} {r = r} πββ·β‘π =
case begin
π β‘β¨β©
π Β· Ο β‘Λβ¨ Β·-congΚ³ πββ·β‘π β©
π β q β· r Β· Ο β€β¨ Β·-sub-distribΚ³-β _ _ _ _ β©
Ο β q Β· Ο β· r β‘β¨ Οββ· β©
Ο β
of Ξ» ()
βπβ· : p β π β· r β’ π
βπβ· {p = p} {r = r} βπβ·β‘π =
case begin
π β‘β¨β©
π Β· Ο β‘Λβ¨ Β·-congΚ³ βπβ·β‘π β©
p β π β· r Β· Ο β€β¨ Β·-sub-distribΚ³-β _ _ _ _ β©
(p Β· Ο) β Ο β· r β‘β¨ βΟβ· β©
Ο β
of Ξ» ()
ββ·Ο : β p q β Β¬ (p β‘ π Γ q β‘ π) β (p β q β· Ο) β‘ Ο
ββ·Ο _ Ο _ = βΟβ·
ββ·Ο Ο _ _ = Οββ·
ββ·Ο π π Β¬β‘πΓβ‘π = β₯-elim (Β¬β‘πΓβ‘π (refl , refl))
ββ·Ο p π _ = β€-antisym
(begin
p β π β· Ο β€β¨ β-ineqβ _ _ _ β©
π + Ο Β· p β π β· Ο ββ¨ +-congΛ‘ (ΟΒ·β’π βπβ·) β©
π + Ο β‘β¨β©
Ο β)
(Οβ€ (p β π β· Ο))
ββ·Ο π π _ = β€-antisym
(begin
π β π β· Ο β€β¨ β-ineqβ _ _ _ β©
Ο Β· π β π β· Ο ββ¨ ΟΒ·β’π πββ· β©
Ο β)
(Οβ€ (π β π β· Ο))
Star-requirements-required :
(has-star : Has-star zero-one-many-semiring-with-meet) β
Star-requirements (Has-star._β_β·_ has-star) _β§_
Star-requirements-required has-star =
Star-requirements-requiredβ²
zero-one-many-semiring-with-meet refl refl refl refl refl
_β_β·_
β-ineqβ
β-ineqβ
Β·-sub-distribΚ³-β
where
open Has-star has-star
zero-one-many-lower-bounded-star :
Has-star zero-one-many-semiring-with-meet
zero-one-many-lower-bounded-star =
LowerBounded.has-star zero-one-many-semiring-with-meet Ο Οβ€
zero-one-many-lower-bounded-β :
let open Has-star zero-one-many-lower-bounded-star in
(β r β π β π β· r β‘ π) Γ
(β p q r β Β¬ (p β‘ π Γ q β‘ π) β p β q β· r β‘ Ο)
zero-one-many-lower-bounded-β =
(Ξ» _ β refl)
, (Ξ» where
π π _ Β¬β‘πΓβ‘π β β₯-elim (Β¬β‘πΓβ‘π (refl , refl))
π π _ _ β
Ο Β· πβ§π β‘β¨ ΟΒ·β’π πβ§πβ’π β©
Ο β
π Ο _ _ β refl
π π _ _ β
Ο Β· πβ§π β‘β¨ ΟΒ·β’π πβ§πβ’π β©
Ο β
π π _ _ β refl
π Ο _ _ β refl
Ο _ _ _ β refl)
where
open Has-star zero-one-many-lower-bounded-star
open Tools.Reasoning.PropositionalEquality
zero-one-many-lower-bounded : Modality-variant β Modality
zero-one-many-lower-bounded variant = LowerBounded.isModality
zero-one-many-semiring-with-meet Ο Οβ€
variant
(Ξ» _ β zero-one-many-has-well-behaved-zero)
infix 50 _β_β·_
_β_β·_ : Zero-one-many β Zero-one-many β Zero-one-many β Zero-one-many
p β q β· π = p β§ q
p β q β· π = p + Ο Β· q
p β q β· Ο = Ο Β· (p β§ q)
lower-boundedβ’greatest :
Has-star._β_β·_ zero-one-many-lower-bounded-star β’ _β_β·_
lower-boundedβ’greatest hyp =
case cong (Ξ» f β f π π π) hyp of Ξ» ()
Οββ· : β r β Ο β q β· r β‘ Ο
Οββ· π = refl
Οββ· π = refl
Οββ· Ο = refl
βΟβ· : β r β p β Ο β· r β‘ Ο
βΟβ· {p = p} = Ξ» where
π β
p β§ Ο β‘β¨ M.β§-comm p _ β©
Ο β§ p β‘β¨β©
Ο β
π β
p + Ο β‘β¨ M.+-comm p _ β©
Ο + p β‘β¨β©
Ο β
Ο β
Ο Β· (p β§ Ο) β‘β¨ cong (_ Β·_) (M.β§-comm p _) β©
Ο Β· (Ο β§ p) β‘β¨β©
Ο β
where
open Tools.Reasoning.PropositionalEquality
module M = Semiring-with-meet zero-one-many-semiring-with-meet
πβπβ· : β r β π β π β· r β‘ π
πβπβ· π = refl
πβπβ· π = refl
πβπβ· Ο = refl
ββ·Ο : β p q β Β¬ (p β‘ π Γ q β‘ π) β (p β q β· Ο) β‘ Ο
ββ·Ο p Ο _ = βΟβ· {p = p} Ο
ββ·Ο Ο _ _ = refl
ββ·Ο π π Β¬β‘πΓβ‘π = β₯-elim (Β¬β‘πΓβ‘π (refl , refl))
ββ·Ο π π _ = ΟΒ·β’π πβ§πβ’π
ββ·Ο π π _ = refl
ββ·Ο π π _ = ΟΒ·β’π πβ§πβ’π
βπβ·π : β p β p β π β· π β‘ Ο
βπβ·π π = refl
βπβ·π π = refl
βπβ·π Ο = refl
βπβ§πβ·π : β p β p β πβ§π β· π β‘ Ο
βπβ§πβ·π π = πβ§π-elim (Ξ» q β π β q β· π β‘ Ο) (Ξ» _ β refl) (Ξ» _ β refl)
βπβ§πβ·π π = πβ§π-elim (Ξ» q β π β q β· π β‘ Ο) (Ξ» _ β refl) (Ξ» _ β refl)
βπβ§πβ·π Ο = refl
πβπβ§πβ·π : π β πβ§π β· π β‘ πβ§π
πβπβ§πβ·π = πβ§π-elim
(Ξ» q β π β q β· π β‘ q)
(Ξ» πβ§πβ‘π β πβ§πβ‘π)
(Ξ» _ β refl)
πβπβ§πβ·π : π β πβ§π β· π β‘ πβ§π
πβπβ§πβ·π = πβ§π-elim
(Ξ» q β π β q β· π β‘ q)
(Ξ» _ β refl)
(Ξ» _ β refl)
β-greatest :
(has-star : Has-star zero-one-many-semiring-with-meet) β
β p q r β Has-star._β_β·_ has-star p q r β€ p β q β· r
β-greatest has-star =
case Star-requirements-required has-star of Ξ» where
(Οββ·β² , βΟβ·β² , ββ·β²Ο ,
πβπβ·β² , βπβ·β²π , πβπβ·β²π , πβπβ·β²π , πβπβ·β²π , πβπβ·β²π) β Ξ» where
Ο q r β begin
Ο β q β·β² r ββ¨ Οββ·β² β©
Ο βΛβ¨ Οββ· r β©
Ο β q β· r β
p Ο r β begin
p β Ο β·β² r ββ¨ βΟβ·β² β©
Ο βΛβ¨ βΟβ· r β©
p β Ο β· r β
π π r β begin
π β π β·β² r ββ¨ πβπβ·β² β©
π βΛβ¨ πβπβ· r β©
π β π β· r β
π π Ο β begin
π β π β·β² Ο ββ¨ ββ·β²Ο (Ξ» { (_ , ()) }) β©
Ο βΛβ¨ ββ·Ο π π (Ξ» { (_ , ()) }) β©
π β π β· Ο β
π q Ο β begin
π β q β·β² Ο ββ¨ ββ·β²Ο (Ξ» { (() , _) }) β©
Ο βΛβ¨ ββ·Ο π q (Ξ» { (() , _) }) β©
π β q β· Ο β
p π π β begin
p β π β·β² π ββ¨ βπβ·β²π β©
Ο βΛβ¨ βπβ·π p β©
p β π β· π β
π π π β begin
π β π β·β² π β€β¨ πβπβ·β²π β©
π β§ π β
π π π β begin
π β π β·β² π β€β¨ πβπβ·β²π β©
π β§ π β
π π π β begin
π β π β·β² π β€β¨ πβπβ·β²π β©
π β
π π π β begin
π β π β·β² π β€β¨ πβπβ·β²π β©
π β
where
open Has-star has-star renaming (_β_β·_ to _β_β·β²_)
open PartialOrder zero-one-many-semiring-with-meet
open Tools.Reasoning.PartialOrder β€-poset
zero-one-many-greatest-star : Has-star zero-one-many-semiring-with-meet
zero-one-many-greatest-star = record
{ _β_β·_ = _β_β·_
; β-ineq = β-ineqβ , β-ineqβ
; +-sub-interchangeable-β = +-sub-interchangeable-β
; Β·-sub-distribΚ³-β = Ξ» r _ _ _ β
β€-reflexive (Β·-distribΚ³-β r _ _ _)
; β-sub-distrib-β§ = Ξ» r β
(Ξ» _ _ _ β β€-reflexive (β-distribΛ‘-β§ r _ _ _))
, (Ξ» _ _ _ β β€-reflexive (β-distribΚ³-β§ r _ _ _))
}
where
semiring-with-meet = zero-one-many-semiring-with-meet
open Semiring-with-meet semiring-with-meet
hiding (π; π; Ο; _+_; _Β·_; _β§_; _β€_)
open PartialOrder semiring-with-meet
open Addition semiring-with-meet
open Meet semiring-with-meet
open Multiplication semiring-with-meet
β-ineqβ : β p q r β p β q β· r β€ q + r Β· p β q β· r
β-ineqβ p = Ξ» where
q π β begin
p β§ q β€β¨ β§-decreasingΚ³ p _ β©
q βΛβ¨ +-identityΚ³ _ β©
q + π β
π π β begin
p β π β· π βΛβ¨ Β·-identityΛ‘ _ β©
π Β· p β π β· π β
π π β begin
p + Ο ββ¨ +-zeroΚ³ _ β©
Ο β‘β¨β©
π + π Β· Ο βΛβ¨ cong (Ξ» p β π + π Β· p) (+-zeroΚ³ p) β©
π + π Β· (p + Ο) β
Ο π β begin
p + Ο ββ¨ +-zeroΚ³ _ β©
Ο β
π Ο β begin
Ο Β· (p β§ π) β‘β¨β©
(Ο Β· Ο) Β· (p β§ π) ββ¨ Β·-assoc _ _ _ β©
Ο Β· Ο Β· (p β§ π) β
π Ο β begin
Ο Β· (p β§ π) ββ¨ Β·-distribΛ‘-β§ _ p _ β©
Ο Β· p β§ Ο ββ¨ β§-comm (Ο Β· p) _ β©
Ο β§ Ο Β· p β‘β¨β©
Ο β‘β¨β©
π + Ο Β· Ο ββ¨ cong (Ξ» p β _ + Ο Β· p) (β§-comm _ (Ο Β· p)) β©
π + Ο Β· (Ο Β· p β§ Ο) βΛβ¨ cong (Ξ» p β _ + Ο Β· p) (Β·-distribΛ‘-β§ Ο p _) β©
π + Ο Β· Ο Β· (p β§ π) β
Ο Ο β begin
Ο Β· (p β§ Ο) ββ¨ Β·-distribΛ‘-β§ _ p _ β©
Ο Β· p β§ Ο β€β¨ β§-decreasingΚ³ (Ο Β· p) _ β©
Ο β
where
open Tools.Reasoning.PartialOrder β€-poset
β-ineqβ : β p q r β (p β q β· r) β€ p
β-ineqβ p = Ξ» where
q π β begin
p β§ q β€β¨ β§-decreasingΛ‘ p _ β©
p β
π π β begin
p + π ββ¨ +-identityΚ³ _ β©
p β
π π β begin
p + Ο ββ¨ +-zeroΚ³ _ β©
Ο β€β¨ Οβ€ p β©
p β
Ο π β begin
p + Ο ββ¨ +-zeroΚ³ _ β©
Ο β€β¨ Οβ€ p β©
p β
q Ο β begin
Ο Β· (p β§ q) ββ¨ Β·-distribΛ‘-β§ _ p _ β©
Ο Β· p β§ Ο Β· q β€β¨ β§-decreasingΛ‘ (Ο Β· p) _ β©
Ο Β· p β€β¨ Β·-monotoneΛ‘ (Οβ€ π) β©
π Β· p ββ¨ Β·-identityΛ‘ _ β©
p β
where
open Tools.Reasoning.PartialOrder β€-poset
+-sub-interchangeable-β : β r β _+_ SubInterchangeable (_β_β· r) by _β€_
+-sub-interchangeable-β = Ξ» where
π p q pβ² qβ² β begin
(p β§ q) + (pβ² β§ qβ²) β€β¨ +-sub-interchangeable-β§ p _ _ _ β©
(p + pβ²) β§ (q + qβ²) β
π p q pβ² qβ² β begin
(p + Ο Β· q) + (pβ² + Ο Β· qβ²) ββ¨ +-assoc p _ _ β©
p + (Ο Β· q + (pβ² + Ο Β· qβ²)) βΛβ¨ cong (p +_) (+-assoc (Ο Β· q) _ _) β©
p + ((Ο Β· q + pβ²) + Ο Β· qβ²) ββ¨ cong (Ξ» q β p + (q + _)) (+-comm _ pβ²) β©
p + ((pβ² + Ο Β· q) + Ο Β· qβ²) ββ¨ cong (p +_) (+-assoc pβ² _ _) β©
p + (pβ² + (Ο Β· q + Ο Β· qβ²)) βΛβ¨ +-assoc p _ _ β©
(p + pβ²) + (Ο Β· q + Ο Β· qβ²) βΛβ¨ cong (_ +_) (Β·-distribΛ‘-+ Ο q _) β©
(p + pβ²) + Ο Β· (q + qβ²) β
Ο p q pβ² qβ² β begin
Ο Β· (p β§ q) + Ο Β· (pβ² β§ qβ²) βΛβ¨ Β·-distribΛ‘-+ Ο (p β§ q) (pβ² β§ qβ²) β©
Ο Β· ((p β§ q) + (pβ² β§ qβ²)) β€β¨ Β·-monotoneΚ³ (+-sub-interchangeable-β§ p q pβ² qβ²) β©
Ο Β· ((p + pβ²) β§ (q + qβ²)) β
where
open Tools.Reasoning.PartialOrder β€-poset
Β·-distribΚ³-β : β r β _Β·_ DistributesOverΚ³ (_β_β· r)
Β·-distribΚ³-β = Ξ» where
π q p pβ² β
(p β§ pβ²) Β· q β‘β¨ Β·-distribΚ³-β§ _ p _ β©
p Β· q β§ pβ² Β· q β
π q p pβ² β
(p + Ο Β· pβ²) Β· q β‘β¨ Β·-distribΚ³-+ _ p _ β©
p Β· q + (Ο Β· pβ²) Β· q β‘β¨ cong (_ +_) (Β·-assoc Ο pβ² _) β©
p Β· q + Ο Β· pβ² Β· q β
Ο q p pβ² β
(Ο Β· (p β§ pβ²)) Β· q β‘β¨ Β·-assoc _ _ _ β©
Ο Β· (p β§ pβ²) Β· q β‘β¨ cong (_ Β·_) (Β·-distribΚ³-β§ _ p _) β©
Ο Β· (p Β· q β§ pβ² Β· q) β
where
open Tools.Reasoning.PropositionalEquality
β-distribΛ‘-β§ : β r β (_β_β· r) DistributesOverΛ‘ _β§_
β-distribΛ‘-β§ = Ξ» where
π p _ _ β
lemma p _ _
π p q qβ² β
p + Ο Β· (q β§ qβ²) β‘β¨ cong (_ +_) (Β·-distribΛ‘-β§ Ο q _) β©
p + (Ο Β· q β§ Ο Β· qβ²) β‘β¨ +-distribΛ‘-β§ p _ _ β©
(p + Ο Β· q) β§ p + Ο Β· qβ² β
Ο p q qβ² β
Ο Β· (p β§ q β§ qβ²) β‘β¨ cong (_ Β·_) (lemma p _ _) β©
Ο Β· ((p β§ q) β§ (p β§ qβ²)) β‘β¨ Β·-distribΛ‘-β§ Ο (p β§ _) _ β©
Ο Β· (p β§ q) β§ Ο Β· (p β§ qβ²) β
where
open Tools.Reasoning.PropositionalEquality
lemma = Ξ» p q qβ² β
p β§ (q β§ qβ²) β‘Λβ¨ cong (_β§ _) (β§-idem p) β©
(p β§ p) β§ (q β§ qβ²) β‘β¨ β§-assoc p _ _ β©
p β§ (p β§ (q β§ qβ²)) β‘Λβ¨ cong (p β§_) (β§-assoc p _ _) β©
p β§ ((p β§ q) β§ qβ²) β‘β¨ cong (Ξ» q β p β§ (q β§ _)) (β§-comm p _) β©
p β§ ((q β§ p) β§ qβ²) β‘β¨ cong (p β§_) (β§-assoc q _ _) β©
p β§ (q β§ (p β§ qβ²)) β‘Λβ¨ β§-assoc p _ _ β©
(p β§ q) β§ (p β§ qβ²) β
β-distribΚ³-β§ : β r β (_β_β· r) DistributesOverΚ³ _β§_
β-distribΚ³-β§ = Ξ» where
π q p pβ² β
lemma _ p _
π q p pβ² β
(p β§ pβ²) + Ο Β· q β‘β¨ +-distribΚ³-β§ _ p _ β©
(p + Ο Β· q) β§ (pβ² + Ο Β· q) β
Ο q p pβ² β
Ο Β· ((p β§ pβ²) β§ q) β‘β¨ cong (_ Β·_) (lemma _ p _) β©
Ο Β· ((p β§ q) β§ (pβ² β§ q)) β‘β¨ Β·-distribΛ‘-β§ Ο (p β§ _) _ β©
Ο Β· (p β§ q) β§ Ο Β· (pβ² β§ q) β
where
open Tools.Reasoning.PropositionalEquality
lemma = Ξ» q p pβ² β
(p β§ pβ²) β§ q β‘β¨ β§-comm _ q β©
q β§ (p β§ pβ²) β‘β¨ β-distribΛ‘-β§ π q _ _ β©
(q β§ p) β§ (q β§ pβ²) β‘β¨ congβ _β§_ (β§-comm q _) (β§-comm q _) β©
(p β§ q) β§ (pβ² β§ q) β
Β¬-lower-bounded-greatest :
Β¬ ((has-star : Has-star zero-one-many-semiring-with-meet) β
β p q r β
Has-star._β_β·_ has-star p q r β€
Has-star._β_β·_ zero-one-many-lower-bounded-star p q r)
Β¬-lower-bounded-greatest hyp =
case hyp zero-one-many-greatest-star π π π of Ξ» ()
zero-one-many-greatest : Modality-variant β Modality
zero-one-many-greatest variant = record
{ variant = variant
; semiring-with-meet = zero-one-many-semiring-with-meet
; π-well-behaved = Ξ» _ β zero-one-many-has-well-behaved-zero
; has-nr = Ξ» _ β
Star.has-nr _
β¦ has-star = zero-one-many-greatest-star β¦
}
nr :
Zero-one-many β Zero-one-many β
Zero-one-many β Zero-one-many β Zero-one-many β Zero-one-many
nr p π z s n = ((π β§ p) Β· n + s) β§ (n + z)
nr p π z s n = (π + p) Β· n + Ο Β· s + z
nr _ Ο z s n = Ο Β· (n + s + z)
nrβ² :
Zero-one-many β Zero-one-many β
Zero-one-many β Zero-one-many β Zero-one-many β Zero-one-many
nrβ² _ _ π π π = π
nrβ² _ π π π π = π
nrβ² _ π π π π = π β§ π
nrβ² _ π π π π = π
nrβ² _ π π π π = π β§ π
nrβ² π π π π π = π
nrβ² π π π π π = π β§ π
nrβ² π π π π π = π
nrβ² _ _ _ _ _ = Ο
data Nr-Ο : (p r z s n : Zero-one-many) β Set where
nrβ‘Οβ : Nr-Ο p r Ο s n
nrβ‘Οβ : Nr-Ο p r z Ο n
nrβ‘Οβ : Nr-Ο p r z s Ο
nrβ‘Οβ : Nr-Ο p Ο π s n
nrβ‘Οβ
: Nr-Ο p Ο π π n
nrβ‘Οβ : Nr-Ο p Ο π π π
nrβ‘Οβ : Nr-Ο Ο π π π π
nrβ‘Οβ : Nr-Ο Ο π π π π
nrβ‘Οβ : Nr-Ο π π π π π
nrβ‘Οββ : Nr-Ο p π π π π
nrβ‘Οββ : Nr-Ο p π z π n
nrβ‘Οββ : Nr-Ο p π π s π
nrβ‘Οββ : Nr-Ο p π π π π
data Nr-πβ§π : (p r z s n : Zero-one-many) β Set where
nrβ‘πβ§πβ : Nr-πβ§π p π π π π
nrβ‘πβ§πβ : Nr-πβ§π p π π π π
nrβ‘πβ§πβ : Nr-πβ§π π π π π π
data Nr : (p r z s n result : Zero-one-many) β Set where
nrβ‘π : result β‘ π β Nr p r π π π result
nrβ‘πβ : result β‘ π β Nr p π π π π result
nrβ‘πβ : result β‘ π β Nr p π π π π result
nrβ‘πβ : Nr π π π π π π
nrβ‘πβ : Nr π π π π π π
nrβ‘πβ§π : Nr-πβ§π p r z s n β result β‘ π β§ π β Nr p r z s n result
nrβ‘Ο : Nr-Ο p r z s n β result β‘ Ο β Nr p r z s n result
nrβ²-view : β p r z s n β Nr p r z s n (nrβ² p r z s n)
nrβ²-view = Ξ» where
_ _ π π π β nrβ‘π refl
_ π π π π β nrβ‘πβ refl
_ π π π π β nrβ‘πβ refl
π π π π π β nrβ‘πβ
π π π π π β nrβ‘πβ
_ π π π π β nrβ‘πβ§π nrβ‘πβ§πβ refl
_ π π π π β nrβ‘πβ§π nrβ‘πβ§πβ refl
π π π π π β nrβ‘πβ§π nrβ‘πβ§πβ refl
_ _ Ο _ _ β nrβ‘Ο nrβ‘Οβ refl
_ _ π Ο _ β nrβ‘Ο nrβ‘Οβ refl
_ π π Ο _ β nrβ‘Ο nrβ‘Οβ refl
_ π π Ο _ β nrβ‘Ο nrβ‘Οβ refl
_ _ π π Ο β nrβ‘Ο nrβ‘Οβ refl
_ π π π Ο β nrβ‘Ο nrβ‘Οβ refl
_ π π π Ο β nrβ‘Ο nrβ‘Οβ refl
_ π π π Ο β nrβ‘Ο nrβ‘Οβ refl
_ π π π Ο β nrβ‘Ο nrβ‘Οβ refl
_ Ο π _ _ β nrβ‘Ο nrβ‘Οβ refl
_ Ο π π _ β nrβ‘Ο nrβ‘Οβ
refl
π Ο π π π β nrβ‘Ο nrβ‘Οβ refl
π Ο π π π β nrβ‘Ο nrβ‘Οβ refl
Ο Ο π π π β nrβ‘Ο nrβ‘Οβ refl
Ο π π π π β nrβ‘Ο nrβ‘Οβ refl
Ο π π π π β nrβ‘Ο nrβ‘Οβ refl
π π π π π β nrβ‘Ο nrβ‘Οβ refl
_ π π π π β nrβ‘Ο nrβ‘Οββ refl
_ π π π _ β nrβ‘Ο nrβ‘Οββ refl
_ π π π _ β nrβ‘Ο nrβ‘Οββ refl
_ π π π π β nrβ‘Ο nrβ‘Οββ refl
_ π π π π β nrβ‘Ο nrβ‘Οββ refl
_ π π π π β nrβ‘Ο nrβ‘Οββ refl
nrβ‘nrβ² : β p r β nr p r z s n β‘ nrβ² p r z s n
nrβ‘nrβ² p r = lemma _ _ _ _ _ (nrβ²-view p r _ _ _)
where
open Semiring-with-meet zero-one-many-semiring-with-meet
hiding (π; π; Ο; _+_; _Β·_; _β§_)
open Tools.Reasoning.PropositionalEquality
lemma :
β p r z s n β Nr p r z s n (nrβ² p r z s n) β
nr p r z s n β‘ nrβ² p r z s n
lemma p π .π .π .π (nrβ‘π _) =
((π β§ p) Β· π + π) β§ π β‘β¨ cong (_β§ _) (+-identityΚ³ ((π β§ p) Β· _)) β©
((π β§ p) Β· π) β§ π β‘β¨ cong (_β§ _) (Β·-zeroΚ³ (π β§ p)) β©
π β§ π β‘β¨β©
π β
lemma p π .π .π .π (nrβ‘π _) =
(π + p) Β· π + π β‘β¨ +-identityΚ³ _ β©
(π + p) Β· π β‘β¨ Β·-zeroΚ³ _ β©
π β
lemma _ Ο .π .π .π (nrβ‘π _) =
π β
lemma p .π .π .π .π (nrβ‘πβ _) =
((π β§ p) Β· π + π) β§ π β‘β¨ cong ((_β§ _) ββ (_+ _)) (Β·-zeroΚ³ (π β§ p)) β©
(π + π) β§ π β‘β¨β©
π β
lemma p .π .π .π .π (nrβ‘πβ _) =
(π + p) Β· π + π β‘β¨ cong (_+ _) (Β·-zeroΚ³ (π + p)) β©
π + π β‘β¨β©
π β
lemma .π .π .π .π .π nrβ‘πβ =
π β
lemma .π .π .π .π .π nrβ‘πβ =
π β
lemma p .π .π .π .π (nrβ‘πβ§π nrβ‘πβ§πβ _) =
((π β§ p) Β· π + π) β§ π β‘β¨ cong (_β§ _) (+-identityΚ³ ((π β§ p) Β· _)) β©
((π β§ p) Β· π) β§ π β‘β¨ cong (_β§ _) (Β·-zeroΚ³ (π β§ p)) β©
π β§ π β
lemma p .π .π .π .π (nrβ‘πβ§π nrβ‘πβ§πβ _) =
((π β§ p) Β· π + π) β§ π β‘β¨ cong ((_β§ _) ββ (_+ _)) (Β·-zeroΚ³ (π β§ p)) β©
π β§ π β‘β¨β©
π β§ π β
lemma .π .π .π .π .π (nrβ‘πβ§π nrβ‘πβ§πβ _) =
((π β§ π) Β· π + π) β§ π β‘β¨ cong (_β§ _) (+-identityΚ³ (πβ§π Β· _)) β©
(π β§ π) Β· π β§ π β‘β¨ cong (_β§ _) (Β·-identityΚ³ πβ§π) β©
(π β§ π) β§ π β‘β¨ β§-assoc π π _ β©
π β§ (π β§ π) β‘β¨β©
π β§ π β
lemma p π .Ο s n (nrβ‘Ο nrβ‘Οβ _) =
((π β§ p) Β· n + s) β§ (n + Ο) β‘β¨ cong (((π β§ p) Β· _ + _) β§_) (+-zeroΚ³ _) β©
((π β§ p) Β· n + s) β§ Ο β‘β¨ β§-zeroΚ³ ((π β§ p) Β· _ + _) β©
Ο β
lemma p π .Ο s n (nrβ‘Ο nrβ‘Οβ _) =
(π + p) Β· n + Ο Β· s + Ο β‘β¨ cong ((π + p) Β· _ +_) (+-zeroΚ³ _) β©
(π + p) Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
lemma p Ο .Ο s n (nrβ‘Ο nrβ‘Οβ _) =
Ο Β· (n + s + Ο) β‘β¨ Β·-distribΛ‘-+ _ n _ β©
Ο Β· n + Ο Β· (s + Ο) β‘β¨ cong (Ο Β· n +_) (Β·-distribΛ‘-+ _ s _) β©
Ο Β· n + Ο Β· s + Ο β‘β¨ cong (Ο Β· n +_) (+-zeroΚ³ _) β©
Ο Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
lemma p π z .Ο n (nrβ‘Ο nrβ‘Οβ β‘Ο) =
((π β§ p) Β· n + Ο) β§ (n + z) β‘β¨ cong (_β§ _) (+-zeroΚ³ ((π β§ p) Β· _)) β©
Ο β§ (n + z) β‘β¨β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p π z Ο n β
lemma p π z .Ο n (nrβ‘Ο nrβ‘Οβ β‘Ο) =
(π + p) Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p π z Ο n β
lemma p Ο z .Ο n (nrβ‘Ο nrβ‘Οβ β‘Ο) =
Ο Β· (n + Ο) β‘β¨ Β·-distribΛ‘-+ _ n _ β©
Ο Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p Ο z Ο n β
lemma p π z s .Ο (nrβ‘Ο nrβ‘Οβ β‘Ο) =
((π β§ p) Β· Ο + s) β§ Ο β‘β¨ β§-zeroΚ³ ((π β§ p) Β· _ + _) β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p π z s Ο β
lemma p π z s .Ο (nrβ‘Ο nrβ‘Οβ β‘Ο) =
(π + p) Β· Ο + Ο Β· s + z β‘β¨ cong (_+ _) (Β·-distribΚ³-+ _ π p) β©
(Ο + p Β· Ο) + Ο Β· s + z β‘β¨β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p π z s Ο β
lemma p Ο z s .Ο (nrβ‘Ο nrβ‘Οβ β‘Ο) =
Ο β‘Λβ¨ β‘Ο β©
nrβ² p Ο z s Ο β
lemma p .Ο .π s n (nrβ‘Ο nrβ‘Οβ _) =
Ο Β· (n + s + π) β‘Λβ¨ cong (Ο Β·_) (+-assoc n _ _) β©
Ο Β· ((n + s) + π) β‘β¨ Β·-distribΛ‘-+ _ (n + _) _ β©
Ο Β· (n + s) + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
lemma p .Ο .π .π n (nrβ‘Ο nrβ‘Οβ
_) =
Ο Β· (n + π) β‘β¨ Β·-distribΛ‘-+ _ n _ β©
Ο Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
lemma p .Ο .π .π .π (nrβ‘Ο nrβ‘Οβ β‘Ο) =
Ο β‘Λβ¨ β‘Ο β©
nrβ² p Ο π π π β
lemma .Ο π .π .π .π (nrβ‘Ο nrβ‘Οβ _) =
Ο β
lemma .Ο π .π .π .π (nrβ‘Ο nrβ‘Οβ _) =
Ο β
lemma .π .π .π .π .π (nrβ‘Ο nrβ‘Οβ _) =
Ο β
lemma p .π .π .π .π (nrβ‘Ο nrβ‘Οββ _) =
((π β§ p) Β· π + π) β§ π β‘β¨ cong ((_β§ _) ββ (_+ _)) (Β·-distribΚ³-β§ _ π p) β©
((π β§ p Β· π) + π) β§ π β‘β¨ cong ((_β§ _) ββ (_+ _) ββ (π β§_)) (Β·-identityΚ³ p) β©
((π β§ p) + π) β§ π β‘β¨ cong (_β§ _) (+-distribΚ³-β§ _ π p) β©
(Ο β§ (p + π)) β§ π β‘β¨β©
Ο β
lemma p .π z .π n (nrβ‘Ο nrβ‘Οββ β‘Ο) =
(π + p) Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p π z π n β
lemma p .π .π s .π (nrβ‘Ο nrβ‘Οββ β‘Ο) =
((π β§ p) Β· π + s) β§ Ο β‘β¨ β§-zeroΚ³ ((π β§ p) Β· _ + _) β©
Ο β‘Λβ¨ β‘Ο β©
nrβ² p π π s π β
lemma p .π .π .π .π (nrβ‘Ο nrβ‘Οββ _) =
(π + p) Β· π + π β‘β¨ cong (_+ _) (Β·-distribΚ³-+ _ π p) β©
(π + p Β· π) + π β‘β¨ cong (_+ _) (+-comm _ (p Β· _)) β©
(p Β· π + π) + π β‘β¨ +-assoc (p Β· _) _ _ β©
p Β· π + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
nr-view : β p r z s n β Nr p r z s n (nr p r z s n)
nr-view p r z s n = $β¨ nrβ²-view _ _ _ _ _ β©
Nr p r z s n (nrβ² p r z s n) ββ¨ subst (Nr _ _ _ _ _) (sym (nrβ‘nrβ² p r)) β©
Nr p r z s n (nr p r z s n) β‘
nr-π : β p r β nr p r z s n β‘ π β (z β‘ π Γ s β‘ π Γ n β‘ π)
nr-π p r =
lemmaβ (nr-view _ _ _ _ _)
, Ξ» { (refl , refl , refl) β lemmaβ p r }
where
open Semiring-with-meet zero-one-many-semiring-with-meet
hiding (π; π; _+_; _Β·_; _β§_)
open Tools.Reasoning.PropositionalEquality
lemmaβ : Nr p r z s n result β result β‘ π β z β‘ π Γ s β‘ π Γ n β‘ π
lemmaβ (nrβ‘π _) refl = refl , refl , refl
lemmaβ (nrβ‘πβ§π _ πβ‘πβ§π) refl = β₯-elim (πβ§πβ’π (sym πβ‘πβ§π))
lemmaβ : β p r β nr p r π π π β‘ π
lemmaβ = Ξ» where
_ Ο β refl
Ο π β refl
π π β refl
π π β refl
Ο π β refl
π π β refl
π π β
((π β§ π) Β· π + π) β§ π β‘β¨ cong (_β§ _) (+-identityΚ³ (πβ§π Β· _)) β©
((π β§ π) Β· π) β§ π β‘β¨ cong (_β§ _) (Β·-zeroΚ³ πβ§π) β©
π β§ π β‘β¨β©
π β
zero-one-many-has-nr : Has-nr zero-one-many-semiring-with-meet
zero-one-many-has-nr = record
{ nr = nr
; nr-monotone = Ξ» {p = p} {r = r} β nr-monotone p r
; nr-Β· = Ξ» {p = p} {r = r} β nr-Β· p r
; nr-+ = Ξ» {p = p} {r = r} β nr-+ p r
; nr-π = Ξ» {p = p} {r = r} β
nr-π p r .projβ (refl , refl , refl)
; nr-positive = Ξ» {p = p} {r = r} β nr-π p r .projβ
; nr-zero = Ξ» {n = _} {p = p} {r = r} nβ€π β nr-zero p r nβ€π
; nr-suc = Ξ» {p = p} {r = r} β nr-suc p r
}
where
open Semiring-with-meet zero-one-many-semiring-with-meet
hiding (π; π; Ο; _+_; _Β·_; _β§_; _β€_)
open Addition zero-one-many-semiring-with-meet
open Meet zero-one-many-semiring-with-meet
open Multiplication zero-one-many-semiring-with-meet
open PartialOrder zero-one-many-semiring-with-meet
nr-monotone :
β p r β
zβ β€ zβ β sβ β€ sβ β nβ β€ nβ β
nr p r zβ sβ nβ β€ nr p r zβ sβ nβ
nr-monotone = Ξ» where
p π zββ€zβ sββ€sβ nββ€nβ β
β§-monotone (+-monotone (Β·-monotoneΚ³ {r = π β§ p} nββ€nβ) sββ€sβ)
(+-monotone nββ€nβ zββ€zβ)
p π zββ€zβ sββ€sβ nββ€nβ β
+-monotone (Β·-monotoneΚ³ {r = π + p} nββ€nβ)
(+-monotone (Β·-monotoneΚ³ sββ€sβ) zββ€zβ)
_ Ο zββ€zβ sββ€sβ nββ€nβ β
Β·-monotoneΚ³ (+-monotone nββ€nβ (+-monotone sββ€sβ zββ€zβ))
nr-Β· : β p r β nr p r z s n Β· q β€ nr p r (z Β· q) (s Β· q) (n Β· q)
nr-Β· {z = z} {s = s} {n = n} {q = q} p = Ξ» where
π β begin
(((π β§ p) Β· n + s) β§ (n + z)) Β· q β‘β¨ Β·-distribΚ³-β§ _ ((π β§ p) Β· _ + _) _ β©
((π β§ p) Β· n + s) Β· q β§ (n + z) Β· q β‘β¨ β§-cong (Β·-distribΚ³-+ _ ((π β§ p) Β· _) _)
(Β·-distribΚ³-+ _ n _) β©
(((π β§ p) Β· n) Β· q + s Β· q) β§ (n Β· q + z Β· q) β‘β¨ β§-congΚ³ (+-congΚ³ (Β·-assoc (π β§ p) _ _)) β©
((π β§ p) Β· (n Β· q) + s Β· q) β§ (n Β· q + z Β· q) β
π β begin
((π + p) Β· n + Ο Β· s + z) Β· q β‘β¨ Β·-distribΚ³-+ _ ((π + p) Β· _) _ β©
((π + p) Β· n) Β· q + (Ο Β· s + z) Β· q β‘β¨ +-congΛ‘ (Β·-distribΚ³-+ _ (Ο Β· s) _) β©
((π + p) Β· n) Β· q + (Ο Β· s) Β· q + z Β· q β‘β¨ +-cong (Β·-assoc (π + p) _ _)
(+-congΚ³ (Β·-assoc Ο s _)) β©
(π + p) Β· (n Β· q) + Ο Β· (s Β· q) + z Β· q β
Ο β begin
(Ο Β· (n + s + z)) Β· q β‘β¨ Β·-assoc _ _ _ β©
Ο Β· ((n + s + z) Β· q) β‘β¨ Β·-congΛ‘ (Β·-distribΚ³-+ _ n _) β©
Ο Β· (n Β· q + (s + z) Β· q) β‘β¨ Β·-congΛ‘ (+-congΛ‘ (Β·-distribΚ³-+ _ s _)) β©
Ο Β· (n Β· q + s Β· q + z Β· q) β
where
open Tools.Reasoning.PartialOrder β€-poset
nr-+ :
β p r β
nr p r zβ sβ nβ + nr p r zβ sβ nβ β€
nr p r (zβ + zβ) (sβ + sβ) (nβ + nβ)
nr-+ {zβ = zβ} {sβ = sβ} {nβ = nβ} {zβ = zβ} {sβ = sβ} {nβ = nβ} p =
Ξ» where
π β begin
(((π β§ p) Β· nβ + sβ) β§ (nβ + zβ)) +
(((π β§ p) Β· nβ + sβ) β§ (nβ + zβ)) β€β¨ +-sub-interchangeable-β§ ((π β§ p) Β· _ + _) _ _ _ β©
(((π β§ p) Β· nβ + sβ) + ((π β§ p) Β· nβ + sβ)) β§
((nβ + zβ) + (nβ + zβ)) β‘β¨ β§-cong (+-sub-interchangeable-+ ((π β§ p) Β· _) _ _ _)
(+-sub-interchangeable-+ nβ _ _ _) β©
(((π β§ p) Β· nβ + (π β§ p) Β· nβ) + (sβ + sβ)) β§
((nβ + nβ) + (zβ + zβ)) β‘Λβ¨ β§-congΚ³ (+-congΚ³ (Β·-distribΛ‘-+ (π β§ p) _ _)) β©
((π β§ p) Β· (nβ + nβ) + (sβ + sβ)) β§ ((nβ + nβ) + (zβ + zβ)) β
π β begin
((π + p) Β· nβ + Ο Β· sβ + zβ) + ((π + p) Β· nβ + Ο Β· sβ + zβ) β‘β¨ +-sub-interchangeable-+ ((π + p) Β· _) _ _ _ β©
((π + p) Β· nβ + (π + p) Β· nβ) + (Ο Β· sβ + zβ) + (Ο Β· sβ + zβ) β‘β¨ +-cong (sym (Β·-distribΛ‘-+ (π + p) _ _))
(+-sub-interchangeable-+ (Ο Β· sβ) _ _ _) β©
(π + p) Β· (nβ + nβ) + (Ο Β· sβ + Ο Β· sβ) + (zβ + zβ) β‘Λβ¨ +-congΛ‘ {x = (π + p) Β· _}
(+-congΚ³ (Β·-distribΛ‘-+ Ο sβ _)) β©
(π + p) Β· (nβ + nβ) + Ο Β· (sβ + sβ) + (zβ + zβ) β
Ο β begin
Ο Β· (nβ + sβ + zβ) + Ο Β· (nβ + sβ + zβ) β‘Λβ¨ Β·-distribΛ‘-+ _ (nβ + _) _ β©
Ο Β· ((nβ + sβ + zβ) + (nβ + sβ + zβ)) β‘β¨ Β·-congΛ‘ lemma β©
Ο Β· ((nβ + nβ) + (sβ + sβ) + (zβ + zβ)) β
where
lemma =
(nβ + sβ + zβ) + (nβ + sβ + zβ) β‘β¨ +-sub-interchangeable-+ nβ _ _ _ β©
(nβ + nβ) + (sβ + zβ) + (sβ + zβ) β‘β¨ +-congΛ‘ {x = nβ + _}
(+-sub-interchangeable-+ sβ _ _ _) β©
(nβ + nβ) + (sβ + sβ) + (zβ + zβ) β
where
open Tools.Reasoning.PropositionalEquality
open Tools.Reasoning.PartialOrder β€-poset
nr-zero : β p r β n β€ π β nr p r z s n β€ z
nr-zero {n = n} {z = z} {s = s} p r nβ€π =
case nr-view p r z s n of Ξ» where
(nrβ‘π β‘π) β begin
nr p r π π π β‘β¨ β‘π β©
π β
(nrβ‘πβ β‘π) β begin
nr p π π π π β‘β¨ β‘π β©
π β
(nrβ‘πβ β‘π) β begin
nr p π π π π β‘β¨ β‘π β©
π β
nrβ‘πβ β begin
π β€β¨ nβ€π β©
π β
nrβ‘πβ β begin
π β€β¨ nβ€π β©
π β
(nrβ‘πβ§π nrβ‘πβ§πβ β‘πβ§π) β begin
((π β§ p) Β· π + π) β§ π β‘β¨ β‘πβ§π β©
π β§ π β€β¨ β§-decreasingΚ³ π π β©
π β
(nrβ‘πβ§π nrβ‘πβ§πβ β‘πβ§π) β begin
((π β§ p) Β· π + π) β§ π β‘β¨ β‘πβ§π β©
π β§ π β€β¨ β§-decreasingΛ‘ π π β©
π β
(nrβ‘πβ§π nrβ‘πβ§πβ β‘πβ§π) β begin
((π β§ π) Β· π + π) β§ π β‘β¨ β‘πβ§π β©
π β§ π β€β¨ β§-decreasingΛ‘ π π β©
π β
(nrβ‘Ο _ β‘Ο) β begin
nr p r z s n β‘β¨ β‘Ο β©
Ο β€β¨ refl β©
z β
where
open Tools.Reasoning.PartialOrder β€-poset
nr-suc : β p r β nr p r z s n β€ s + p Β· n + r Β· nr p r z s n
nr-suc {z = z} {s = s} {n = n} p r =
case nr-view p r z s n of Ξ» where
(nrβ‘π β‘π) β begin
nr p r π π π β‘β¨ β‘π β©
π β‘Λβ¨ Β·-zeroΚ³ _ β©
r Β· π β‘Λβ¨ +-identityΛ‘ _ β©
π + r Β· π β‘Λβ¨ +-cong (Β·-zeroΚ³ p) (Β·-congΛ‘ β‘π) β©
p Β· π + r Β· nr p r π π π β‘β¨β©
π + p Β· π + r Β· nr p r π π π β
(nrβ‘πβ β‘π) β begin
nr p π π π π β‘β¨ β‘π β©
π β‘β¨β©
π + π + π β‘Λβ¨ +-congΛ‘ (+-congΚ³ {x = π} (Β·-zeroΚ³ p)) β©
π + p Β· π + π β‘β¨β©
π + p Β· π + π Β· nr p π π π π β
(nrβ‘πβ _) β begin
nr p π π π π β‘β¨β©
π + nr p π π π π β‘Λβ¨ +-cong (Β·-zeroΚ³ p) (Β·-identityΛ‘ _) β©
p Β· π + π Β· nr p π π π π β‘Λβ¨ +-identityΛ‘ _ β©
π + p Β· π + π Β· nr p π π π π β
nrβ‘πβ β begin
nr π π π π π β‘β¨β©
π β‘β¨β©
π + π Β· π + π Β· nr π π π π π β
nrβ‘πβ β begin
nr π π π π π β‘β¨β©
π β‘β¨β©
π + π Β· π + π Β· nr π π π π π β
(nrβ‘πβ§π nrβ‘πβ§πβ β‘πβ§π) β begin
((π β§ p) Β· π + π) β§ π β‘β¨ β‘πβ§π β©
π β§ π β€β¨ β§-decreasingΛ‘ π π β©
π β‘Λβ¨ Β·-zeroΚ³ _ β©
p Β· π β‘Λβ¨ +-identityΚ³ _ β©
p Β· π + π β
(nrβ‘πβ§π nrβ‘πβ§πβ β‘πβ§π) β begin
((π β§ p) Β· π + π) β§ π β‘β¨ β‘πβ§π β©
π β§ π β€β¨ β§-decreasingΚ³ π π β©
π β‘Λβ¨ +-identityΚ³ _ β©
π + π β‘Λβ¨ cong (_ +_) (Β·-zeroΚ³ p) β©
π + p Β· π β‘Λβ¨ cong (_ +_) (+-identityΚ³ (p Β· _)) β©
π + p Β· π + π β
(nrβ‘πβ§π nrβ‘πβ§πβ β‘πβ§π) β begin
((π β§ π) Β· π + π) β§ π β‘β¨ β‘πβ§π β©
π β§ π β€β¨ β§-decreasingΛ‘ π π β©
π β
(nrβ‘Ο _ β‘Ο) β begin
nr p r z s n β‘β¨ β‘Ο β©
Ο β€β¨ refl β©
s + p Β· n + r Β· nr p r z s n β
where
open Tools.Reasoning.PartialOrder β€-poset
zero-one-many-modality : Modality-variant β Modality
zero-one-many-modality variant = record
{ variant = variant
; semiring-with-meet = zero-one-many-semiring-with-meet
; π-well-behaved = Ξ» _ β zero-one-many-has-well-behaved-zero
; has-nr = Ξ» _ β zero-one-many-has-nr
}