add Decidable-related stuff
This commit is contained in:
parent
84e524c978
commit
28055c0f39
5 changed files with 64 additions and 25 deletions
|
@ -1,6 +1,7 @@
|
|||
module Quox.Syntax.Qty
|
||||
|
||||
import Quox.Pretty
|
||||
import public Quox.Decidable
|
||||
import Data.DPair
|
||||
|
||||
%default total
|
||||
|
@ -13,8 +14,7 @@ commas [x] = [x]
|
|||
commas (x::xs) = (x <+> hl Delim ",") :: commas xs
|
||||
|
||||
export %inline
|
||||
prettyQtyBinds : Pretty.HasEnv m => PrettyHL q =>
|
||||
List q -> m (Doc HL)
|
||||
prettyQtyBinds : Pretty.HasEnv m => PrettyHL q => List q -> m (Doc HL)
|
||||
prettyQtyBinds =
|
||||
map ((hl Delim "@" <++>) . align . sep . commas) . traverse pretty0M
|
||||
|
||||
|
@ -26,34 +26,34 @@ interface Eq q => IsQty q where
|
|||
|
||||
||| true if bindings of this quantity will be erased
|
||||
||| and must not be runtime relevant
|
||||
IsZero : q -> Type
|
||||
isZero : (pi : q) -> Dec (IsZero pi)
|
||||
IsZero : Pred q
|
||||
isZero : Dec1 IsZero
|
||||
zeroIsZero : IsZero zero
|
||||
|
||||
||| true if bindings of this quantity must be linear
|
||||
-- [fixme] is this needed for anything?
|
||||
IsOne : q -> Type
|
||||
isOne : (pi : q) -> Dec (IsOne pi)
|
||||
IsOne : Pred q
|
||||
isOne : Dec1 IsOne
|
||||
oneIsOne : IsOne one
|
||||
|
||||
||| ``p `Compat` q`` if it is ok for a binding of
|
||||
||| quantity `q` to be used exactly `p` times.
|
||||
||| e.g. ``1 `Compat` 1``, ``1 `Compat` ω``
|
||||
Compat : q -> q -> Type
|
||||
compat : (pi, rh : q) -> Dec (pi `Compat` rh)
|
||||
Compat : Rel q
|
||||
compat : Dec2 Compat
|
||||
|
||||
||| true if it is ok for this quantity to appear for the
|
||||
||| subject of a typing judgement. this is about the
|
||||
||| subject reduction stuff in atkey
|
||||
IsSubj : q -> Type
|
||||
isSubj : (pi : q) -> Dec (IsSubj pi)
|
||||
IsSubj : Pred q
|
||||
isSubj : Dec1 IsSubj
|
||||
zeroIsSubj : IsSubj zero
|
||||
oneIsSubj : IsSubj one
|
||||
|
||||
||| true if it is ok for a global definition to have this
|
||||
||| quantity. so not exact usage counts, maybe.
|
||||
IsGlobal : q -> Type
|
||||
isGlobal : (pi : q) -> Dec (IsGlobal pi)
|
||||
IsGlobal : Pred q
|
||||
isGlobal : Dec1 IsGlobal
|
||||
zeroIsGlobal : IsGlobal zero
|
||||
|
||||
public export
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue