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.Nat using (1+; Sequence)
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.Greatest-lower-bound as GLB
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
import Graded.Modality.Properties.Natrec as Natrec
import Graded.Modality.Properties.Subtraction as Subtraction
import Graded.Context
import Graded.Context.Properties
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 : Modality) β
Modality.π M β‘ π β
Modality.π M β‘ π β
Modality._β§_ M π π β’ π β
(β p β Modality._β€_ M Ο p) β
Meet-requirements (Modality._β§_ M)
Meet-requirements-required M@record{} refl refl πβ§πβ’π Οβ€ =
(π β§ π β‘β¨ β§-idem _ β©
π β)
, (π β§ π β‘β¨ β§-idem _ β©
π β)
, (Ο β§ Ο β‘β¨ β§-idem _ β©
Ο β)
, (π β§ Ο β‘β¨ β§-comm _ _ β©
Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, (Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, (π β§ Ο β‘β¨ β§-comm _ _ β©
Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, (Ο β§ π β‘Λβ¨ Οβ€ π β©
Ο β)
, πβ§πβ’π
, (Ξ» πβ§πβ‘π β πβ§πβ’π (
π β§ π β‘β¨ β§-comm _ _ β©
π β§ π β‘β¨ πβ§πβ‘π β©
π β))
where
open Modality M hiding (π; π; Ο)
open Meet M
open PartialOrder M
open Tools.Reasoning.PropositionalEquality
πβ§π : Zero-one-many
πβ§π = if πβ€π then π else Ο
infixr 43 _β§_
_β§_ : Zero-one-many β Zero-one-many β Zero-one-many
π β§ π = π
π β§ π = π
π β§ π = πβ§π
π β§ π = πβ§π
_ β§ _ = Ο
πβ§πβ‘π : T πβ€π β πβ§π β‘ π
πβ§πβ‘π = lemma _
where
lemma : β b β T b β (if b then π else Ο) β‘ π
lemma true _ = refl
lemma false ()
πβ§πβ‘πβπβ€π : πβ§π β‘ π β T πβ€π
πβ§πβ‘πβπβ€π = lemma _
where
lemma : β b β (if b then π else Ο) β‘ π β T b
lemma true _ = _
lemma false ()
πβ§πβ‘Ο : Β¬ 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))
β§β‘π {p = π} {q = π} ()
β§β‘π {p = π} {q = Ο} ()
β§β‘π {p = π} {q = Ο} ()
β§β‘π {p = Ο} ()
opaque
πβ§pβ’π : β p β π β§ p β’ π
πβ§pβ’π π = πβ§πβ’π
πβ§pβ’π π = Ξ» ()
πβ§pβ’π Ο = Ξ» ()
Order-requirements : (Zero-one-many β Zero-one-many β Set) β Set
Order-requirements _β€_ = (Ο β€ π) Γ (Ο β€ π) Γ Β¬ (π β€ π)
Order-requirements-required :
(M : Modality) β
Modality.π M β‘ π β
Modality.π M β‘ π β
Modality._β§_ M π π β’ π β
(β p β Modality._β€_ M Ο p) β
Order-requirements (Modality._β€_ M)
Order-requirements-required M@record{} refl refl πβ§πβ’π Οβ€ =
case Meet-requirements-required M refl refl πβ§πβ’π Οβ€ of Ξ» where
(_ , _ , _ , _ , Οβπβ‘Ο , _ , Οβπβ‘Ο , πβπβ’π , _) β
(Ο β‘Λβ¨ Οβπβ‘Ο β©
Ο β π β)
, (Ο β‘Λβ¨ Οβπβ‘Ο β©
Ο β π β)
, (Ξ» πβ‘πβπ β πβπβ’π (
π β π β‘Λβ¨ πβ‘πβπ β©
π β))
where
open Modality 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 = Ο} ()
π-maximal {p = π} refl = refl
π-maximal {p = π} = πβ§π-elim
(Ξ» q β π β‘ q β π β‘ π)
(Ξ» _ β sym)
(Ξ» _ ())
πβ°πβ§π : Β¬ π β€ πβ§π
πβ°πβ§π = πβ§πβ’π ββ π-maximal
πβ€πβπβ€π : T πβ€π β π β€ π
πβ€πβπβ€π πβ€π =
π β‘Λβ¨ πβ§πβ‘π πβ€π β©
π β§ π β
where
open Tools.Reasoning.PropositionalEquality
π-maximal : Β¬ T πβ€π β π β€ p β p β‘ π
π-maximal {p = Ο} _ ()
π-maximal {p = π} _ refl = refl
π-maximal {p = π} πβ°π πβ€π = β₯-elim (
case
π β‘β¨ πβ€π β©
π β§ π β‘β¨ πβ§πβ‘Ο πβ°π β©
Ο β
of Ξ» ())
where
open Tools.Reasoning.PropositionalEquality
opaque
β’πββ€π : β p β p β’ π β p β€ π
β’πββ€π π pβ’π = β₯-elim (pβ’π refl)
β’πββ€π π pβ’π = refl
β’πββ€π Ο pβ’π = refl
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)
+β‘π {p = π} {q = π} ()
+β‘π {p = π} {q = Ο} ()
+β‘π {p = π} {q = π} ()
+β‘π {p = π} {q = Ο} ()
+β‘π {p = Ο} ()
+-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
opaque
β’πΒ·Ο : p β’ π β p Β· Ο β‘ Ο
β’πΒ·Ο {(π)} πβ’π = β₯-elim (πβ’π refl)
β’πΒ·Ο {(π)} _ = refl
β’πΒ·Ο {(Ο)} _ = 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-modality : Modality
zero-one-many-modality = 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-modality
zero-one-many-has-well-behaved-zero = record
{ non-trivial = Ξ» ()
; zero-product = Ξ» where
{p = π} _ β injβ refl
{q = π} _ β injβ refl
{p = π} {q = π} ()
{p = π} {q = Ο} ()
{p = Ο} {q = π} ()
{p = Ο} {q = Ο} ()
; +-positiveΛ‘ = Ξ» where
{p = π} {q = π} _ β refl
{p = π} {q = π} ()
{p = π} {q = Ο} ()
{p = π} {q = π} ()
{p = π} {q = π} ()
{p = π} {q = Ο} ()
{p = Ο} ()
; β§-positiveΛ‘ = Ξ» where
{p = π} {q = π} _ β refl
{p = π} {q = π} _ β refl
{p = π} {q = π} πβ§πβ‘π β
β₯-elim (
case
π β‘β¨ π-maximal (sym πβ§πβ‘π) β©
π β
of Ξ» ())
{p = π} {q = Ο} ()
{p = π} {q = π} ()
{p = π} {q = Ο} ()
{p = Ο} ()
}
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 : Modality) β
Modality.π M β‘ π β
Modality.π M β‘ π β
Modality._+_ M β‘ _+_ β
Modality._Β·_ M β‘ _Β·_ β
Modality._β§_ 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@record{} 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 Modality 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-modality) β
Star-requirements (Has-star._β_β·_ has-star) _β§_
Star-requirements-required has-star =
Star-requirements-requiredβ²
zero-one-many-modality 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-modality
zero-one-many-lower-bounded-star =
LowerBounded.has-star zero-one-many-modality Ο Οβ€
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
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 = Modality zero-one-many-modality
πβπβ· : β 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-modality) β
β 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-modality
open Tools.Reasoning.PartialOrder β€-poset
zero-one-many-greatest-star : Has-star zero-one-many-modality
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
open Modality zero-one-many-modality
hiding (π; π; Ο; _+_; _Β·_; _β§_; _β€_)
open PartialOrder zero-one-many-modality
open Addition zero-one-many-modality
open Meet zero-one-many-modality
open Multiplication zero-one-many-modality
β-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-modality) β
β 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-star-nr : Has-nr zero-one-many-modality
zero-one-many-greatest-star-nr =
Star.has-nr _ β¦ has-star = zero-one-many-greatest-star β¦
opaque
Β¬zero-one-many-greatest-star-factoring-nr :
Β¬ Is-factoring-nr zero-one-many-greatest-star-nr
Β¬zero-one-many-greatest-star-factoring-nr factoring = case πβ‘Ο of Ξ» ()
where
open Has-nr zero-one-many-greatest-star-nr
open Is-factoring-nr factoring
open Modality zero-one-many-modality
hiding (π; π; Ο; _+_; _Β·_)
open Tools.Reasoning.PropositionalEquality
πβ‘Ο : π β‘ Ο
πβ‘Ο = begin
π β‘β¨β©
nr π π π π π β‘β¨ nr-factoring {z = π} {s = π} β©
nrβ π π Β· π + nr π π π π π β‘β¨β©
nrβ π π Β· π + πβ§π + π β‘β¨ +-cong (Β·-identityΚ³ _) (+-identityΚ³ πβ§π) β©
nrβ π π + πβ§π β‘β¨ β’π+β’π nrββ’π πβ§πβ’π β©
Ο β
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 Modality zero-one-many-modality
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 Modality zero-one-many-modality
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β (nrβ‘πβ ()) refl
lemmaβ (nrβ‘πβ ()) refl
lemmaβ nrβ‘πβ ()
lemmaβ nrβ‘πβ ()
lemmaβ (nrβ‘Ο _ ()) refl
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-modality
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-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 Modality zero-one-many-modality
hiding (π; π; Ο; _+_; _Β·_; _β§_; _β€_)
open Addition zero-one-many-modality
open Meet zero-one-many-modality
open Multiplication zero-one-many-modality
open PartialOrder zero-one-many-modality
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
opaque
zero-one-many-has-factoring-nr :
Is-factoring-nr zero-one-many-has-nr
zero-one-many-has-factoring-nr = record
{ nrβ = nrβ
; nrββ’π = Ξ» {p} {r} β πβ§pβ’π (r + p)
; nr-factoring = Ξ» {p} {r} {z} {s} {n} β nr-factoring p r z s n
}
where
open Tools.Reasoning.PropositionalEquality
open Modality zero-one-many-modality
hiding (π; π; Ο; _+_; _Β·_; _β§_)
nrβ : Opβ Zero-one-many
nrβ p r = π β§ (r + p)
π+pβ‘πβ§π+p : β p β π + p β‘ π β§ (π + p)
π+pβ‘πβ§π+p π = refl
π+pβ‘πβ§π+p π = refl
π+pβ‘πβ§π+p Ο = refl
lemma : β p q r β p β’ π β (p + q) β§ (π + r) β‘ p + q β§ r
lemma π q r pβ’π = β₯-elim (pβ’π refl)
lemma π q r pβ’π = sym (+-distribΛ‘-β§ π q r)
lemma Ο q r pβ’π = refl
nr-factoring : (p r z s n : Zero-one-many) β nr p r z s n β‘ nrβ p r Β· n + nr p r z s π
nr-factoring p π z s π
rewrite Β·-zeroΚ³ (π β§ p) = refl
nr-factoring p π z s π
rewrite Β·-zeroΚ³ (π β§ p) rewrite Β·-identityΚ³ (π β§ p) = lemma (π β§ p) s z (πβ§pβ’π p)
nr-factoring p π z s Ο
rewrite Β·-distribΚ³-β§ Ο π p = refl
nr-factoring p π z s n rewrite Β·-zeroΚ³ (π + p) =
+-congΚ³ (Β·-congΚ³ (π+pβ‘πβ§π+p p))
nr-factoring p Ο z s n = Β·-distribΛ‘-+ Ο n (s + z)
opaque
nr-greatest-factoring :
(has-nr : Has-nr zero-one-many-modality)
(is-factoring-nr : Is-factoring-nr has-nr) β
β p r z s n β Has-nr.nr has-nr p r z s n β€ nr p r z s n
nr-greatest-factoring has-nr is-factoring-nr = Ξ» where
p r Ο s n β lemma $ begin
nrβ³ p r Ο s n β‘β¨ nr-factoring β©
nrββ³ p r Β· n + nrβ³ p r Ο s π β€β¨ +-monotoneΚ³ (nr-zero refl) β©
nrββ³ p r Β· n + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
p r z Ο n β lemma $ begin
nrβ³ p r z Ο n β€β¨ nr-suc β©
Ο + p Β· n + r Β· nrβ³ p r z Ο n β‘β¨β©
Ο β
p r z s Ο β lemma $ begin
nrβ³ p r z s Ο β‘β¨ nr-factoring β©
nrββ³ p r Β· Ο + nrβ³ p r z s π β‘β¨ +-congΚ³ (β’πΒ·Ο nrββ’π) β©
Ο β
p r π π π β begin
nrβ³ p r π π π β‘β¨ nrβ³-π β¦ has-nr β¦ β©
π β‘Λβ¨ nr-π p r .projβ (refl , refl , refl) β©
nr p r π π π β
Ο r z s π β lemma $ begin
nrβ³ Ο r z s π β€β¨ nr-suc β©
s + Ο + r Β· nrβ³ Ο r z s π β‘β¨β©
s + Ο β‘β¨ +-zeroΚ³ s β©
Ο β
π r z π π β lemma $ begin
nrβ³ π r z π π β€β¨ nr-suc β©
π + π + r Β· nrβ³ π r z π π β‘Λβ¨ +-assoc π π (r Β· nrβ³ π r z π π) β©
Ο + r Β· nrβ³ π r z π π β‘β¨β©
Ο β
p r π π π β nrβ³przsπβ€ Ξ» ()
p r π s π β nrβ³przsπβ€ Ξ» ()
p Ο π π π β nrβ³pΟβ€ Ξ» ()
p Ο z π π β nrβ³pΟβ€ Ξ» ()
p Ο z s π β nrβ³pΟβ€ Ξ» ()
π π z s π β lemma $ begin
nrβ³ π π z s π β€β¨ nr-suc β©
s + π + π Β· nrβ³ π π z s π β‘β¨ +-congΛ‘ {s} (+-congΛ‘ {π} (Β·-identityΛ‘ (nrβ³ π π z s π))) β©
s + π + nrβ³ π π z s π β‘β¨ +-congΛ‘ {s} (β’π+β’π {π} {nrβ³ π π z s π} (Ξ» ())
Ξ» nrβ³β‘π β case nrβ³-positive nrβ³β‘π of Ξ» ()) β©
s + Ο β‘β¨ +-zeroΚ³ s β©
Ο β
p π z π n β lemma $ begin
nrβ³ p π z π n β€β¨ nr-suc β©
π + p Β· n + π Β· nrβ³ p π z π n β‘β¨ +-congΛ‘ {π} (+-congΛ‘ {p Β· n} (Β·-identityΛ‘ _)) β©
π + p Β· n + nrβ³ p π z π n β‘β¨ +-congΛ‘ {π} (+-comm (p Β· n) (nrβ³ p π z π n)) β©
π + nrβ³ p π z π n + p Β· n β‘Λβ¨ +-assoc π (nrβ³ p π z π n) (p Β· n) β©
(π + nrβ³ p π z π n) + p Β· n β‘β¨ +-congΚ³ {p Β· n} (β’π+β’π {π} {nrβ³ p π z π n} (Ξ» ())
Ξ» nrβ³β‘π β case nrβ³-positive nrβ³β‘π of Ξ» ()) β©
Ο + p Β· n β‘β¨β©
Ο β
π π π π π β begin
nrβ³ π π π π π β€β¨ β§-greatest-lower-bound {q = π} {π} nr-suc
(β’πββ€π (nrβ³ π π π π π) (Ξ» nrβ³β‘π β case nrβ³-positive nrβ³β‘π of Ξ» ())) β©
πβ§π β‘β¨β©
nrβ² π π π π π β‘Λβ¨ nrβ‘nrβ² {π} {π} {π} π π β©
nr π π π π π β
π π π π π β begin
nrβ³ π π π π π β€β¨ nr-suc β©
π β‘β¨β©
nr π π π π π β
π π π π π β begin
nrβ³ π π π π π β€β¨ β’πββ€π (nrβ³ π π π π π) (Ξ» nrβ³β‘π β case nrβ³-positive nrβ³β‘π of Ξ» ()) β©
π β‘β¨β©
nr π π π π π β
p π π π π β begin
nrβ³ p π π π π β€β¨ β§-greatest-lower-bound {q = π} {π} (nr-zero refl) nr-sucβ² β©
πβ§π β‘β¨β©
nrβ² p π π π π β‘Λβ¨ nrβ‘nrβ² {π} {π} {π} p π β©
nr p π π π π β
p π π π π β begin
nrβ³ p π π π π β€β¨ β§-greatest-lower-bound {q = π} {π} nr-sucβ² (nr-zero refl) β©
πβ§π β‘β¨β©
nrβ² p π π π π β‘Λβ¨ nrβ‘nrβ² {π} {π} {π} p π β©
nr p π π π π β
p π π π π β begin
nrβ³ p π π π π β€β¨ nr-sucβ² β©
π β‘β¨β©
nrβ² p π π π π β‘Λβ¨ nrβ‘nrβ² {π} {π} {π} p π β©
nr p π π π π β
p π π π π β begin
nrβ³ p π π π π β€β¨ nr-zero refl β©
π β‘β¨β©
nrβ² p π π π π β‘Λβ¨ nrβ‘nrβ² {π} {π} {π} p π β©
nr p π π π π β
where
open Is-factoring-nr is-factoring-nr renaming (nrβ to nrββ³)
open Has-nr has-nr renaming (nr to nrβ³; nr-positive to nrβ³-positive)
open Addition zero-one-many-modality
open Meet zero-one-many-modality
open Natrec zero-one-many-modality renaming (nr-π to nrβ³-π)
open PartialOrder zero-one-many-modality
open Modality zero-one-many-modality
hiding (π; π; Ο; _+_; _Β·_; _β§_; _β€_)
open Tools.Reasoning.PartialOrder β€-poset
lemma : nrβ³ p r z s n β€ Ο β nrβ³ p r z s n β€ nr p r z s n
lemma {p} {r} {z} {s} {n} nrβ³β€Ο =
β€-trans nrβ³β€Ο (Οβ€ (nr p r z s n))
nr-sucβ² : nrβ³ p r z s π β€ s + r Β· nrβ³ p r z s π
nr-sucβ² {p} {r} {z} {s} = begin
nrβ³ p r z s π β€β¨ nr-suc β©
s + p Β· π + r Β· nrβ³ p r z s π β‘β¨ +-congΛ‘ {s} (+-congΚ³ (Β·-zeroΚ³ p)) β©
s + π + r Β· nrβ³ p r z s π β‘β¨β©
s + r Β· nrβ³ p r z s π β
nrβ³pΟβ€ : Β¬ (z β‘ π Γ s β‘ π Γ n β‘ π) β nrβ³ p Ο z s n β€ nr p Ο z s n
nrβ³pΟβ€ {z} {s} {n} {p} β’π = lemma $ begin
nrβ³ p Ο z s n β€β¨ nr-suc β©
s + p Β· n + Ο Β· nrβ³ p Ο z s n β‘β¨ +-congΛ‘ {s} (+-congΛ‘ (ΟΒ·β’π (β’π ββ nrβ³-positive))) β©
s + p Β· n + Ο β‘β¨ +-congΛ‘ (+-zeroΚ³ _) β©
s + Ο β‘β¨ +-zeroΚ³ _ β©
Ο β
nrβ³przsπβ€ : Β¬ (z β‘ π Γ s β‘ π) β nrβ³ p r z s π β€ nr p r z s π
nrβ³przsπβ€ {z} {s} {p} {r} β’π = lemma $ begin
nrβ³ p r z s π β‘β¨ nr-factoring β©
nrββ³ p r Β· π + nrβ³ p r z s π β‘β¨ +-congΚ³ {nrβ³ p r z s π} (Β·-identityΚ³ _) β©
nrββ³ p r + nrβ³ p r z s π β‘β¨ β’π+β’π nrββ’π (Ξ» nrβ³β‘π β
let zβ‘π , sβ‘π , _ = nrβ³-positive nrβ³β‘π
in β’π (zβ‘π , sβ‘π)) β©
Ο β
opaque
nr-linearity-like-for-π :
Has-nr.Linearity-like-nr-for-π zero-one-many-has-nr
nr-linearity-like-for-π = refl
opaque
nr-linearity-like-for-π :
Has-nr.Linearity-like-nr-for-π zero-one-many-has-nr
nr-linearity-like-for-π = refl
open Subtraction zero-one-many-modality
opaque
Ο-pβ‘Ο : β p β Ο - p β‘ Ο
Ο-pβ‘Ο p = β-pβ‘β PE.refl p
opaque
π-πβ‘π : π - π β‘ π
π-πβ‘π =
p-pβ€π ,
Ξ» where
π _ β refl
π ()
Ο ()
opaque
p-Οβ° : p - Ο β€ q β p β‘ Ο
p-Οβ° {(π)} {(π)} ()
p-Οβ° {(π)} {(π)} ()
p-Οβ° {(π)} {(Ο)} ()
p-Οβ° {(π)} {(π)} ()
p-Οβ° {(π)} {(π)} ()
p-Οβ° {(π)} {(Ο)} ()
p-Οβ° {(Ο)} _ = refl
opaque
p-Οβ’ : p - Ο β‘ q β p β‘ Ο
p-Οβ’ {q} = p-Οβ° {q = q} ββ projβ
opaque
supports-subtraction : Supports-subtraction
supports-subtraction {p} {(Ο)} {r} x =
case p-Οβ° {q = r} x of Ξ» {
refl β
Ο , Ο-pβ‘Ο Ο }
supports-subtraction {p} {(π)} _ =
p , p-πβ‘p
supports-subtraction {(Ο)} {q} _ =
Ο , Ο-pβ‘Ο q
supports-subtraction {(π)} {r} x =
case π-pβ€q {q = r} x of Ξ» {
(refl , refl) β
π , p-πβ‘p }
supports-subtraction {(π)} {(π)} {(r)} x =
π , π-πβ‘π
data _-_β‘β²_ : (p q r : Zero-one-many) β Set where
Ο-pβ‘β²Ο : Ο - p β‘β² Ο
p-πβ‘β²p : p - π β‘β² p
π-πβ‘β²π : π - π β‘β² π
opaque
-β‘β-β‘β² : β p q r β (p - q β‘ r) β (p - q β‘β² r)
-β‘β-β‘β² p q r = left p q r , right
where
left : β p q r β p - q β‘ r β p - q β‘β² r
left Ο q r p-qβ‘r =
case -β‘-functional {q = q} p-qβ‘r (Ο-pβ‘Ο q) of Ξ» {
refl β
Ο-pβ‘β²Ο }
left p π r p-qβ‘r =
case -β‘-functional p-qβ‘r p-πβ‘p of Ξ» {
refl β
p-πβ‘β²p }
left π q r p-qβ‘r =
case π-pβ‘q p-qβ‘r of Ξ» {
(refl , refl) β
p-πβ‘β²p}
left π π r p-qβ‘r =
case -β‘-functional p-qβ‘r π-πβ‘π of Ξ» {
refl β
π-πβ‘β²π }
left π Ο r p-qβ‘r =
case p-Οβ’ p-qβ‘r of Ξ» ()
right : p - q β‘β² r β p - q β‘ r
right Ο-pβ‘β²Ο = Ο-pβ‘Ο q
right p-πβ‘β²p = p-πβ‘p
right π-πβ‘β²π = π-πβ‘π
opaque
nr-nrα΅’-GLB :
let π = zero-one-many-modality in
β r β Modality.Greatest-lower-bound
π (nr π r z s π) (Modality.nrα΅’ π r z s)
nr-nrα΅’-GLB {z} {s} = Ξ» where
π β GLB-congΚ³ (sym (trans (β§-congΚ³ (+-congΚ³ (Β·-zeroΚ³ (π β§ π))))
(β§-comm s z))) nrα΅’-π-GLB
π β lemma-π _ _
Ο β lemma-Ο _ _
where
open Modality zero-one-many-modality
hiding (π; π; Ο; _β§_; _Β·_; _+_)
open GLB zero-one-many-modality
open Natrec zero-one-many-modality
open PartialOrder zero-one-many-modality
lemmaβ² : β {z} i β nrα΅’ π z π i β‘ z
lemmaβ² 0 = refl
lemmaβ² (1+ i) =
trans (Β·-identityΛ‘ _) (lemmaβ² i)
lemma : β {r z s} i β
nrα΅’ r z s i β‘ Ο β Greatest-lower-bound Ο (nrα΅’ r z s)
lemma {r} {z} {s} i nrα΅’β‘Ο =
(Ξ» i β Οβ€ (nrα΅’ r z s i)) , Ξ» q qβ€ β β€-trans (qβ€ i) (β€-reflexive nrα΅’β‘Ο)
lemma-π : β z s β Greatest-lower-bound (Ο Β· s + z) (nrα΅’ π z s)
lemma-π z π =
GLB-const lemmaβ²
lemma-π π π = lemma 2 refl
lemma-π π π = lemma 1 refl
lemma-π Ο π = lemma 0 refl
lemma-π z Ο = lemma 1 refl
lemma-Ο : β z s β Greatest-lower-bound (Ο Β· (s + z)) (nrα΅’ Ο z s)
lemma-Ο π π = GLB-nrα΅’-π
lemma-Ο π π = lemma 1 refl
lemma-Ο Ο π = lemma 0 refl
lemma-Ο π π = lemma 2 refl
lemma-Ο π π = lemma 1 refl
lemma-Ο Ο π = lemma 0 refl
lemma-Ο z Ο = lemma 1 refl
opaque
nrα΅’-GLB :
let π = zero-one-many-modality in
β r z s β β Ξ» p β
Modality.Greatest-lower-bound
π p (Modality.nrα΅’ π r z s)
nrα΅’-GLB r z s = _ , nr-nrα΅’-GLB r
opaque
nrα΅’-π-GLB :
let π = zero-one-many-modality in
β p q β Modality.Greatest-lower-bound
π (p β§ q) (Modality.nrα΅’ π π p q)
nrα΅’-π-GLB p q = Natrec.nrα΅’-π-GLB zero-one-many-modality
opaque
nrα΅’-π-GLB :
let π = zero-one-many-modality in
β p q β Modality.Greatest-lower-bound
π (p + Ο Β· q) (Modality.nrα΅’ π π p q)
nrα΅’-π-GLB p q =
GLB.GLB-congΚ³ zero-one-many-modality (+-comm (Ο Β· q) p) (nr-nrα΅’-GLB {z = p} {s = q} π)
where
open Modality zero-one-many-modality
hiding (π; Ο; _Β·_; _+_)
opaque
nrα΅’-Ο-GLB :
let π = zero-one-many-modality in
β p q β Modality.Greatest-lower-bound
π (Ο Β· (p + q)) (Modality.nrα΅’ π Ο p q)
nrα΅’-Ο-GLB p q =
GLB.GLB-congΚ³ zero-one-many-modality (Β·-congΛ‘ (+-comm q p)) (nr-nrα΅’-GLB {z = p} {s = q} Ο)
where
open Modality zero-one-many-modality
hiding (Ο; _Β·_; _+_)
opaque
zero-one-many-supports-glb-for-natrec :
Has-well-behaved-GLBs zero-one-many-modality
zero-one-many-supports-glb-for-natrec = record
{ +-GLBΛ‘ = +-GLBΛ‘
; Β·-GLBΛ‘ = Β·-GLBΛ‘
; Β·-GLBΚ³ = commβ§Β·-GLBΛ‘βΒ·-GLBΚ³ Β·-comm Β·-GLBΛ‘
; +nrα΅’-GLB = +nrα΅’-GLB
}
where
open Modality zero-one-many-modality
hiding (_+_; _Β·_; _β€_; π; π; Ο)
open GLB zero-one-many-modality
open Multiplication zero-one-many-modality
open PartialOrder zero-one-many-modality
Β·-GLBΛ‘ :
{pα΅’ : Sequence Zero-one-many} β
Greatest-lower-bound p pα΅’ β
Greatest-lower-bound (q Β· p) (Ξ» i β q Β· pα΅’ i)
Β·-GLBΛ‘ {q = π} p-glb = GLB-constβ²
Β·-GLBΛ‘ {q = π} p-glb =
GLB-cong (sym (Β·-identityΛ‘ _)) (Ξ» _ β sym (Β·-identityΛ‘ _)) p-glb
Β·-GLBΛ‘ {q = Ο} {pα΅’} p-glb = lemma _ p-glb
where
lemmaβ³ : π β€ Ο Β· p β p β‘ π
lemmaβ³ {(π)} _ = refl
lemmaβ³ {(π)} ()
lemmaβ³ {(Ο)} ()
lemmaβ² : π β€ Ο Β· p β p β‘ π
lemmaβ² {(π)} _ = refl
lemmaβ² {(π)} ()
lemmaβ² {(Ο)} ()
lemma : β p β Greatest-lower-bound p pα΅’ β
Greatest-lower-bound (Ο Β· p) (Ξ» i β Ο Β· pα΅’ i)
lemma π p-glb =
GLB-const Ξ» i β Β·-congΛ‘ (π-GLB-inv p-glb i)
lemma π p-glb =
(Ξ» i β Οβ€ (pα΅’ i))
, Ξ» { π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ² ββ qβ€))
; π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ³ ββ qβ€))
; Ο qβ€ β refl}
lemma Ο p-glb =
(Ξ» i β Οβ€ (pα΅’ i))
, Ξ» { π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ² ββ qβ€))
; π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ³ ββ qβ€))
; Ο qβ€ β refl}
+-GLBΛ‘ :
{pα΅’ : Sequence Zero-one-many} β
Greatest-lower-bound p pα΅’ β
Greatest-lower-bound (q + p) (Ξ» i β q + pα΅’ i)
+-GLBΛ‘ {q = π} p-glb = p-glb
+-GLBΛ‘ {(π)} {q = π} p-glb =
GLB-const (Ξ» i β +-congΛ‘ (π-GLB-inv p-glb i))
+-GLBΛ‘ {q = π} {pα΅’} p-glb = lemma _ p-glb
where
lemmaβ³ : π β€ π + p β p β‘ π
lemmaβ³ {(π)} _ = refl
lemmaβ³ {(π)} ()
lemmaβ³ {(Ο)} ()
lemmaβ² : π β€ π + p β p β‘ π
lemmaβ² {(π)} _ = refl
lemmaβ² {(π)} ()
lemmaβ² {(Ο)} ()
lemma : β p β Greatest-lower-bound p pα΅’ β
Greatest-lower-bound (π + p) (Ξ» i β π + pα΅’ i)
lemma π p-glb =
GLB-const (Ξ» i β +-congΛ‘ (π-GLB-inv p-glb i))
lemma π p-glb =
(Ξ» _ β refl)
, Ξ» { π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ² ββ qβ€))
; π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ³ ββ qβ€))
; Ο qβ€ β refl}
lemma Ο p-glb =
(Ξ» _ β refl)
, Ξ» { π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ² ββ qβ€))
; π qβ€ β β₯-elim (β’p-GLB-inv (Ξ» ()) p-glb (lemmaβ³ ββ qβ€))
; Ο qβ€ β refl }
+-GLBΛ‘ {q = Ο} p-glb = GLB-constβ²
open Tools.Reasoning.PartialOrder β€-poset
+nrα΅’-GLB :
Greatest-lower-bound pβ (nrα΅’ r zβ sβ) β
Greatest-lower-bound pβ (nrα΅’ r zβ sβ) β
β Ξ» q β Greatest-lower-bound q (nrα΅’ r (zβ + zβ) (sβ + sβ)) Γ
pβ + pβ β€ q
+nrα΅’-GLB {pβ} {r} {zβ} {sβ} {pβ} {zβ} {sβ} pβ-glb pβ-glb =
_ , nr-nrα΅’-GLB r , (begin
pβ + pβ β‘β¨ +-cong (GLB-unique pβ-glb (nr-nrα΅’-GLB r))
(GLB-unique pβ-glb (nr-nrα΅’-GLB r)) β©
nr π r zβ sβ π + nr π r zβ sβ π β€β¨ Has-nr.nr-+ zero-one-many-has-nr {π} {r} β©
nr π r (zβ + zβ) (sβ + sβ) π β)
open Graded.Context zero-one-many-modality
open Graded.Context.Properties zero-one-many-modality
private variable
Ξ³ Ξ΄ Ξ· : Conβ _
opaque
nrαΆ-π-βαΆ :
nrαΆ β¦ zero-one-many-has-nr β¦ p π Ξ³ Ξ΄ Ξ· βαΆ (((π β§ p) Β·αΆ Ξ· +αΆ Ξ΄) β§αΆ (Ξ· +αΆ Ξ³))
nrαΆ-π-βαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} {Ξ· = Ξ΅} = Ξ΅
nrαΆ-π-βαΆ {Ξ³ = _ β _} {Ξ΄ = _ β _} {Ξ· = _ β _} =
nrαΆ-π-βαΆ β refl
opaque
nrαΆ-π-βαΆ :
nrαΆ β¦ zero-one-many-has-nr β¦ p π Ξ³ Ξ΄ Ξ· βαΆ (π + p) Β·αΆ Ξ· +αΆ Ο Β·αΆ Ξ΄ +αΆ Ξ³
nrαΆ-π-βαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} {Ξ· = Ξ΅} = Ξ΅
nrαΆ-π-βαΆ {Ξ³ = _ β _} {Ξ΄ = _ β _} {Ξ· = _ β _} =
nrαΆ-π-βαΆ β refl
opaque
nrαΆ-Ο-βαΆ :
nrαΆ β¦ zero-one-many-has-nr β¦ p Ο Ξ³ Ξ΄ Ξ· βαΆ Ο Β·αΆ (Ξ· +αΆ Ξ΄ +αΆ Ξ³)
nrαΆ-Ο-βαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} {Ξ· = Ξ΅} = Ξ΅
nrαΆ-Ο-βαΆ {Ξ³ = _ β _} {Ξ΄ = _ β _} {Ξ· = _ β _} =
nrαΆ-Ο-βαΆ β refl
opaque
nrα΅’αΆ-π-GLBαΆ : Greatest-lower-boundαΆ (Ξ³ β§αΆ Ξ΄) (nrα΅’αΆ π Ξ³ Ξ΄)
nrα΅’αΆ-π-GLBαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} = Ξ΅-GLB
nrα΅’αΆ-π-GLBαΆ {Ξ³ = Ξ³ β p} {Ξ΄ = Ξ΄ β q} =
GLBαΆ-pointwiseβ² nrα΅’αΆ-π-GLBαΆ (nrα΅’-π-GLB p q)
opaque
nrα΅’αΆ-π-GLBαΆ : Greatest-lower-boundαΆ (Ξ³ +αΆ Ο Β·αΆ Ξ΄) (nrα΅’αΆ π Ξ³ Ξ΄)
nrα΅’αΆ-π-GLBαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} = Ξ΅-GLB
nrα΅’αΆ-π-GLBαΆ {Ξ³ = Ξ³ β p} {Ξ΄ = Ξ΄ β q} =
GLBαΆ-pointwiseβ² nrα΅’αΆ-π-GLBαΆ (nrα΅’-π-GLB p q)
opaque
nrα΅’αΆ-Ο-GLBαΆ : Greatest-lower-boundαΆ (Ο Β·αΆ (Ξ³ +αΆ Ξ΄)) (nrα΅’αΆ Ο Ξ³ Ξ΄)
nrα΅’αΆ-Ο-GLBαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} = Ξ΅-GLB
nrα΅’αΆ-Ο-GLBαΆ {Ξ³ = Ξ³ β p} {Ξ΄ = Ξ΄ β q} =
GLBαΆ-pointwiseβ² nrα΅’αΆ-Ο-GLBαΆ (nrα΅’-Ο-GLB p q)
opaque
nrαΆ-nrα΅’αΆ-GLBαΆ :
Greatest-lower-boundαΆ (nrαΆ β¦ zero-one-many-has-nr β¦ π r Ξ³ Ξ΄ παΆ) (nrα΅’αΆ r Ξ³ Ξ΄)
nrαΆ-nrα΅’αΆ-GLBαΆ {Ξ³ = Ξ΅} {Ξ΄ = Ξ΅} = Ξ΅-GLB
nrαΆ-nrα΅’αΆ-GLBαΆ {Ξ³ = _ β _} {Ξ΄ = _ β _} =
GLBαΆ-pointwiseβ² nrαΆ-nrα΅’αΆ-GLBαΆ (nr-nrα΅’-GLB _)