open import Graded.Modality
open import Graded.Usage.Restrictions
module Graded.Usage.Decidable.Assumptions
{a} {M : Set a}
{π : Modality M}
(R : Usage-restrictions π)
where
open Modality π
open Usage-restrictions R
open import Graded.Context π
open import Graded.Context.Properties π
open import Graded.Modality.Properties π hiding (has-nr)
open import Graded.Mode π using (πα΅; πα΅)
open import Graded.Usage.Restrictions.Natrec π
open import Tools.Nat using (Nat)
open import Tools.PropositionalEquality
open import Tools.Relation
open import Tools.Sum
private variable
n : Nat
record Assumptions : Set a where
no-eta-equality
infix 10 _β_ _β€?_ _β€αΆ?_
field
_β_ : Decidable (_β‘_ {A = M})
Prodrec-allowed-πα΅? : β r p q β Dec (Prodrec-allowed-πα΅ r p q)
Unitrec-allowed-πα΅? : β p q β Dec (Unitrec-allowed-πα΅ p q)
Emptyrec-allowed-πα΅? : β p β Dec (Emptyrec-allowed-πα΅ p)
[]-cong-allowed-mode-πα΅? : β s β Dec ([]-cong-allowed-mode-πα΅ s)
instance
β¦ inference-ok β¦ : Natrec-mode-supports-usage-inference natrec-mode
no-sink-or-β€π : Β¬ StarΛ’-sink β (β {p} β p β€ π)
_β€?_ : Decidable _β€_
_β€?_ = β‘-decidableββ€-decidable _β_
_β€αΆ?_ : Decidable (_β€αΆ_ {n = n})
_β€αΆ?_ = β€αΆ-decidable _β€?_
opaque
Prodrec-allowed? : β m r p q β Dec (Prodrec-allowed m r p q)
Prodrec-allowed? πα΅ = Ξ» _ _ _ β yes _
Prodrec-allowed? πα΅ = Prodrec-allowed-πα΅?
opaque
Unitrec-allowed? : β m p q β Dec (Unitrec-allowed m p q)
Unitrec-allowed? πα΅ = Ξ» _ _ β yes _
Unitrec-allowed? πα΅ = Unitrec-allowed-πα΅?
opaque
Emptyrec-allowed? : β m p β Dec (Emptyrec-allowed m p)
Emptyrec-allowed? πα΅ = Ξ» _ β yes _
Emptyrec-allowed? πα΅ = Emptyrec-allowed-πα΅?
opaque
[]-cong-allowed-mode? : β s m β Dec ([]-cong-allowed-mode s m)
[]-cong-allowed-mode? _ πα΅ = yes _
[]-cong-allowed-mode? s πα΅ = []-cong-allowed-mode-πα΅? s