Last active
May 29, 2019 09:47
-
-
Save tonymorris/ba33511ee32c563162d0f43a9f27cf93 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-# OPTIONS_GHC -Wall #-} | |
{-# LANGUAGE LambdaCase #-} | |
-- a leap year is a year, divisible by 4, except (those divisible by 100, except those divisible by 400) | |
-- there is no zero year | |
-- Distinguish leap years and common years in data types | |
import Control.Lens | |
import Data.Semigroup | |
import Data.Void | |
data Digit = | |
D0 | |
| D1 | |
| D2 | |
| D3 | |
| D4 | |
| D5 | |
| D6 | |
| D7 | |
| D8 | |
| D9 | |
deriving (Eq, Ord, Show) | |
digitsDigit :: | |
ToDigits Digit | |
digitsDigit = | |
noSuffixToDigits pure | |
newtype Digits = | |
Digits | |
[Digit] | |
deriving (Eq, Ord, Show) | |
digitsDigits :: | |
ToDigits Digits | |
digitsDigits = | |
noSuffixToDigits (\(Digits x) -> x) | |
instance Semigroup Digits where | |
Digits x <> Digits y = | |
Digits (x <> y) | |
instance Monoid Digits where | |
mempty = | |
Digits mempty | |
mappend = | |
(<>) | |
data Mod4_xx_Positive = | |
Mod4_xx_Positive_04 | |
| Mod4_xx_Positive_08 | |
| Mod4_xx_Positive_12 | |
| Mod4_xx_Positive_16 | |
| Mod4_xx_Positive_20 | |
| Mod4_xx_Positive_24 | |
| Mod4_xx_Positive_28 | |
| Mod4_xx_Positive_32 | |
| Mod4_xx_Positive_36 | |
| Mod4_xx_Positive_40 | |
| Mod4_xx_Positive_44 | |
| Mod4_xx_Positive_48 | |
| Mod4_xx_Positive_52 | |
| Mod4_xx_Positive_56 | |
| Mod4_xx_Positive_60 | |
| Mod4_xx_Positive_64 | |
| Mod4_xx_Positive_68 | |
| Mod4_xx_Positive_72 | |
| Mod4_xx_Positive_76 | |
| Mod4_xx_Positive_80 | |
| Mod4_xx_Positive_84 | |
| Mod4_xx_Positive_88 | |
| Mod4_xx_Positive_92 | |
| Mod4_xx_Positive_96 | |
deriving (Eq, Ord, Show) | |
rot1Mod4_xx_Positive :: | |
Iso' Mod4_xx_Positive Mod4_xx_Positive | |
rot1Mod4_xx_Positive = | |
iso | |
(\case | |
Mod4_xx_Positive_04 -> | |
Mod4_xx_Positive_08 | |
Mod4_xx_Positive_08 -> | |
Mod4_xx_Positive_12 | |
Mod4_xx_Positive_12 -> | |
Mod4_xx_Positive_16 | |
Mod4_xx_Positive_16 -> | |
Mod4_xx_Positive_20 | |
Mod4_xx_Positive_20 -> | |
Mod4_xx_Positive_24 | |
Mod4_xx_Positive_24 -> | |
Mod4_xx_Positive_28 | |
Mod4_xx_Positive_28 -> | |
Mod4_xx_Positive_32 | |
Mod4_xx_Positive_32 -> | |
Mod4_xx_Positive_36 | |
Mod4_xx_Positive_36 -> | |
Mod4_xx_Positive_40 | |
Mod4_xx_Positive_40 -> | |
Mod4_xx_Positive_44 | |
Mod4_xx_Positive_44 -> | |
Mod4_xx_Positive_48 | |
Mod4_xx_Positive_48 -> | |
Mod4_xx_Positive_52 | |
Mod4_xx_Positive_52 -> | |
Mod4_xx_Positive_56 | |
Mod4_xx_Positive_56 -> | |
Mod4_xx_Positive_60 | |
Mod4_xx_Positive_60 -> | |
Mod4_xx_Positive_64 | |
Mod4_xx_Positive_64 -> | |
Mod4_xx_Positive_68 | |
Mod4_xx_Positive_68 -> | |
Mod4_xx_Positive_72 | |
Mod4_xx_Positive_72 -> | |
Mod4_xx_Positive_76 | |
Mod4_xx_Positive_76 -> | |
Mod4_xx_Positive_80 | |
Mod4_xx_Positive_80 -> | |
Mod4_xx_Positive_84 | |
Mod4_xx_Positive_84 -> | |
Mod4_xx_Positive_88 | |
Mod4_xx_Positive_88 -> | |
Mod4_xx_Positive_92 | |
Mod4_xx_Positive_92 -> | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_96 -> | |
Mod4_xx_Positive_04 | |
) | |
(\case | |
Mod4_xx_Positive_04 -> | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_08 -> | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_12 -> | |
Mod4_xx_Positive_08 | |
Mod4_xx_Positive_16 -> | |
Mod4_xx_Positive_12 | |
Mod4_xx_Positive_20 -> | |
Mod4_xx_Positive_16 | |
Mod4_xx_Positive_24 -> | |
Mod4_xx_Positive_20 | |
Mod4_xx_Positive_28 -> | |
Mod4_xx_Positive_24 | |
Mod4_xx_Positive_32 -> | |
Mod4_xx_Positive_28 | |
Mod4_xx_Positive_36 -> | |
Mod4_xx_Positive_32 | |
Mod4_xx_Positive_40 -> | |
Mod4_xx_Positive_36 | |
Mod4_xx_Positive_44 -> | |
Mod4_xx_Positive_40 | |
Mod4_xx_Positive_48 -> | |
Mod4_xx_Positive_44 | |
Mod4_xx_Positive_52 -> | |
Mod4_xx_Positive_48 | |
Mod4_xx_Positive_56 -> | |
Mod4_xx_Positive_52 | |
Mod4_xx_Positive_60 -> | |
Mod4_xx_Positive_56 | |
Mod4_xx_Positive_64 -> | |
Mod4_xx_Positive_60 | |
Mod4_xx_Positive_68 -> | |
Mod4_xx_Positive_64 | |
Mod4_xx_Positive_72 -> | |
Mod4_xx_Positive_68 | |
Mod4_xx_Positive_76 -> | |
Mod4_xx_Positive_72 | |
Mod4_xx_Positive_80 -> | |
Mod4_xx_Positive_76 | |
Mod4_xx_Positive_84 -> | |
Mod4_xx_Positive_80 | |
Mod4_xx_Positive_88 -> | |
Mod4_xx_Positive_84 | |
Mod4_xx_Positive_92 -> | |
Mod4_xx_Positive_88 | |
Mod4_xx_Positive_96 -> | |
Mod4_xx_Positive_92 | |
) | |
digitsMod4_xx_Positive :: | |
ToDigits Mod4_xx_Positive | |
digitsMod4_xx_Positive = | |
noSuffixToDigits ( | |
\case | |
Mod4_xx_Positive_04 -> | |
[D0, D4] | |
Mod4_xx_Positive_08 -> | |
[D0, D8] | |
Mod4_xx_Positive_12 -> | |
[D1, D2] | |
Mod4_xx_Positive_16 -> | |
[D1, D6] | |
Mod4_xx_Positive_20 -> | |
[D2, D0] | |
Mod4_xx_Positive_24 -> | |
[D2, D4] | |
Mod4_xx_Positive_28 -> | |
[D2, D8] | |
Mod4_xx_Positive_32 -> | |
[D3, D2] | |
Mod4_xx_Positive_36 -> | |
[D3, D6] | |
Mod4_xx_Positive_40 -> | |
[D4, D0] | |
Mod4_xx_Positive_44 -> | |
[D4, D4] | |
Mod4_xx_Positive_48 -> | |
[D4, D8] | |
Mod4_xx_Positive_52 -> | |
[D5, D2] | |
Mod4_xx_Positive_56 -> | |
[D5, D6] | |
Mod4_xx_Positive_60 -> | |
[D6, D0] | |
Mod4_xx_Positive_64 -> | |
[D6, D4] | |
Mod4_xx_Positive_68 -> | |
[D6, D8] | |
Mod4_xx_Positive_72 -> | |
[D7, D2] | |
Mod4_xx_Positive_76 -> | |
[D7, D6] | |
Mod4_xx_Positive_80 -> | |
[D8, D0] | |
Mod4_xx_Positive_84 -> | |
[D8, D4] | |
Mod4_xx_Positive_88 -> | |
[D8, D8] | |
Mod4_xx_Positive_92 -> | |
[D9, D2] | |
Mod4_xx_Positive_96 -> | |
[D9, D6] | |
) | |
data Mod4_xx_Natural = | |
Mod4_xx_Natural_00 | |
| Mod4_xx_Natural_Positive Mod4_xx_Positive | |
deriving (Eq, Ord, Show) | |
digitsMod4_xx_Natural :: | |
ToDigits Mod4_xx_Natural | |
digitsMod4_xx_Natural = | |
choose | |
(\case | |
Mod4_xx_Natural_00 -> | |
Left () | |
Mod4_xx_Natural_Positive x -> | |
Right x | |
) | |
(noSuffixToDigits (pure [D0, D0])) | |
digitsMod4_xx_Positive | |
rot1Mod4_xx_Natural :: | |
Iso' Mod4_xx_Natural Mod4_xx_Natural | |
rot1Mod4_xx_Natural = | |
iso | |
(\case | |
Mod4_xx_Natural_00 -> | |
Mod4_xx_Natural_Positive Mod4_xx_Positive_04 | |
Mod4_xx_Natural_Positive x -> | |
case x ^. rot1Mod4_xx_Positive of | |
Mod4_xx_Positive_04 -> | |
Mod4_xx_Natural_00 | |
y -> | |
Mod4_xx_Natural_Positive y | |
) | |
(\case | |
Mod4_xx_Natural_00 -> | |
Mod4_xx_Natural_Positive Mod4_xx_Positive_96 | |
Mod4_xx_Natural_Positive x -> | |
case rot1Mod4_xx_Positive # x of | |
Mod4_xx_Positive_96 -> | |
Mod4_xx_Natural_00 | |
y -> | |
Mod4_xx_Natural_Positive y | |
) | |
data Not_mod4_xx_Nat = | |
Not_mod4_xx_Nat_01 | |
| Not_mod4_xx_Nat_02 | |
| Not_mod4_xx_Nat_03 | |
| Not_mod4_xx_Nat_05 | |
| Not_mod4_xx_Nat_06 | |
| Not_mod4_xx_Nat_07 | |
| Not_mod4_xx_Nat_09 | |
| Not_mod4_xx_Nat_10 | |
| Not_mod4_xx_Nat_11 | |
| Not_mod4_xx_Nat_13 | |
| Not_mod4_xx_Nat_14 | |
| Not_mod4_xx_Nat_15 | |
| Not_mod4_xx_Nat_17 | |
| Not_mod4_xx_Nat_18 | |
| Not_mod4_xx_Nat_19 | |
| Not_mod4_xx_Nat_21 | |
| Not_mod4_xx_Nat_22 | |
| Not_mod4_xx_Nat_23 | |
| Not_mod4_xx_Nat_25 | |
| Not_mod4_xx_Nat_26 | |
| Not_mod4_xx_Nat_27 | |
| Not_mod4_xx_Nat_29 | |
| Not_mod4_xx_Nat_30 | |
| Not_mod4_xx_Nat_31 | |
| Not_mod4_xx_Nat_33 | |
| Not_mod4_xx_Nat_34 | |
| Not_mod4_xx_Nat_35 | |
| Not_mod4_xx_Nat_37 | |
| Not_mod4_xx_Nat_38 | |
| Not_mod4_xx_Nat_39 | |
| Not_mod4_xx_Nat_41 | |
| Not_mod4_xx_Nat_42 | |
| Not_mod4_xx_Nat_43 | |
| Not_mod4_xx_Nat_45 | |
| Not_mod4_xx_Nat_46 | |
| Not_mod4_xx_Nat_47 | |
| Not_mod4_xx_Nat_49 | |
| Not_mod4_xx_Nat_50 | |
| Not_mod4_xx_Nat_51 | |
| Not_mod4_xx_Nat_53 | |
| Not_mod4_xx_Nat_54 | |
| Not_mod4_xx_Nat_55 | |
| Not_mod4_xx_Nat_57 | |
| Not_mod4_xx_Nat_58 | |
| Not_mod4_xx_Nat_59 | |
| Not_mod4_xx_Nat_61 | |
| Not_mod4_xx_Nat_62 | |
| Not_mod4_xx_Nat_63 | |
| Not_mod4_xx_Nat_65 | |
| Not_mod4_xx_Nat_66 | |
| Not_mod4_xx_Nat_67 | |
| Not_mod4_xx_Nat_69 | |
| Not_mod4_xx_Nat_70 | |
| Not_mod4_xx_Nat_71 | |
| Not_mod4_xx_Nat_73 | |
| Not_mod4_xx_Nat_74 | |
| Not_mod4_xx_Nat_75 | |
| Not_mod4_xx_Nat_77 | |
| Not_mod4_xx_Nat_78 | |
| Not_mod4_xx_Nat_79 | |
| Not_mod4_xx_Nat_81 | |
| Not_mod4_xx_Nat_82 | |
| Not_mod4_xx_Nat_83 | |
| Not_mod4_xx_Nat_85 | |
| Not_mod4_xx_Nat_86 | |
| Not_mod4_xx_Nat_87 | |
| Not_mod4_xx_Nat_89 | |
| Not_mod4_xx_Nat_90 | |
| Not_mod4_xx_Nat_91 | |
| Not_mod4_xx_Nat_93 | |
| Not_mod4_xx_Nat_94 | |
| Not_mod4_xx_Nat_95 | |
| Not_mod4_xx_Nat_97 | |
| Not_mod4_xx_Nat_98 | |
| Not_mod4_xx_Nat_99 | |
deriving (Eq, Ord, Show) | |
digitsNot_mod4_xx_Nat :: | |
ToDigits Not_mod4_xx_Nat | |
digitsNot_mod4_xx_Nat = | |
noSuffixToDigits (\case | |
Not_mod4_xx_Nat_01 -> | |
[D0, D1] | |
Not_mod4_xx_Nat_02 -> | |
[D0, D2] | |
Not_mod4_xx_Nat_03 -> | |
[D0, D3] | |
Not_mod4_xx_Nat_05 -> | |
[D0, D5] | |
Not_mod4_xx_Nat_06 -> | |
[D0, D6] | |
Not_mod4_xx_Nat_07 -> | |
[D0, D7] | |
Not_mod4_xx_Nat_09 -> | |
[D0, D9] | |
Not_mod4_xx_Nat_10 -> | |
[D1, D0] | |
Not_mod4_xx_Nat_11 -> | |
[D1, D1] | |
Not_mod4_xx_Nat_13 -> | |
[D1, D3] | |
Not_mod4_xx_Nat_14 -> | |
[D1, D4] | |
Not_mod4_xx_Nat_15 -> | |
[D1, D5] | |
Not_mod4_xx_Nat_17 -> | |
[D1, D7] | |
Not_mod4_xx_Nat_18 -> | |
[D1, D8] | |
Not_mod4_xx_Nat_19 -> | |
[D1, D9] | |
Not_mod4_xx_Nat_21 -> | |
[D2, D1] | |
Not_mod4_xx_Nat_22 -> | |
[D2, D2] | |
Not_mod4_xx_Nat_23 -> | |
[D2, D3] | |
Not_mod4_xx_Nat_25 -> | |
[D2, D5] | |
Not_mod4_xx_Nat_26 -> | |
[D2, D6] | |
Not_mod4_xx_Nat_27 -> | |
[D2, D7] | |
Not_mod4_xx_Nat_29 -> | |
[D2, D9] | |
Not_mod4_xx_Nat_30 -> | |
[D3, D0] | |
Not_mod4_xx_Nat_31 -> | |
[D3, D1] | |
Not_mod4_xx_Nat_33 -> | |
[D3, D3] | |
Not_mod4_xx_Nat_34 -> | |
[D3, D4] | |
Not_mod4_xx_Nat_35 -> | |
[D3, D5] | |
Not_mod4_xx_Nat_37 -> | |
[D3, D7] | |
Not_mod4_xx_Nat_38 -> | |
[D3, D8] | |
Not_mod4_xx_Nat_39 -> | |
[D3, D9] | |
Not_mod4_xx_Nat_41 -> | |
[D4, D1] | |
Not_mod4_xx_Nat_42 -> | |
[D4, D2] | |
Not_mod4_xx_Nat_43 -> | |
[D4, D3] | |
Not_mod4_xx_Nat_45 -> | |
[D4, D5] | |
Not_mod4_xx_Nat_46 -> | |
[D4, D6] | |
Not_mod4_xx_Nat_47 -> | |
[D4, D7] | |
Not_mod4_xx_Nat_49 -> | |
[D4, D9] | |
Not_mod4_xx_Nat_50 -> | |
[D5, D0] | |
Not_mod4_xx_Nat_51 -> | |
[D5, D1] | |
Not_mod4_xx_Nat_53 -> | |
[D5, D3] | |
Not_mod4_xx_Nat_54 -> | |
[D5, D4] | |
Not_mod4_xx_Nat_55 -> | |
[D5, D5] | |
Not_mod4_xx_Nat_57 -> | |
[D5, D7] | |
Not_mod4_xx_Nat_58 -> | |
[D5, D8] | |
Not_mod4_xx_Nat_59 -> | |
[D5, D9] | |
Not_mod4_xx_Nat_61 -> | |
[D6, D1] | |
Not_mod4_xx_Nat_62 -> | |
[D6, D2] | |
Not_mod4_xx_Nat_63 -> | |
[D6, D3] | |
Not_mod4_xx_Nat_65 -> | |
[D6, D5] | |
Not_mod4_xx_Nat_66 -> | |
[D6, D6] | |
Not_mod4_xx_Nat_67 -> | |
[D6, D7] | |
Not_mod4_xx_Nat_69 -> | |
[D6, D9] | |
Not_mod4_xx_Nat_70 -> | |
[D7, D0] | |
Not_mod4_xx_Nat_71 -> | |
[D7, D1] | |
Not_mod4_xx_Nat_73 -> | |
[D7, D3] | |
Not_mod4_xx_Nat_74 -> | |
[D7, D4] | |
Not_mod4_xx_Nat_75 -> | |
[D7, D5] | |
Not_mod4_xx_Nat_77 -> | |
[D7, D7] | |
Not_mod4_xx_Nat_78 -> | |
[D7, D8] | |
Not_mod4_xx_Nat_79 -> | |
[D7, D9] | |
Not_mod4_xx_Nat_81 -> | |
[D8, D1] | |
Not_mod4_xx_Nat_82 -> | |
[D8, D2] | |
Not_mod4_xx_Nat_83 -> | |
[D8, D3] | |
Not_mod4_xx_Nat_85 -> | |
[D8, D5] | |
Not_mod4_xx_Nat_86 -> | |
[D8, D6] | |
Not_mod4_xx_Nat_87 -> | |
[D8, D7] | |
Not_mod4_xx_Nat_89 -> | |
[D8, D9] | |
Not_mod4_xx_Nat_90 -> | |
[D9, D0] | |
Not_mod4_xx_Nat_91 -> | |
[D9, D1] | |
Not_mod4_xx_Nat_93 -> | |
[D9, D3] | |
Not_mod4_xx_Nat_94 -> | |
[D9, D4] | |
Not_mod4_xx_Nat_95 -> | |
[D9, D5] | |
Not_mod4_xx_Nat_97 -> | |
[D9, D7] | |
Not_mod4_xx_Nat_98 -> | |
[D9, D8] | |
Not_mod4_xx_Nat_99 -> | |
[D9, D9] | |
) | |
rot1Not_mod4_xx_Nat :: | |
Iso' Not_mod4_xx_Nat Not_mod4_xx_Nat | |
rot1Not_mod4_xx_Nat = | |
iso | |
(\case | |
Not_mod4_xx_Nat_01 -> | |
Not_mod4_xx_Nat_02 | |
Not_mod4_xx_Nat_02 -> | |
Not_mod4_xx_Nat_03 | |
Not_mod4_xx_Nat_03 -> | |
Not_mod4_xx_Nat_05 | |
Not_mod4_xx_Nat_05 -> | |
Not_mod4_xx_Nat_06 | |
Not_mod4_xx_Nat_06 -> | |
Not_mod4_xx_Nat_07 | |
Not_mod4_xx_Nat_07 -> | |
Not_mod4_xx_Nat_09 | |
Not_mod4_xx_Nat_09 -> | |
Not_mod4_xx_Nat_10 | |
Not_mod4_xx_Nat_10 -> | |
Not_mod4_xx_Nat_11 | |
Not_mod4_xx_Nat_11 -> | |
Not_mod4_xx_Nat_13 | |
Not_mod4_xx_Nat_13 -> | |
Not_mod4_xx_Nat_14 | |
Not_mod4_xx_Nat_14 -> | |
Not_mod4_xx_Nat_15 | |
Not_mod4_xx_Nat_15 -> | |
Not_mod4_xx_Nat_17 | |
Not_mod4_xx_Nat_17 -> | |
Not_mod4_xx_Nat_18 | |
Not_mod4_xx_Nat_18 -> | |
Not_mod4_xx_Nat_19 | |
Not_mod4_xx_Nat_19 -> | |
Not_mod4_xx_Nat_21 | |
Not_mod4_xx_Nat_21 -> | |
Not_mod4_xx_Nat_22 | |
Not_mod4_xx_Nat_22 -> | |
Not_mod4_xx_Nat_23 | |
Not_mod4_xx_Nat_23 -> | |
Not_mod4_xx_Nat_25 | |
Not_mod4_xx_Nat_25 -> | |
Not_mod4_xx_Nat_26 | |
Not_mod4_xx_Nat_26 -> | |
Not_mod4_xx_Nat_27 | |
Not_mod4_xx_Nat_27 -> | |
Not_mod4_xx_Nat_29 | |
Not_mod4_xx_Nat_29 -> | |
Not_mod4_xx_Nat_30 | |
Not_mod4_xx_Nat_30 -> | |
Not_mod4_xx_Nat_31 | |
Not_mod4_xx_Nat_31 -> | |
Not_mod4_xx_Nat_33 | |
Not_mod4_xx_Nat_33 -> | |
Not_mod4_xx_Nat_34 | |
Not_mod4_xx_Nat_34 -> | |
Not_mod4_xx_Nat_35 | |
Not_mod4_xx_Nat_35 -> | |
Not_mod4_xx_Nat_37 | |
Not_mod4_xx_Nat_37 -> | |
Not_mod4_xx_Nat_38 | |
Not_mod4_xx_Nat_38 -> | |
Not_mod4_xx_Nat_39 | |
Not_mod4_xx_Nat_39 -> | |
Not_mod4_xx_Nat_41 | |
Not_mod4_xx_Nat_41 -> | |
Not_mod4_xx_Nat_42 | |
Not_mod4_xx_Nat_42 -> | |
Not_mod4_xx_Nat_43 | |
Not_mod4_xx_Nat_43 -> | |
Not_mod4_xx_Nat_45 | |
Not_mod4_xx_Nat_45 -> | |
Not_mod4_xx_Nat_46 | |
Not_mod4_xx_Nat_46 -> | |
Not_mod4_xx_Nat_47 | |
Not_mod4_xx_Nat_47 -> | |
Not_mod4_xx_Nat_49 | |
Not_mod4_xx_Nat_49 -> | |
Not_mod4_xx_Nat_50 | |
Not_mod4_xx_Nat_50 -> | |
Not_mod4_xx_Nat_51 | |
Not_mod4_xx_Nat_51 -> | |
Not_mod4_xx_Nat_53 | |
Not_mod4_xx_Nat_53 -> | |
Not_mod4_xx_Nat_54 | |
Not_mod4_xx_Nat_54 -> | |
Not_mod4_xx_Nat_55 | |
Not_mod4_xx_Nat_55 -> | |
Not_mod4_xx_Nat_57 | |
Not_mod4_xx_Nat_57 -> | |
Not_mod4_xx_Nat_58 | |
Not_mod4_xx_Nat_58 -> | |
Not_mod4_xx_Nat_59 | |
Not_mod4_xx_Nat_59 -> | |
Not_mod4_xx_Nat_61 | |
Not_mod4_xx_Nat_61 -> | |
Not_mod4_xx_Nat_62 | |
Not_mod4_xx_Nat_62 -> | |
Not_mod4_xx_Nat_63 | |
Not_mod4_xx_Nat_63 -> | |
Not_mod4_xx_Nat_65 | |
Not_mod4_xx_Nat_65 -> | |
Not_mod4_xx_Nat_66 | |
Not_mod4_xx_Nat_66 -> | |
Not_mod4_xx_Nat_67 | |
Not_mod4_xx_Nat_67 -> | |
Not_mod4_xx_Nat_69 | |
Not_mod4_xx_Nat_69 -> | |
Not_mod4_xx_Nat_70 | |
Not_mod4_xx_Nat_70 -> | |
Not_mod4_xx_Nat_71 | |
Not_mod4_xx_Nat_71 -> | |
Not_mod4_xx_Nat_73 | |
Not_mod4_xx_Nat_73 -> | |
Not_mod4_xx_Nat_74 | |
Not_mod4_xx_Nat_74 -> | |
Not_mod4_xx_Nat_75 | |
Not_mod4_xx_Nat_75 -> | |
Not_mod4_xx_Nat_77 | |
Not_mod4_xx_Nat_77 -> | |
Not_mod4_xx_Nat_78 | |
Not_mod4_xx_Nat_78 -> | |
Not_mod4_xx_Nat_79 | |
Not_mod4_xx_Nat_79 -> | |
Not_mod4_xx_Nat_81 | |
Not_mod4_xx_Nat_81 -> | |
Not_mod4_xx_Nat_82 | |
Not_mod4_xx_Nat_82 -> | |
Not_mod4_xx_Nat_83 | |
Not_mod4_xx_Nat_83 -> | |
Not_mod4_xx_Nat_85 | |
Not_mod4_xx_Nat_85 -> | |
Not_mod4_xx_Nat_86 | |
Not_mod4_xx_Nat_86 -> | |
Not_mod4_xx_Nat_87 | |
Not_mod4_xx_Nat_87 -> | |
Not_mod4_xx_Nat_89 | |
Not_mod4_xx_Nat_89 -> | |
Not_mod4_xx_Nat_90 | |
Not_mod4_xx_Nat_90 -> | |
Not_mod4_xx_Nat_91 | |
Not_mod4_xx_Nat_91 -> | |
Not_mod4_xx_Nat_93 | |
Not_mod4_xx_Nat_93 -> | |
Not_mod4_xx_Nat_94 | |
Not_mod4_xx_Nat_94 -> | |
Not_mod4_xx_Nat_95 | |
Not_mod4_xx_Nat_95 -> | |
Not_mod4_xx_Nat_97 | |
Not_mod4_xx_Nat_97 -> | |
Not_mod4_xx_Nat_98 | |
Not_mod4_xx_Nat_98 -> | |
Not_mod4_xx_Nat_99 | |
Not_mod4_xx_Nat_99 -> | |
Not_mod4_xx_Nat_01 | |
) | |
(\case | |
Not_mod4_xx_Nat_01 -> | |
Not_mod4_xx_Nat_99 | |
Not_mod4_xx_Nat_02 -> | |
Not_mod4_xx_Nat_01 | |
Not_mod4_xx_Nat_03 -> | |
Not_mod4_xx_Nat_02 | |
Not_mod4_xx_Nat_05 -> | |
Not_mod4_xx_Nat_03 | |
Not_mod4_xx_Nat_06 -> | |
Not_mod4_xx_Nat_05 | |
Not_mod4_xx_Nat_07 -> | |
Not_mod4_xx_Nat_06 | |
Not_mod4_xx_Nat_09 -> | |
Not_mod4_xx_Nat_17 | |
Not_mod4_xx_Nat_10 -> | |
Not_mod4_xx_Nat_09 | |
Not_mod4_xx_Nat_11 -> | |
Not_mod4_xx_Nat_10 | |
Not_mod4_xx_Nat_13 -> | |
Not_mod4_xx_Nat_11 | |
Not_mod4_xx_Nat_14 -> | |
Not_mod4_xx_Nat_13 | |
Not_mod4_xx_Nat_15 -> | |
Not_mod4_xx_Nat_14 | |
Not_mod4_xx_Nat_17 -> | |
Not_mod4_xx_Nat_15 | |
Not_mod4_xx_Nat_18 -> | |
Not_mod4_xx_Nat_17 | |
Not_mod4_xx_Nat_19 -> | |
Not_mod4_xx_Nat_18 | |
Not_mod4_xx_Nat_21 -> | |
Not_mod4_xx_Nat_19 | |
Not_mod4_xx_Nat_22 -> | |
Not_mod4_xx_Nat_21 | |
Not_mod4_xx_Nat_23 -> | |
Not_mod4_xx_Nat_22 | |
Not_mod4_xx_Nat_25 -> | |
Not_mod4_xx_Nat_23 | |
Not_mod4_xx_Nat_26 -> | |
Not_mod4_xx_Nat_25 | |
Not_mod4_xx_Nat_27 -> | |
Not_mod4_xx_Nat_26 | |
Not_mod4_xx_Nat_29 -> | |
Not_mod4_xx_Nat_27 | |
Not_mod4_xx_Nat_30 -> | |
Not_mod4_xx_Nat_29 | |
Not_mod4_xx_Nat_31 -> | |
Not_mod4_xx_Nat_30 | |
Not_mod4_xx_Nat_33 -> | |
Not_mod4_xx_Nat_31 | |
Not_mod4_xx_Nat_34 -> | |
Not_mod4_xx_Nat_33 | |
Not_mod4_xx_Nat_35 -> | |
Not_mod4_xx_Nat_34 | |
Not_mod4_xx_Nat_37 -> | |
Not_mod4_xx_Nat_35 | |
Not_mod4_xx_Nat_38 -> | |
Not_mod4_xx_Nat_37 | |
Not_mod4_xx_Nat_39 -> | |
Not_mod4_xx_Nat_38 | |
Not_mod4_xx_Nat_41 -> | |
Not_mod4_xx_Nat_39 | |
Not_mod4_xx_Nat_42 -> | |
Not_mod4_xx_Nat_41 | |
Not_mod4_xx_Nat_43 -> | |
Not_mod4_xx_Nat_42 | |
Not_mod4_xx_Nat_45 -> | |
Not_mod4_xx_Nat_43 | |
Not_mod4_xx_Nat_46 -> | |
Not_mod4_xx_Nat_45 | |
Not_mod4_xx_Nat_47 -> | |
Not_mod4_xx_Nat_46 | |
Not_mod4_xx_Nat_49 -> | |
Not_mod4_xx_Nat_47 | |
Not_mod4_xx_Nat_50 -> | |
Not_mod4_xx_Nat_49 | |
Not_mod4_xx_Nat_51 -> | |
Not_mod4_xx_Nat_50 | |
Not_mod4_xx_Nat_53 -> | |
Not_mod4_xx_Nat_51 | |
Not_mod4_xx_Nat_54 -> | |
Not_mod4_xx_Nat_53 | |
Not_mod4_xx_Nat_55 -> | |
Not_mod4_xx_Nat_54 | |
Not_mod4_xx_Nat_57 -> | |
Not_mod4_xx_Nat_55 | |
Not_mod4_xx_Nat_58 -> | |
Not_mod4_xx_Nat_57 | |
Not_mod4_xx_Nat_59 -> | |
Not_mod4_xx_Nat_58 | |
Not_mod4_xx_Nat_61 -> | |
Not_mod4_xx_Nat_59 | |
Not_mod4_xx_Nat_62 -> | |
Not_mod4_xx_Nat_61 | |
Not_mod4_xx_Nat_63 -> | |
Not_mod4_xx_Nat_62 | |
Not_mod4_xx_Nat_65 -> | |
Not_mod4_xx_Nat_63 | |
Not_mod4_xx_Nat_66 -> | |
Not_mod4_xx_Nat_65 | |
Not_mod4_xx_Nat_67 -> | |
Not_mod4_xx_Nat_66 | |
Not_mod4_xx_Nat_69 -> | |
Not_mod4_xx_Nat_67 | |
Not_mod4_xx_Nat_70 -> | |
Not_mod4_xx_Nat_69 | |
Not_mod4_xx_Nat_71 -> | |
Not_mod4_xx_Nat_70 | |
Not_mod4_xx_Nat_73 -> | |
Not_mod4_xx_Nat_71 | |
Not_mod4_xx_Nat_74 -> | |
Not_mod4_xx_Nat_73 | |
Not_mod4_xx_Nat_75 -> | |
Not_mod4_xx_Nat_74 | |
Not_mod4_xx_Nat_77 -> | |
Not_mod4_xx_Nat_75 | |
Not_mod4_xx_Nat_78 -> | |
Not_mod4_xx_Nat_77 | |
Not_mod4_xx_Nat_79 -> | |
Not_mod4_xx_Nat_78 | |
Not_mod4_xx_Nat_81 -> | |
Not_mod4_xx_Nat_79 | |
Not_mod4_xx_Nat_82 -> | |
Not_mod4_xx_Nat_81 | |
Not_mod4_xx_Nat_83 -> | |
Not_mod4_xx_Nat_82 | |
Not_mod4_xx_Nat_85 -> | |
Not_mod4_xx_Nat_83 | |
Not_mod4_xx_Nat_86 -> | |
Not_mod4_xx_Nat_85 | |
Not_mod4_xx_Nat_87 -> | |
Not_mod4_xx_Nat_86 | |
Not_mod4_xx_Nat_89 -> | |
Not_mod4_xx_Nat_87 | |
Not_mod4_xx_Nat_90 -> | |
Not_mod4_xx_Nat_89 | |
Not_mod4_xx_Nat_91 -> | |
Not_mod4_xx_Nat_90 | |
Not_mod4_xx_Nat_93 -> | |
Not_mod4_xx_Nat_91 | |
Not_mod4_xx_Nat_94 -> | |
Not_mod4_xx_Nat_93 | |
Not_mod4_xx_Nat_95 -> | |
Not_mod4_xx_Nat_94 | |
Not_mod4_xx_Nat_97 -> | |
Not_mod4_xx_Nat_95 | |
Not_mod4_xx_Nat_98 -> | |
Not_mod4_xx_Nat_97 | |
Not_mod4_xx_Nat_99 -> | |
Not_mod4_xx_Nat_98 | |
) | |
data Not_mod4_xx_Positive = | |
Not_mod4_xx_Positive_00 | |
| Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat | |
deriving (Eq, Ord, Show) | |
digitsNot_mod4_xx_Positive :: | |
ToDigits Not_mod4_xx_Positive | |
digitsNot_mod4_xx_Positive = | |
choose | |
(\d -> | |
case d of | |
Not_mod4_xx_Positive_00 -> | |
Left () | |
Not_mod4_xx_Positive_Natural x -> | |
Right x | |
) | |
(noSuffixToDigits (pure [D0, D0])) | |
digitsNot_mod4_xx_Nat | |
rot1Not_mod4_xx_Positive :: | |
Iso' Not_mod4_xx_Positive Not_mod4_xx_Positive | |
rot1Not_mod4_xx_Positive = | |
iso | |
(\case | |
Not_mod4_xx_Positive_00 -> | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_01 | |
Not_mod4_xx_Positive_Natural x -> | |
case rot1Not_mod4_xx_Nat # x of | |
Not_mod4_xx_Nat_01 -> | |
Not_mod4_xx_Positive_00 | |
y -> | |
Not_mod4_xx_Positive_Natural y | |
) | |
(\case | |
Not_mod4_xx_Positive_00 -> | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_99 | |
Not_mod4_xx_Positive_Natural x -> | |
case x ^. rot1Not_mod4_xx_Nat of | |
Not_mod4_xx_Nat_99 -> | |
Not_mod4_xx_Positive_00 | |
y -> | |
Not_mod4_xx_Positive_Natural y | |
) | |
data LeapYear_Natural_Suffix = | |
LeapYear_Natural_Suffix_xx | |
Not_mod4_xx_Positive | |
Mod4_xx_Positive | |
| LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive | |
Mod4_xx_Natural | |
deriving (Eq, Ord, Show) | |
rot1LeapYear_Natural_Suffix :: | |
Iso' LeapYear_Natural_Suffix LeapYear_Natural_Suffix | |
rot1LeapYear_Natural_Suffix = | |
iso | |
(\case | |
LeapYear_Natural_Suffix_xx xx yy -> | |
case yy ^. rot1Mod4_xx_Positive of | |
Mod4_xx_Positive_04 -> | |
case xx of | |
Not_mod4_xx_Positive_00 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_01) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_01 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_02) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_02 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_03) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_03 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_04 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_05 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_06) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_06 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_07) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_07 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_08 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_09 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_10) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_10 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_11) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_11 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_12 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_13 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_14) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_14 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_15) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_15 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_16 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_17 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_18) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_18 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_19) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_19 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_20 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_21 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_22) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_22 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_23) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_23 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_24 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_25 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_26) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_26 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_27) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_27 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_28 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_29 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_30) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_30 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_31) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_31 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_32 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_33 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_34) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_34 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_35) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_35 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_36 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_37 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_38) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_38 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_39) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_39 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_40 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_41 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_42) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_42 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_43) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_43 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_44 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_45 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_46) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_46 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_47) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_47 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_48 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_49 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_50) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_50 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_51) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_51 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_52 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_53 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_54) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_54 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_55) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_55 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_56 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_57 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_58) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_58 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_59) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_59 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_60 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_61 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_62) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_62 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_63) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_63 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_64 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_65 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_66) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_66 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_67) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_67 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_68 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_69 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_70) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_70 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_71) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_71 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_72 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_73 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_74) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_74 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_75) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_75 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_76 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_77 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_78) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_78 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_79) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_79 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_80 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_81 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_82) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_82 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_83) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_83 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_84 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_85 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_86) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_86 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_87) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_87 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_88 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_89 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_90) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_90 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_91) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_91 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_92 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_93 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_94) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_94 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_95) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_95 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_96 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_97 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_98) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_98 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_99) | |
Mod4_xx_Positive_04 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_99 -> | |
LeapYear_Natural_Suffix_xx | |
Not_mod4_xx_Positive_00 | |
Mod4_xx_Positive_04 | |
yy' -> | |
LeapYear_Natural_Suffix_xx xx yy' | |
LeapYear_Natural_Suffix_00 xx yy -> | |
case yy ^. rot1Mod4_xx_Natural of | |
Mod4_xx_Natural_00 -> | |
case xx of | |
Mod4_xx_Positive_04 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_05) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_08 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_09) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_12 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_13) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_16 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_17) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_20 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_21) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_24 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_25) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_28 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_29) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_32 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_33) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_36 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_37) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_40 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_41) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_44 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_45) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_48 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_49) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_52 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_53) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_56 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_57) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_60 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_61) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_64 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_65) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_68 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_69) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_72 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_73) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_76 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_77) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_80 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_81) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_84 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_85) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_88 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_89) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_92 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_93) | |
Mod4_xx_Positive_04 | |
Mod4_xx_Positive_96 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_97) | |
Mod4_xx_Positive_04 | |
yy' -> | |
LeapYear_Natural_Suffix_00 xx yy' | |
) | |
(\case | |
LeapYear_Natural_Suffix_xx xx yy -> | |
case rot1Mod4_xx_Positive # yy of | |
Mod4_xx_Positive_96 -> | |
case xx of | |
Not_mod4_xx_Positive_00 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_99) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_01 -> | |
LeapYear_Natural_Suffix_xx | |
Not_mod4_xx_Positive_00 | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_02 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_01) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_03 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_02) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_05 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_04 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_06 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_05) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_07 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_06) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_09 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_08 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_10 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_09) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_11 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_10) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_13 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_12 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_14 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_13) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_15 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_14) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_17 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_16 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_18 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_17) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_19 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_18) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_21 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_20 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_22 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_21) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_23 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_22) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_25 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_24 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_26 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_25) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_27 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_26) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_29 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_28 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_30 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_29) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_31 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_30) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_33 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_32 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_34 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_33) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_35 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_34) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_37 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_36 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_38 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_37) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_39 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_38) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_41 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_40 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_42 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_41) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_43 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_42) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_45 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_44 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_46 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_45) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_47 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_46) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_49 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_48 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_50 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_49) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_51 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_50) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_53 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_52 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_54 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_53) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_55 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_54) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_57 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_56 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_58 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_57) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_59 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_58) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_61 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_60 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_62 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_61) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_63 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_62) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_65 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_64 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_66 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_65) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_67 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_66) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_69 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_68 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_70 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_69) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_71 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_70) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_73 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_72 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_74 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_73) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_75 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_74) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_77 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_76 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_78 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_77) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_79 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_78) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_81 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_80 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_82 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_81) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_83 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_82) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_85 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_84 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_86 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_85) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_87 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_86) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_89 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_88 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_90 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_89) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_91 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_90) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_93 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_92 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_94 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_93) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_95 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_94) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_97 -> | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_96 | |
Mod4_xx_Natural_00 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_98 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_97) | |
Mod4_xx_Positive_96 | |
Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_99 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_98) | |
Mod4_xx_Positive_96 | |
yy' -> | |
LeapYear_Natural_Suffix_xx xx yy' | |
LeapYear_Natural_Suffix_00 xx yy -> | |
case rot1Mod4_xx_Natural # yy of | |
Mod4_xx_Natural_Positive Mod4_xx_Positive_96 -> | |
case xx of | |
Mod4_xx_Positive_04 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_03) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_08 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_07) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_12 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_11) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_16 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_15) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_20 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_19) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_24 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_23) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_28 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_27) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_32 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_31) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_36 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_35) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_40 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_39) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_44 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_43) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_48 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_47) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_52 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_51) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_56 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_55) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_60 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_59) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_64 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_63) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_68 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_67) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_72 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_71) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_76 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_75) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_80 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_79) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_84 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_83) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_88 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_87) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_92 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_91) | |
Mod4_xx_Positive_96 | |
Mod4_xx_Positive_96 -> | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_95) | |
Mod4_xx_Positive_96 | |
yy' -> | |
LeapYear_Natural_Suffix_00 xx yy' | |
) | |
digitsLeapYear_Natural_Suffix :: | |
ToDigits LeapYear_Natural_Suffix | |
digitsLeapYear_Natural_Suffix = | |
choose | |
(\case | |
LeapYear_Natural_Suffix_xx x y -> | |
Left (x, y) | |
LeapYear_Natural_Suffix_00 x y -> | |
Right (x, y) | |
) | |
( | |
divide | |
id | |
digitsNot_mod4_xx_Positive | |
digitsMod4_xx_Positive | |
) | |
( | |
divide | |
id | |
digitsMod4_xx_Positive | |
digitsMod4_xx_Natural | |
) | |
-- | | |
-- | |
-- >>> LeapYear_Natural mempty (LeapYear_Natural_Suffix_00 Mod4_xx_Natural_00 Mod4_xx_Positive_44) | |
data LeapYear_Natural = | |
LeapYear_Natural | |
Digits | |
LeapYear_Natural_Suffix | |
deriving (Eq, Ord, Show) | |
digitsLeapYear_Natural :: | |
ToDigits LeapYear_Natural | |
digitsLeapYear_Natural = | |
divide | |
(\(LeapYear_Natural d s) -> (d, s)) | |
digitsDigits | |
digitsLeapYear_Natural_Suffix | |
data Commonyear_Natural_Suffix = | |
Commonyear_Natural_Suffix_xx | |
Digit | |
Digit | |
Not_mod4_xx_Nat | |
| Commonyear_Natural_Suffix_00 | |
Not_mod4_xx_Nat -- 00 | |
deriving (Eq, Ord, Show) | |
digitsCommonyear_Natural_Suffix :: | |
ToDigits Commonyear_Natural_Suffix | |
digitsCommonyear_Natural_Suffix = | |
choose | |
(\case | |
Commonyear_Natural_Suffix_xx d1 d2 x -> | |
Left ((d1, d2), x) | |
Commonyear_Natural_Suffix_00 x -> | |
Right x | |
) | |
( | |
divide | |
id | |
( | |
divide | |
id | |
digitsDigit | |
digitsDigit | |
) | |
digitsNot_mod4_xx_Nat | |
) | |
( | |
divide | |
(\x -> (x, ())) | |
digitsNot_mod4_xx_Nat | |
(noSuffixToDigits (pure [D0, D0])) | |
) | |
data Commonyear_Natural = | |
Commonyear_Natural | |
Digits | |
Commonyear_Natural_Suffix | |
deriving (Eq, Ord, Show) | |
digitsCommonyear_Natural :: | |
ToDigits Commonyear_Natural | |
digitsCommonyear_Natural = | |
divide | |
(\(Commonyear_Natural d x) -> (d, x)) | |
digitsDigits | |
digitsCommonyear_Natural_Suffix | |
data LeapYear = | |
LeapYear_CE LeapYear_Natural | |
| LeapYear_BCE LeapYear_Natural | |
deriving (Eq, Ord, Show) | |
digitsLeapYear :: | |
ToDigits LeapYear | |
digitsLeapYear = | |
choose | |
(\case | |
LeapYear_CE n -> | |
Left n | |
LeapYear_BCE n -> | |
Right n | |
) | |
(modSuffix (pure "CE") digitsLeapYear_Natural) | |
(modSuffix (pure "BCE") digitsLeapYear_Natural) | |
data CommonYear = | |
CommonYear_CE Commonyear_Natural | |
| CommonYear_BCE Commonyear_Natural | |
deriving (Eq, Ord, Show) | |
digitsCommonYear :: | |
ToDigits CommonYear | |
digitsCommonYear = | |
choose | |
(\case | |
CommonYear_CE n -> | |
Left n | |
CommonYear_BCE n -> | |
Right n | |
) | |
(modSuffix (pure "CE") digitsCommonyear_Natural) | |
(modSuffix (pure "BCE") digitsCommonyear_Natural) | |
data Year = | |
LeapYear_ LeapYear | |
| CommonYear_ CommonYear | |
deriving (Eq, Ord, Show) | |
digitsYear :: | |
ToDigits Year | |
digitsYear = | |
choose | |
(\case | |
LeapYear_ z -> | |
Left z | |
CommonYear_ z -> | |
Right z | |
) | |
digitsLeapYear | |
digitsCommonYear | |
---- | |
newtype ToDigits a = | |
ToDigits (a -> ([Digit], String)) | |
unToDigits :: | |
ToDigits a | |
-> a | |
-> ([Digit], String) | |
unToDigits (ToDigits x) = | |
x | |
constToDigits :: | |
([Digit], String) | |
-> ToDigits a | |
constToDigits = | |
ToDigits . pure | |
noSuffixToDigits :: | |
(a -> [Digit]) | |
-> ToDigits a | |
noSuffixToDigits k = | |
ToDigits (\a -> (k a, "")) | |
modSuffix :: | |
(String -> String) | |
-> ToDigits a | |
-> ToDigits a | |
modSuffix k (ToDigits x) = | |
ToDigits (\a -> let (d, s) = x a in (d, k s)) | |
printToDigits :: | |
ToDigits a | |
-> a | |
-> String | |
printToDigits (ToDigits x) a = | |
let (d, s) = x a | |
in (dropWhile (== D0) d >>= \case | |
D0 -> | |
"0" | |
D1 -> | |
"1" | |
D2 -> | |
"2" | |
D3 -> | |
"3" | |
D4 -> | |
"4" | |
D5 -> | |
"5" | |
D6 -> | |
"6" | |
D7 -> | |
"7" | |
D8 -> | |
"8" | |
D9 -> | |
"9" | |
) ++ s | |
instance Semigroup (ToDigits a) where | |
ToDigits x <> ToDigits y = | |
ToDigits (\a -> x a <> y a) | |
instance Monoid (ToDigits a) where | |
mappend = | |
(<>) | |
mempty = | |
ToDigits (pure mempty) | |
instance Contravariant ToDigits where | |
contramap f (ToDigits g) = | |
ToDigits (g . f) | |
instance Divisible ToDigits where | |
divide f (ToDigits x) (ToDigits y) = | |
ToDigits (\a -> | |
let (p, q) = f a | |
in x p <> y q) | |
conquer = | |
ToDigits (pure mempty) | |
instance Decidable ToDigits where | |
lose f = | |
ToDigits (absurd . f) | |
choose f (ToDigits g) (ToDigits h) = | |
ToDigits (either g h . f) | |
---- | |
class Contravariant f => Divisible f where | |
divide :: | |
(a -> (b, c)) | |
-> f b | |
-> f c | |
-> f a | |
conquer :: | |
f a | |
class Divisible f => Decidable f where | |
lose :: | |
(a -> Void) | |
-> f a | |
choose :: | |
(a -> Either b c) | |
-> f b | |
-> f c | |
-> f a | |
---- | |
test1CE :: | |
Year | |
test1CE = | |
CommonYear_ . | |
CommonYear_CE $ | |
Commonyear_Natural | |
mempty | |
( | |
Commonyear_Natural_Suffix_xx | |
D0 | |
D0 | |
Not_mod4_xx_Nat_01 | |
) | |
test4CE :: | |
Year | |
test4CE = | |
LeapYear_ . | |
LeapYear_CE $ | |
LeapYear_Natural | |
mempty | |
( | |
LeapYear_Natural_Suffix_xx | |
Not_mod4_xx_Positive_00 | |
Mod4_xx_Positive_04 | |
) | |
test1999CE :: | |
Year | |
test1999CE = | |
CommonYear_ . | |
CommonYear_CE $ | |
Commonyear_Natural | |
mempty | |
( | |
Commonyear_Natural_Suffix_xx | |
D1 | |
D9 | |
Not_mod4_xx_Nat_99 | |
) | |
test2000CE :: | |
Year | |
test2000CE = | |
LeapYear_ . | |
LeapYear_CE $ | |
LeapYear_Natural | |
mempty | |
( | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_20 | |
Mod4_xx_Natural_00 | |
) | |
test2001CE :: | |
Year | |
test2001CE = | |
CommonYear_ . | |
CommonYear_CE $ | |
Commonyear_Natural | |
mempty | |
( | |
Commonyear_Natural_Suffix_xx | |
D2 | |
D0 | |
Not_mod4_xx_Nat_01 | |
) | |
test2004CE :: | |
Year | |
test2004CE = | |
LeapYear_ . | |
LeapYear_CE $ | |
LeapYear_Natural | |
mempty | |
( | |
LeapYear_Natural_Suffix_00 | |
Mod4_xx_Positive_20 | |
(Mod4_xx_Natural_Positive Mod4_xx_Positive_04) | |
) | |
test2300604CE :: | |
Year | |
test2300604CE = | |
LeapYear_ . | |
LeapYear_CE $ | |
LeapYear_Natural | |
( | |
Digits | |
[ | |
D0 | |
, D2 | |
, D3 | |
, D0 | |
] | |
) | |
( | |
LeapYear_Natural_Suffix_xx | |
(Not_mod4_xx_Positive_Natural Not_mod4_xx_Nat_06) | |
Mod4_xx_Positive_04 | |
) | |
test139700BCE :: | |
Year | |
test139700BCE = | |
CommonYear_ . | |
CommonYear_BCE $ | |
Commonyear_Natural | |
( | |
Digits | |
[ | |
D1 | |
, D3 | |
] | |
) | |
( | |
Commonyear_Natural_Suffix_00 | |
Not_mod4_xx_Nat_97 | |
) | |
main :: | |
IO () | |
main = | |
let tests = | |
[ | |
test1CE | |
, test4CE | |
, test1999CE | |
, test2000CE | |
, test2001CE | |
, test2004CE | |
, test2300604CE | |
, test139700BCE | |
] | |
in mapM_ (putStrLn . printToDigits digitsYear) tests |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment