Skip to content

Commit 734a7e5

Browse files
committed
lawful order word
1 parent 7c1d356 commit 734a7e5

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

lib/Haskell/Law/Ord/Def.agda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ reverseLte a b c d
178178

179179
postulate instance
180180

181-
iLawfulOrdWord : IsLawfulOrd Word
181+
-- iLawfulOrdWord : IsLawfulOrd Word
182182

183183
iLawfulOrdDouble : IsLawfulOrd Double
184184

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

0 commit comments

Comments
 (0)