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