Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module defines types and operations for type-level representation and manipulation of natural numbers, as represented by their prime-power factorizations. It relies on Template Haskell, so parts of the documentation may be difficult to read. See source-level comments for further details.
- data Factored
- type SFactored = (Sing :: Factored -> *)
- type Fact m = SingI m
- fType :: Int -> TypeQ
- fDec :: Int -> DecQ
- data PrimePower
- type SPrimePower = (Sing :: PrimePower -> *)
- data family Sing a
- type PPow pp = SingI pp
- ppType :: PP -> TypeQ
- ppDec :: PP -> DecQ
- data Prime
- type SPrime = (Sing :: Prime -> *)
- type Prim p = SingI p
- pType :: Int -> TypeQ
- pDec :: Int -> DecQ
- pToPP :: Prime -> PrimePower
- sPToPP :: forall t. Sing t -> Sing (Apply PToPPSym0 t :: PrimePower)
- type family PToPP a :: PrimePower
- ppToF :: PrimePower -> Factored
- sPpToF :: forall t. Sing t -> Sing (Apply PpToFSym0 t :: Factored)
- type family PpToF a :: Factored
- pToF :: Prime -> Factored
- sPToF :: forall t. Sing t -> Sing (Apply PToFSym0 t :: Factored)
- type family PToF a :: Factored
- unF :: Factored -> [PrimePower]
- sUnF :: forall t. Sing t -> Sing (Apply UnFSym0 t :: [PrimePower])
- type family UnF a :: [PrimePower]
- unPP :: PrimePower -> (Prime, Pos)
- sUnPP :: forall t. Sing t -> Sing (Apply UnPPSym0 t :: (Prime, Pos))
- type family UnPP a :: (Prime, Pos)
- primePP :: PrimePower -> Prime
- type family PrimePP a :: Prime
- exponentPP :: PrimePower -> Pos
- type family ExponentPP a :: Pos
- fPPMul :: PrimePower -> Factored -> Factored
- type family FPPMul a a :: Factored
- fMul :: Factored -> Factored -> Factored
- type family FMul a a :: Factored
- type * a b = FMul a b
- fDivides :: Factored -> Factored -> Bool
- type family FDivides a a :: Bool
- type Divides m m' = (Fact m, Fact m', FDivides m m' ~ True)
- fDiv :: Factored -> Factored -> Factored
- type family FDiv a a :: Factored
- type (/) a b = FDiv a b
- fGCD :: Factored -> Factored -> Factored
- type family FGCD a a :: Factored
- fLCM :: Factored -> Factored -> Factored
- type family FLCM a a :: Factored
- type Coprime m m' = FGCD m m' ~ F1
- fOddRadical :: Factored -> Factored
- type family FOddRadical a :: Factored
- pFree :: Prime -> Factored -> Factored
- type family PFree a a :: Factored
- ppsFact :: forall m. Fact m => Tagged m [PP]
- valueFact :: Fact m => Tagged m Int
- totientFact :: Fact m => Tagged m Int
- valueHatFact :: Fact m => Tagged m Int
- radicalFact :: Fact m => Tagged m Int
- oddRadicalFact :: Fact m => Tagged m Int
- ppPPow :: forall pp. PPow pp => Tagged pp PP
- primePPow :: PPow pp => Tagged pp Int
- exponentPPow :: PPow pp => Tagged pp Int
- valuePPow :: PPow pp => Tagged pp Int
- totientPPow :: PPow pp => Tagged pp Int
- valuePrime :: forall p. Prim p => Tagged p Int
- transDivides :: forall k l m. Proxy k -> Proxy l -> Proxy m -> (k `Divides` l, l `Divides` m) :- (k `Divides` m)
- gcdDivides :: forall m1 m2 g. Proxy m1 -> Proxy m2 -> (Fact m1, Fact m2, g ~ FGCD m1 m2) :- (g `Divides` m1, g `Divides` m2)
- lcmDivides :: forall m1 m2 l. Proxy m1 -> Proxy m2 -> (Fact m1, Fact m2, l ~ FLCM m1 m2) :- (m1 `Divides` l, m2 `Divides` l)
- lcm2Divides :: forall m1 m2 l m. Proxy m1 -> Proxy m2 -> Proxy m -> (m1 `Divides` m, m2 `Divides` m, l ~ FLCM m1 m2) :- (m1 `Divides` l, m2 `Divides` l, FLCM m1 m2 `Divides` m)
- pSplitTheorems :: forall p m f. Proxy p -> Proxy m -> (Prim p, Fact m, f ~ PFree p m) :- (f `Divides` m, Coprime (PToF p) f)
- pFreeDivides :: forall p m m'. Proxy p -> Proxy m -> Proxy m' -> (Prim p, m `Divides` m') :- (PFree p m `Divides` PFree p m')
- (\\) :: a => (b -> r) -> (:-) a b -> r
- valueHat :: Integral i => i -> i
- type PP = (Int, Int)
- ppToPP :: PrimePower -> PP
- valuePP :: PP -> Int
- totientPP :: PP -> Int
- radicalPP :: PP -> Int
- oddRadicalPP :: PP -> Int
- valuePPs :: [PP] -> Int
- totientPPs :: [PP] -> Int
- radicalPPs :: [PP] -> Int
- oddRadicalPPs :: [PP] -> Int
- module Crypto.Lol.PosBin
- type F1 = F `[]`
- type F2 = F `[PP `(P (D0 B1), O)`]`
- type F3 = F `[PP `(P (D1 B1), O)`]`
- type F4 = F `[PP `(P (D0 B1), S O)`]`
- type F5 = F `[PP `(P (D1 (D0 B1)), O)`]`
- type F6 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`]`
- type F7 = F `[PP `(P (D1 (D1 B1)), O)`]`
- type F8 = F `[PP `(P (D0 B1), S (S O))`]`
- type F9 = F `[PP `(P (D1 B1), S O)`]`
- type F10 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F11 = F `[PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F12 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`]`
- type F13 = F `[PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F14 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F15 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F16 = F `[PP `(P (D0 B1), S (S (S O)))`]`
- type F17 = F `[PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F18 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`]`
- type F19 = F `[PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F20 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F21 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F22 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F23 = F `[PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F24 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`]`
- type F25 = F `[PP `(P (D1 (D0 B1)), S O)`]`
- type F26 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F27 = F `[PP `(P (D1 B1), S (S O))`]`
- type F28 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F29 = F `[PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F30 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F31 = F `[PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F32 = F `[PP `(P (D0 B1), S (S (S (S O))))`]`
- type F33 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F34 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F35 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F36 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`]`
- type F37 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F38 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F39 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F40 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`]`
- type F41 = F `[PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F42 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F43 = F `[PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F44 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F45 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F46 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F47 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F48 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), O)`]`
- type F49 = F `[PP `(P (D1 (D1 B1)), S O)`]`
- type F50 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F51 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F52 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F53 = F `[PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F54 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S (S O))`]`
- type F55 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F56 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 B1)), O)`]`
- type F57 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F58 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F59 = F `[PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F60 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F61 = F `[PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F62 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F63 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F64 = F `[PP `(P (D0 B1), S (S (S (S (S O)))))`]`
- type F65 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F66 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F67 = F `[PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F68 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F69 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F70 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F71 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F72 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), S O)`]`
- type F73 = F `[PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F74 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F75 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F76 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F77 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F78 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F79 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]`
- type F80 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D0 B1)), O)`]`
- type F81 = F `[PP `(P (D1 B1), S (S (S O)))`]`
- type F82 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F83 = F `[PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]`
- type F84 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F85 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F86 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F87 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F88 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F89 = F `[PP `(P (D1 (D0 (D0 (D1 (D1 (D0 B1)))))), O)`]`
- type F90 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F91 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F92 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F93 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F94 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F95 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F96 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 B1), O)`]`
- type F97 = F `[PP `(P (D1 (D0 (D0 (D0 (D0 (D1 B1)))))), O)`]`
- type F98 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F99 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F100 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F101 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F102 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F103 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F104 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F105 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F106 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F107 = F `[PP `(P (D1 (D1 (D0 (D1 (D0 (D1 B1)))))), O)`]`
- type F108 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S (S O))`]`
- type F109 = F `[PP `(P (D1 (D0 (D1 (D1 (D0 (D1 B1)))))), O)`]`
- type F110 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F111 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F112 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D1 B1)), O)`]`
- type F113 = F `[PP `(P (D1 (D0 (D0 (D0 (D1 (D1 B1)))))), O)`]`
- type F114 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F115 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F116 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F117 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F118 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F119 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F120 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F121 = F `[PP `(P (D1 (D1 (D0 B1))), S O)`]`
- type F122 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F123 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F124 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F125 = F `[PP `(P (D1 (D0 B1)), S (S O))`]`
- type F126 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F127 = F `[PP `(P (D1 (D1 (D1 (D1 (D1 (D1 B1)))))), O)`]`
- type F128 = F `[PP `(P (D0 B1), S (S (S (S (S (S O))))))`]`
- type F129 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F130 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F131 = F `[PP `(P (D1 (D1 (D0 (D0 (D0 (D0 (D0 B1))))))), O)`]`
- type F132 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F133 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F134 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F135 = F `[PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`]`
- type F136 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F137 = F `[PP `(P (D1 (D0 (D0 (D1 (D0 (D0 (D0 B1))))))), O)`]`
- type F138 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F139 = F `[PP `(P (D1 (D1 (D0 (D1 (D0 (D0 (D0 B1))))))), O)`]`
- type F140 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F141 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F142 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F143 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F144 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), S O)`]`
- type F145 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F146 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F147 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F148 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F149 = F `[PP `(P (D1 (D0 (D1 (D0 (D1 (D0 (D0 B1))))))), O)`]`
- type F150 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F151 = F `[PP `(P (D1 (D1 (D1 (D0 (D1 (D0 (D0 B1))))))), O)`]`
- type F152 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F153 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F154 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F155 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F156 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F157 = F `[PP `(P (D1 (D0 (D1 (D1 (D1 (D0 (D0 B1))))))), O)`]`
- type F158 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]`
- type F159 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F160 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 (D0 B1)), O)`]`
- type F161 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F162 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S (S (S O)))`]`
- type F163 = F `[PP `(P (D1 (D1 (D0 (D0 (D0 (D1 (D0 B1))))))), O)`]`
- type F164 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F165 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F166 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]`
- type F167 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D1 (D0 B1))))))), O)`]`
- type F168 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F169 = F `[PP `(P (D1 (D0 (D1 B1))), S O)`]`
- type F170 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F171 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F172 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F173 = F `[PP `(P (D1 (D0 (D1 (D1 (D0 (D1 (D0 B1))))))), O)`]`
- type F174 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F175 = F `[PP `(P (D1 (D0 B1)), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F176 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F177 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F178 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D1 (D0 B1)))))), O)`]`
- type F179 = F `[PP `(P (D1 (D1 (D0 (D0 (D1 (D1 (D0 B1))))))), O)`]`
- type F180 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F181 = F `[PP `(P (D1 (D0 (D1 (D0 (D1 (D1 (D0 B1))))))), O)`]`
- type F182 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F183 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F184 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F185 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F186 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F187 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F188 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F189 = F `[PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D1 B1)), O)`]`
- type F190 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F191 = F `[PP `(P (D1 (D1 (D1 (D1 (D1 (D1 (D0 B1))))))), O)`]`
- type F192 = F `[PP `(P (D0 B1), S (S (S (S (S O)))))`, PP `(P (D1 B1), O)`]`
- type F193 = F `[PP `(P (D1 (D0 (D0 (D0 (D0 (D0 (D1 B1))))))), O)`]`
- type F194 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D0 (D0 (D1 B1)))))), O)`]`
- type F195 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F196 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F197 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 (D0 (D1 B1))))))), O)`]`
- type F198 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F199 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D0 (D1 B1))))))), O)`]`
- type F200 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 B1)), S O)`]`
- type F201 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F202 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F203 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F204 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F205 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F206 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F207 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F208 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F209 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F210 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F211 = F `[PP `(P (D1 (D1 (D0 (D0 (D1 (D0 (D1 B1))))))), O)`]`
- type F212 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F213 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F214 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 (D1 B1)))))), O)`]`
- type F215 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F216 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), S (S O))`]`
- type F217 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F218 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D0 (D1 B1)))))), O)`]`
- type F219 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F220 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F221 = F `[PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F222 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F223 = F `[PP `(P (D1 (D1 (D1 (D1 (D1 (D0 (D1 B1))))))), O)`]`
- type F224 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 (D1 B1)), O)`]`
- type F225 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F226 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D0 (D1 (D1 B1)))))), O)`]`
- type F227 = F `[PP `(P (D1 (D1 (D0 (D0 (D0 (D1 (D1 B1))))))), O)`]`
- type F228 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F229 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 (D1 (D1 B1))))))), O)`]`
- type F230 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F231 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F232 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F233 = F `[PP `(P (D1 (D0 (D0 (D1 (D0 (D1 (D1 B1))))))), O)`]`
- type F234 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F235 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F236 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F237 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]`
- type F238 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F239 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 (D1 (D1 B1))))))), O)`]`
- type F240 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F241 = F `[PP `(P (D1 (D0 (D0 (D0 (D1 (D1 (D1 B1))))))), O)`]`
- type F242 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), S O)`]`
- type F243 = F `[PP `(P (D1 B1), S (S (S (S O))))`]`
- type F244 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F245 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F246 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F247 = F `[PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F248 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F249 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]`
- type F250 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), S (S O))`]`
- type F251 = F `[PP `(P (D1 (D1 (D0 (D1 (D1 (D1 (D1 B1))))))), O)`]`
- type F252 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F253 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F254 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D1 (D1 B1)))))), O)`]`
- type F255 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F256 = F `[PP `(P (D0 B1), S (S (S (S (S (S (S O)))))))`]`
- type F257 = F `[PP `(P (D1 (D0 (D0 (D0 (D0 (D0 (D0 (D0 B1)))))))), O)`]`
- type F258 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F259 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F260 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F261 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F262 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 (D0 B1))))))), O)`]`
- type F263 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D0 (D0 (D0 B1)))))))), O)`]`
- type F264 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F265 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F266 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F267 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D1 (D0 B1)))))), O)`]`
- type F268 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F269 = F `[PP `(P (D1 (D0 (D1 (D1 (D0 (D0 (D0 (D0 B1)))))))), O)`]`
- type F270 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`]`
- type F271 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 (D0 (D0 (D0 B1)))))))), O)`]`
- type F272 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F273 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F274 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 (D0 B1))))))), O)`]`
- type F275 = F `[PP `(P (D1 (D0 B1)), S O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F276 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F277 = F `[PP `(P (D1 (D0 (D1 (D0 (D1 (D0 (D0 (D0 B1)))))))), O)`]`
- type F278 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 (D0 (D0 B1))))))), O)`]`
- type F279 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F280 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F281 = F `[PP `(P (D1 (D0 (D0 (D1 (D1 (D0 (D0 (D0 B1)))))))), O)`]`
- type F282 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F283 = F `[PP `(P (D1 (D1 (D0 (D1 (D1 (D0 (D0 (D0 B1)))))))), O)`]`
- type F284 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F285 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F286 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F287 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F288 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 B1), S O)`]`
- type F289 = F `[PP `(P (D1 (D0 (D0 (D0 B1)))), S O)`]`
- type F290 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F291 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 (D0 (D1 B1)))))), O)`]`
- type F292 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F293 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 (D1 (D0 (D0 B1)))))))), O)`]`
- type F294 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F295 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F296 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F297 = F `[PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F298 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 (D0 (D0 B1))))))), O)`]`
- type F299 = F `[PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F300 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F301 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F302 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D1 (D0 (D0 B1))))))), O)`]`
- type F303 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F304 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F305 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F306 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F307 = F `[PP `(P (D1 (D1 (D0 (D0 (D1 (D1 (D0 (D0 B1)))))))), O)`]`
- type F308 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F309 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F310 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F311 = F `[PP `(P (D1 (D1 (D1 (D0 (D1 (D1 (D0 (D0 B1)))))))), O)`]`
- type F312 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F313 = F `[PP `(P (D1 (D0 (D0 (D1 (D1 (D1 (D0 (D0 B1)))))))), O)`]`
- type F314 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 (D0 (D0 B1))))))), O)`]`
- type F315 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F316 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]`
- type F317 = F `[PP `(P (D1 (D0 (D1 (D1 (D1 (D1 (D0 (D0 B1)))))))), O)`]`
- type F318 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F319 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F320 = F `[PP `(P (D0 B1), S (S (S (S (S O)))))`, PP `(P (D1 (D0 B1)), O)`]`
- type F321 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 (D1 B1)))))), O)`]`
- type F322 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F323 = F `[PP `(P (D1 (D0 (D0 (D0 B1)))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F324 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S (S (S O)))`]`
- type F325 = F `[PP `(P (D1 (D0 B1)), S O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F326 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D1 (D0 B1))))))), O)`]`
- type F327 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D0 (D1 B1)))))), O)`]`
- type F328 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F329 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F330 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F331 = F `[PP `(P (D1 (D1 (D0 (D1 (D0 (D0 (D1 (D0 B1)))))))), O)`]`
- type F332 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]`
- type F333 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F334 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D1 (D0 B1))))))), O)`]`
- type F335 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F336 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F337 = F `[PP `(P (D1 (D0 (D0 (D0 (D1 (D0 (D1 (D0 B1)))))))), O)`]`
- type F338 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 B1))), S O)`]`
- type F339 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 (D1 (D1 B1)))))), O)`]`
- type F340 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F341 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F342 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F343 = F `[PP `(P (D1 (D1 B1)), S (S O))`]`
- type F344 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F345 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F346 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D0 (D1 (D0 B1))))))), O)`]`
- type F347 = F `[PP `(P (D1 (D1 (D0 (D1 (D1 (D0 (D1 (D0 B1)))))))), O)`]`
- type F348 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F349 = F `[PP `(P (D1 (D0 (D1 (D1 (D1 (D0 (D1 (D0 B1)))))))), O)`]`
- type F350 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F351 = F `[PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F352 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F353 = F `[PP `(P (D1 (D0 (D0 (D0 (D0 (D1 (D1 (D0 B1)))))))), O)`]`
- type F354 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F355 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F356 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D0 (D1 (D1 (D0 B1)))))), O)`]`
- type F357 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F358 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D1 (D0 B1))))))), O)`]`
- type F359 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D1 (D1 (D0 B1)))))))), O)`]`
- type F360 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F361 = F `[PP `(P (D1 (D1 (D0 (D0 B1)))), S O)`]`
- type F362 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 (D1 (D0 B1))))))), O)`]`
- type F363 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), S O)`]`
- type F364 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F365 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F366 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F367 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 (D1 (D1 (D0 B1)))))))), O)`]`
- type F368 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F369 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F370 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F371 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F372 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F373 = F `[PP `(P (D1 (D0 (D1 (D0 (D1 (D1 (D1 (D0 B1)))))))), O)`]`
- type F374 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F375 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), S (S O))`]`
- type F376 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F377 = F `[PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F378 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D1 B1)), O)`]`
- type F379 = F `[PP `(P (D1 (D1 (D0 (D1 (D1 (D1 (D1 (D0 B1)))))))), O)`]`
- type F380 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F381 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D1 (D1 B1)))))), O)`]`
- type F382 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D1 (D1 (D0 B1))))))), O)`]`
- type F383 = F `[PP `(P (D1 (D1 (D1 (D1 (D1 (D1 (D1 (D0 B1)))))))), O)`]`
- type F384 = F `[PP `(P (D0 B1), S (S (S (S (S (S O))))))`, PP `(P (D1 B1), O)`]`
- type F385 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F386 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D0 (D0 (D0 (D1 B1))))))), O)`]`
- type F387 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F388 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D0 (D0 (D0 (D1 B1)))))), O)`]`
- type F389 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 (D0 (D0 (D1 B1)))))))), O)`]`
- type F390 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F391 = F `[PP `(P (D1 (D0 (D0 (D0 B1)))), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F392 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 B1)), S O)`]`
- type F393 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 (D0 B1))))))), O)`]`
- type F394 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 (D0 (D1 B1))))))), O)`]`
- type F395 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]`
- type F396 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F397 = F `[PP `(P (D1 (D0 (D1 (D1 (D0 (D0 (D0 (D1 B1)))))))), O)`]`
- type F398 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 (D1 B1))))))), O)`]`
- type F399 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F400 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D0 B1)), S O)`]`
- type F401 = F `[PP `(P (D1 (D0 (D0 (D0 (D1 (D0 (D0 (D1 B1)))))))), O)`]`
- type F402 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F403 = F `[PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F404 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F405 = F `[PP `(P (D1 B1), S (S (S O)))`, PP `(P (D1 (D0 B1)), O)`]`
- type F406 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F407 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F408 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F409 = F `[PP `(P (D1 (D0 (D0 (D1 (D1 (D0 (D0 (D1 B1)))))))), O)`]`
- type F410 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F411 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 (D0 B1))))))), O)`]`
- type F412 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F413 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F414 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F415 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]`
- type F416 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F417 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 (D0 (D0 B1))))))), O)`]`
- type F418 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F419 = F `[PP `(P (D1 (D1 (D0 (D0 (D0 (D1 (D0 (D1 B1)))))))), O)`]`
- type F420 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F421 = F `[PP `(P (D1 (D0 (D1 (D0 (D0 (D1 (D0 (D1 B1)))))))), O)`]`
- type F422 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 (D1 B1))))))), O)`]`
- type F423 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F424 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F425 = F `[PP `(P (D1 (D0 B1)), S O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F426 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F427 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F428 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 (D1 (D0 (D1 B1)))))), O)`]`
- type F429 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F430 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F431 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 (D1 (D0 (D1 B1)))))))), O)`]`
- type F432 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), S (S O))`]`
- type F433 = F `[PP `(P (D1 (D0 (D0 (D0 (D1 (D1 (D0 (D1 B1)))))))), O)`]`
- type F434 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F435 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F436 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D1 (D1 (D0 (D1 B1)))))), O)`]`
- type F437 = F `[PP `(P (D1 (D1 (D0 (D0 B1)))), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F438 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F439 = F `[PP `(P (D1 (D1 (D1 (D0 (D1 (D1 (D0 (D1 B1)))))))), O)`]`
- type F440 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F441 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F442 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F443 = F `[PP `(P (D1 (D1 (D0 (D1 (D1 (D1 (D0 (D1 B1)))))))), O)`]`
- type F444 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F445 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D1 (D0 B1)))))), O)`]`
- type F446 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D1 (D0 (D1 B1))))))), O)`]`
- type F447 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 (D0 (D0 B1))))))), O)`]`
- type F448 = F `[PP `(P (D0 B1), S (S (S (S (S O)))))`, PP `(P (D1 (D1 B1)), O)`]`
- type F449 = F `[PP `(P (D1 (D0 (D0 (D0 (D0 (D0 (D1 (D1 B1)))))))), O)`]`
- type F450 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), S O)`]`
- type F451 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F452 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 (D0 (D0 (D1 (D1 B1)))))), O)`]`
- type F453 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D1 (D0 (D0 B1))))))), O)`]`
- type F454 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D1 (D1 B1))))))), O)`]`
- type F455 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F456 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F457 = F `[PP `(P (D1 (D0 (D0 (D1 (D0 (D0 (D1 (D1 B1)))))))), O)`]`
- type F458 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 (D1 (D1 B1))))))), O)`]`
- type F459 = F `[PP `(P (D1 B1), S (S O))`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F460 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F461 = F `[PP `(P (D1 (D0 (D1 (D1 (D0 (D0 (D1 (D1 B1)))))))), O)`]`
- type F462 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F463 = F `[PP `(P (D1 (D1 (D1 (D1 (D0 (D0 (D1 (D1 B1)))))))), O)`]`
- type F464 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F465 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F466 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D1 (D1 B1))))))), O)`]`
- type F467 = F `[PP `(P (D1 (D1 (D0 (D0 (D1 (D0 (D1 (D1 B1)))))))), O)`]`
- type F468 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 B1))), O)`]`
- type F469 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]`
- type F470 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]`
- type F471 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 (D0 (D0 B1))))))), O)`]`
- type F472 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]`
- type F473 = F `[PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]`
- type F474 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]`
- type F475 = F `[PP `(P (D1 (D0 B1)), S O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F476 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F477 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]`
- type F478 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D1 (D1 B1))))))), O)`]`
- type F479 = F `[PP `(P (D1 (D1 (D1 (D1 (D1 (D0 (D1 (D1 B1)))))))), O)`]`
- type F480 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]`
- type F481 = F `[PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]`
- type F482 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D0 (D0 (D1 (D1 (D1 B1))))))), O)`]`
- type F483 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F484 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D0 B1))), S O)`]`
- type F485 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 (D0 (D1 B1)))))), O)`]`
- type F486 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S (S (S (S O))))`]`
- type F487 = F `[PP `(P (D1 (D1 (D1 (D0 (D0 (D1 (D1 (D1 B1)))))))), O)`]`
- type F488 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]`
- type F489 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D1 (D0 B1))))))), O)`]`
- type F490 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), S O)`]`
- type F491 = F `[PP `(P (D1 (D1 (D0 (D1 (D0 (D1 (D1 (D1 B1)))))))), O)`]`
- type F492 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]`
- type F493 = F `[PP `(P (D1 (D0 (D0 (D0 B1)))), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]`
- type F494 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]`
- type F495 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]`
- type F496 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]`
- type F497 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]`
- type F498 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]`
- type F499 = F `[PP `(P (D1 (D1 (D0 (D0 (D1 (D1 (D1 (D1 B1)))))))), O)`]`
- type F500 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), S (S O))`]`
- type F501 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D1 (D0 B1))))))), O)`]`
- type F502 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 (D1 (D1 B1))))))), O)`]`
- type F503 = F `[PP `(P (D1 (D1 (D1 (D0 (D1 (D1 (D1 (D1 B1)))))))), O)`]`
- type F504 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 B1)), O)`]`
- type F505 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 (D1 B1)))))), O)`]`
- type F506 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]`
- type F507 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 B1))), S O)`]`
- type F508 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 (D1 (D1 (D1 (D1 B1)))))), O)`]`
- type F509 = F `[PP `(P (D1 (D0 (D1 (D1 (D1 (D1 (D1 (D1 B1)))))))), O)`]`
- type F510 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]`
- type F511 = F `[PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]`
- type F512 = F `[PP `(P (D0 B1), S (S (S (S (S (S (S (S O))))))))`]`
- type F1024 = F `[PP `(P (D0 B1), S (S (S (S (S (S (S (S (S O)))))))))`]`
- type F2048 = F `[PP `(P (D0 B1), S (S (S (S (S (S (S (S (S (S O))))))))))`]`
- type PP2 = PP `(P (D0 B1), O)`
- type PP4 = PP `(P (D0 B1), S O)`
- type PP8 = PP `(P (D0 B1), S (S O))`
- type PP16 = PP `(P (D0 B1), S (S (S O)))`
- type PP32 = PP `(P (D0 B1), S (S (S (S O))))`
- type PP64 = PP `(P (D0 B1), S (S (S (S (S O)))))`
- type PP128 = PP `(P (D0 B1), S (S (S (S (S (S O))))))`
- type PP3 = PP `(P (D1 B1), O)`
- type PP9 = PP `(P (D1 B1), S O)`
- type PP27 = PP `(P (D1 B1), S (S O))`
- type PP81 = PP `(P (D1 B1), S (S (S O)))`
- type PP5 = PP `(P (D1 (D0 B1)), O)`
- type PP7 = PP `(P (D1 (D1 B1)), O)`
- type PP11 = PP `(P (D1 (D1 (D0 B1))), O)`
- type Prime2 = P (D0 B1)
- type Prime3 = P (D1 B1)
- type Prime5 = P (D1 (D0 B1))
- type Prime7 = P (D1 (D1 B1))
- type Prime11 = P (D1 (D1 (D0 B1)))
- type Prime13 = P (D1 (D0 (D1 B1)))
- type Prime17 = P (D1 (D0 (D0 (D0 B1))))
- type Prime19 = P (D1 (D1 (D0 (D0 B1))))
- type Prime23 = P (D1 (D1 (D1 (D0 B1))))
- type Prime29 = P (D1 (D0 (D1 (D1 B1))))
- type Prime31 = P (D1 (D1 (D1 (D1 B1))))
- type Prime37 = P (D1 (D0 (D1 (D0 (D0 B1)))))
- type Prime41 = P (D1 (D0 (D0 (D1 (D0 B1)))))
- type Prime43 = P (D1 (D1 (D0 (D1 (D0 B1)))))
- type Prime47 = P (D1 (D1 (D1 (D1 (D0 B1)))))
- type Prime53 = P (D1 (D0 (D1 (D0 (D1 B1)))))
- type Prime59 = P (D1 (D1 (D0 (D1 (D1 B1)))))
- type Prime61 = P (D1 (D0 (D1 (D1 (D1 B1)))))
- type Prime67 = P (D1 (D1 (D0 (D0 (D0 (D0 B1))))))
- type Prime71 = P (D1 (D1 (D1 (D0 (D0 (D0 B1))))))
- type Prime73 = P (D1 (D0 (D0 (D1 (D0 (D0 B1))))))
- type Prime79 = P (D1 (D1 (D1 (D1 (D0 (D0 B1))))))
- type Prime83 = P (D1 (D1 (D0 (D0 (D1 (D0 B1))))))
- type Prime89 = P (D1 (D0 (D0 (D1 (D1 (D0 B1))))))
- type Prime97 = P (D1 (D0 (D0 (D0 (D0 (D1 B1))))))
- type Prime101 = P (D1 (D0 (D1 (D0 (D0 (D1 B1))))))
- type Prime103 = P (D1 (D1 (D1 (D0 (D0 (D1 B1))))))
- type Prime107 = P (D1 (D1 (D0 (D1 (D0 (D1 B1))))))
- type Prime109 = P (D1 (D0 (D1 (D1 (D0 (D1 B1))))))
- type Prime113 = P (D1 (D0 (D0 (D0 (D1 (D1 B1))))))
- type Prime127 = P (D1 (D1 (D1 (D1 (D1 (D1 B1))))))
- type Prime131 = P (D1 (D1 (D0 (D0 (D0 (D0 (D0 B1)))))))
- type Prime137 = P (D1 (D0 (D0 (D1 (D0 (D0 (D0 B1)))))))
- type Prime139 = P (D1 (D1 (D0 (D1 (D0 (D0 (D0 B1)))))))
- type Prime149 = P (D1 (D0 (D1 (D0 (D1 (D0 (D0 B1)))))))
- type Prime151 = P (D1 (D1 (D1 (D0 (D1 (D0 (D0 B1)))))))
- type Prime157 = P (D1 (D0 (D1 (D1 (D1 (D0 (D0 B1)))))))
- type Prime163 = P (D1 (D1 (D0 (D0 (D0 (D1 (D0 B1)))))))
- type Prime167 = P (D1 (D1 (D1 (D0 (D0 (D1 (D0 B1)))))))
- type Prime173 = P (D1 (D0 (D1 (D1 (D0 (D1 (D0 B1)))))))
- type Prime179 = P (D1 (D1 (D0 (D0 (D1 (D1 (D0 B1)))))))
- type Prime181 = P (D1 (D0 (D1 (D0 (D1 (D1 (D0 B1)))))))
- type Prime191 = P (D1 (D1 (D1 (D1 (D1 (D1 (D0 B1)))))))
- type Prime193 = P (D1 (D0 (D0 (D0 (D0 (D0 (D1 B1)))))))
- type Prime197 = P (D1 (D0 (D1 (D0 (D0 (D0 (D1 B1)))))))
- type Prime199 = P (D1 (D1 (D1 (D0 (D0 (D0 (D1 B1)))))))
- type Prime211 = P (D1 (D1 (D0 (D0 (D1 (D0 (D1 B1)))))))
- type Prime223 = P (D1 (D1 (D1 (D1 (D1 (D0 (D1 B1)))))))
- type Prime227 = P (D1 (D1 (D0 (D0 (D0 (D1 (D1 B1)))))))
- type Prime229 = P (D1 (D0 (D1 (D0 (D0 (D1 (D1 B1)))))))
- type Prime233 = P (D1 (D0 (D0 (D1 (D0 (D1 (D1 B1)))))))
- type Prime239 = P (D1 (D1 (D1 (D1 (D0 (D1 (D1 B1)))))))
- type Prime241 = P (D1 (D0 (D0 (D0 (D1 (D1 (D1 B1)))))))
- type Prime251 = P (D1 (D1 (D0 (D1 (D1 (D1 (D1 B1)))))))
- type Prime257 = P (D1 (D0 (D0 (D0 (D0 (D0 (D0 (D0 B1))))))))
- type Prime263 = P (D1 (D1 (D1 (D0 (D0 (D0 (D0 (D0 B1))))))))
- type Prime269 = P (D1 (D0 (D1 (D1 (D0 (D0 (D0 (D0 B1))))))))
- type Prime271 = P (D1 (D1 (D1 (D1 (D0 (D0 (D0 (D0 B1))))))))
- type Prime277 = P (D1 (D0 (D1 (D0 (D1 (D0 (D0 (D0 B1))))))))
- type Prime281 = P (D1 (D0 (D0 (D1 (D1 (D0 (D0 (D0 B1))))))))
- type Prime283 = P (D1 (D1 (D0 (D1 (D1 (D0 (D0 (D0 B1))))))))
- type Prime293 = P (D1 (D0 (D1 (D0 (D0 (D1 (D0 (D0 B1))))))))
- type Prime307 = P (D1 (D1 (D0 (D0 (D1 (D1 (D0 (D0 B1))))))))
- type Prime311 = P (D1 (D1 (D1 (D0 (D1 (D1 (D0 (D0 B1))))))))
- type Prime313 = P (D1 (D0 (D0 (D1 (D1 (D1 (D0 (D0 B1))))))))
- type Prime317 = P (D1 (D0 (D1 (D1 (D1 (D1 (D0 (D0 B1))))))))
- type Prime331 = P (D1 (D1 (D0 (D1 (D0 (D0 (D1 (D0 B1))))))))
- type Prime337 = P (D1 (D0 (D0 (D0 (D1 (D0 (D1 (D0 B1))))))))
- type Prime347 = P (D1 (D1 (D0 (D1 (D1 (D0 (D1 (D0 B1))))))))
- type Prime349 = P (D1 (D0 (D1 (D1 (D1 (D0 (D1 (D0 B1))))))))
- type Prime353 = P (D1 (D0 (D0 (D0 (D0 (D1 (D1 (D0 B1))))))))
- type Prime359 = P (D1 (D1 (D1 (D0 (D0 (D1 (D1 (D0 B1))))))))
- type Prime367 = P (D1 (D1 (D1 (D1 (D0 (D1 (D1 (D0 B1))))))))
- type Prime373 = P (D1 (D0 (D1 (D0 (D1 (D1 (D1 (D0 B1))))))))
- type Prime379 = P (D1 (D1 (D0 (D1 (D1 (D1 (D1 (D0 B1))))))))
- type Prime383 = P (D1 (D1 (D1 (D1 (D1 (D1 (D1 (D0 B1))))))))
- type Prime389 = P (D1 (D0 (D1 (D0 (D0 (D0 (D0 (D1 B1))))))))
- type Prime397 = P (D1 (D0 (D1 (D1 (D0 (D0 (D0 (D1 B1))))))))
- type Prime401 = P (D1 (D0 (D0 (D0 (D1 (D0 (D0 (D1 B1))))))))
- type Prime409 = P (D1 (D0 (D0 (D1 (D1 (D0 (D0 (D1 B1))))))))
- type Prime419 = P (D1 (D1 (D0 (D0 (D0 (D1 (D0 (D1 B1))))))))
- type Prime421 = P (D1 (D0 (D1 (D0 (D0 (D1 (D0 (D1 B1))))))))
- type Prime431 = P (D1 (D1 (D1 (D1 (D0 (D1 (D0 (D1 B1))))))))
- type Prime433 = P (D1 (D0 (D0 (D0 (D1 (D1 (D0 (D1 B1))))))))
- type Prime439 = P (D1 (D1 (D1 (D0 (D1 (D1 (D0 (D1 B1))))))))
- type Prime443 = P (D1 (D1 (D0 (D1 (D1 (D1 (D0 (D1 B1))))))))
- type Prime449 = P (D1 (D0 (D0 (D0 (D0 (D0 (D1 (D1 B1))))))))
- type Prime457 = P (D1 (D0 (D0 (D1 (D0 (D0 (D1 (D1 B1))))))))
- type Prime461 = P (D1 (D0 (D1 (D1 (D0 (D0 (D1 (D1 B1))))))))
- type Prime463 = P (D1 (D1 (D1 (D1 (D0 (D0 (D1 (D1 B1))))))))
- type Prime467 = P (D1 (D1 (D0 (D0 (D1 (D0 (D1 (D1 B1))))))))
- type Prime479 = P (D1 (D1 (D1 (D1 (D1 (D0 (D1 (D1 B1))))))))
- type Prime487 = P (D1 (D1 (D1 (D0 (D0 (D1 (D1 (D1 B1))))))))
- type Prime491 = P (D1 (D1 (D0 (D1 (D0 (D1 (D1 (D1 B1))))))))
- type Prime499 = P (D1 (D1 (D0 (D0 (D1 (D1 (D1 (D1 B1))))))))
- type Prime503 = P (D1 (D1 (D1 (D0 (D1 (D1 (D1 (D1 B1))))))))
- type Prime509 = P (D1 (D0 (D1 (D1 (D1 (D1 (D1 (D1 B1))))))))
- type Prime521 = P (D1 (D0 (D0 (D1 (D0 (D0 (D0 (D0 (D0 B1)))))))))
- type Prime523 = P (D1 (D1 (D0 (D1 (D0 (D0 (D0 (D0 (D0 B1)))))))))
- type Prime541 = P (D1 (D0 (D1 (D1 (D1 (D0 (D0 (D0 (D0 B1)))))))))
- type Prime547 = P (D1 (D1 (D0 (D0 (D0 (D1 (D0 (D0 (D0 B1)))))))))
- type Prime557 = P (D1 (D0 (D1 (D1 (D0 (D1 (D0 (D0 (D0 B1)))))))))
- type Prime563 = P (D1 (D1 (D0 (D0 (D1 (D1 (D0 (D0 (D0 B1)))))))))
- type Prime569 = P (D1 (D0 (D0 (D1 (D1 (D1 (D0 (D0 (D0 B1)))))))))
- type Prime571 = P (D1 (D1 (D0 (D1 (D1 (D1 (D0 (D0 (D0 B1)))))))))
- type Prime577 = P (D1 (D0 (D0 (D0 (D0 (D0 (D1 (D0 (D0 B1)))))))))
- type Prime587 = P (D1 (D1 (D0 (D1 (D0 (D0 (D1 (D0 (D0 B1)))))))))
- type Prime593 = P (D1 (D0 (D0 (D0 (D1 (D0 (D1 (D0 (D0 B1)))))))))
- type Prime599 = P (D1 (D1 (D1 (D0 (D1 (D0 (D1 (D0 (D0 B1)))))))))
- type Prime601 = P (D1 (D0 (D0 (D1 (D1 (D0 (D1 (D0 (D0 B1)))))))))
- type Prime607 = P (D1 (D1 (D1 (D1 (D1 (D0 (D1 (D0 (D0 B1)))))))))
- type Prime613 = P (D1 (D0 (D1 (D0 (D0 (D1 (D1 (D0 (D0 B1)))))))))
- type Prime617 = P (D1 (D0 (D0 (D1 (D0 (D1 (D1 (D0 (D0 B1)))))))))
- type Prime619 = P (D1 (D1 (D0 (D1 (D0 (D1 (D1 (D0 (D0 B1)))))))))
- type Prime631 = P (D1 (D1 (D1 (D0 (D1 (D1 (D1 (D0 (D0 B1)))))))))
- type Prime641 = P (D1 (D0 (D0 (D0 (D0 (D0 (D0 (D1 (D0 B1)))))))))
- type Prime643 = P (D1 (D1 (D0 (D0 (D0 (D0 (D0 (D1 (D0 B1)))))))))
- type Prime647 = P (D1 (D1 (D1 (D0 (D0 (D0 (D0 (D1 (D0 B1)))))))))
- type Prime653 = P (D1 (D0 (D1 (D1 (D0 (D0 (D0 (D1 (D0 B1)))))))))
- type Prime659 = P (D1 (D1 (D0 (D0 (D1 (D0 (D0 (D1 (D0 B1)))))))))
Factored natural numbers
Template Haskell splice that defines the Factored
type synonym
Fn
for a positive integer n
.
Prime powers
data PrimePower Source
Eq PrimePower Source | |
Show PrimePower Source | |
(PPow pp, C i) => Reflects PrimePower pp i Source | |
SEq PrimePower (KProxy PrimePower) Source | |
PEq PrimePower (KProxy PrimePower) Source | |
SDecide PrimePower (KProxy PrimePower) Source | |
SingKind PrimePower (KProxy PrimePower) Source | |
(PPow pp, (~) * zq (ZqBasic PrimePower pp z), PrimeField (ZpOf zq), Ring zq, Ring (ZpOf zq)) => ZPP (ZqBasic PrimePower pp z) Source | |
data Sing PrimePower where
| |
type (:/=) PrimePower x y = Not ((:==) PrimePower x y) | |
type (:==) PrimePower a0 b0 Source | |
type DemoteRep PrimePower (KProxy PrimePower) = PrimePower Source | |
type ZpOf (ZqBasic PrimePower pp z) = ZqBasic Prime (PrimePP pp) z Source |
type SPrimePower = (Sing :: PrimePower -> *) Source
data family Sing a
The singleton kind-indexed data family.
data Sing Bool where | |
data Sing Ordering where | |
data Sing Nat where | |
data Sing Symbol where
| |
data Sing () where | |
data Sing Pos where | |
data Sing Bin where | |
data Sing Prime where | |
data Sing PrimePower where
| |
data Sing Factored where | |
data Sing [a0] where | |
data Sing (Maybe a0) where | |
data Sing (TyFun k1 k2 -> *) = SLambda {} | |
data Sing (Either a0 b0) where | |
data Sing ((,) a0 b0) where | |
data Sing ((,,) a0 b0 c0) where | |
data Sing ((,,,) a0 b0 c0 d0) where | |
data Sing ((,,,,) a0 b0 c0 d0 e0) where | |
data Sing ((,,,,,) a0 b0 c0 d0 e0 f0) where | |
data Sing ((,,,,,,) a0 b0 c0 d0 e0 f0 g0) where |
Template Haskell splice for the PrimePower
type corresponding to
a given PP
. (Calls pType
on the first component of its
argument, so should only be used on small-to-moderate-sized
numbers.) This is the preferred (and only) way of constructing a
concrete PrimePower
type.
Template Haskell splice that defines the PrimePower
type synonym
PPn
, where n=p^e
.
Primes
Template Haskell splice for the Prime
type corresponding to a
given positive prime integer. (Uses prime
to enforce primality
of the base, so should only be used on small-to-moderate-sized
arguments.) This is the preferred (and only) way of constructing a
concrete Prime
type (and is used to define the Primep
type
synonyms).
Template Haskell splice that defines the Prime
type synonym
Primep
for a positive prime integer p
.
Constructors
pToPP :: Prime -> PrimePower Source
type family PToPP a :: PrimePower Source
ppToF :: PrimePower -> Factored Source
Unwrappers
unF :: Factored -> [PrimePower] Source
type family UnF a :: [PrimePower] Source
UnF (F pps) = pps |
unPP :: PrimePower -> (Prime, Pos) Source
primePP :: PrimePower -> Prime Source
exponentPP :: PrimePower -> Pos Source
type family ExponentPP a :: Pos Source
Arithmetic operations
fPPMul :: PrimePower -> Factored -> Factored Source
type Divides m m' = (Fact m, Fact m', FDivides m m' ~ True) Source
Constraint synonym for divisibility of Factored
types.
fOddRadical :: Factored -> Factored Source
type family FOddRadical a :: Factored Source
FOddRadical (F pps) = Apply FSym0 (Apply PpsOddRadSym0 pps) |
Convenient reflections
ppsFact :: forall m. Fact m => Tagged m [PP] Source
Value-level prime-power factorization tagged by a Factored
type.
valueHatFact :: Fact m => Tagged m Int Source
The "hat" of a Factored
type's value:
hat{m}
is m
if m
is odd, and m/2
otherwise.
radicalFact :: Fact m => Tagged m Int Source
The radical (product of prime divisors) of a Factored
type.
oddRadicalFact :: Fact m => Tagged m Int Source
The odd radical (product of odd prime divisors) of a Factored
type.
exponentPPow :: PPow pp => Tagged pp Int Source
Reflect the exponent component of a PrimePower
type.
totientPPow :: PPow pp => Tagged pp Int Source
The totient of a PrimePower
type's value.
Number-theoretic laws
transDivides :: forall k l m. Proxy k -> Proxy l -> Proxy m -> (k `Divides` l, l `Divides` m) :- (k `Divides` m) Source
Entails constraint for transitivity of division, i.e.
if k|l
and l|m
, then k|m
.
gcdDivides :: forall m1 m2 g. Proxy m1 -> Proxy m2 -> (Fact m1, Fact m2, g ~ FGCD m1 m2) :- (g `Divides` m1, g `Divides` m2) Source
Entailment for divisibility by GCD:
if g=GCD(m1,m2)
then g|m1
and g|m2
.
lcmDivides :: forall m1 m2 l. Proxy m1 -> Proxy m2 -> (Fact m1, Fact m2, l ~ FLCM m1 m2) :- (m1 `Divides` l, m2 `Divides` l) Source
Entailment for LCM divisibility:
if l=LCM(m1,m2)
then m1|l
and m2|l
.
lcm2Divides :: forall m1 m2 l m. Proxy m1 -> Proxy m2 -> Proxy m -> (m1 `Divides` m, m2 `Divides` m, l ~ FLCM m1 m2) :- (m1 `Divides` l, m2 `Divides` l, FLCM m1 m2 `Divides` m) Source
Entailment for LCM divisibility:
the LCM of two divisors of m
also divides m
.
pSplitTheorems :: forall p m f. Proxy p -> Proxy m -> (Prim p, Fact m, f ~ PFree p m) :- (f `Divides` m, Coprime (PToF p) f) Source
Entailment for p
-free division:
if f
is m
after removing all p
-factors, then f|m
and
gcd(f,p)=1
.
pFreeDivides :: forall p m m'. Proxy p -> Proxy m -> Proxy m' -> (Prim p, m `Divides` m') :- (PFree p m `Divides` PFree p m') Source
Entailment for p
-free division:
if m|m'
, then p-free(m) | p-free(m')
.
(\\) :: a => (b -> r) -> (:-) a b -> r infixl 1
Given that a :- b
, derive something that needs a context b
, using the context a
Utility operations on prime powers
ppToPP :: PrimePower -> PP Source
Conversion.
oddRadicalPP :: PP -> Int Source
The odd radical of a prime power.
totientPPs :: [PP] -> Int Source
Product of totients of individual PP
s
radicalPPs :: [PP] -> Int Source
Product of radicals of individual PP
s
oddRadicalPPs :: [PP] -> Int Source
Product of odd radicals of individual PP
s
Re-export
module Crypto.Lol.PosBin
Convenient synonyms for Factored
, PrimePower
, and Prime
types
type F102 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F110 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F114 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F130 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F138 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F154 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F165 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F170 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F174 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]` Source
type F182 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F186 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]` Source
type F190 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F195 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F204 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F210 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]` Source
type F220 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F222 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]` Source
type F228 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F230 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F231 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F238 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F240 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]` Source
type F246 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]` Source
type F255 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F258 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]` Source
type F260 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F264 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F266 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F273 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F276 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F280 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]` Source
type F282 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]` Source
type F285 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F286 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F290 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]` Source
type F306 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F308 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F310 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]` Source
type F312 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F318 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D1 B1))))), O)`]` Source
type F322 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F330 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F336 = F `[PP `(P (D0 B1), S (S (S O)))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`]` Source
type F340 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F342 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F345 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F348 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]` Source
type F354 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D1 (D1 B1))))), O)`]` Source
type F357 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F364 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F366 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D1 (D1 B1))))), O)`]` Source
type F370 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]` Source
type F372 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]` Source
type F374 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F380 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F385 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F390 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F396 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F399 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F402 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D0 (D0 B1)))))), O)`]` Source
type F406 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]` Source
type F408 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F410 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]` Source
type F414 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F418 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F420 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`]` Source
type F426 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D0 (D0 (D0 B1)))))), O)`]` Source
type F429 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F430 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 (D1 (D0 B1))))), O)`]` Source
type F434 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]` Source
type F435 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D0 (D1 (D1 B1)))), O)`]` Source
type F438 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 (D0 B1)))))), O)`]` Source
type F440 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F442 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F444 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D1 (D0 (D0 B1))))), O)`]` Source
type F455 = F `[PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F456 = F `[PP `(P (D0 B1), S (S O))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F460 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F462 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F465 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 B1)))), O)`]` Source
type F468 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 (D1 B1))), O)`]` Source
type F470 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 B1))))), O)`]` Source
type F474 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D1 (D1 (D0 (D0 B1)))))), O)`]` Source
type F476 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D0 (D0 (D0 B1)))), O)`]` Source
type F480 = F `[PP `(P (D0 B1), S (S (S (S O))))`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 B1)), O)`]` Source
type F483 = F `[PP `(P (D1 B1), O)`, PP `(P (D1 (D1 B1)), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source
type F492 = F `[PP `(P (D0 B1), S O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D0 (D0 (D1 (D0 B1))))), O)`]` Source
type F494 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D0 (D1 B1))), O)`, PP `(P (D1 (D1 (D0 (D0 B1)))), O)`]` Source
type F495 = F `[PP `(P (D1 B1), S O)`, PP `(P (D1 (D0 B1)), O)`, PP `(P (D1 (D1 (D0 B1))), O)`]` Source
type F498 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 B1), O)`, PP `(P (D1 (D1 (D0 (D0 (D1 (D0 B1)))))), O)`]` Source
type F506 = F `[PP `(P (D0 B1), O)`, PP `(P (D1 (D1 (D0 B1))), O)`, PP `(P (D1 (D1 (D1 (D0 B1)))), O)`]` Source