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