Skip to content

Commit ef14b3b

Browse files
committed
lawful order word
1 parent 5a6d001 commit ef14b3b

File tree

4 files changed

+70
-4
lines changed

4 files changed

+70
-4
lines changed

lib/Haskell/Law/Ord.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ open import Haskell.Law.Ord.Integer public
77
open import Haskell.Law.Ord.Maybe public
88
open import Haskell.Law.Ord.Nat public
99
open import Haskell.Law.Ord.Ordering public
10+
open import Haskell.Law.Ord.Word public

lib/Haskell/Law/Ord/Def.agda

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ module Haskell.Law.Ord.Def where
33
open import Haskell.Prim
44
open import Haskell.Prim.Ord
55
open import Haskell.Prim.Bool
6-
open import Haskell.Prim.Word
7-
open import Haskell.Prim.Integer
86
open import Haskell.Prim.Double
97
open import Haskell.Prim.Tuple
108
open import Haskell.Prim.Monoid
@@ -178,8 +176,6 @@ reverseLte a b c d
178176

179177
postulate instance
180178

181-
iLawfulOrdWord : IsLawfulOrd Word
182-
183179
iLawfulOrdDouble : IsLawfulOrd Double
184180

185181
iLawfulOrdChar : IsLawfulOrd Char

lib/Haskell/Law/Ord/Int.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ open import Haskell.Law.Bool
1111
open import Haskell.Law.Equality
1212
open import Haskell.Law.Eq
1313
open import Haskell.Law.Ord.Def
14+
open import Haskell.Law.Ord.Word
1415
open import Haskell.Law.Int
1516

1617

lib/Haskell/Law/Ord/Word.agda

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
module Haskell.Law.Ord.Word where
2+
3+
open import Haskell.Prim
4+
open import Haskell.Prim.Eq
5+
open import Haskell.Prim.Ord
6+
open import Haskell.Prim.Word using ( Word )
7+
8+
open import Haskell.Law.Bool
9+
open import Haskell.Law.Eq
10+
open import Haskell.Law.Ord.Def
11+
open import Haskell.Law.Ord.Nat
12+
13+
instance
14+
iLawfulOrdWord : IsLawfulOrd Word
15+
16+
iLawfulOrdWord .comparability a b
17+
with (w2n a) | (w2n b)
18+
... | x | y = comparability x y
19+
20+
iLawfulOrdWord .transitivity a b c h
21+
with (w2n a) | (w2n b) | (w2n c)
22+
... | x | y | z = transitivity x y z h
23+
24+
iLawfulOrdWord .reflexivity a
25+
with (w2n a)
26+
... | x = reflexivity x
27+
28+
iLawfulOrdWord .antisymmetry a b h
29+
with (w2n a) | (w2n b)
30+
... | x | y = antisymmetry x y h
31+
32+
iLawfulOrdWord .lte2gte a b
33+
with (w2n a) | (w2n b)
34+
... | x | y = lte2gte x y
35+
36+
iLawfulOrdWord .lt2LteNeq a b
37+
with (w2n a) | (w2n b)
38+
... | x | y = lt2LteNeq x y
39+
40+
iLawfulOrdWord .lt2gt a b
41+
with (w2n a) | (w2n b)
42+
... | x | y = lt2gt x y
43+
44+
iLawfulOrdWord .compareLt a b
45+
with (w2n a) | (w2n b)
46+
... | x | y = compareLt x y
47+
48+
iLawfulOrdWord .compareGt a b
49+
with (w2n a) | (w2n b)
50+
... | x | y = compareGt x y
51+
52+
iLawfulOrdWord .compareEq a b
53+
with (w2n a) | (w2n b)
54+
... | x | y = compareEq x y
55+
56+
iLawfulOrdWord .min2if a b
57+
with (w2n a) | (w2n b)
58+
... | x | y
59+
rewrite lte2ngt x y
60+
| ifFlip (y < x) a b
61+
= eqReflexivity (if (y < x) then b else a)
62+
63+
iLawfulOrdWord .max2if a b
64+
with (w2n a) | (w2n b)
65+
... | x | y
66+
rewrite gte2nlt x y
67+
| ifFlip (x < y) a b
68+
= eqReflexivity (if (x < y) then b else a)

0 commit comments

Comments
 (0)