0 | module Data.Refined.Char
2 | import Control.Relation.ReflexiveClosure
3 | import Control.Relation
4 | import public Data.Prim.Char
5 | import public Data.Refined.Core
7 | public export %inline
8 | {x : Char} -> HDec0 Char (< x) where
11 | public export %inline
12 | {x : Char} -> HDec0 Char (x <) where
15 | public export %inline
16 | {x : Char} -> HDec0 Char (<= x) where
19 | public export %inline
20 | {x : Char} -> HDec0 Char (x <=) where
33 | 0 LessThan : Char -> Char -> Type
34 | LessThan m n = n < m
38 | 0 To : Char -> Char -> Type
39 | To m n = ReflexiveClosure (<) n m
47 | 0 GreaterThan : Char -> Char -> Type
52 | 0 From : Char -> Char -> Type
53 | From = ReflexiveClosure (<)
57 | 0 FromTo : Char -> Char -> Char -> Type
58 | FromTo m n = From m && To n
62 | 0 Between : Char -> Char -> Char -> Type
63 | Between m n = GreaterThan m && LessThan n
72 | -> {auto 0 p1 : m2 <= m}
73 | -> {auto 0 p2 : n <= n2}
75 | widen (And y z) = And (transitive p1 y) (transitive z p2)
80 | -> {auto 0 p1 : m2 <= m}
81 | -> {auto 0 p2 : n <= n2}
83 | widen' (And y z) = And (strictRight p1 y) (strictLeft z p2)
90 | 0 Ascii : Char -> Type
94 | 0 Printable : Char -> Type
95 | Printable = Holds (not . isControl)
98 | 0 PrintableAscii : Char -> Type
99 | PrintableAscii = Ascii && Printable
102 | 0 Upper : Char -> Type
103 | Upper = FromTo 'A' 'Z'
106 | 0 Lower : Char -> Type
107 | Lower = FromTo 'a' 'z'
110 | 0 Binit : Char -> Type
111 | Binit = FromTo '0' '1'
114 | 0 Octit : Char -> Type
115 | Octit = FromTo '0' '9'
118 | 0 Digit : Char -> Type
119 | Digit = FromTo '0' '9'
122 | 0 Hexit : Char -> Type
123 | Hexit = Digit || FromTo 'a' 'f' || FromTo 'A' 'F'
126 | 0 Alpha : Char -> Type
127 | Alpha = Lower || Upper
130 | 0 AlphaNum : Char -> Type
131 | AlphaNum = Alpha || Digit