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