-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Type Level 2s- and 16s- Complement Integers
--
-- Type level 2s- and 16s- complement Integers (positive and negative),
-- Booleans, Ord and Eq.
@package type-int
@version 0.5.0.2
-- | Simple closed type-level booleans.
module Data.Type.Boolean
-- | ...and every boolean is in that set. This lets us avoid carrying the
-- closure parameter around
class TCBool Closure x => TBool x
data F
data T
tT :: T
tF :: F
-- | Type-Level a and b = c
class TAnd a b c | a b -> c
-- | Type-Level a or b = c
class TOr a b c | a b -> c
-- | Type-Level: not a
class TNot a b | a -> b, b -> a
-- | implemented this way rather than directly so that Binary can extend it
-- properly. otherwise the normal form restriction makes that nigh
-- impossible.
class (TXOr' a b c, TXOr' b c a, TXOr' c a b) => TXOr a b c | a b -> c, a c -> b, b c -> a
-- | Type-Level: a xor b = c
class TXOr' a b c | a b -> c
-- | Type-Level: a implies b = c
class TImplies a b c | a b -> c
-- | Type-Level: if t then x else y
class TIf t x y z | t x y -> z
tIf :: TIf t x y z => t -> x -> y -> z
tAnd :: TAnd a b c => a -> b -> c
tOr :: TOr a b c => a -> b -> c
tNot :: TNot a b => a -> b
tXOr :: TXOr a b c => a -> b -> c
tXOr' :: TXOr' a b c => a -> b -> c
tImplies :: TImplies a b c => a -> b -> c
instance TIf T x y x
instance TIf F x y y
instance TNot F T
instance TNot T F
instance TImplies T T T
instance TImplies T F F
instance TImplies F T T
instance TImplies F F T
instance (TXOr' a b c, TXOr' b c a, TXOr' c a b) => TXOr a b c
instance TXOr' T T F
instance TXOr' T F T
instance TXOr' F T T
instance TXOr' F F F
instance TOr T T T
instance TOr T F T
instance TOr F T T
instance TOr F F F
instance TAnd T T T
instance TAnd F T F
instance TAnd T F F
instance TAnd F F F
instance Show F
instance Show T
instance TBool F
instance TBool T
instance TCBool Closure F
instance TCBool Closure T
instance Closed Closure
-- | Simple equality and ordering for types. Extended to include common
-- usage cases.
--
-- Instances should all really be decidable.
module Data.Type.Ord
class TBool b => TEq x y b | x y -> b
tEq :: TEq x y b => x -> y -> b
class TBool b => TLt x y b | x y -> b
tLt :: TLt x y b => x -> y -> b
class TCGe Closure x y b => TGe x y b | x y -> b
tGe :: TGe x y b => x -> y -> b
class TBool b => TLe x y b | x y -> b
tLe :: TGt x y b => x -> y -> b
class TBool b => TGt x y b | x y -> b
tGt :: TGt x y b => x -> y -> b
instance (TBool b', TLe x y b, TNot b b') => TGt x y b'
instance (TBool b', TLe x y b, TNot b b') => TCGt Closure x y b'
instance (TBool b'', TEq x y b, TLt x y b', TOr b b' b'') => TLe x y b''
instance (TBool b'', TEq x y b, TLt x y b', TOr b b' b'') => TCLe Closure x y b''
instance (TBool b', TLt x y b, TNot b b') => TGe x y b'
instance (TBool b', TLt x y b, TNot b b') => TCGe Closure x y b'
instance TEq F F T
instance TEq F T F
instance TEq T F F
instance TEq T T T
instance Closed Closure
-- | Used to express trichotomy at the type level.
module Data.Type.Sign
class TCSign Closure s => TSign s
data Negative
data Positive
data SignZero
instance TEq Positive Positive T
instance TEq Positive SignZero F
instance TEq Positive Negative F
instance TEq SignZero Positive F
instance TEq SignZero SignZero T
instance TEq SignZero Negative F
instance TEq Negative Positive F
instance TEq Negative SignZero F
instance TEq Negative Negative T
instance TSign Positive
instance TSign SignZero
instance TSign Negative
instance TCSign Closure SignZero
instance TCSign Closure Positive
instance TCSign Closure Negative
instance Closed Closure
-- | Simple type-level binary numbers, positive and negative with infinite
-- precision. This forms a nice commutative ring with multiplicative
-- identity like we would expect from a representation for Z.
--
-- The numbers are represented as a Boolean Ring over a countable set of
-- variables, in which for every element in the set there exists an n in
-- N and a b in {T,F} such that for all n'>=n in N, x_i = b.
--
-- For uniqueness we always choose the least such n when representing
-- numbers this allows us to run most computations backwards. When we
-- can't, and such a fundep would be implied, we obtain it by combining
-- semi-operations that together yield the appropriate class fundep list.
--
-- Reuses T and F from the Type.Boolean as the infinite tail of the 2s
-- complement binary number.
--
-- TODO: TDivMod, TGCD
module Data.Type.Binary.Internals
data O a
data I a
-- | Finds the unique successor for any normalized binary number
class TSucc n m | n -> m, m -> n
tSucc :: TSucc n m => n -> m
tPred :: TSucc n m => m -> n
-- | Our set of digits is closed to retain the properties needed for most
-- of the classes herein
class TCBinary c a | a -> c
-- | We don't want to have to carry the closure parameter around explicitly
-- everywhere, so we shed it here.
class TCBinary Closure a => TBinary a
fromTBinary :: (TBinary a, Integral b) => a -> b
-- | TNeg obtains the 2s complement of a number and is reversible
class TNeg a b | a -> b, b -> a
tNeg :: TNeg a b => a -> b
-- | Returns true if the number is less than zero
class TIsNegative n b | n -> b
tIsNegative :: TIsNegative n b => n -> b
-- | Returns true if the number is greater than zero
class TIsPositive n b | n -> b
tIsPositive :: TIsPositive n b => n -> b
-- | Returns true if the number is equal to zero
class TIsZero n b | n -> b
tIsZero :: TIsZero n b => n -> b
-- | Returns true if the lsb of the number is true
class TEven a b | a -> b
tEven :: TEven a b => a -> b
-- | Returns true if the lsb of the number if false
class TOdd a b | a -> b
tOdd :: TOdd a b => a -> b
-- | Reversible adder with extra fundeps.
class TAdd a b c | a b -> c, a c -> b, b c -> a
tAdd :: TAdd a b c => a -> b -> c
tSub :: TAdd a b c => c -> a -> b
-- | Multiplication: a * b = c
class TMul a b c | a b -> c
tMul :: TMul a b c => a -> b -> c
-- | Exponentiation: a^b = c (only defined for non-negative exponents)
class TPow a b c | a b -> c
tPow :: TPow a b c => a -> b -> c
-- | Shift a right b places obtaining c in normal form. | If b is negative
-- then we shift left.
class TShift a b c' | a b -> c'
tShift :: TShift a b c => a -> b -> c
-- | get bit #b in a as c in {T,F}
class TGetBit a b c | a b -> c
tGetBit :: TGetBit a b c => a -> b -> c
-- | set bit #b in a to T, yielding c.
class TSetBit a b c | a b -> c
tSetBit :: TSetBit a b c => a -> b -> c
-- | change bit #b in a to c in {T,F}, yielding d.
class TChangeBit a b c d | a b c -> d
tChangeBit :: TChangeBit a b c d => a -> b -> c -> d
-- | set bit #b in a to F, yielding c
class TUnSetBit a b c | a b -> c
tUnSetBit :: TUnSetBit a b c => a -> b -> c
-- | toggle the value of bit #b in a, yielding c
class TComplementBit a b c | a b -> c
tComplementBit :: TComplementBit a b c => a -> b -> c
-- | Count the number of bits set. Since we may have an infinite tail of
-- 1s, we return a negative number in such cases indicating how many bits
-- are NOT set.
class TCountBits a b | a -> b
tCountBits :: TCountBits a b => a -> b
-- | Return the absolute value of a
class TAbs a b | a -> b
tAbs :: TAbs a b => a -> b
-- | Shed the additional reduction parameter from TNF'
class TNF a b | a -> b
tNF :: TNF a b => a -> b
t2n :: TNF (O a) b => a -> b
t2np1 :: TNF (I a) b => a -> b
data Negative
data Positive
data SignZero
-- | Shift a right b places obtaining c. If b is negative then we shift
-- left. | TShift' does not yield normal form answers.
class TShift' a b c | a b -> c
-- | Transform a number into normal form, but track whether further
-- reductions may be necessary if this number is extended for efficiency.
class TNF' a b c | a -> b c
-- | A symmetrical full adder, that does not yield normal form answers.
class TAddC' a b c d | a b c -> d
-- | Non-reversible addition. Kept for efficiency purposes.
class TAdd' a b c | a b -> c
tAdd' :: TAdd' a b c => a -> b -> c
-- | Non-reversible subtraction. Kept for efficiency purposes.
class TSub' a b c | a b -> c
tSub' :: TSub' a b c => a -> b -> c
-- | Count the number of bits set, but track whether the number is positive
-- or negative to simplify casing. Since we may have an infinite tail of
-- 1s, we return a negative number in such cases indicating how many bits
-- are NOT set.
class TCountBits' a b t | a t -> b
-- | Extracts the least significant bit of a as d and returns a'. Can also
-- be used to prepend bit d onto a' obtaining a.
class TBool d => LSB a d a' | a -> d a', d a' -> a
tLSB :: LSB a d a' => a -> d -> a'
tBSL :: LSB a d a' => a' -> d -> a
-- | assert 2n+1 != n
class LSB (I a) T a => XI a
-- | assert 2n != n
class LSB (O a) F a => XO a
instance (TIsNegative a t, TCountBits' a b t) => TCountBits a b
instance (TCountBits' a n F, TSucc m n) => TCountBits' (O a) n T
instance (TCountBits' a n F, TSucc n m) => TCountBits' (I a) m F
instance TCountBits' a m F => TCountBits' (I a) m T
instance TCountBits' a n F => TCountBits' (O a) n F
instance TCountBits' F F F
instance TCountBits' T T T
instance (TShift (I F) b c, TXOr' a c d) => TComplementBit a b d
instance (TSetBit a b d, TUnSetBit a b e, TIf c d e f) => TChangeBit a b c f
instance (TShift (O T) b c, TAnd a c d) => TUnSetBit a b d
instance (TShift (I F) b c, TOr a c d) => TSetBit a b d
instance (TNeg b b', TShift a b' c, LSB c d e) => TGetBit a b d
instance (TShift' a b c, TNF c c') => TShift a b c'
instance (TShift' a b c, TShift' c b d) => TShift' a (I b) (O d)
instance (TShift' a b c, TShift' c b d) => TShift' a (O b) d
instance TShift' T T T
instance TShift' F T F
instance TShift' (O a) T a
instance TShift' (I a) T a
instance TShift' (O a) F (O a)
instance TShift' (I a) F (I a)
instance TShift' T F T
instance TShift' F F F
instance (TImplies a b c, TNF (O c) c') => TImplies (O a) (O b) c'
instance (TImplies a b c, TNF (I c) c') => TImplies (I a) (O b) c'
instance (TImplies a b c, TNF (I c) c') => TImplies (O a) (I b) c'
instance (TImplies a b c, TNF (I c) c') => TImplies (I a) (I b) c'
instance TImplies (O a) T (O a)
instance TImplies (I a) T (I a)
instance TImplies T (O b) (O b)
instance TImplies T (I b) (I b)
instance TImplies (O a) F T
instance TImplies (I a) F T
instance TImplies F (O b) T
instance TImplies F (I b) T
instance (TXOr' a b c, TNF (O c) c') => TXOr' (O a) (O b) c'
instance (TXOr' a b c, TNF (I c) c') => TXOr' (O a) (I b) c'
instance (TXOr' a b c, TNF (I c) c') => TXOr' (I a) (O b) c'
instance (TXOr' a b c, TNF (O c) c') => TXOr' (I a) (I b) c'
instance TNot b c => TXOr' (O b) T (I c)
instance TNot b c => TXOr' (I b) T (O c)
instance TNot b c => TXOr' T (O b) (I c)
instance TNot b c => TXOr' T (I b) (O c)
instance TXOr' (O b) F (O b)
instance TXOr' (I b) F (I b)
instance TXOr' F (O b) (O b)
instance TXOr' F (I b) (I b)
instance (TOr a b c, TNF (O c) c') => TOr (O a) (O b) c'
instance (TOr a b c, TNF (I c) c') => TOr (I a) (O b) c'
instance (TOr a b c, TNF (I c) c') => TOr (O a) (I b) c'
instance (TOr a b c, TNF (I c) c') => TOr (I a) (I b) c'
instance TOr (O a) T T
instance TOr (I a) T T
instance TOr T (O b) T
instance TOr T (I b) T
instance TOr (O a) F (I a)
instance TOr (I a) F (I a)
instance TOr F (O b) (O b)
instance TOr F (I b) (I b)
instance (TAnd a b c, TNF (O c) c') => TAnd (O a) (O b) c'
instance (TAnd a b c, TNF (O c) c') => TAnd (I a) (O b) c'
instance (TAnd a b c, TNF (O c) c') => TAnd (O a) (I b) c'
instance (TAnd a b c, TNF (I c) c') => TAnd (I a) (I b) c'
instance TAnd (O a) T (O a)
instance TAnd (I a) T (I a)
instance TAnd T (O b) (O b)
instance TAnd T (I b) (I b)
instance TAnd (O a) F F
instance TAnd (I a) F F
instance TAnd F (O b) F
instance TAnd F (I b) F
instance (TIsNegative a s, TNeg a a', TIf s a' a a'') => TAbs a a''
instance (TPow a k c, TMul c c d, TMul a d e) => TPow a (I k) e
instance (TPow a k c, TMul c c d) => TPow a (O k) d
instance TPow a F (I F)
instance (TMul (O a) b c, TAdd' a c d) => TMul a (I b) d
instance TMul (O a) b c => TMul a (O b) c
instance TNeg a b => TMul a T b
instance TMul a F F
instance (TAdd' a b c, TNeg b b', TAdd' c b' a, TNeg a a', TAdd' c a' b) => TAdd a b c
instance (TNeg b b', TAdd' a b' c) => TSub' a b c
instance (TAddC' a b F d, TNF d d') => TAdd' a b d'
instance (TBool d, TNeg b b', TAdd' a b' c, TIsNegative c d) => TLt a b d
instance TEq m n b => TEq (O m) (O n) b
instance TEq m n b => TEq (I m) (I n) b
instance TEq (I m) F F
instance TEq (I m) T F
instance TEq (O m) T F
instance TEq (O m) F F
instance TEq (O m) (I n) F
instance TEq (I m) (O n) F
instance TNF' a b c => TNF a b
instance (TNF' (O a) c b, TIf b (O c) F d) => TNF' (O (O a)) d b
instance (TNF' (I a) c b, TIf b (I c) T d) => TNF' (I (I a)) d b
instance TNF' (I a) c b => TNF' (O (I a)) (O c) T
instance TNF' (O a) c b => TNF' (I (O a)) (I c) T
instance TNF' (O T) (O T) T
instance TNF' (I F) (I F) T
instance TNF' (I T) T F
instance TNF' (O F) F F
instance TNF' T T F
instance TNF' F F F
instance TAddC' a b T c => TAddC' (I a) (I b) T (I c)
instance TAddC' a b T c => TAddC' (I a) (I b) F (O c)
instance TAddC' a b T c => TAddC' (O a) (I b) T (O c)
instance TAddC' a b F c => TAddC' (O a) (I b) F (I c)
instance TAddC' a b T c => TAddC' (I a) (O b) T (O c)
instance TAddC' a b F c => TAddC' (I a) (O b) F (I c)
instance TAddC' a b F c => TAddC' (O a) (O b) T (I c)
instance TAddC' a b F c => TAddC' (O a) (O b) F (O c)
instance TSucc b a => TAddC' (O a) T F (I b)
instance TSucc a b => TAddC' (I a) F T (O b)
instance TSucc b a => TAddC' T (O a) F (I b)
instance TSucc a b => TAddC' F (I a) T (O b)
instance TAddC' (I a) T F (O a)
instance TAddC' (O a) F T (I a)
instance TAddC' T (I a) F (O a)
instance TAddC' F (O a) T (I a)
instance TAddC' (I a) T T (I a)
instance TAddC' (I a) F F (I a)
instance TAddC' (O a) T T (O a)
instance TAddC' (O a) F F (O a)
instance TAddC' T (I a) T (I a)
instance TAddC' F (I a) F (I a)
instance TAddC' T (O a) T (O a)
instance TAddC' F (O a) F (O a)
instance TAddC' T T F (O T)
instance TAddC' F F T (I F)
instance TAddC' F T T F
instance TAddC' T F F T
instance TAddC' T T T T
instance TAddC' F T F T
instance TAddC' T F T F
instance TAddC' F F F F
instance (LSB a b c, TNot b b') => TOdd a b'
instance LSB a b c => TEven a b
instance (Trichotomy n s, TEq s SignZero b) => TIsZero n b
instance (Trichotomy n s, TEq s Negative b) => TIsNegative n b
instance (Trichotomy n s, TEq s Positive b) => TIsPositive n b
instance (Trichotomy a b, XO a) => Trichotomy (O (O a)) b
instance (Trichotomy a b, XO a) => Trichotomy (I (O a)) b
instance (Trichotomy a b, XI a) => Trichotomy (O (I a)) b
instance (Trichotomy a b, XI a) => Trichotomy (I (I a)) b
instance Trichotomy (O T) Negative
instance Trichotomy (I F) Positive
instance Trichotomy F SignZero
instance Trichotomy T Negative
instance (TNot a b, TSucc b c) => TNeg a c
instance TNot a b => TNot (I a) (O b)
instance TNot a b => TNot (O a) (I b)
instance TBinary (I a) => Show (I a)
instance TBinary (O a) => Show (O a)
instance (TBinary a, XI a) => TBinary (I a)
instance (TBinary a, XO a) => TBinary (O a)
instance TBinary T
instance TBinary F
instance (TCBinary c a, XI a) => TCBinary c (I a)
instance (TCBinary c a, XO a) => TCBinary c (O a)
instance TCBinary Closure T
instance TCBinary Closure F
instance (TSucc n m, XI n, XO m) => TSucc (I n) (O m)
instance TSucc (O (O n)) (I (O n))
instance TSucc (O (I n)) (I (I n))
instance TSucc (O T) T
instance TSucc F (I F)
instance TSucc T F
instance LSB (I a) T a => XI a
instance LSB (O a) F a => XO a
instance LSB (I a) T a => X (I a) T a
instance LSB (O a) F a => X (O a) F a
instance LSB (I (I n)) T (I n)
instance LSB (I (O n)) T (O n)
instance LSB (O (I n)) F (I n)
instance LSB (O (O n)) F (O n)
instance LSB (I F) T F
instance LSB (O T) F T
instance LSB T T T
instance LSB F F F
instance Closed Closure
-- | Provides a simple way to construct type level binaries. $(binaryE 24)
-- returns an undefined value with the same type as the Type.Binary with
-- value 24.
module Data.Type.Binary.TH
-- | $(binaryE n) returns an undefined value of the appropriate TBinary
-- instance
binaryE :: Integral a => a -> ExpQ
-- | $(binaryT n) returns the appropriate TBinary instance
binaryT :: Integral a => a -> TypeQ
-- | Simple type-level binary numbers, positive and negative with infinite
-- precision. This forms a nice commutative ring with multiplicative
-- identity like we would expect from a representation for Z.
--
-- The numbers are represented as a Boolean Ring over a countable set of
-- variables, in which for every element in the set there exists an n in
-- N and a b in {T,F} such that forall n' >= n in N, x_i = b.
--
-- For uniqueness we always choose the least such n when representing
-- numbers this allows us to run most computations backwards. When we
-- can't, and such a fundep would be implied, we obtain it by combining
-- semi-operations that together yield the appropriate class fundep list.
--
-- The goal here was to pull together many of the good ideas I've seen
-- from various sources, and sprinkle a two's complement negative number
-- representation on top.
--
-- Reuses T and F from the Type.Boolean as the infinite tail of the 2s
-- complement binary number. I'm particularly fond of the symmetry
-- exhibited in the full adder.
--
-- TODO: TDivMod, TImplies, TGCD, TBit, TComplementBit, TSetBit
module Data.Type.Binary
-- | Stage1: Lay the ground work for all sorts of Template Haskell hackery
-- in the later stages. Only a handful of class specifications in this
-- file are for later public consumption, and none of those are fleshed
-- out here.
--
-- This multiple-stage implementation is necessitated by the way Template
-- Haskell is implemented in GHC.
module Data.Type.Hex.Stage1
t, f :: Name
hex :: String
xn, hn :: [Name]
x, h :: [Type]
xh :: [(Type, Type)]
x0, h0 :: [Type]
xh0 :: [(Type, Type)]
xF, hF :: [Type]
xhF :: [(Type, Type)]
x0F :: [Type]
a, d, c, b :: Name
mkXT :: Name -> Dec
mkHT :: Name -> Dec
tnot, signzero, negative, positive :: Name
class LSN a d a' | a -> d a', d a' -> a
class Trichotomy n s | n -> s
class TEven a b | a -> b
class TSucc n m | n -> m, m -> n
class TAddC' a b c d | a b c -> d
class TNF' a b c | a -> b c
class THex a
fromTHex :: (THex a, Integral b) => a -> b
class SHR1 a b c | a b -> c
lsn, shr1, thex, tnf', taddc', tsucc, teven, trichotomy :: Name
wrapI :: [a] -> (a -> Type) -> [Dec]
concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
-- | Stage2: Create the D0 and H0 data elements that will be used later.
-- Define utility classes, some classes defined here can not be fleshed
-- out until Stage3.
--
-- This multiple-stage implementation is necessitated by the way Template
-- Haskell is implemented in GHC.
module Data.Type.Hex.Stage2
data D0 a
data D1 a
data D2 a
data D3 a
data D4 a
data D5 a
data D6 a
data D7 a
data D8 a
data D9 a
data DA a
data DB a
data DC a
data DD a
data DE a
data DF a
data H0
data H1
data H2
data H3
data H4
data H5
data H6
data H7
data H8
data H9
data HA
data HB
data HC
data HD
data HE
data HF
tLSN :: LSN a d a' => a -> (d, a')
tNSL :: LSN a d a' => a' -> d -> a
class LSN (D0 a) H0 a => Ext0 a
class LSN (DF a) HF a => ExtF a
class TOdd a b'
instance TNF' (DF a) c b => TNF' (DE (DF a)) (DE c) b
instance TNF' (DF a) c b => TNF' (DD (DF a)) (DD c) b
instance TNF' (DF a) c b => TNF' (DC (DF a)) (DC c) b
instance TNF' (DF a) c b => TNF' (DB (DF a)) (DB c) b
instance TNF' (DF a) c b => TNF' (DA (DF a)) (DA c) b
instance TNF' (DF a) c b => TNF' (D9 (DF a)) (D9 c) b
instance TNF' (DF a) c b => TNF' (D8 (DF a)) (D8 c) b
instance TNF' (DF a) c b => TNF' (D7 (DF a)) (D7 c) b
instance TNF' (DF a) c b => TNF' (D6 (DF a)) (D6 c) b
instance TNF' (DF a) c b => TNF' (D5 (DF a)) (D5 c) b
instance TNF' (DF a) c b => TNF' (D4 (DF a)) (D4 c) b
instance TNF' (DF a) c b => TNF' (D3 (DF a)) (D3 c) b
instance TNF' (DF a) c b => TNF' (D2 (DF a)) (D2 c) b
instance TNF' (DF a) c b => TNF' (D1 (DF a)) (D1 c) b
instance TNF' (DF a) c b => TNF' (D0 (DF a)) (D0 c) b
instance TNF' (DE a) c b => TNF' (DF (DE a)) (DF c) b
instance TNF' (DE a) c b => TNF' (DE (DE a)) (DE c) b
instance TNF' (DE a) c b => TNF' (DD (DE a)) (DD c) b
instance TNF' (DE a) c b => TNF' (DC (DE a)) (DC c) b
instance TNF' (DE a) c b => TNF' (DB (DE a)) (DB c) b
instance TNF' (DE a) c b => TNF' (DA (DE a)) (DA c) b
instance TNF' (DE a) c b => TNF' (D9 (DE a)) (D9 c) b
instance TNF' (DE a) c b => TNF' (D8 (DE a)) (D8 c) b
instance TNF' (DE a) c b => TNF' (D7 (DE a)) (D7 c) b
instance TNF' (DE a) c b => TNF' (D6 (DE a)) (D6 c) b
instance TNF' (DE a) c b => TNF' (D5 (DE a)) (D5 c) b
instance TNF' (DE a) c b => TNF' (D4 (DE a)) (D4 c) b
instance TNF' (DE a) c b => TNF' (D3 (DE a)) (D3 c) b
instance TNF' (DE a) c b => TNF' (D2 (DE a)) (D2 c) b
instance TNF' (DE a) c b => TNF' (D1 (DE a)) (D1 c) b
instance TNF' (DE a) c b => TNF' (D0 (DE a)) (D0 c) b
instance TNF' (DD a) c b => TNF' (DF (DD a)) (DF c) b
instance TNF' (DD a) c b => TNF' (DE (DD a)) (DE c) b
instance TNF' (DD a) c b => TNF' (DD (DD a)) (DD c) b
instance TNF' (DD a) c b => TNF' (DC (DD a)) (DC c) b
instance TNF' (DD a) c b => TNF' (DB (DD a)) (DB c) b
instance TNF' (DD a) c b => TNF' (DA (DD a)) (DA c) b
instance TNF' (DD a) c b => TNF' (D9 (DD a)) (D9 c) b
instance TNF' (DD a) c b => TNF' (D8 (DD a)) (D8 c) b
instance TNF' (DD a) c b => TNF' (D7 (DD a)) (D7 c) b
instance TNF' (DD a) c b => TNF' (D6 (DD a)) (D6 c) b
instance TNF' (DD a) c b => TNF' (D5 (DD a)) (D5 c) b
instance TNF' (DD a) c b => TNF' (D4 (DD a)) (D4 c) b
instance TNF' (DD a) c b => TNF' (D3 (DD a)) (D3 c) b
instance TNF' (DD a) c b => TNF' (D2 (DD a)) (D2 c) b
instance TNF' (DD a) c b => TNF' (D1 (DD a)) (D1 c) b
instance TNF' (DD a) c b => TNF' (D0 (DD a)) (D0 c) b
instance TNF' (DC a) c b => TNF' (DF (DC a)) (DF c) b
instance TNF' (DC a) c b => TNF' (DE (DC a)) (DE c) b
instance TNF' (DC a) c b => TNF' (DD (DC a)) (DD c) b
instance TNF' (DC a) c b => TNF' (DC (DC a)) (DC c) b
instance TNF' (DC a) c b => TNF' (DB (DC a)) (DB c) b
instance TNF' (DC a) c b => TNF' (DA (DC a)) (DA c) b
instance TNF' (DC a) c b => TNF' (D9 (DC a)) (D9 c) b
instance TNF' (DC a) c b => TNF' (D8 (DC a)) (D8 c) b
instance TNF' (DC a) c b => TNF' (D7 (DC a)) (D7 c) b
instance TNF' (DC a) c b => TNF' (D6 (DC a)) (D6 c) b
instance TNF' (DC a) c b => TNF' (D5 (DC a)) (D5 c) b
instance TNF' (DC a) c b => TNF' (D4 (DC a)) (D4 c) b
instance TNF' (DC a) c b => TNF' (D3 (DC a)) (D3 c) b
instance TNF' (DC a) c b => TNF' (D2 (DC a)) (D2 c) b
instance TNF' (DC a) c b => TNF' (D1 (DC a)) (D1 c) b
instance TNF' (DC a) c b => TNF' (D0 (DC a)) (D0 c) b
instance TNF' (DB a) c b => TNF' (DF (DB a)) (DF c) b
instance TNF' (DB a) c b => TNF' (DE (DB a)) (DE c) b
instance TNF' (DB a) c b => TNF' (DD (DB a)) (DD c) b
instance TNF' (DB a) c b => TNF' (DC (DB a)) (DC c) b
instance TNF' (DB a) c b => TNF' (DB (DB a)) (DB c) b
instance TNF' (DB a) c b => TNF' (DA (DB a)) (DA c) b
instance TNF' (DB a) c b => TNF' (D9 (DB a)) (D9 c) b
instance TNF' (DB a) c b => TNF' (D8 (DB a)) (D8 c) b
instance TNF' (DB a) c b => TNF' (D7 (DB a)) (D7 c) b
instance TNF' (DB a) c b => TNF' (D6 (DB a)) (D6 c) b
instance TNF' (DB a) c b => TNF' (D5 (DB a)) (D5 c) b
instance TNF' (DB a) c b => TNF' (D4 (DB a)) (D4 c) b
instance TNF' (DB a) c b => TNF' (D3 (DB a)) (D3 c) b
instance TNF' (DB a) c b => TNF' (D2 (DB a)) (D2 c) b
instance TNF' (DB a) c b => TNF' (D1 (DB a)) (D1 c) b
instance TNF' (DB a) c b => TNF' (D0 (DB a)) (D0 c) b
instance TNF' (DA a) c b => TNF' (DF (DA a)) (DF c) b
instance TNF' (DA a) c b => TNF' (DE (DA a)) (DE c) b
instance TNF' (DA a) c b => TNF' (DD (DA a)) (DD c) b
instance TNF' (DA a) c b => TNF' (DC (DA a)) (DC c) b
instance TNF' (DA a) c b => TNF' (DB (DA a)) (DB c) b
instance TNF' (DA a) c b => TNF' (DA (DA a)) (DA c) b
instance TNF' (DA a) c b => TNF' (D9 (DA a)) (D9 c) b
instance TNF' (DA a) c b => TNF' (D8 (DA a)) (D8 c) b
instance TNF' (DA a) c b => TNF' (D7 (DA a)) (D7 c) b
instance TNF' (DA a) c b => TNF' (D6 (DA a)) (D6 c) b
instance TNF' (DA a) c b => TNF' (D5 (DA a)) (D5 c) b
instance TNF' (DA a) c b => TNF' (D4 (DA a)) (D4 c) b
instance TNF' (DA a) c b => TNF' (D3 (DA a)) (D3 c) b
instance TNF' (DA a) c b => TNF' (D2 (DA a)) (D2 c) b
instance TNF' (DA a) c b => TNF' (D1 (DA a)) (D1 c) b
instance TNF' (DA a) c b => TNF' (D0 (DA a)) (D0 c) b
instance TNF' (D9 a) c b => TNF' (DF (D9 a)) (DF c) b
instance TNF' (D9 a) c b => TNF' (DE (D9 a)) (DE c) b
instance TNF' (D9 a) c b => TNF' (DD (D9 a)) (DD c) b
instance TNF' (D9 a) c b => TNF' (DC (D9 a)) (DC c) b
instance TNF' (D9 a) c b => TNF' (DB (D9 a)) (DB c) b
instance TNF' (D9 a) c b => TNF' (DA (D9 a)) (DA c) b
instance TNF' (D9 a) c b => TNF' (D9 (D9 a)) (D9 c) b
instance TNF' (D9 a) c b => TNF' (D8 (D9 a)) (D8 c) b
instance TNF' (D9 a) c b => TNF' (D7 (D9 a)) (D7 c) b
instance TNF' (D9 a) c b => TNF' (D6 (D9 a)) (D6 c) b
instance TNF' (D9 a) c b => TNF' (D5 (D9 a)) (D5 c) b
instance TNF' (D9 a) c b => TNF' (D4 (D9 a)) (D4 c) b
instance TNF' (D9 a) c b => TNF' (D3 (D9 a)) (D3 c) b
instance TNF' (D9 a) c b => TNF' (D2 (D9 a)) (D2 c) b
instance TNF' (D9 a) c b => TNF' (D1 (D9 a)) (D1 c) b
instance TNF' (D9 a) c b => TNF' (D0 (D9 a)) (D0 c) b
instance TNF' (D8 a) c b => TNF' (DF (D8 a)) (DF c) b
instance TNF' (D8 a) c b => TNF' (DE (D8 a)) (DE c) b
instance TNF' (D8 a) c b => TNF' (DD (D8 a)) (DD c) b
instance TNF' (D8 a) c b => TNF' (DC (D8 a)) (DC c) b
instance TNF' (D8 a) c b => TNF' (DB (D8 a)) (DB c) b
instance TNF' (D8 a) c b => TNF' (DA (D8 a)) (DA c) b
instance TNF' (D8 a) c b => TNF' (D9 (D8 a)) (D9 c) b
instance TNF' (D8 a) c b => TNF' (D8 (D8 a)) (D8 c) b
instance TNF' (D8 a) c b => TNF' (D7 (D8 a)) (D7 c) b
instance TNF' (D8 a) c b => TNF' (D6 (D8 a)) (D6 c) b
instance TNF' (D8 a) c b => TNF' (D5 (D8 a)) (D5 c) b
instance TNF' (D8 a) c b => TNF' (D4 (D8 a)) (D4 c) b
instance TNF' (D8 a) c b => TNF' (D3 (D8 a)) (D3 c) b
instance TNF' (D8 a) c b => TNF' (D2 (D8 a)) (D2 c) b
instance TNF' (D8 a) c b => TNF' (D1 (D8 a)) (D1 c) b
instance TNF' (D8 a) c b => TNF' (D0 (D8 a)) (D0 c) b
instance TNF' (D7 a) c b => TNF' (DF (D7 a)) (DF c) b
instance TNF' (D7 a) c b => TNF' (DE (D7 a)) (DE c) b
instance TNF' (D7 a) c b => TNF' (DD (D7 a)) (DD c) b
instance TNF' (D7 a) c b => TNF' (DC (D7 a)) (DC c) b
instance TNF' (D7 a) c b => TNF' (DB (D7 a)) (DB c) b
instance TNF' (D7 a) c b => TNF' (DA (D7 a)) (DA c) b
instance TNF' (D7 a) c b => TNF' (D9 (D7 a)) (D9 c) b
instance TNF' (D7 a) c b => TNF' (D8 (D7 a)) (D8 c) b
instance TNF' (D7 a) c b => TNF' (D7 (D7 a)) (D7 c) b
instance TNF' (D7 a) c b => TNF' (D6 (D7 a)) (D6 c) b
instance TNF' (D7 a) c b => TNF' (D5 (D7 a)) (D5 c) b
instance TNF' (D7 a) c b => TNF' (D4 (D7 a)) (D4 c) b
instance TNF' (D7 a) c b => TNF' (D3 (D7 a)) (D3 c) b
instance TNF' (D7 a) c b => TNF' (D2 (D7 a)) (D2 c) b
instance TNF' (D7 a) c b => TNF' (D1 (D7 a)) (D1 c) b
instance TNF' (D7 a) c b => TNF' (D0 (D7 a)) (D0 c) b
instance TNF' (D6 a) c b => TNF' (DF (D6 a)) (DF c) b
instance TNF' (D6 a) c b => TNF' (DE (D6 a)) (DE c) b
instance TNF' (D6 a) c b => TNF' (DD (D6 a)) (DD c) b
instance TNF' (D6 a) c b => TNF' (DC (D6 a)) (DC c) b
instance TNF' (D6 a) c b => TNF' (DB (D6 a)) (DB c) b
instance TNF' (D6 a) c b => TNF' (DA (D6 a)) (DA c) b
instance TNF' (D6 a) c b => TNF' (D9 (D6 a)) (D9 c) b
instance TNF' (D6 a) c b => TNF' (D8 (D6 a)) (D8 c) b
instance TNF' (D6 a) c b => TNF' (D7 (D6 a)) (D7 c) b
instance TNF' (D6 a) c b => TNF' (D6 (D6 a)) (D6 c) b
instance TNF' (D6 a) c b => TNF' (D5 (D6 a)) (D5 c) b
instance TNF' (D6 a) c b => TNF' (D4 (D6 a)) (D4 c) b
instance TNF' (D6 a) c b => TNF' (D3 (D6 a)) (D3 c) b
instance TNF' (D6 a) c b => TNF' (D2 (D6 a)) (D2 c) b
instance TNF' (D6 a) c b => TNF' (D1 (D6 a)) (D1 c) b
instance TNF' (D6 a) c b => TNF' (D0 (D6 a)) (D0 c) b
instance TNF' (D5 a) c b => TNF' (DF (D5 a)) (DF c) b
instance TNF' (D5 a) c b => TNF' (DE (D5 a)) (DE c) b
instance TNF' (D5 a) c b => TNF' (DD (D5 a)) (DD c) b
instance TNF' (D5 a) c b => TNF' (DC (D5 a)) (DC c) b
instance TNF' (D5 a) c b => TNF' (DB (D5 a)) (DB c) b
instance TNF' (D5 a) c b => TNF' (DA (D5 a)) (DA c) b
instance TNF' (D5 a) c b => TNF' (D9 (D5 a)) (D9 c) b
instance TNF' (D5 a) c b => TNF' (D8 (D5 a)) (D8 c) b
instance TNF' (D5 a) c b => TNF' (D7 (D5 a)) (D7 c) b
instance TNF' (D5 a) c b => TNF' (D6 (D5 a)) (D6 c) b
instance TNF' (D5 a) c b => TNF' (D5 (D5 a)) (D5 c) b
instance TNF' (D5 a) c b => TNF' (D4 (D5 a)) (D4 c) b
instance TNF' (D5 a) c b => TNF' (D3 (D5 a)) (D3 c) b
instance TNF' (D5 a) c b => TNF' (D2 (D5 a)) (D2 c) b
instance TNF' (D5 a) c b => TNF' (D1 (D5 a)) (D1 c) b
instance TNF' (D5 a) c b => TNF' (D0 (D5 a)) (D0 c) b
instance TNF' (D4 a) c b => TNF' (DF (D4 a)) (DF c) b
instance TNF' (D4 a) c b => TNF' (DE (D4 a)) (DE c) b
instance TNF' (D4 a) c b => TNF' (DD (D4 a)) (DD c) b
instance TNF' (D4 a) c b => TNF' (DC (D4 a)) (DC c) b
instance TNF' (D4 a) c b => TNF' (DB (D4 a)) (DB c) b
instance TNF' (D4 a) c b => TNF' (DA (D4 a)) (DA c) b
instance TNF' (D4 a) c b => TNF' (D9 (D4 a)) (D9 c) b
instance TNF' (D4 a) c b => TNF' (D8 (D4 a)) (D8 c) b
instance TNF' (D4 a) c b => TNF' (D7 (D4 a)) (D7 c) b
instance TNF' (D4 a) c b => TNF' (D6 (D4 a)) (D6 c) b
instance TNF' (D4 a) c b => TNF' (D5 (D4 a)) (D5 c) b
instance TNF' (D4 a) c b => TNF' (D4 (D4 a)) (D4 c) b
instance TNF' (D4 a) c b => TNF' (D3 (D4 a)) (D3 c) b
instance TNF' (D4 a) c b => TNF' (D2 (D4 a)) (D2 c) b
instance TNF' (D4 a) c b => TNF' (D1 (D4 a)) (D1 c) b
instance TNF' (D4 a) c b => TNF' (D0 (D4 a)) (D0 c) b
instance TNF' (D3 a) c b => TNF' (DF (D3 a)) (DF c) b
instance TNF' (D3 a) c b => TNF' (DE (D3 a)) (DE c) b
instance TNF' (D3 a) c b => TNF' (DD (D3 a)) (DD c) b
instance TNF' (D3 a) c b => TNF' (DC (D3 a)) (DC c) b
instance TNF' (D3 a) c b => TNF' (DB (D3 a)) (DB c) b
instance TNF' (D3 a) c b => TNF' (DA (D3 a)) (DA c) b
instance TNF' (D3 a) c b => TNF' (D9 (D3 a)) (D9 c) b
instance TNF' (D3 a) c b => TNF' (D8 (D3 a)) (D8 c) b
instance TNF' (D3 a) c b => TNF' (D7 (D3 a)) (D7 c) b
instance TNF' (D3 a) c b => TNF' (D6 (D3 a)) (D6 c) b
instance TNF' (D3 a) c b => TNF' (D5 (D3 a)) (D5 c) b
instance TNF' (D3 a) c b => TNF' (D4 (D3 a)) (D4 c) b
instance TNF' (D3 a) c b => TNF' (D3 (D3 a)) (D3 c) b
instance TNF' (D3 a) c b => TNF' (D2 (D3 a)) (D2 c) b
instance TNF' (D3 a) c b => TNF' (D1 (D3 a)) (D1 c) b
instance TNF' (D3 a) c b => TNF' (D0 (D3 a)) (D0 c) b
instance TNF' (D2 a) c b => TNF' (DF (D2 a)) (DF c) b
instance TNF' (D2 a) c b => TNF' (DE (D2 a)) (DE c) b
instance TNF' (D2 a) c b => TNF' (DD (D2 a)) (DD c) b
instance TNF' (D2 a) c b => TNF' (DC (D2 a)) (DC c) b
instance TNF' (D2 a) c b => TNF' (DB (D2 a)) (DB c) b
instance TNF' (D2 a) c b => TNF' (DA (D2 a)) (DA c) b
instance TNF' (D2 a) c b => TNF' (D9 (D2 a)) (D9 c) b
instance TNF' (D2 a) c b => TNF' (D8 (D2 a)) (D8 c) b
instance TNF' (D2 a) c b => TNF' (D7 (D2 a)) (D7 c) b
instance TNF' (D2 a) c b => TNF' (D6 (D2 a)) (D6 c) b
instance TNF' (D2 a) c b => TNF' (D5 (D2 a)) (D5 c) b
instance TNF' (D2 a) c b => TNF' (D4 (D2 a)) (D4 c) b
instance TNF' (D2 a) c b => TNF' (D3 (D2 a)) (D3 c) b
instance TNF' (D2 a) c b => TNF' (D2 (D2 a)) (D2 c) b
instance TNF' (D2 a) c b => TNF' (D1 (D2 a)) (D1 c) b
instance TNF' (D2 a) c b => TNF' (D0 (D2 a)) (D0 c) b
instance TNF' (D1 a) c b => TNF' (DF (D1 a)) (DF c) b
instance TNF' (D1 a) c b => TNF' (DE (D1 a)) (DE c) b
instance TNF' (D1 a) c b => TNF' (DD (D1 a)) (DD c) b
instance TNF' (D1 a) c b => TNF' (DC (D1 a)) (DC c) b
instance TNF' (D1 a) c b => TNF' (DB (D1 a)) (DB c) b
instance TNF' (D1 a) c b => TNF' (DA (D1 a)) (DA c) b
instance TNF' (D1 a) c b => TNF' (D9 (D1 a)) (D9 c) b
instance TNF' (D1 a) c b => TNF' (D8 (D1 a)) (D8 c) b
instance TNF' (D1 a) c b => TNF' (D7 (D1 a)) (D7 c) b
instance TNF' (D1 a) c b => TNF' (D6 (D1 a)) (D6 c) b
instance TNF' (D1 a) c b => TNF' (D5 (D1 a)) (D5 c) b
instance TNF' (D1 a) c b => TNF' (D4 (D1 a)) (D4 c) b
instance TNF' (D1 a) c b => TNF' (D3 (D1 a)) (D3 c) b
instance TNF' (D1 a) c b => TNF' (D2 (D1 a)) (D2 c) b
instance TNF' (D1 a) c b => TNF' (D1 (D1 a)) (D1 c) b
instance TNF' (D1 a) c b => TNF' (D0 (D1 a)) (D0 c) b
instance TNF' (D0 a) c b => TNF' (DF (D0 a)) (DF c) b
instance TNF' (D0 a) c b => TNF' (DE (D0 a)) (DE c) b
instance TNF' (D0 a) c b => TNF' (DD (D0 a)) (DD c) b
instance TNF' (D0 a) c b => TNF' (DC (D0 a)) (DC c) b
instance TNF' (D0 a) c b => TNF' (DB (D0 a)) (DB c) b
instance TNF' (D0 a) c b => TNF' (DA (D0 a)) (DA c) b
instance TNF' (D0 a) c b => TNF' (D9 (D0 a)) (D9 c) b
instance TNF' (D0 a) c b => TNF' (D8 (D0 a)) (D8 c) b
instance TNF' (D0 a) c b => TNF' (D7 (D0 a)) (D7 c) b
instance TNF' (D0 a) c b => TNF' (D6 (D0 a)) (D6 c) b
instance TNF' (D0 a) c b => TNF' (D5 (D0 a)) (D5 c) b
instance TNF' (D0 a) c b => TNF' (D4 (D0 a)) (D4 c) b
instance TNF' (D0 a) c b => TNF' (D3 (D0 a)) (D3 c) b
instance TNF' (D0 a) c b => TNF' (D2 (D0 a)) (D2 c) b
instance TNF' (D0 a) c b => TNF' (D1 (D0 a)) (D1 c) b
instance TNF' (DE T) (DE T) T
instance TNF' (DD T) (DD T) T
instance TNF' (DC T) (DC T) T
instance TNF' (DB T) (DB T) T
instance TNF' (DA T) (DA T) T
instance TNF' (D9 T) (D9 T) T
instance TNF' (D8 T) (D8 T) T
instance TNF' (D7 T) (D7 T) T
instance TNF' (D6 T) (D6 T) T
instance TNF' (D5 T) (D5 T) T
instance TNF' (D4 T) (D4 T) T
instance TNF' (D3 T) (D3 T) T
instance TNF' (D2 T) (D2 T) T
instance TNF' (D1 T) (D1 T) T
instance TNF' (D0 T) (D0 T) T
instance TNF' (DF F) (DF F) T
instance TNF' (DE F) (DE F) T
instance TNF' (DD F) (DD F) T
instance TNF' (DC F) (DC F) T
instance TNF' (DB F) (DB F) T
instance TNF' (DA F) (DA F) T
instance TNF' (D9 F) (D9 F) T
instance TNF' (D8 F) (D8 F) T
instance TNF' (D7 F) (D7 F) T
instance TNF' (D6 F) (D6 F) T
instance TNF' (D5 F) (D5 F) T
instance TNF' (D4 F) (D4 F) T
instance TNF' (D3 F) (D3 F) T
instance TNF' (D2 F) (D2 F) T
instance TNF' (D1 F) (D1 F) T
instance (TNF' (D0 a) c b, TIf b (D0 c) F d) => TNF' (D0 (D0 a)) d b
instance (TNF' (DF a) c b, TIf b (DF c) T d) => TNF' (DF (DF a)) d b
instance TNF' (DF T) T F
instance TNF' (D0 F) F F
instance TNF' T T F
instance TNF' F F F
instance (TEven a b, TNot b b') => TOdd a b'
instance TNot a b => TNot (DF a) (D0 b)
instance TNot a b => TNot (DE a) (D1 b)
instance TNot a b => TNot (DD a) (D2 b)
instance TNot a b => TNot (DC a) (D3 b)
instance TNot a b => TNot (DB a) (D4 b)
instance TNot a b => TNot (DA a) (D5 b)
instance TNot a b => TNot (D9 a) (D6 b)
instance TNot a b => TNot (D8 a) (D7 b)
instance TNot a b => TNot (D7 a) (D8 b)
instance TNot a b => TNot (D6 a) (D9 b)
instance TNot a b => TNot (D5 a) (DA b)
instance TNot a b => TNot (D4 a) (DB b)
instance TNot a b => TNot (D3 a) (DC b)
instance TNot a b => TNot (D2 a) (DD b)
instance TNot a b => TNot (D1 a) (DE b)
instance TNot a b => TNot (D0 a) (DF b)
instance TEven (DF a) F
instance TEven (DE a) T
instance TEven (DD a) F
instance TEven (DC a) T
instance TEven (DB a) F
instance TEven (DA a) T
instance TEven (D9 a) F
instance TEven (D8 a) T
instance TEven (D7 a) F
instance TEven (D6 a) T
instance TEven (D5 a) F
instance TEven (D4 a) T
instance TEven (D3 a) F
instance TEven (D2 a) T
instance TEven (D1 a) F
instance TEven (D0 a) T
instance TEven T F
instance TEven F T
instance (THex a, ExtF a) => THex (DF a)
instance THex a => THex (DE a)
instance THex a => THex (DD a)
instance THex a => THex (DC a)
instance THex a => THex (DB a)
instance THex a => THex (DA a)
instance THex a => THex (D9 a)
instance THex a => THex (D8 a)
instance THex a => THex (D7 a)
instance THex a => THex (D6 a)
instance THex a => THex (D5 a)
instance THex a => THex (D4 a)
instance THex a => THex (D3 a)
instance THex a => THex (D2 a)
instance THex a => THex (D1 a)
instance (THex a, Ext0 a) => THex (D0 a)
instance THex T
instance THex F
instance LSN (DF a) HF a => ExtF a
instance LSN (D0 a) H0 a => Ext0 a
instance LSN (DF (DF a)) HF (DF a)
instance LSN (DE (DE a)) HE (DE a)
instance LSN (DD (DD a)) HD (DD a)
instance LSN (DC (DC a)) HC (DC a)
instance LSN (DB (DB a)) HB (DB a)
instance LSN (DA (DA a)) HA (DA a)
instance LSN (D9 (D9 a)) H9 (D9 a)
instance LSN (D8 (D8 a)) H8 (D8 a)
instance LSN (D7 (D7 a)) H7 (D7 a)
instance LSN (D6 (D6 a)) H6 (D6 a)
instance LSN (D5 (D5 a)) H5 (D5 a)
instance LSN (D4 (D4 a)) H4 (D4 a)
instance LSN (D3 (D3 a)) H3 (D3 a)
instance LSN (D2 (D2 a)) H2 (D2 a)
instance LSN (D1 (D1 a)) H1 (D1 a)
instance LSN (D0 (D0 a)) H0 (D0 a)
instance LSN (DF F) HF F
instance LSN (DE F) HE F
instance LSN (DD F) HD F
instance LSN (DC F) HC F
instance LSN (DB F) HB F
instance LSN (DA F) HA F
instance LSN (D9 F) H9 F
instance LSN (D8 F) H8 F
instance LSN (D7 F) H7 F
instance LSN (D6 F) H6 F
instance LSN (D5 F) H5 F
instance LSN (D4 F) H4 F
instance LSN (D3 F) H3 F
instance LSN (D2 F) H2 F
instance LSN (D1 F) H1 F
instance LSN (DE T) HE T
instance LSN (DD T) HD T
instance LSN (DC T) HC T
instance LSN (DB T) HB T
instance LSN (DA T) HA T
instance LSN (D9 T) H9 T
instance LSN (D8 T) H8 T
instance LSN (D7 T) H7 T
instance LSN (D6 T) H6 T
instance LSN (D5 T) H5 T
instance LSN (D4 T) H4 T
instance LSN (D3 T) H3 T
instance LSN (D2 T) H2 T
instance LSN (D1 T) H1 T
instance LSN (D0 T) H0 T
instance LSN T HF T
instance LSN F H0 F
-- | Stage3: Define everything else. The juicier bits are then exposed via
-- Data.Type.Hex
module Data.Type.Hex.Stage3
tSucc :: TSucc n m => n -> m
tPred :: TSucc n m => m -> n
class TNeg a b | a -> b, b -> a
tNeg :: TNeg a b => a -> b
class TIsPositive n b | n -> b
tIsPositive :: TIsPositive n b => n -> b
class TIsNegative n b | n -> b
tIsNegative :: TIsNegative n b => n -> b
class TIsZero n b | n -> b
tIsZero :: TIsZero n b => n -> b
tAddC' :: TAddC' a b c d => a -> b -> c -> d
tAddF' :: TAddC' a b F d => a -> b -> d
class TNF a b | a -> b
tNF :: TNF a b => a -> b
class TAdd' a b c | a b -> c
tAdd' :: TAdd' a b c => a -> b -> c
class TSub' a b c | a b -> c
tSub' :: TSub' a b c => a -> b -> c
class TAdd a b c | a b -> c, a c -> b, b c -> a
tAdd :: TAdd a b c => a -> b -> c
tSub :: TAdd a b c => c -> a -> b
-- | $(hexT n) returns the appropriate THex instance
hexT :: Integral a => a -> Type
-- | $(hexE n) returns an undefined value of the appropriate THex instance
hexE :: Integral a => a -> Exp
-- | A simple peasant multiplier. TODO: exploit 2s complement and reverse
-- the worst cases
class TMul a b c | a b -> c
tMul :: TMul a b c => a -> b -> c
class THex2Binary' a b | a -> b, b -> a
class THex2Binary a b | a -> b
tHex2Binary :: THex2Binary a b => a -> b
class TBinary2Hex a b | a -> b
tBinary2Hex :: TBinary2Hex a b => a -> b
class THexBinary a b | a -> b, b -> a
-- | peasant exponentiator with explicit binary exponent
class TPow' a b c | a b -> c
-- | peasant exponentiator
class TPow a b c | a b -> c
tPow :: TPow a b c => a -> b -> c
instance (THex2Binary b b', TPow' a b' c) => TPow a b c
instance (TPow' a k c, TMul c c d, TMul a d e) => TPow' a (I k) e
instance (TPow' a k c, TMul c c d) => TPow' a (O k) d
instance TPow' a F (D1 F)
instance (THex2Binary a b, TBinary2Hex b a) => THexBinary a b
instance (THex2Binary' a b, TNF a a') => TBinary2Hex b a'
instance (THex2Binary' a b, TNF b b') => THex2Binary a b'
instance THex2Binary' a b => THex2Binary' (DF a) (I (I (I (I b))))
instance THex2Binary' a b => THex2Binary' (DE a) (O (I (I (I b))))
instance THex2Binary' a b => THex2Binary' (DD a) (I (O (I (I b))))
instance THex2Binary' a b => THex2Binary' (DC a) (O (O (I (I b))))
instance THex2Binary' a b => THex2Binary' (DB a) (I (I (O (I b))))
instance THex2Binary' a b => THex2Binary' (DA a) (O (I (O (I b))))
instance THex2Binary' a b => THex2Binary' (D9 a) (I (O (O (I b))))
instance THex2Binary' a b => THex2Binary' (D8 a) (O (O (O (I b))))
instance THex2Binary' a b => THex2Binary' (D7 a) (I (I (I (O b))))
instance THex2Binary' a b => THex2Binary' (D6 a) (O (I (I (O b))))
instance THex2Binary' a b => THex2Binary' (D5 a) (I (O (I (O b))))
instance THex2Binary' a b => THex2Binary' (D4 a) (O (O (I (O b))))
instance THex2Binary' a b => THex2Binary' (D3 a) (I (I (O (O b))))
instance THex2Binary' a b => THex2Binary' (D2 a) (O (I (O (O b))))
instance THex2Binary' a b => THex2Binary' (D1 a) (I (O (O (O b))))
instance THex2Binary' a b => THex2Binary' (D0 a) (O (O (O (O b))))
instance THex2Binary' T T
instance THex2Binary' F F
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' a2 aC aE, TAdd' a1 aE aF, TAdd' aF c d) => TMul a1 (DF b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' a2 aC aE, TAdd' aE c d) => TMul a1 (DE b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' a1 aC aD, TAdd' aD c d) => TMul a1 (DD b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' aC c d) => TMul a1 (DC b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a2 a8 a0, TAdd' a1 a0 aB, TAdd' aB c d) => TMul a1 (DB b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a2 a8 aA, TAdd' aA c d) => TMul a1 (DA b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a1 a8 a9, TAdd' a9 c d) => TMul a1 (D9 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a8 c d) => TMul a1 (D8 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a2 a4 a6, TAdd' a1 a6 a7, TAdd' a7 c d) => TMul a1 (D7 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a2 a4 a6, TAdd' a6 c d) => TMul a1 (D6 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a1 a4 a5, TAdd' a5 c d) => TMul a1 (D5 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a4 c d) => TMul a1 (D4 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, TAdd' a1 a2 a3, TAdd' a3 c d) => TMul a1 (D3 b) d
instance (TMul (D0 a1) b c, SHR1 H0 a1 a2, TAdd' a2 c d) => TMul a1 (D2 b) d
instance (TMul (D0 a1) b c, TAdd' a1 c d) => TMul a1 (D1 b) d
instance TMul (D0 a1) b c => TMul a1 (D0 b) c
instance TNeg a b => TMul a T b
instance TMul a F F
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (DF (DF a)) (DF (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (DF (DE a)) (DF (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (DF (DD a)) (DF (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (DF (DC a)) (DF (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (DF (DB a)) (DF (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (DF (DA a)) (DF (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (DF (D9 a)) (DF (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (DF (D8 a)) (DF (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (DF (D7 a)) (DF (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (DF (D6 a)) (DF (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (DF (D5 a)) (DF (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (DF (D4 a)) (DF (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (DF (D3 a)) (DF (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (DF (D2 a)) (DF (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (DF (D1 a)) (DF (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (DF (D0 a)) (DF (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (DF (DF a)) (DE (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (DF (DE a)) (DE (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (DF (DD a)) (DE (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (DF (DC a)) (DE (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (DF (DB a)) (DE (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (DF (DA a)) (DE (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (DF (D9 a)) (DE (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (DF (D8 a)) (DE (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (DF (D7 a)) (DE (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (DF (D6 a)) (DE (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (DF (D5 a)) (DE (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (DF (D4 a)) (DE (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (DF (D3 a)) (DE (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (DF (D2 a)) (DE (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (DF (D1 a)) (DE (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (DF (D0 a)) (DE (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (DE (DF a)) (DD (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (DE (DE a)) (DD (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (DE (DD a)) (DD (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (DE (DC a)) (DD (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (DE (DB a)) (DD (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (DE (DA a)) (DD (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (DE (D9 a)) (DD (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (DE (D8 a)) (DD (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (DE (D7 a)) (DD (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (DE (D6 a)) (DD (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (DE (D5 a)) (DD (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (DE (D4 a)) (DD (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (DE (D3 a)) (DD (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (DE (D2 a)) (DD (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (DE (D1 a)) (DD (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (DE (D0 a)) (DD (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (DE (DF a)) (DC (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (DE (DE a)) (DC (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (DE (DD a)) (DC (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (DE (DC a)) (DC (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (DE (DB a)) (DC (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (DE (DA a)) (DC (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (DE (D9 a)) (DC (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (DE (D8 a)) (DC (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (DE (D7 a)) (DC (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (DE (D6 a)) (DC (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (DE (D5 a)) (DC (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (DE (D4 a)) (DC (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (DE (D3 a)) (DC (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (DE (D2 a)) (DC (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (DE (D1 a)) (DC (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (DE (D0 a)) (DC (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (DD (DF a)) (DB (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (DD (DE a)) (DB (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (DD (DD a)) (DB (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (DD (DC a)) (DB (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (DD (DB a)) (DB (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (DD (DA a)) (DB (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (DD (D9 a)) (DB (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (DD (D8 a)) (DB (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (DD (D7 a)) (DB (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (DD (D6 a)) (DB (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (DD (D5 a)) (DB (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (DD (D4 a)) (DB (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (DD (D3 a)) (DB (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (DD (D2 a)) (DB (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (DD (D1 a)) (DB (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (DD (D0 a)) (DB (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (DD (DF a)) (DA (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (DD (DE a)) (DA (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (DD (DD a)) (DA (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (DD (DC a)) (DA (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (DD (DB a)) (DA (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (DD (DA a)) (DA (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (DD (D9 a)) (DA (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (DD (D8 a)) (DA (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (DD (D7 a)) (DA (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (DD (D6 a)) (DA (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (DD (D5 a)) (DA (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (DD (D4 a)) (DA (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (DD (D3 a)) (DA (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (DD (D2 a)) (DA (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (DD (D1 a)) (DA (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (DD (D0 a)) (DA (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (DC (DF a)) (D9 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (DC (DE a)) (D9 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (DC (DD a)) (D9 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (DC (DC a)) (D9 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (DC (DB a)) (D9 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (DC (DA a)) (D9 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (DC (D9 a)) (D9 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (DC (D8 a)) (D9 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (DC (D7 a)) (D9 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (DC (D6 a)) (D9 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (DC (D5 a)) (D9 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (DC (D4 a)) (D9 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (DC (D3 a)) (D9 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (DC (D2 a)) (D9 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (DC (D1 a)) (D9 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (DC (D0 a)) (D9 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (DC (DF a)) (D8 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (DC (DE a)) (D8 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (DC (DD a)) (D8 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (DC (DC a)) (D8 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (DC (DB a)) (D8 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (DC (DA a)) (D8 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (DC (D9 a)) (D8 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (DC (D8 a)) (D8 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (DC (D7 a)) (D8 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (DC (D6 a)) (D8 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (DC (D5 a)) (D8 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (DC (D4 a)) (D8 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (DC (D3 a)) (D8 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (DC (D2 a)) (D8 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (DC (D1 a)) (D8 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (DC (D0 a)) (D8 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (DB (DF a)) (D7 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (DB (DE a)) (D7 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (DB (DD a)) (D7 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (DB (DC a)) (D7 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (DB (DB a)) (D7 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (DB (DA a)) (D7 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (DB (D9 a)) (D7 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (DB (D8 a)) (D7 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (DB (D7 a)) (D7 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (DB (D6 a)) (D7 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (DB (D5 a)) (D7 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (DB (D4 a)) (D7 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (DB (D3 a)) (D7 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (DB (D2 a)) (D7 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (DB (D1 a)) (D7 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (DB (D0 a)) (D7 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (DB (DF a)) (D6 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (DB (DE a)) (D6 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (DB (DD a)) (D6 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (DB (DC a)) (D6 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (DB (DB a)) (D6 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (DB (DA a)) (D6 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (DB (D9 a)) (D6 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (DB (D8 a)) (D6 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (DB (D7 a)) (D6 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (DB (D6 a)) (D6 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (DB (D5 a)) (D6 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (DB (D4 a)) (D6 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (DB (D3 a)) (D6 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (DB (D2 a)) (D6 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (DB (D1 a)) (D6 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (DB (D0 a)) (D6 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (DA (DF a)) (D5 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (DA (DE a)) (D5 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (DA (DD a)) (D5 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (DA (DC a)) (D5 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (DA (DB a)) (D5 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (DA (DA a)) (D5 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (DA (D9 a)) (D5 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (DA (D8 a)) (D5 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (DA (D7 a)) (D5 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (DA (D6 a)) (D5 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (DA (D5 a)) (D5 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (DA (D4 a)) (D5 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (DA (D3 a)) (D5 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (DA (D2 a)) (D5 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (DA (D1 a)) (D5 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (DA (D0 a)) (D5 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (DA (DF a)) (D4 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (DA (DE a)) (D4 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (DA (DD a)) (D4 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (DA (DC a)) (D4 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (DA (DB a)) (D4 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (DA (DA a)) (D4 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (DA (D9 a)) (D4 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (DA (D8 a)) (D4 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (DA (D7 a)) (D4 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (DA (D6 a)) (D4 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (DA (D5 a)) (D4 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (DA (D4 a)) (D4 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (DA (D3 a)) (D4 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (DA (D2 a)) (D4 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (DA (D1 a)) (D4 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (DA (D0 a)) (D4 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (D9 (DF a)) (D3 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (D9 (DE a)) (D3 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (D9 (DD a)) (D3 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (D9 (DC a)) (D3 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (D9 (DB a)) (D3 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (D9 (DA a)) (D3 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (D9 (D9 a)) (D3 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (D9 (D8 a)) (D3 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (D9 (D7 a)) (D3 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (D9 (D6 a)) (D3 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (D9 (D5 a)) (D3 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (D9 (D4 a)) (D3 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (D9 (D3 a)) (D3 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (D9 (D2 a)) (D3 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (D9 (D1 a)) (D3 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (D9 (D0 a)) (D3 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (D9 (DF a)) (D2 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (D9 (DE a)) (D2 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (D9 (DD a)) (D2 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (D9 (DC a)) (D2 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (D9 (DB a)) (D2 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (D9 (DA a)) (D2 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (D9 (D9 a)) (D2 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (D9 (D8 a)) (D2 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (D9 (D7 a)) (D2 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (D9 (D6 a)) (D2 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (D9 (D5 a)) (D2 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (D9 (D4 a)) (D2 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (D9 (D3 a)) (D2 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (D9 (D2 a)) (D2 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (D9 (D1 a)) (D2 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (D9 (D0 a)) (D2 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H1 (D8 (DF a)) (D1 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H1 (D8 (DE a)) (D1 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H1 (D8 (DD a)) (D1 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H1 (D8 (DC a)) (D1 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H1 (D8 (DB a)) (D1 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H1 (D8 (DA a)) (D1 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H1 (D8 (D9 a)) (D1 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H1 (D8 (D8 a)) (D1 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H1 (D8 (D7 a)) (D1 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H1 (D8 (D6 a)) (D1 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H1 (D8 (D5 a)) (D1 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H1 (D8 (D4 a)) (D1 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H1 (D8 (D3 a)) (D1 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H1 (D8 (D2 a)) (D1 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H1 (D8 (D1 a)) (D1 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H1 (D8 (D0 a)) (D1 (D1 b))
instance SHR1 H1 (DF a) (DF b) => SHR1 H0 (D8 (DF a)) (D0 (DF b))
instance SHR1 H1 (DE a) (DD b) => SHR1 H0 (D8 (DE a)) (D0 (DD b))
instance SHR1 H1 (DD a) (DB b) => SHR1 H0 (D8 (DD a)) (D0 (DB b))
instance SHR1 H1 (DC a) (D9 b) => SHR1 H0 (D8 (DC a)) (D0 (D9 b))
instance SHR1 H1 (DB a) (D7 b) => SHR1 H0 (D8 (DB a)) (D0 (D7 b))
instance SHR1 H1 (DA a) (D5 b) => SHR1 H0 (D8 (DA a)) (D0 (D5 b))
instance SHR1 H1 (D9 a) (D3 b) => SHR1 H0 (D8 (D9 a)) (D0 (D3 b))
instance SHR1 H1 (D8 a) (D1 b) => SHR1 H0 (D8 (D8 a)) (D0 (D1 b))
instance SHR1 H1 (D7 a) (DF b) => SHR1 H0 (D8 (D7 a)) (D0 (DF b))
instance SHR1 H1 (D6 a) (DD b) => SHR1 H0 (D8 (D6 a)) (D0 (DD b))
instance SHR1 H1 (D5 a) (DB b) => SHR1 H0 (D8 (D5 a)) (D0 (DB b))
instance SHR1 H1 (D4 a) (D9 b) => SHR1 H0 (D8 (D4 a)) (D0 (D9 b))
instance SHR1 H1 (D3 a) (D7 b) => SHR1 H0 (D8 (D3 a)) (D0 (D7 b))
instance SHR1 H1 (D2 a) (D5 b) => SHR1 H0 (D8 (D2 a)) (D0 (D5 b))
instance SHR1 H1 (D1 a) (D3 b) => SHR1 H0 (D8 (D1 a)) (D0 (D3 b))
instance SHR1 H1 (D0 a) (D1 b) => SHR1 H0 (D8 (D0 a)) (D0 (D1 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D7 (DF a)) (DF (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D7 (DE a)) (DF (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D7 (DD a)) (DF (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D7 (DC a)) (DF (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D7 (DB a)) (DF (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D7 (DA a)) (DF (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D7 (D9 a)) (DF (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D7 (D8 a)) (DF (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D7 (D7 a)) (DF (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D7 (D6 a)) (DF (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D7 (D5 a)) (DF (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D7 (D4 a)) (DF (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D7 (D3 a)) (DF (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D7 (D2 a)) (DF (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D7 (D1 a)) (DF (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D7 (D0 a)) (DF (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D7 (DF a)) (DE (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D7 (DE a)) (DE (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D7 (DD a)) (DE (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D7 (DC a)) (DE (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D7 (DB a)) (DE (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D7 (DA a)) (DE (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D7 (D9 a)) (DE (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D7 (D8 a)) (DE (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D7 (D7 a)) (DE (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D7 (D6 a)) (DE (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D7 (D5 a)) (DE (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D7 (D4 a)) (DE (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D7 (D3 a)) (DE (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D7 (D2 a)) (DE (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D7 (D1 a)) (DE (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D7 (D0 a)) (DE (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D6 (DF a)) (DD (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D6 (DE a)) (DD (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D6 (DD a)) (DD (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D6 (DC a)) (DD (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D6 (DB a)) (DD (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D6 (DA a)) (DD (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D6 (D9 a)) (DD (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D6 (D8 a)) (DD (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D6 (D7 a)) (DD (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D6 (D6 a)) (DD (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D6 (D5 a)) (DD (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D6 (D4 a)) (DD (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D6 (D3 a)) (DD (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D6 (D2 a)) (DD (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D6 (D1 a)) (DD (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D6 (D0 a)) (DD (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D6 (DF a)) (DC (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D6 (DE a)) (DC (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D6 (DD a)) (DC (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D6 (DC a)) (DC (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D6 (DB a)) (DC (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D6 (DA a)) (DC (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D6 (D9 a)) (DC (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D6 (D8 a)) (DC (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D6 (D7 a)) (DC (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D6 (D6 a)) (DC (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D6 (D5 a)) (DC (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D6 (D4 a)) (DC (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D6 (D3 a)) (DC (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D6 (D2 a)) (DC (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D6 (D1 a)) (DC (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D6 (D0 a)) (DC (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D5 (DF a)) (DB (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D5 (DE a)) (DB (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D5 (DD a)) (DB (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D5 (DC a)) (DB (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D5 (DB a)) (DB (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D5 (DA a)) (DB (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D5 (D9 a)) (DB (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D5 (D8 a)) (DB (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D5 (D7 a)) (DB (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D5 (D6 a)) (DB (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D5 (D5 a)) (DB (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D5 (D4 a)) (DB (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D5 (D3 a)) (DB (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D5 (D2 a)) (DB (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D5 (D1 a)) (DB (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D5 (D0 a)) (DB (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D5 (DF a)) (DA (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D5 (DE a)) (DA (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D5 (DD a)) (DA (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D5 (DC a)) (DA (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D5 (DB a)) (DA (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D5 (DA a)) (DA (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D5 (D9 a)) (DA (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D5 (D8 a)) (DA (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D5 (D7 a)) (DA (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D5 (D6 a)) (DA (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D5 (D5 a)) (DA (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D5 (D4 a)) (DA (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D5 (D3 a)) (DA (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D5 (D2 a)) (DA (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D5 (D1 a)) (DA (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D5 (D0 a)) (DA (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D4 (DF a)) (D9 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D4 (DE a)) (D9 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D4 (DD a)) (D9 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D4 (DC a)) (D9 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D4 (DB a)) (D9 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D4 (DA a)) (D9 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D4 (D9 a)) (D9 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D4 (D8 a)) (D9 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D4 (D7 a)) (D9 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D4 (D6 a)) (D9 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D4 (D5 a)) (D9 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D4 (D4 a)) (D9 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D4 (D3 a)) (D9 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D4 (D2 a)) (D9 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D4 (D1 a)) (D9 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D4 (D0 a)) (D9 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D4 (DF a)) (D8 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D4 (DE a)) (D8 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D4 (DD a)) (D8 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D4 (DC a)) (D8 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D4 (DB a)) (D8 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D4 (DA a)) (D8 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D4 (D9 a)) (D8 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D4 (D8 a)) (D8 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D4 (D7 a)) (D8 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D4 (D6 a)) (D8 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D4 (D5 a)) (D8 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D4 (D4 a)) (D8 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D4 (D3 a)) (D8 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D4 (D2 a)) (D8 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D4 (D1 a)) (D8 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D4 (D0 a)) (D8 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D3 (DF a)) (D7 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D3 (DE a)) (D7 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D3 (DD a)) (D7 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D3 (DC a)) (D7 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D3 (DB a)) (D7 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D3 (DA a)) (D7 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D3 (D9 a)) (D7 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D3 (D8 a)) (D7 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D3 (D7 a)) (D7 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D3 (D6 a)) (D7 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D3 (D5 a)) (D7 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D3 (D4 a)) (D7 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D3 (D3 a)) (D7 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D3 (D2 a)) (D7 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D3 (D1 a)) (D7 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D3 (D0 a)) (D7 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D3 (DF a)) (D6 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D3 (DE a)) (D6 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D3 (DD a)) (D6 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D3 (DC a)) (D6 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D3 (DB a)) (D6 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D3 (DA a)) (D6 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D3 (D9 a)) (D6 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D3 (D8 a)) (D6 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D3 (D7 a)) (D6 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D3 (D6 a)) (D6 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D3 (D5 a)) (D6 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D3 (D4 a)) (D6 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D3 (D3 a)) (D6 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D3 (D2 a)) (D6 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D3 (D1 a)) (D6 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D3 (D0 a)) (D6 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D2 (DF a)) (D5 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D2 (DE a)) (D5 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D2 (DD a)) (D5 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D2 (DC a)) (D5 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D2 (DB a)) (D5 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D2 (DA a)) (D5 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D2 (D9 a)) (D5 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D2 (D8 a)) (D5 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D2 (D7 a)) (D5 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D2 (D6 a)) (D5 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D2 (D5 a)) (D5 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D2 (D4 a)) (D5 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D2 (D3 a)) (D5 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D2 (D2 a)) (D5 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D2 (D1 a)) (D5 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D2 (D0 a)) (D5 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D2 (DF a)) (D4 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D2 (DE a)) (D4 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D2 (DD a)) (D4 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D2 (DC a)) (D4 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D2 (DB a)) (D4 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D2 (DA a)) (D4 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D2 (D9 a)) (D4 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D2 (D8 a)) (D4 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D2 (D7 a)) (D4 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D2 (D6 a)) (D4 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D2 (D5 a)) (D4 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D2 (D4 a)) (D4 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D2 (D3 a)) (D4 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D2 (D2 a)) (D4 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D2 (D1 a)) (D4 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D2 (D0 a)) (D4 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D1 (DF a)) (D3 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D1 (DE a)) (D3 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D1 (DD a)) (D3 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D1 (DC a)) (D3 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D1 (DB a)) (D3 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D1 (DA a)) (D3 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D1 (D9 a)) (D3 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D1 (D8 a)) (D3 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D1 (D7 a)) (D3 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D1 (D6 a)) (D3 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D1 (D5 a)) (D3 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D1 (D4 a)) (D3 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D1 (D3 a)) (D3 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D1 (D2 a)) (D3 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D1 (D1 a)) (D3 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D1 (D0 a)) (D3 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D1 (DF a)) (D2 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D1 (DE a)) (D2 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D1 (DD a)) (D2 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D1 (DC a)) (D2 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D1 (DB a)) (D2 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D1 (DA a)) (D2 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D1 (D9 a)) (D2 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D1 (D8 a)) (D2 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D1 (D7 a)) (D2 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D1 (D6 a)) (D2 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D1 (D5 a)) (D2 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D1 (D4 a)) (D2 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D1 (D3 a)) (D2 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D1 (D2 a)) (D2 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D1 (D1 a)) (D2 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D1 (D0 a)) (D2 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H1 (D0 (DF a)) (D1 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H1 (D0 (DE a)) (D1 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H1 (D0 (DD a)) (D1 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H1 (D0 (DC a)) (D1 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H1 (D0 (DB a)) (D1 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H1 (D0 (DA a)) (D1 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H1 (D0 (D9 a)) (D1 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H1 (D0 (D8 a)) (D1 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H1 (D0 (D7 a)) (D1 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H1 (D0 (D6 a)) (D1 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H1 (D0 (D5 a)) (D1 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H1 (D0 (D4 a)) (D1 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H1 (D0 (D3 a)) (D1 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H1 (D0 (D2 a)) (D1 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H1 (D0 (D1 a)) (D1 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H1 (D0 (D0 a)) (D1 (D0 b))
instance SHR1 H0 (DF a) (DE b) => SHR1 H0 (D0 (DF a)) (D0 (DE b))
instance SHR1 H0 (DE a) (DC b) => SHR1 H0 (D0 (DE a)) (D0 (DC b))
instance SHR1 H0 (DD a) (DA b) => SHR1 H0 (D0 (DD a)) (D0 (DA b))
instance SHR1 H0 (DC a) (D8 b) => SHR1 H0 (D0 (DC a)) (D0 (D8 b))
instance SHR1 H0 (DB a) (D6 b) => SHR1 H0 (D0 (DB a)) (D0 (D6 b))
instance SHR1 H0 (DA a) (D4 b) => SHR1 H0 (D0 (DA a)) (D0 (D4 b))
instance SHR1 H0 (D9 a) (D2 b) => SHR1 H0 (D0 (D9 a)) (D0 (D2 b))
instance SHR1 H0 (D8 a) (D0 b) => SHR1 H0 (D0 (D8 a)) (D0 (D0 b))
instance SHR1 H0 (D7 a) (DE b) => SHR1 H0 (D0 (D7 a)) (D0 (DE b))
instance SHR1 H0 (D6 a) (DC b) => SHR1 H0 (D0 (D6 a)) (D0 (DC b))
instance SHR1 H0 (D5 a) (DA b) => SHR1 H0 (D0 (D5 a)) (D0 (DA b))
instance SHR1 H0 (D4 a) (D8 b) => SHR1 H0 (D0 (D4 a)) (D0 (D8 b))
instance SHR1 H0 (D3 a) (D6 b) => SHR1 H0 (D0 (D3 a)) (D0 (D6 b))
instance SHR1 H0 (D2 a) (D4 b) => SHR1 H0 (D0 (D2 a)) (D0 (D4 b))
instance SHR1 H0 (D1 a) (D2 b) => SHR1 H0 (D0 (D1 a)) (D0 (D2 b))
instance SHR1 H0 (D0 a) (D0 b) => SHR1 H0 (D0 (D0 a)) (D0 (D0 b))
instance SHR1 H1 (DF F) (DF (D1 F))
instance SHR1 H1 (DF T) (DF T)
instance SHR1 H0 (DF F) (DE (D1 F))
instance SHR1 H0 (DF T) (DE T)
instance SHR1 H1 (DE F) (DD (D1 F))
instance SHR1 H1 (DE T) (DD T)
instance SHR1 H0 (DE F) (DC (D1 F))
instance SHR1 H0 (DE T) (DC T)
instance SHR1 H1 (DD F) (DB (D1 F))
instance SHR1 H1 (DD T) (DB T)
instance SHR1 H0 (DD F) (DA (D1 F))
instance SHR1 H0 (DD T) (DA T)
instance SHR1 H1 (DC F) (D9 (D1 F))
instance SHR1 H1 (DC T) (D9 T)
instance SHR1 H0 (DC F) (D8 (D1 F))
instance SHR1 H0 (DC T) (D8 T)
instance SHR1 H1 (DB F) (D7 (D1 F))
instance SHR1 H1 (DB T) (D7 T)
instance SHR1 H0 (DB F) (D6 (D1 F))
instance SHR1 H0 (DB T) (D6 T)
instance SHR1 H1 (DA F) (D5 (D1 F))
instance SHR1 H1 (DA T) (D5 T)
instance SHR1 H0 (DA F) (D4 (D1 F))
instance SHR1 H0 (DA T) (D4 T)
instance SHR1 H1 (D9 F) (D3 (D1 F))
instance SHR1 H1 (D9 T) (D3 T)
instance SHR1 H0 (D9 F) (D2 (D1 F))
instance SHR1 H0 (D9 T) (D2 T)
instance SHR1 H1 (D8 F) (D1 (D1 F))
instance SHR1 H1 (D8 T) (D1 T)
instance SHR1 H0 (D8 F) (D0 (D1 F))
instance SHR1 H0 (D8 T) (D0 T)
instance SHR1 H1 (D7 F) (DF F)
instance SHR1 H1 (D7 T) (DF (DE T))
instance SHR1 H0 (D7 F) (DE F)
instance SHR1 H0 (D7 T) (DE (DE T))
instance SHR1 H1 (D6 F) (DD F)
instance SHR1 H1 (D6 T) (DD (DE T))
instance SHR1 H0 (D6 F) (DC F)
instance SHR1 H0 (D6 T) (DC (DE T))
instance SHR1 H1 (D5 F) (DB F)
instance SHR1 H1 (D5 T) (DB (DE T))
instance SHR1 H0 (D5 F) (DA F)
instance SHR1 H0 (D5 T) (DA (DE T))
instance SHR1 H1 (D4 F) (D9 F)
instance SHR1 H1 (D4 T) (D9 (DE T))
instance SHR1 H0 (D4 F) (D8 F)
instance SHR1 H0 (D4 T) (D8 (DE T))
instance SHR1 H1 (D3 F) (D7 F)
instance SHR1 H1 (D3 T) (D7 (DE T))
instance SHR1 H0 (D3 F) (D6 F)
instance SHR1 H0 (D3 T) (D6 (DE T))
instance SHR1 H1 (D2 F) (D5 F)
instance SHR1 H1 (D2 T) (D5 (DE T))
instance SHR1 H0 (D2 F) (D4 F)
instance SHR1 H0 (D2 T) (D4 (DE T))
instance SHR1 H1 (D1 F) (D3 F)
instance SHR1 H1 (D1 T) (D3 (DE T))
instance SHR1 H0 (D1 F) (D2 F)
instance SHR1 H0 (D1 T) (D2 (DE T))
instance SHR1 H1 (D0 F) (D1 F)
instance SHR1 H1 (D0 T) (D1 (DE T))
instance SHR1 H0 (D0 F) (D0 F)
instance SHR1 H0 (D0 T) (D0 (DE T))
instance SHR1 H1 T (DE T)
instance SHR1 H0 T (DE T)
instance SHR1 H1 F (D1 F)
instance SHR1 H0 F F
instance THex (DF a) => Show (DF a)
instance THex (DE a) => Show (DE a)
instance THex (DD a) => Show (DD a)
instance THex (DC a) => Show (DC a)
instance THex (DB a) => Show (DB a)
instance THex (DA a) => Show (DA a)
instance THex (D9 a) => Show (D9 a)
instance THex (D8 a) => Show (D8 a)
instance THex (D7 a) => Show (D7 a)
instance THex (D6 a) => Show (D6 a)
instance THex (D5 a) => Show (D5 a)
instance THex (D4 a) => Show (D4 a)
instance THex (D3 a) => Show (D3 a)
instance THex (D2 a) => Show (D2 a)
instance THex (D1 a) => Show (D1 a)
instance THex (D0 a) => Show (D0 a)
instance (TAdd' a b c, TNeg b b', TAdd' c b' a, TNeg a a', TAdd' c a' b) => TAdd a b c
instance (TNeg b b', TAdd' a b' c) => TSub' a b c
instance (TAddC' a b F d, TNF d d') => TAdd' a b d'
instance TNF' a b c => TNF a b
instance TAddC' a b T c => TAddC' (DF a) (DF b) T (DF c)
instance TAddC' a b T c => TAddC' (DF a) (DF b) F (DE c)
instance TAddC' a b T c => TAddC' (DF a) (DE b) T (DE c)
instance TAddC' a b T c => TAddC' (DF a) (DE b) F (DD c)
instance TAddC' a b T c => TAddC' (DF a) (DD b) T (DD c)
instance TAddC' a b T c => TAddC' (DF a) (DD b) F (DC c)
instance TAddC' a b T c => TAddC' (DF a) (DC b) T (DC c)
instance TAddC' a b T c => TAddC' (DF a) (DC b) F (DB c)
instance TAddC' a b T c => TAddC' (DF a) (DB b) T (DB c)
instance TAddC' a b T c => TAddC' (DF a) (DB b) F (DA c)
instance TAddC' a b T c => TAddC' (DF a) (DA b) T (DA c)
instance TAddC' a b T c => TAddC' (DF a) (DA b) F (D9 c)
instance TAddC' a b T c => TAddC' (DF a) (D9 b) T (D9 c)
instance TAddC' a b T c => TAddC' (DF a) (D9 b) F (D8 c)
instance TAddC' a b T c => TAddC' (DF a) (D8 b) T (D8 c)
instance TAddC' a b T c => TAddC' (DF a) (D8 b) F (D7 c)
instance TAddC' a b T c => TAddC' (DF a) (D7 b) T (D7 c)
instance TAddC' a b T c => TAddC' (DF a) (D7 b) F (D6 c)
instance TAddC' a b T c => TAddC' (DF a) (D6 b) T (D6 c)
instance TAddC' a b T c => TAddC' (DF a) (D6 b) F (D5 c)
instance TAddC' a b T c => TAddC' (DF a) (D5 b) T (D5 c)
instance TAddC' a b T c => TAddC' (DF a) (D5 b) F (D4 c)
instance TAddC' a b T c => TAddC' (DF a) (D4 b) T (D4 c)
instance TAddC' a b T c => TAddC' (DF a) (D4 b) F (D3 c)
instance TAddC' a b T c => TAddC' (DF a) (D3 b) T (D3 c)
instance TAddC' a b T c => TAddC' (DF a) (D3 b) F (D2 c)
instance TAddC' a b T c => TAddC' (DF a) (D2 b) T (D2 c)
instance TAddC' a b T c => TAddC' (DF a) (D2 b) F (D1 c)
instance TAddC' a b T c => TAddC' (DF a) (D1 b) T (D1 c)
instance TAddC' a b T c => TAddC' (DF a) (D1 b) F (D0 c)
instance TAddC' a b T c => TAddC' (DF a) (D0 b) T (D0 c)
instance TAddC' a b F c => TAddC' (DF a) (D0 b) F (DF c)
instance TAddC' a b T c => TAddC' (DE a) (DF b) T (DE c)
instance TAddC' a b T c => TAddC' (DE a) (DF b) F (DD c)
instance TAddC' a b T c => TAddC' (DE a) (DE b) T (DD c)
instance TAddC' a b T c => TAddC' (DE a) (DE b) F (DC c)
instance TAddC' a b T c => TAddC' (DE a) (DD b) T (DC c)
instance TAddC' a b T c => TAddC' (DE a) (DD b) F (DB c)
instance TAddC' a b T c => TAddC' (DE a) (DC b) T (DB c)
instance TAddC' a b T c => TAddC' (DE a) (DC b) F (DA c)
instance TAddC' a b T c => TAddC' (DE a) (DB b) T (DA c)
instance TAddC' a b T c => TAddC' (DE a) (DB b) F (D9 c)
instance TAddC' a b T c => TAddC' (DE a) (DA b) T (D9 c)
instance TAddC' a b T c => TAddC' (DE a) (DA b) F (D8 c)
instance TAddC' a b T c => TAddC' (DE a) (D9 b) T (D8 c)
instance TAddC' a b T c => TAddC' (DE a) (D9 b) F (D7 c)
instance TAddC' a b T c => TAddC' (DE a) (D8 b) T (D7 c)
instance TAddC' a b T c => TAddC' (DE a) (D8 b) F (D6 c)
instance TAddC' a b T c => TAddC' (DE a) (D7 b) T (D6 c)
instance TAddC' a b T c => TAddC' (DE a) (D7 b) F (D5 c)
instance TAddC' a b T c => TAddC' (DE a) (D6 b) T (D5 c)
instance TAddC' a b T c => TAddC' (DE a) (D6 b) F (D4 c)
instance TAddC' a b T c => TAddC' (DE a) (D5 b) T (D4 c)
instance TAddC' a b T c => TAddC' (DE a) (D5 b) F (D3 c)
instance TAddC' a b T c => TAddC' (DE a) (D4 b) T (D3 c)
instance TAddC' a b T c => TAddC' (DE a) (D4 b) F (D2 c)
instance TAddC' a b T c => TAddC' (DE a) (D3 b) T (D2 c)
instance TAddC' a b T c => TAddC' (DE a) (D3 b) F (D1 c)
instance TAddC' a b T c => TAddC' (DE a) (D2 b) T (D1 c)
instance TAddC' a b T c => TAddC' (DE a) (D2 b) F (D0 c)
instance TAddC' a b T c => TAddC' (DE a) (D1 b) T (D0 c)
instance TAddC' a b F c => TAddC' (DE a) (D1 b) F (DF c)
instance TAddC' a b F c => TAddC' (DE a) (D0 b) T (DF c)
instance TAddC' a b F c => TAddC' (DE a) (D0 b) F (DE c)
instance TAddC' a b T c => TAddC' (DD a) (DF b) T (DD c)
instance TAddC' a b T c => TAddC' (DD a) (DF b) F (DC c)
instance TAddC' a b T c => TAddC' (DD a) (DE b) T (DC c)
instance TAddC' a b T c => TAddC' (DD a) (DE b) F (DB c)
instance TAddC' a b T c => TAddC' (DD a) (DD b) T (DB c)
instance TAddC' a b T c => TAddC' (DD a) (DD b) F (DA c)
instance TAddC' a b T c => TAddC' (DD a) (DC b) T (DA c)
instance TAddC' a b T c => TAddC' (DD a) (DC b) F (D9 c)
instance TAddC' a b T c => TAddC' (DD a) (DB b) T (D9 c)
instance TAddC' a b T c => TAddC' (DD a) (DB b) F (D8 c)
instance TAddC' a b T c => TAddC' (DD a) (DA b) T (D8 c)
instance TAddC' a b T c => TAddC' (DD a) (DA b) F (D7 c)
instance TAddC' a b T c => TAddC' (DD a) (D9 b) T (D7 c)
instance TAddC' a b T c => TAddC' (DD a) (D9 b) F (D6 c)
instance TAddC' a b T c => TAddC' (DD a) (D8 b) T (D6 c)
instance TAddC' a b T c => TAddC' (DD a) (D8 b) F (D5 c)
instance TAddC' a b T c => TAddC' (DD a) (D7 b) T (D5 c)
instance TAddC' a b T c => TAddC' (DD a) (D7 b) F (D4 c)
instance TAddC' a b T c => TAddC' (DD a) (D6 b) T (D4 c)
instance TAddC' a b T c => TAddC' (DD a) (D6 b) F (D3 c)
instance TAddC' a b T c => TAddC' (DD a) (D5 b) T (D3 c)
instance TAddC' a b T c => TAddC' (DD a) (D5 b) F (D2 c)
instance TAddC' a b T c => TAddC' (DD a) (D4 b) T (D2 c)
instance TAddC' a b T c => TAddC' (DD a) (D4 b) F (D1 c)
instance TAddC' a b T c => TAddC' (DD a) (D3 b) T (D1 c)
instance TAddC' a b T c => TAddC' (DD a) (D3 b) F (D0 c)
instance TAddC' a b T c => TAddC' (DD a) (D2 b) T (D0 c)
instance TAddC' a b F c => TAddC' (DD a) (D2 b) F (DF c)
instance TAddC' a b F c => TAddC' (DD a) (D1 b) T (DF c)
instance TAddC' a b F c => TAddC' (DD a) (D1 b) F (DE c)
instance TAddC' a b F c => TAddC' (DD a) (D0 b) T (DE c)
instance TAddC' a b F c => TAddC' (DD a) (D0 b) F (DD c)
instance TAddC' a b T c => TAddC' (DC a) (DF b) T (DC c)
instance TAddC' a b T c => TAddC' (DC a) (DF b) F (DB c)
instance TAddC' a b T c => TAddC' (DC a) (DE b) T (DB c)
instance TAddC' a b T c => TAddC' (DC a) (DE b) F (DA c)
instance TAddC' a b T c => TAddC' (DC a) (DD b) T (DA c)
instance TAddC' a b T c => TAddC' (DC a) (DD b) F (D9 c)
instance TAddC' a b T c => TAddC' (DC a) (DC b) T (D9 c)
instance TAddC' a b T c => TAddC' (DC a) (DC b) F (D8 c)
instance TAddC' a b T c => TAddC' (DC a) (DB b) T (D8 c)
instance TAddC' a b T c => TAddC' (DC a) (DB b) F (D7 c)
instance TAddC' a b T c => TAddC' (DC a) (DA b) T (D7 c)
instance TAddC' a b T c => TAddC' (DC a) (DA b) F (D6 c)
instance TAddC' a b T c => TAddC' (DC a) (D9 b) T (D6 c)
instance TAddC' a b T c => TAddC' (DC a) (D9 b) F (D5 c)
instance TAddC' a b T c => TAddC' (DC a) (D8 b) T (D5 c)
instance TAddC' a b T c => TAddC' (DC a) (D8 b) F (D4 c)
instance TAddC' a b T c => TAddC' (DC a) (D7 b) T (D4 c)
instance TAddC' a b T c => TAddC' (DC a) (D7 b) F (D3 c)
instance TAddC' a b T c => TAddC' (DC a) (D6 b) T (D3 c)
instance TAddC' a b T c => TAddC' (DC a) (D6 b) F (D2 c)
instance TAddC' a b T c => TAddC' (DC a) (D5 b) T (D2 c)
instance TAddC' a b T c => TAddC' (DC a) (D5 b) F (D1 c)
instance TAddC' a b T c => TAddC' (DC a) (D4 b) T (D1 c)
instance TAddC' a b T c => TAddC' (DC a) (D4 b) F (D0 c)
instance TAddC' a b T c => TAddC' (DC a) (D3 b) T (D0 c)
instance TAddC' a b F c => TAddC' (DC a) (D3 b) F (DF c)
instance TAddC' a b F c => TAddC' (DC a) (D2 b) T (DF c)
instance TAddC' a b F c => TAddC' (DC a) (D2 b) F (DE c)
instance TAddC' a b F c => TAddC' (DC a) (D1 b) T (DE c)
instance TAddC' a b F c => TAddC' (DC a) (D1 b) F (DD c)
instance TAddC' a b F c => TAddC' (DC a) (D0 b) T (DD c)
instance TAddC' a b F c => TAddC' (DC a) (D0 b) F (DC c)
instance TAddC' a b T c => TAddC' (DB a) (DF b) T (DB c)
instance TAddC' a b T c => TAddC' (DB a) (DF b) F (DA c)
instance TAddC' a b T c => TAddC' (DB a) (DE b) T (DA c)
instance TAddC' a b T c => TAddC' (DB a) (DE b) F (D9 c)
instance TAddC' a b T c => TAddC' (DB a) (DD b) T (D9 c)
instance TAddC' a b T c => TAddC' (DB a) (DD b) F (D8 c)
instance TAddC' a b T c => TAddC' (DB a) (DC b) T (D8 c)
instance TAddC' a b T c => TAddC' (DB a) (DC b) F (D7 c)
instance TAddC' a b T c => TAddC' (DB a) (DB b) T (D7 c)
instance TAddC' a b T c => TAddC' (DB a) (DB b) F (D6 c)
instance TAddC' a b T c => TAddC' (DB a) (DA b) T (D6 c)
instance TAddC' a b T c => TAddC' (DB a) (DA b) F (D5 c)
instance TAddC' a b T c => TAddC' (DB a) (D9 b) T (D5 c)
instance TAddC' a b T c => TAddC' (DB a) (D9 b) F (D4 c)
instance TAddC' a b T c => TAddC' (DB a) (D8 b) T (D4 c)
instance TAddC' a b T c => TAddC' (DB a) (D8 b) F (D3 c)
instance TAddC' a b T c => TAddC' (DB a) (D7 b) T (D3 c)
instance TAddC' a b T c => TAddC' (DB a) (D7 b) F (D2 c)
instance TAddC' a b T c => TAddC' (DB a) (D6 b) T (D2 c)
instance TAddC' a b T c => TAddC' (DB a) (D6 b) F (D1 c)
instance TAddC' a b T c => TAddC' (DB a) (D5 b) T (D1 c)
instance TAddC' a b T c => TAddC' (DB a) (D5 b) F (D0 c)
instance TAddC' a b T c => TAddC' (DB a) (D4 b) T (D0 c)
instance TAddC' a b F c => TAddC' (DB a) (D4 b) F (DF c)
instance TAddC' a b F c => TAddC' (DB a) (D3 b) T (DF c)
instance TAddC' a b F c => TAddC' (DB a) (D3 b) F (DE c)
instance TAddC' a b F c => TAddC' (DB a) (D2 b) T (DE c)
instance TAddC' a b F c => TAddC' (DB a) (D2 b) F (DD c)
instance TAddC' a b F c => TAddC' (DB a) (D1 b) T (DD c)
instance TAddC' a b F c => TAddC' (DB a) (D1 b) F (DC c)
instance TAddC' a b F c => TAddC' (DB a) (D0 b) T (DC c)
instance TAddC' a b F c => TAddC' (DB a) (D0 b) F (DB c)
instance TAddC' a b T c => TAddC' (DA a) (DF b) T (DA c)
instance TAddC' a b T c => TAddC' (DA a) (DF b) F (D9 c)
instance TAddC' a b T c => TAddC' (DA a) (DE b) T (D9 c)
instance TAddC' a b T c => TAddC' (DA a) (DE b) F (D8 c)
instance TAddC' a b T c => TAddC' (DA a) (DD b) T (D8 c)
instance TAddC' a b T c => TAddC' (DA a) (DD b) F (D7 c)
instance TAddC' a b T c => TAddC' (DA a) (DC b) T (D7 c)
instance TAddC' a b T c => TAddC' (DA a) (DC b) F (D6 c)
instance TAddC' a b T c => TAddC' (DA a) (DB b) T (D6 c)
instance TAddC' a b T c => TAddC' (DA a) (DB b) F (D5 c)
instance TAddC' a b T c => TAddC' (DA a) (DA b) T (D5 c)
instance TAddC' a b T c => TAddC' (DA a) (DA b) F (D4 c)
instance TAddC' a b T c => TAddC' (DA a) (D9 b) T (D4 c)
instance TAddC' a b T c => TAddC' (DA a) (D9 b) F (D3 c)
instance TAddC' a b T c => TAddC' (DA a) (D8 b) T (D3 c)
instance TAddC' a b T c => TAddC' (DA a) (D8 b) F (D2 c)
instance TAddC' a b T c => TAddC' (DA a) (D7 b) T (D2 c)
instance TAddC' a b T c => TAddC' (DA a) (D7 b) F (D1 c)
instance TAddC' a b T c => TAddC' (DA a) (D6 b) T (D1 c)
instance TAddC' a b T c => TAddC' (DA a) (D6 b) F (D0 c)
instance TAddC' a b T c => TAddC' (DA a) (D5 b) T (D0 c)
instance TAddC' a b F c => TAddC' (DA a) (D5 b) F (DF c)
instance TAddC' a b F c => TAddC' (DA a) (D4 b) T (DF c)
instance TAddC' a b F c => TAddC' (DA a) (D4 b) F (DE c)
instance TAddC' a b F c => TAddC' (DA a) (D3 b) T (DE c)
instance TAddC' a b F c => TAddC' (DA a) (D3 b) F (DD c)
instance TAddC' a b F c => TAddC' (DA a) (D2 b) T (DD c)
instance TAddC' a b F c => TAddC' (DA a) (D2 b) F (DC c)
instance TAddC' a b F c => TAddC' (DA a) (D1 b) T (DC c)
instance TAddC' a b F c => TAddC' (DA a) (D1 b) F (DB c)
instance TAddC' a b F c => TAddC' (DA a) (D0 b) T (DB c)
instance TAddC' a b F c => TAddC' (DA a) (D0 b) F (DA c)
instance TAddC' a b T c => TAddC' (D9 a) (DF b) T (D9 c)
instance TAddC' a b T c => TAddC' (D9 a) (DF b) F (D8 c)
instance TAddC' a b T c => TAddC' (D9 a) (DE b) T (D8 c)
instance TAddC' a b T c => TAddC' (D9 a) (DE b) F (D7 c)
instance TAddC' a b T c => TAddC' (D9 a) (DD b) T (D7 c)
instance TAddC' a b T c => TAddC' (D9 a) (DD b) F (D6 c)
instance TAddC' a b T c => TAddC' (D9 a) (DC b) T (D6 c)
instance TAddC' a b T c => TAddC' (D9 a) (DC b) F (D5 c)
instance TAddC' a b T c => TAddC' (D9 a) (DB b) T (D5 c)
instance TAddC' a b T c => TAddC' (D9 a) (DB b) F (D4 c)
instance TAddC' a b T c => TAddC' (D9 a) (DA b) T (D4 c)
instance TAddC' a b T c => TAddC' (D9 a) (DA b) F (D3 c)
instance TAddC' a b T c => TAddC' (D9 a) (D9 b) T (D3 c)
instance TAddC' a b T c => TAddC' (D9 a) (D9 b) F (D2 c)
instance TAddC' a b T c => TAddC' (D9 a) (D8 b) T (D2 c)
instance TAddC' a b T c => TAddC' (D9 a) (D8 b) F (D1 c)
instance TAddC' a b T c => TAddC' (D9 a) (D7 b) T (D1 c)
instance TAddC' a b T c => TAddC' (D9 a) (D7 b) F (D0 c)
instance TAddC' a b T c => TAddC' (D9 a) (D6 b) T (D0 c)
instance TAddC' a b F c => TAddC' (D9 a) (D6 b) F (DF c)
instance TAddC' a b F c => TAddC' (D9 a) (D5 b) T (DF c)
instance TAddC' a b F c => TAddC' (D9 a) (D5 b) F (DE c)
instance TAddC' a b F c => TAddC' (D9 a) (D4 b) T (DE c)
instance TAddC' a b F c => TAddC' (D9 a) (D4 b) F (DD c)
instance TAddC' a b F c => TAddC' (D9 a) (D3 b) T (DD c)
instance TAddC' a b F c => TAddC' (D9 a) (D3 b) F (DC c)
instance TAddC' a b F c => TAddC' (D9 a) (D2 b) T (DC c)
instance TAddC' a b F c => TAddC' (D9 a) (D2 b) F (DB c)
instance TAddC' a b F c => TAddC' (D9 a) (D1 b) T (DB c)
instance TAddC' a b F c => TAddC' (D9 a) (D1 b) F (DA c)
instance TAddC' a b F c => TAddC' (D9 a) (D0 b) T (DA c)
instance TAddC' a b F c => TAddC' (D9 a) (D0 b) F (D9 c)
instance TAddC' a b T c => TAddC' (D8 a) (DF b) T (D8 c)
instance TAddC' a b T c => TAddC' (D8 a) (DF b) F (D7 c)
instance TAddC' a b T c => TAddC' (D8 a) (DE b) T (D7 c)
instance TAddC' a b T c => TAddC' (D8 a) (DE b) F (D6 c)
instance TAddC' a b T c => TAddC' (D8 a) (DD b) T (D6 c)
instance TAddC' a b T c => TAddC' (D8 a) (DD b) F (D5 c)
instance TAddC' a b T c => TAddC' (D8 a) (DC b) T (D5 c)
instance TAddC' a b T c => TAddC' (D8 a) (DC b) F (D4 c)
instance TAddC' a b T c => TAddC' (D8 a) (DB b) T (D4 c)
instance TAddC' a b T c => TAddC' (D8 a) (DB b) F (D3 c)
instance TAddC' a b T c => TAddC' (D8 a) (DA b) T (D3 c)
instance TAddC' a b T c => TAddC' (D8 a) (DA b) F (D2 c)
instance TAddC' a b T c => TAddC' (D8 a) (D9 b) T (D2 c)
instance TAddC' a b T c => TAddC' (D8 a) (D9 b) F (D1 c)
instance TAddC' a b T c => TAddC' (D8 a) (D8 b) T (D1 c)
instance TAddC' a b T c => TAddC' (D8 a) (D8 b) F (D0 c)
instance TAddC' a b T c => TAddC' (D8 a) (D7 b) T (D0 c)
instance TAddC' a b F c => TAddC' (D8 a) (D7 b) F (DF c)
instance TAddC' a b F c => TAddC' (D8 a) (D6 b) T (DF c)
instance TAddC' a b F c => TAddC' (D8 a) (D6 b) F (DE c)
instance TAddC' a b F c => TAddC' (D8 a) (D5 b) T (DE c)
instance TAddC' a b F c => TAddC' (D8 a) (D5 b) F (DD c)
instance TAddC' a b F c => TAddC' (D8 a) (D4 b) T (DD c)
instance TAddC' a b F c => TAddC' (D8 a) (D4 b) F (DC c)
instance TAddC' a b F c => TAddC' (D8 a) (D3 b) T (DC c)
instance TAddC' a b F c => TAddC' (D8 a) (D3 b) F (DB c)
instance TAddC' a b F c => TAddC' (D8 a) (D2 b) T (DB c)
instance TAddC' a b F c => TAddC' (D8 a) (D2 b) F (DA c)
instance TAddC' a b F c => TAddC' (D8 a) (D1 b) T (DA c)
instance TAddC' a b F c => TAddC' (D8 a) (D1 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D8 a) (D0 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D8 a) (D0 b) F (D8 c)
instance TAddC' a b T c => TAddC' (D7 a) (DF b) T (D7 c)
instance TAddC' a b T c => TAddC' (D7 a) (DF b) F (D6 c)
instance TAddC' a b T c => TAddC' (D7 a) (DE b) T (D6 c)
instance TAddC' a b T c => TAddC' (D7 a) (DE b) F (D5 c)
instance TAddC' a b T c => TAddC' (D7 a) (DD b) T (D5 c)
instance TAddC' a b T c => TAddC' (D7 a) (DD b) F (D4 c)
instance TAddC' a b T c => TAddC' (D7 a) (DC b) T (D4 c)
instance TAddC' a b T c => TAddC' (D7 a) (DC b) F (D3 c)
instance TAddC' a b T c => TAddC' (D7 a) (DB b) T (D3 c)
instance TAddC' a b T c => TAddC' (D7 a) (DB b) F (D2 c)
instance TAddC' a b T c => TAddC' (D7 a) (DA b) T (D2 c)
instance TAddC' a b T c => TAddC' (D7 a) (DA b) F (D1 c)
instance TAddC' a b T c => TAddC' (D7 a) (D9 b) T (D1 c)
instance TAddC' a b T c => TAddC' (D7 a) (D9 b) F (D0 c)
instance TAddC' a b T c => TAddC' (D7 a) (D8 b) T (D0 c)
instance TAddC' a b F c => TAddC' (D7 a) (D8 b) F (DF c)
instance TAddC' a b F c => TAddC' (D7 a) (D7 b) T (DF c)
instance TAddC' a b F c => TAddC' (D7 a) (D7 b) F (DE c)
instance TAddC' a b F c => TAddC' (D7 a) (D6 b) T (DE c)
instance TAddC' a b F c => TAddC' (D7 a) (D6 b) F (DD c)
instance TAddC' a b F c => TAddC' (D7 a) (D5 b) T (DD c)
instance TAddC' a b F c => TAddC' (D7 a) (D5 b) F (DC c)
instance TAddC' a b F c => TAddC' (D7 a) (D4 b) T (DC c)
instance TAddC' a b F c => TAddC' (D7 a) (D4 b) F (DB c)
instance TAddC' a b F c => TAddC' (D7 a) (D3 b) T (DB c)
instance TAddC' a b F c => TAddC' (D7 a) (D3 b) F (DA c)
instance TAddC' a b F c => TAddC' (D7 a) (D2 b) T (DA c)
instance TAddC' a b F c => TAddC' (D7 a) (D2 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D7 a) (D1 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D7 a) (D1 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D7 a) (D0 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D7 a) (D0 b) F (D7 c)
instance TAddC' a b T c => TAddC' (D6 a) (DF b) T (D6 c)
instance TAddC' a b T c => TAddC' (D6 a) (DF b) F (D5 c)
instance TAddC' a b T c => TAddC' (D6 a) (DE b) T (D5 c)
instance TAddC' a b T c => TAddC' (D6 a) (DE b) F (D4 c)
instance TAddC' a b T c => TAddC' (D6 a) (DD b) T (D4 c)
instance TAddC' a b T c => TAddC' (D6 a) (DD b) F (D3 c)
instance TAddC' a b T c => TAddC' (D6 a) (DC b) T (D3 c)
instance TAddC' a b T c => TAddC' (D6 a) (DC b) F (D2 c)
instance TAddC' a b T c => TAddC' (D6 a) (DB b) T (D2 c)
instance TAddC' a b T c => TAddC' (D6 a) (DB b) F (D1 c)
instance TAddC' a b T c => TAddC' (D6 a) (DA b) T (D1 c)
instance TAddC' a b T c => TAddC' (D6 a) (DA b) F (D0 c)
instance TAddC' a b T c => TAddC' (D6 a) (D9 b) T (D0 c)
instance TAddC' a b F c => TAddC' (D6 a) (D9 b) F (DF c)
instance TAddC' a b F c => TAddC' (D6 a) (D8 b) T (DF c)
instance TAddC' a b F c => TAddC' (D6 a) (D8 b) F (DE c)
instance TAddC' a b F c => TAddC' (D6 a) (D7 b) T (DE c)
instance TAddC' a b F c => TAddC' (D6 a) (D7 b) F (DD c)
instance TAddC' a b F c => TAddC' (D6 a) (D6 b) T (DD c)
instance TAddC' a b F c => TAddC' (D6 a) (D6 b) F (DC c)
instance TAddC' a b F c => TAddC' (D6 a) (D5 b) T (DC c)
instance TAddC' a b F c => TAddC' (D6 a) (D5 b) F (DB c)
instance TAddC' a b F c => TAddC' (D6 a) (D4 b) T (DB c)
instance TAddC' a b F c => TAddC' (D6 a) (D4 b) F (DA c)
instance TAddC' a b F c => TAddC' (D6 a) (D3 b) T (DA c)
instance TAddC' a b F c => TAddC' (D6 a) (D3 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D6 a) (D2 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D6 a) (D2 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D6 a) (D1 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D6 a) (D1 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D6 a) (D0 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D6 a) (D0 b) F (D6 c)
instance TAddC' a b T c => TAddC' (D5 a) (DF b) T (D5 c)
instance TAddC' a b T c => TAddC' (D5 a) (DF b) F (D4 c)
instance TAddC' a b T c => TAddC' (D5 a) (DE b) T (D4 c)
instance TAddC' a b T c => TAddC' (D5 a) (DE b) F (D3 c)
instance TAddC' a b T c => TAddC' (D5 a) (DD b) T (D3 c)
instance TAddC' a b T c => TAddC' (D5 a) (DD b) F (D2 c)
instance TAddC' a b T c => TAddC' (D5 a) (DC b) T (D2 c)
instance TAddC' a b T c => TAddC' (D5 a) (DC b) F (D1 c)
instance TAddC' a b T c => TAddC' (D5 a) (DB b) T (D1 c)
instance TAddC' a b T c => TAddC' (D5 a) (DB b) F (D0 c)
instance TAddC' a b T c => TAddC' (D5 a) (DA b) T (D0 c)
instance TAddC' a b F c => TAddC' (D5 a) (DA b) F (DF c)
instance TAddC' a b F c => TAddC' (D5 a) (D9 b) T (DF c)
instance TAddC' a b F c => TAddC' (D5 a) (D9 b) F (DE c)
instance TAddC' a b F c => TAddC' (D5 a) (D8 b) T (DE c)
instance TAddC' a b F c => TAddC' (D5 a) (D8 b) F (DD c)
instance TAddC' a b F c => TAddC' (D5 a) (D7 b) T (DD c)
instance TAddC' a b F c => TAddC' (D5 a) (D7 b) F (DC c)
instance TAddC' a b F c => TAddC' (D5 a) (D6 b) T (DC c)
instance TAddC' a b F c => TAddC' (D5 a) (D6 b) F (DB c)
instance TAddC' a b F c => TAddC' (D5 a) (D5 b) T (DB c)
instance TAddC' a b F c => TAddC' (D5 a) (D5 b) F (DA c)
instance TAddC' a b F c => TAddC' (D5 a) (D4 b) T (DA c)
instance TAddC' a b F c => TAddC' (D5 a) (D4 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D5 a) (D3 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D5 a) (D3 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D5 a) (D2 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D5 a) (D2 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D5 a) (D1 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D5 a) (D1 b) F (D6 c)
instance TAddC' a b F c => TAddC' (D5 a) (D0 b) T (D6 c)
instance TAddC' a b F c => TAddC' (D5 a) (D0 b) F (D5 c)
instance TAddC' a b T c => TAddC' (D4 a) (DF b) T (D4 c)
instance TAddC' a b T c => TAddC' (D4 a) (DF b) F (D3 c)
instance TAddC' a b T c => TAddC' (D4 a) (DE b) T (D3 c)
instance TAddC' a b T c => TAddC' (D4 a) (DE b) F (D2 c)
instance TAddC' a b T c => TAddC' (D4 a) (DD b) T (D2 c)
instance TAddC' a b T c => TAddC' (D4 a) (DD b) F (D1 c)
instance TAddC' a b T c => TAddC' (D4 a) (DC b) T (D1 c)
instance TAddC' a b T c => TAddC' (D4 a) (DC b) F (D0 c)
instance TAddC' a b T c => TAddC' (D4 a) (DB b) T (D0 c)
instance TAddC' a b F c => TAddC' (D4 a) (DB b) F (DF c)
instance TAddC' a b F c => TAddC' (D4 a) (DA b) T (DF c)
instance TAddC' a b F c => TAddC' (D4 a) (DA b) F (DE c)
instance TAddC' a b F c => TAddC' (D4 a) (D9 b) T (DE c)
instance TAddC' a b F c => TAddC' (D4 a) (D9 b) F (DD c)
instance TAddC' a b F c => TAddC' (D4 a) (D8 b) T (DD c)
instance TAddC' a b F c => TAddC' (D4 a) (D8 b) F (DC c)
instance TAddC' a b F c => TAddC' (D4 a) (D7 b) T (DC c)
instance TAddC' a b F c => TAddC' (D4 a) (D7 b) F (DB c)
instance TAddC' a b F c => TAddC' (D4 a) (D6 b) T (DB c)
instance TAddC' a b F c => TAddC' (D4 a) (D6 b) F (DA c)
instance TAddC' a b F c => TAddC' (D4 a) (D5 b) T (DA c)
instance TAddC' a b F c => TAddC' (D4 a) (D5 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D4 a) (D4 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D4 a) (D4 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D4 a) (D3 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D4 a) (D3 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D4 a) (D2 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D4 a) (D2 b) F (D6 c)
instance TAddC' a b F c => TAddC' (D4 a) (D1 b) T (D6 c)
instance TAddC' a b F c => TAddC' (D4 a) (D1 b) F (D5 c)
instance TAddC' a b F c => TAddC' (D4 a) (D0 b) T (D5 c)
instance TAddC' a b F c => TAddC' (D4 a) (D0 b) F (D4 c)
instance TAddC' a b T c => TAddC' (D3 a) (DF b) T (D3 c)
instance TAddC' a b T c => TAddC' (D3 a) (DF b) F (D2 c)
instance TAddC' a b T c => TAddC' (D3 a) (DE b) T (D2 c)
instance TAddC' a b T c => TAddC' (D3 a) (DE b) F (D1 c)
instance TAddC' a b T c => TAddC' (D3 a) (DD b) T (D1 c)
instance TAddC' a b T c => TAddC' (D3 a) (DD b) F (D0 c)
instance TAddC' a b T c => TAddC' (D3 a) (DC b) T (D0 c)
instance TAddC' a b F c => TAddC' (D3 a) (DC b) F (DF c)
instance TAddC' a b F c => TAddC' (D3 a) (DB b) T (DF c)
instance TAddC' a b F c => TAddC' (D3 a) (DB b) F (DE c)
instance TAddC' a b F c => TAddC' (D3 a) (DA b) T (DE c)
instance TAddC' a b F c => TAddC' (D3 a) (DA b) F (DD c)
instance TAddC' a b F c => TAddC' (D3 a) (D9 b) T (DD c)
instance TAddC' a b F c => TAddC' (D3 a) (D9 b) F (DC c)
instance TAddC' a b F c => TAddC' (D3 a) (D8 b) T (DC c)
instance TAddC' a b F c => TAddC' (D3 a) (D8 b) F (DB c)
instance TAddC' a b F c => TAddC' (D3 a) (D7 b) T (DB c)
instance TAddC' a b F c => TAddC' (D3 a) (D7 b) F (DA c)
instance TAddC' a b F c => TAddC' (D3 a) (D6 b) T (DA c)
instance TAddC' a b F c => TAddC' (D3 a) (D6 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D3 a) (D5 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D3 a) (D5 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D3 a) (D4 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D3 a) (D4 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D3 a) (D3 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D3 a) (D3 b) F (D6 c)
instance TAddC' a b F c => TAddC' (D3 a) (D2 b) T (D6 c)
instance TAddC' a b F c => TAddC' (D3 a) (D2 b) F (D5 c)
instance TAddC' a b F c => TAddC' (D3 a) (D1 b) T (D5 c)
instance TAddC' a b F c => TAddC' (D3 a) (D1 b) F (D4 c)
instance TAddC' a b F c => TAddC' (D3 a) (D0 b) T (D4 c)
instance TAddC' a b F c => TAddC' (D3 a) (D0 b) F (D3 c)
instance TAddC' a b T c => TAddC' (D2 a) (DF b) T (D2 c)
instance TAddC' a b T c => TAddC' (D2 a) (DF b) F (D1 c)
instance TAddC' a b T c => TAddC' (D2 a) (DE b) T (D1 c)
instance TAddC' a b T c => TAddC' (D2 a) (DE b) F (D0 c)
instance TAddC' a b T c => TAddC' (D2 a) (DD b) T (D0 c)
instance TAddC' a b F c => TAddC' (D2 a) (DD b) F (DF c)
instance TAddC' a b F c => TAddC' (D2 a) (DC b) T (DF c)
instance TAddC' a b F c => TAddC' (D2 a) (DC b) F (DE c)
instance TAddC' a b F c => TAddC' (D2 a) (DB b) T (DE c)
instance TAddC' a b F c => TAddC' (D2 a) (DB b) F (DD c)
instance TAddC' a b F c => TAddC' (D2 a) (DA b) T (DD c)
instance TAddC' a b F c => TAddC' (D2 a) (DA b) F (DC c)
instance TAddC' a b F c => TAddC' (D2 a) (D9 b) T (DC c)
instance TAddC' a b F c => TAddC' (D2 a) (D9 b) F (DB c)
instance TAddC' a b F c => TAddC' (D2 a) (D8 b) T (DB c)
instance TAddC' a b F c => TAddC' (D2 a) (D8 b) F (DA c)
instance TAddC' a b F c => TAddC' (D2 a) (D7 b) T (DA c)
instance TAddC' a b F c => TAddC' (D2 a) (D7 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D2 a) (D6 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D2 a) (D6 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D2 a) (D5 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D2 a) (D5 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D2 a) (D4 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D2 a) (D4 b) F (D6 c)
instance TAddC' a b F c => TAddC' (D2 a) (D3 b) T (D6 c)
instance TAddC' a b F c => TAddC' (D2 a) (D3 b) F (D5 c)
instance TAddC' a b F c => TAddC' (D2 a) (D2 b) T (D5 c)
instance TAddC' a b F c => TAddC' (D2 a) (D2 b) F (D4 c)
instance TAddC' a b F c => TAddC' (D2 a) (D1 b) T (D4 c)
instance TAddC' a b F c => TAddC' (D2 a) (D1 b) F (D3 c)
instance TAddC' a b F c => TAddC' (D2 a) (D0 b) T (D3 c)
instance TAddC' a b F c => TAddC' (D2 a) (D0 b) F (D2 c)
instance TAddC' a b T c => TAddC' (D1 a) (DF b) T (D1 c)
instance TAddC' a b T c => TAddC' (D1 a) (DF b) F (D0 c)
instance TAddC' a b T c => TAddC' (D1 a) (DE b) T (D0 c)
instance TAddC' a b F c => TAddC' (D1 a) (DE b) F (DF c)
instance TAddC' a b F c => TAddC' (D1 a) (DD b) T (DF c)
instance TAddC' a b F c => TAddC' (D1 a) (DD b) F (DE c)
instance TAddC' a b F c => TAddC' (D1 a) (DC b) T (DE c)
instance TAddC' a b F c => TAddC' (D1 a) (DC b) F (DD c)
instance TAddC' a b F c => TAddC' (D1 a) (DB b) T (DD c)
instance TAddC' a b F c => TAddC' (D1 a) (DB b) F (DC c)
instance TAddC' a b F c => TAddC' (D1 a) (DA b) T (DC c)
instance TAddC' a b F c => TAddC' (D1 a) (DA b) F (DB c)
instance TAddC' a b F c => TAddC' (D1 a) (D9 b) T (DB c)
instance TAddC' a b F c => TAddC' (D1 a) (D9 b) F (DA c)
instance TAddC' a b F c => TAddC' (D1 a) (D8 b) T (DA c)
instance TAddC' a b F c => TAddC' (D1 a) (D8 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D1 a) (D7 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D1 a) (D7 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D1 a) (D6 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D1 a) (D6 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D1 a) (D5 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D1 a) (D5 b) F (D6 c)
instance TAddC' a b F c => TAddC' (D1 a) (D4 b) T (D6 c)
instance TAddC' a b F c => TAddC' (D1 a) (D4 b) F (D5 c)
instance TAddC' a b F c => TAddC' (D1 a) (D3 b) T (D5 c)
instance TAddC' a b F c => TAddC' (D1 a) (D3 b) F (D4 c)
instance TAddC' a b F c => TAddC' (D1 a) (D2 b) T (D4 c)
instance TAddC' a b F c => TAddC' (D1 a) (D2 b) F (D3 c)
instance TAddC' a b F c => TAddC' (D1 a) (D1 b) T (D3 c)
instance TAddC' a b F c => TAddC' (D1 a) (D1 b) F (D2 c)
instance TAddC' a b F c => TAddC' (D1 a) (D0 b) T (D2 c)
instance TAddC' a b F c => TAddC' (D1 a) (D0 b) F (D1 c)
instance TAddC' a b T c => TAddC' (D0 a) (DF b) T (D0 c)
instance TAddC' a b F c => TAddC' (D0 a) (DF b) F (DF c)
instance TAddC' a b F c => TAddC' (D0 a) (DE b) T (DF c)
instance TAddC' a b F c => TAddC' (D0 a) (DE b) F (DE c)
instance TAddC' a b F c => TAddC' (D0 a) (DD b) T (DE c)
instance TAddC' a b F c => TAddC' (D0 a) (DD b) F (DD c)
instance TAddC' a b F c => TAddC' (D0 a) (DC b) T (DD c)
instance TAddC' a b F c => TAddC' (D0 a) (DC b) F (DC c)
instance TAddC' a b F c => TAddC' (D0 a) (DB b) T (DC c)
instance TAddC' a b F c => TAddC' (D0 a) (DB b) F (DB c)
instance TAddC' a b F c => TAddC' (D0 a) (DA b) T (DB c)
instance TAddC' a b F c => TAddC' (D0 a) (DA b) F (DA c)
instance TAddC' a b F c => TAddC' (D0 a) (D9 b) T (DA c)
instance TAddC' a b F c => TAddC' (D0 a) (D9 b) F (D9 c)
instance TAddC' a b F c => TAddC' (D0 a) (D8 b) T (D9 c)
instance TAddC' a b F c => TAddC' (D0 a) (D8 b) F (D8 c)
instance TAddC' a b F c => TAddC' (D0 a) (D7 b) T (D8 c)
instance TAddC' a b F c => TAddC' (D0 a) (D7 b) F (D7 c)
instance TAddC' a b F c => TAddC' (D0 a) (D6 b) T (D7 c)
instance TAddC' a b F c => TAddC' (D0 a) (D6 b) F (D6 c)
instance TAddC' a b F c => TAddC' (D0 a) (D5 b) T (D6 c)
instance TAddC' a b F c => TAddC' (D0 a) (D5 b) F (D5 c)
instance TAddC' a b F c => TAddC' (D0 a) (D4 b) T (D5 c)
instance TAddC' a b F c => TAddC' (D0 a) (D4 b) F (D4 c)
instance TAddC' a b F c => TAddC' (D0 a) (D3 b) T (D4 c)
instance TAddC' a b F c => TAddC' (D0 a) (D3 b) F (D3 c)
instance TAddC' a b F c => TAddC' (D0 a) (D2 b) T (D3 c)
instance TAddC' a b F c => TAddC' (D0 a) (D2 b) F (D2 c)
instance TAddC' a b F c => TAddC' (D0 a) (D1 b) T (D2 c)
instance TAddC' a b F c => TAddC' (D0 a) (D1 b) F (D1 c)
instance TAddC' a b F c => TAddC' (D0 a) (D0 b) T (D1 c)
instance TAddC' a b F c => TAddC' (D0 a) (D0 b) F (D0 c)
instance TAddC' (DF a) T F (DE a)
instance TAddC' (DE a) T F (DD a)
instance TAddC' (DD a) T F (DC a)
instance TAddC' (DC a) T F (DB a)
instance TAddC' (DB a) T F (DA a)
instance TAddC' (DA a) T F (D9 a)
instance TAddC' (D9 a) T F (D8 a)
instance TAddC' (D8 a) T F (D7 a)
instance TAddC' (D7 a) T F (D6 a)
instance TAddC' (D6 a) T F (D5 a)
instance TAddC' (D5 a) T F (D4 a)
instance TAddC' (D4 a) T F (D3 a)
instance TAddC' (D3 a) T F (D2 a)
instance TAddC' (D2 a) T F (D1 a)
instance TAddC' (D1 a) T F (D0 a)
instance TAddC' (DE a) F T (DF a)
instance TAddC' (DD a) F T (DE a)
instance TAddC' (DC a) F T (DD a)
instance TAddC' (DB a) F T (DC a)
instance TAddC' (DA a) F T (DB a)
instance TAddC' (D9 a) F T (DA a)
instance TAddC' (D8 a) F T (D9 a)
instance TAddC' (D7 a) F T (D8 a)
instance TAddC' (D6 a) F T (D7 a)
instance TAddC' (D5 a) F T (D6 a)
instance TAddC' (D4 a) F T (D5 a)
instance TAddC' (D3 a) F T (D4 a)
instance TAddC' (D2 a) F T (D3 a)
instance TAddC' (D1 a) F T (D2 a)
instance TAddC' (D0 a) F T (D1 a)
instance TAddC' T (DF a) F (DE a)
instance TAddC' T (DE a) F (DD a)
instance TAddC' T (DD a) F (DC a)
instance TAddC' T (DC a) F (DB a)
instance TAddC' T (DB a) F (DA a)
instance TAddC' T (DA a) F (D9 a)
instance TAddC' T (D9 a) F (D8 a)
instance TAddC' T (D8 a) F (D7 a)
instance TAddC' T (D7 a) F (D6 a)
instance TAddC' T (D6 a) F (D5 a)
instance TAddC' T (D5 a) F (D4 a)
instance TAddC' T (D4 a) F (D3 a)
instance TAddC' T (D3 a) F (D2 a)
instance TAddC' T (D2 a) F (D1 a)
instance TAddC' T (D1 a) F (D0 a)
instance TAddC' F (DE a) T (DF a)
instance TAddC' F (DD a) T (DE a)
instance TAddC' F (DC a) T (DD a)
instance TAddC' F (DB a) T (DC a)
instance TAddC' F (DA a) T (DB a)
instance TAddC' F (D9 a) T (DA a)
instance TAddC' F (D8 a) T (D9 a)
instance TAddC' F (D7 a) T (D8 a)
instance TAddC' F (D6 a) T (D7 a)
instance TAddC' F (D5 a) T (D6 a)
instance TAddC' F (D4 a) T (D5 a)
instance TAddC' F (D3 a) T (D4 a)
instance TAddC' F (D2 a) T (D3 a)
instance TAddC' F (D1 a) T (D2 a)
instance TAddC' F (D0 a) T (D1 a)
instance TAddC' (DF a) F F (DF a)
instance TAddC' (DE a) F F (DE a)
instance TAddC' (DD a) F F (DD a)
instance TAddC' (DC a) F F (DC a)
instance TAddC' (DB a) F F (DB a)
instance TAddC' (DA a) F F (DA a)
instance TAddC' (D9 a) F F (D9 a)
instance TAddC' (D8 a) F F (D8 a)
instance TAddC' (D7 a) F F (D7 a)
instance TAddC' (D6 a) F F (D6 a)
instance TAddC' (D5 a) F F (D5 a)
instance TAddC' (D4 a) F F (D4 a)
instance TAddC' (D3 a) F F (D3 a)
instance TAddC' (D2 a) F F (D2 a)
instance TAddC' (D1 a) F F (D1 a)
instance TAddC' (D0 a) F F (D0 a)
instance TAddC' (DF a) T T (DF a)
instance TAddC' (DE a) T T (DE a)
instance TAddC' (DD a) T T (DD a)
instance TAddC' (DC a) T T (DC a)
instance TAddC' (DB a) T T (DB a)
instance TAddC' (DA a) T T (DA a)
instance TAddC' (D9 a) T T (D9 a)
instance TAddC' (D8 a) T T (D8 a)
instance TAddC' (D7 a) T T (D7 a)
instance TAddC' (D6 a) T T (D6 a)
instance TAddC' (D5 a) T T (D5 a)
instance TAddC' (D4 a) T T (D4 a)
instance TAddC' (D3 a) T T (D3 a)
instance TAddC' (D2 a) T T (D2 a)
instance TAddC' (D1 a) T T (D1 a)
instance TAddC' (D0 a) T T (D0 a)
instance TAddC' F (DF a) F (DF a)
instance TAddC' F (DE a) F (DE a)
instance TAddC' F (DD a) F (DD a)
instance TAddC' F (DC a) F (DC a)
instance TAddC' F (DB a) F (DB a)
instance TAddC' F (DA a) F (DA a)
instance TAddC' F (D9 a) F (D9 a)
instance TAddC' F (D8 a) F (D8 a)
instance TAddC' F (D7 a) F (D7 a)
instance TAddC' F (D6 a) F (D6 a)
instance TAddC' F (D5 a) F (D5 a)
instance TAddC' F (D4 a) F (D4 a)
instance TAddC' F (D3 a) F (D3 a)
instance TAddC' F (D2 a) F (D2 a)
instance TAddC' F (D1 a) F (D1 a)
instance TAddC' F (D0 a) F (D0 a)
instance TAddC' T (DF a) T (DF a)
instance TAddC' T (DE a) T (DE a)
instance TAddC' T (DD a) T (DD a)
instance TAddC' T (DC a) T (DC a)
instance TAddC' T (DB a) T (DB a)
instance TAddC' T (DA a) T (DA a)
instance TAddC' T (D9 a) T (D9 a)
instance TAddC' T (D8 a) T (D8 a)
instance TAddC' T (D7 a) T (D7 a)
instance TAddC' T (D6 a) T (D6 a)
instance TAddC' T (D5 a) T (D5 a)
instance TAddC' T (D4 a) T (D4 a)
instance TAddC' T (D3 a) T (D3 a)
instance TAddC' T (D2 a) T (D2 a)
instance TAddC' T (D1 a) T (D1 a)
instance TAddC' T (D0 a) T (D0 a)
instance TSucc b a => TAddC' (D0 a) T F (DF b)
instance TSucc a b => TAddC' (DF a) F T (D0 b)
instance TSucc b a => TAddC' T (D0 a) F (DF b)
instance TSucc a b => TAddC' F (DF a) T (D0 b)
instance TAddC' T T F (DE T)
instance TAddC' F F T (D1 F)
instance TAddC' F T T F
instance TAddC' T F F T
instance TAddC' T T T T
instance TAddC' F T F T
instance TAddC' T F T F
instance TAddC' F F F F
instance (Trichotomy n s, TEq s SignZero b) => TIsZero n b
instance (Trichotomy n s, TEq s Negative b) => TIsNegative n b
instance (Trichotomy n s, TEq s Positive b) => TIsPositive n b
instance (Trichotomy a b, Ext0 a) => Trichotomy (D1 (DF a)) b
instance (Trichotomy a b, ExtF a) => Trichotomy (D0 (DF a)) b
instance Trichotomy (DE T) Negative
instance Trichotomy (DD T) Negative
instance Trichotomy (DC T) Negative
instance Trichotomy (DB T) Negative
instance Trichotomy (DA T) Negative
instance Trichotomy (D9 T) Negative
instance Trichotomy (D8 T) Negative
instance Trichotomy (D7 T) Negative
instance Trichotomy (D6 T) Negative
instance Trichotomy (D5 T) Negative
instance Trichotomy (D4 T) Negative
instance Trichotomy (D3 T) Negative
instance Trichotomy (D2 T) Negative
instance Trichotomy (D1 T) Negative
instance Trichotomy (D0 T) Negative
instance Trichotomy (DF F) Positive
instance Trichotomy (DE F) Positive
instance Trichotomy (DD F) Positive
instance Trichotomy (DC F) Positive
instance Trichotomy (DB F) Positive
instance Trichotomy (DA F) Positive
instance Trichotomy (D9 F) Positive
instance Trichotomy (D8 F) Positive
instance Trichotomy (D7 F) Positive
instance Trichotomy (D6 F) Positive
instance Trichotomy (D5 F) Positive
instance Trichotomy (D4 F) Positive
instance Trichotomy (D3 F) Positive
instance Trichotomy (D2 F) Positive
instance Trichotomy (D1 F) Positive
instance Trichotomy F SignZero
instance Trichotomy T Negative
instance (TNot a b, TSucc b c) => TNeg a c
instance TSucc (DE (DF a)) (DF (DF a))
instance TSucc (DE (DE a)) (DF (DE a))
instance TSucc (DE (DD a)) (DF (DD a))
instance TSucc (DE (DC a)) (DF (DC a))
instance TSucc (DE (DB a)) (DF (DB a))
instance TSucc (DE (DA a)) (DF (DA a))
instance TSucc (DE (D9 a)) (DF (D9 a))
instance TSucc (DE (D8 a)) (DF (D8 a))
instance TSucc (DE (D7 a)) (DF (D7 a))
instance TSucc (DE (D6 a)) (DF (D6 a))
instance TSucc (DE (D5 a)) (DF (D5 a))
instance TSucc (DE (D4 a)) (DF (D4 a))
instance TSucc (DE (D3 a)) (DF (D3 a))
instance TSucc (DE (D2 a)) (DF (D2 a))
instance TSucc (DE (D1 a)) (DF (D1 a))
instance TSucc (DE (D0 a)) (DF (D0 a))
instance TSucc (DD (DF a)) (DE (DF a))
instance TSucc (DD (DE a)) (DE (DE a))
instance TSucc (DD (DD a)) (DE (DD a))
instance TSucc (DD (DC a)) (DE (DC a))
instance TSucc (DD (DB a)) (DE (DB a))
instance TSucc (DD (DA a)) (DE (DA a))
instance TSucc (DD (D9 a)) (DE (D9 a))
instance TSucc (DD (D8 a)) (DE (D8 a))
instance TSucc (DD (D7 a)) (DE (D7 a))
instance TSucc (DD (D6 a)) (DE (D6 a))
instance TSucc (DD (D5 a)) (DE (D5 a))
instance TSucc (DD (D4 a)) (DE (D4 a))
instance TSucc (DD (D3 a)) (DE (D3 a))
instance TSucc (DD (D2 a)) (DE (D2 a))
instance TSucc (DD (D1 a)) (DE (D1 a))
instance TSucc (DD (D0 a)) (DE (D0 a))
instance TSucc (DC (DF a)) (DD (DF a))
instance TSucc (DC (DE a)) (DD (DE a))
instance TSucc (DC (DD a)) (DD (DD a))
instance TSucc (DC (DC a)) (DD (DC a))
instance TSucc (DC (DB a)) (DD (DB a))
instance TSucc (DC (DA a)) (DD (DA a))
instance TSucc (DC (D9 a)) (DD (D9 a))
instance TSucc (DC (D8 a)) (DD (D8 a))
instance TSucc (DC (D7 a)) (DD (D7 a))
instance TSucc (DC (D6 a)) (DD (D6 a))
instance TSucc (DC (D5 a)) (DD (D5 a))
instance TSucc (DC (D4 a)) (DD (D4 a))
instance TSucc (DC (D3 a)) (DD (D3 a))
instance TSucc (DC (D2 a)) (DD (D2 a))
instance TSucc (DC (D1 a)) (DD (D1 a))
instance TSucc (DC (D0 a)) (DD (D0 a))
instance TSucc (DB (DF a)) (DC (DF a))
instance TSucc (DB (DE a)) (DC (DE a))
instance TSucc (DB (DD a)) (DC (DD a))
instance TSucc (DB (DC a)) (DC (DC a))
instance TSucc (DB (DB a)) (DC (DB a))
instance TSucc (DB (DA a)) (DC (DA a))
instance TSucc (DB (D9 a)) (DC (D9 a))
instance TSucc (DB (D8 a)) (DC (D8 a))
instance TSucc (DB (D7 a)) (DC (D7 a))
instance TSucc (DB (D6 a)) (DC (D6 a))
instance TSucc (DB (D5 a)) (DC (D5 a))
instance TSucc (DB (D4 a)) (DC (D4 a))
instance TSucc (DB (D3 a)) (DC (D3 a))
instance TSucc (DB (D2 a)) (DC (D2 a))
instance TSucc (DB (D1 a)) (DC (D1 a))
instance TSucc (DB (D0 a)) (DC (D0 a))
instance TSucc (DA (DF a)) (DB (DF a))
instance TSucc (DA (DE a)) (DB (DE a))
instance TSucc (DA (DD a)) (DB (DD a))
instance TSucc (DA (DC a)) (DB (DC a))
instance TSucc (DA (DB a)) (DB (DB a))
instance TSucc (DA (DA a)) (DB (DA a))
instance TSucc (DA (D9 a)) (DB (D9 a))
instance TSucc (DA (D8 a)) (DB (D8 a))
instance TSucc (DA (D7 a)) (DB (D7 a))
instance TSucc (DA (D6 a)) (DB (D6 a))
instance TSucc (DA (D5 a)) (DB (D5 a))
instance TSucc (DA (D4 a)) (DB (D4 a))
instance TSucc (DA (D3 a)) (DB (D3 a))
instance TSucc (DA (D2 a)) (DB (D2 a))
instance TSucc (DA (D1 a)) (DB (D1 a))
instance TSucc (DA (D0 a)) (DB (D0 a))
instance TSucc (D9 (DF a)) (DA (DF a))
instance TSucc (D9 (DE a)) (DA (DE a))
instance TSucc (D9 (DD a)) (DA (DD a))
instance TSucc (D9 (DC a)) (DA (DC a))
instance TSucc (D9 (DB a)) (DA (DB a))
instance TSucc (D9 (DA a)) (DA (DA a))
instance TSucc (D9 (D9 a)) (DA (D9 a))
instance TSucc (D9 (D8 a)) (DA (D8 a))
instance TSucc (D9 (D7 a)) (DA (D7 a))
instance TSucc (D9 (D6 a)) (DA (D6 a))
instance TSucc (D9 (D5 a)) (DA (D5 a))
instance TSucc (D9 (D4 a)) (DA (D4 a))
instance TSucc (D9 (D3 a)) (DA (D3 a))
instance TSucc (D9 (D2 a)) (DA (D2 a))
instance TSucc (D9 (D1 a)) (DA (D1 a))
instance TSucc (D9 (D0 a)) (DA (D0 a))
instance TSucc (D8 (DF a)) (D9 (DF a))
instance TSucc (D8 (DE a)) (D9 (DE a))
instance TSucc (D8 (DD a)) (D9 (DD a))
instance TSucc (D8 (DC a)) (D9 (DC a))
instance TSucc (D8 (DB a)) (D9 (DB a))
instance TSucc (D8 (DA a)) (D9 (DA a))
instance TSucc (D8 (D9 a)) (D9 (D9 a))
instance TSucc (D8 (D8 a)) (D9 (D8 a))
instance TSucc (D8 (D7 a)) (D9 (D7 a))
instance TSucc (D8 (D6 a)) (D9 (D6 a))
instance TSucc (D8 (D5 a)) (D9 (D5 a))
instance TSucc (D8 (D4 a)) (D9 (D4 a))
instance TSucc (D8 (D3 a)) (D9 (D3 a))
instance TSucc (D8 (D2 a)) (D9 (D2 a))
instance TSucc (D8 (D1 a)) (D9 (D1 a))
instance TSucc (D8 (D0 a)) (D9 (D0 a))
instance TSucc (D7 (DF a)) (D8 (DF a))
instance TSucc (D7 (DE a)) (D8 (DE a))
instance TSucc (D7 (DD a)) (D8 (DD a))
instance TSucc (D7 (DC a)) (D8 (DC a))
instance TSucc (D7 (DB a)) (D8 (DB a))
instance TSucc (D7 (DA a)) (D8 (DA a))
instance TSucc (D7 (D9 a)) (D8 (D9 a))
instance TSucc (D7 (D8 a)) (D8 (D8 a))
instance TSucc (D7 (D7 a)) (D8 (D7 a))
instance TSucc (D7 (D6 a)) (D8 (D6 a))
instance TSucc (D7 (D5 a)) (D8 (D5 a))
instance TSucc (D7 (D4 a)) (D8 (D4 a))
instance TSucc (D7 (D3 a)) (D8 (D3 a))
instance TSucc (D7 (D2 a)) (D8 (D2 a))
instance TSucc (D7 (D1 a)) (D8 (D1 a))
instance TSucc (D7 (D0 a)) (D8 (D0 a))
instance TSucc (D6 (DF a)) (D7 (DF a))
instance TSucc (D6 (DE a)) (D7 (DE a))
instance TSucc (D6 (DD a)) (D7 (DD a))
instance TSucc (D6 (DC a)) (D7 (DC a))
instance TSucc (D6 (DB a)) (D7 (DB a))
instance TSucc (D6 (DA a)) (D7 (DA a))
instance TSucc (D6 (D9 a)) (D7 (D9 a))
instance TSucc (D6 (D8 a)) (D7 (D8 a))
instance TSucc (D6 (D7 a)) (D7 (D7 a))
instance TSucc (D6 (D6 a)) (D7 (D6 a))
instance TSucc (D6 (D5 a)) (D7 (D5 a))
instance TSucc (D6 (D4 a)) (D7 (D4 a))
instance TSucc (D6 (D3 a)) (D7 (D3 a))
instance TSucc (D6 (D2 a)) (D7 (D2 a))
instance TSucc (D6 (D1 a)) (D7 (D1 a))
instance TSucc (D6 (D0 a)) (D7 (D0 a))
instance TSucc (D5 (DF a)) (D6 (DF a))
instance TSucc (D5 (DE a)) (D6 (DE a))
instance TSucc (D5 (DD a)) (D6 (DD a))
instance TSucc (D5 (DC a)) (D6 (DC a))
instance TSucc (D5 (DB a)) (D6 (DB a))
instance TSucc (D5 (DA a)) (D6 (DA a))
instance TSucc (D5 (D9 a)) (D6 (D9 a))
instance TSucc (D5 (D8 a)) (D6 (D8 a))
instance TSucc (D5 (D7 a)) (D6 (D7 a))
instance TSucc (D5 (D6 a)) (D6 (D6 a))
instance TSucc (D5 (D5 a)) (D6 (D5 a))
instance TSucc (D5 (D4 a)) (D6 (D4 a))
instance TSucc (D5 (D3 a)) (D6 (D3 a))
instance TSucc (D5 (D2 a)) (D6 (D2 a))
instance TSucc (D5 (D1 a)) (D6 (D1 a))
instance TSucc (D5 (D0 a)) (D6 (D0 a))
instance TSucc (D4 (DF a)) (D5 (DF a))
instance TSucc (D4 (DE a)) (D5 (DE a))
instance TSucc (D4 (DD a)) (D5 (DD a))
instance TSucc (D4 (DC a)) (D5 (DC a))
instance TSucc (D4 (DB a)) (D5 (DB a))
instance TSucc (D4 (DA a)) (D5 (DA a))
instance TSucc (D4 (D9 a)) (D5 (D9 a))
instance TSucc (D4 (D8 a)) (D5 (D8 a))
instance TSucc (D4 (D7 a)) (D5 (D7 a))
instance TSucc (D4 (D6 a)) (D5 (D6 a))
instance TSucc (D4 (D5 a)) (D5 (D5 a))
instance TSucc (D4 (D4 a)) (D5 (D4 a))
instance TSucc (D4 (D3 a)) (D5 (D3 a))
instance TSucc (D4 (D2 a)) (D5 (D2 a))
instance TSucc (D4 (D1 a)) (D5 (D1 a))
instance TSucc (D4 (D0 a)) (D5 (D0 a))
instance TSucc (D3 (DF a)) (D4 (DF a))
instance TSucc (D3 (DE a)) (D4 (DE a))
instance TSucc (D3 (DD a)) (D4 (DD a))
instance TSucc (D3 (DC a)) (D4 (DC a))
instance TSucc (D3 (DB a)) (D4 (DB a))
instance TSucc (D3 (DA a)) (D4 (DA a))
instance TSucc (D3 (D9 a)) (D4 (D9 a))
instance TSucc (D3 (D8 a)) (D4 (D8 a))
instance TSucc (D3 (D7 a)) (D4 (D7 a))
instance TSucc (D3 (D6 a)) (D4 (D6 a))
instance TSucc (D3 (D5 a)) (D4 (D5 a))
instance TSucc (D3 (D4 a)) (D4 (D4 a))
instance TSucc (D3 (D3 a)) (D4 (D3 a))
instance TSucc (D3 (D2 a)) (D4 (D2 a))
instance TSucc (D3 (D1 a)) (D4 (D1 a))
instance TSucc (D3 (D0 a)) (D4 (D0 a))
instance TSucc (D2 (DF a)) (D3 (DF a))
instance TSucc (D2 (DE a)) (D3 (DE a))
instance TSucc (D2 (DD a)) (D3 (DD a))
instance TSucc (D2 (DC a)) (D3 (DC a))
instance TSucc (D2 (DB a)) (D3 (DB a))
instance TSucc (D2 (DA a)) (D3 (DA a))
instance TSucc (D2 (D9 a)) (D3 (D9 a))
instance TSucc (D2 (D8 a)) (D3 (D8 a))
instance TSucc (D2 (D7 a)) (D3 (D7 a))
instance TSucc (D2 (D6 a)) (D3 (D6 a))
instance TSucc (D2 (D5 a)) (D3 (D5 a))
instance TSucc (D2 (D4 a)) (D3 (D4 a))
instance TSucc (D2 (D3 a)) (D3 (D3 a))
instance TSucc (D2 (D2 a)) (D3 (D2 a))
instance TSucc (D2 (D1 a)) (D3 (D1 a))
instance TSucc (D2 (D0 a)) (D3 (D0 a))
instance TSucc (D1 (DF a)) (D2 (DF a))
instance TSucc (D1 (DE a)) (D2 (DE a))
instance TSucc (D1 (DD a)) (D2 (DD a))
instance TSucc (D1 (DC a)) (D2 (DC a))
instance TSucc (D1 (DB a)) (D2 (DB a))
instance TSucc (D1 (DA a)) (D2 (DA a))
instance TSucc (D1 (D9 a)) (D2 (D9 a))
instance TSucc (D1 (D8 a)) (D2 (D8 a))
instance TSucc (D1 (D7 a)) (D2 (D7 a))
instance TSucc (D1 (D6 a)) (D2 (D6 a))
instance TSucc (D1 (D5 a)) (D2 (D5 a))
instance TSucc (D1 (D4 a)) (D2 (D4 a))
instance TSucc (D1 (D3 a)) (D2 (D3 a))
instance TSucc (D1 (D2 a)) (D2 (D2 a))
instance TSucc (D1 (D1 a)) (D2 (D1 a))
instance TSucc (D1 (D0 a)) (D2 (D0 a))
instance TSucc (D0 (DF a)) (D1 (DF a))
instance TSucc (D0 (DE a)) (D1 (DE a))
instance TSucc (D0 (DD a)) (D1 (DD a))
instance TSucc (D0 (DC a)) (D1 (DC a))
instance TSucc (D0 (DB a)) (D1 (DB a))
instance TSucc (D0 (DA a)) (D1 (DA a))
instance TSucc (D0 (D9 a)) (D1 (D9 a))
instance TSucc (D0 (D8 a)) (D1 (D8 a))
instance TSucc (D0 (D7 a)) (D1 (D7 a))
instance TSucc (D0 (D6 a)) (D1 (D6 a))
instance TSucc (D0 (D5 a)) (D1 (D5 a))
instance TSucc (D0 (D4 a)) (D1 (D4 a))
instance TSucc (D0 (D3 a)) (D1 (D3 a))
instance TSucc (D0 (D2 a)) (D1 (D2 a))
instance TSucc (D0 (D1 a)) (D1 (D1 a))
instance TSucc (D0 (D0 a)) (D1 (D0 a))
instance TSucc (DD T) (DE T)
instance TSucc (DC T) (DD T)
instance TSucc (DB T) (DC T)
instance TSucc (DA T) (DB T)
instance TSucc (D9 T) (DA T)
instance TSucc (D8 T) (D9 T)
instance TSucc (D7 T) (D8 T)
instance TSucc (D6 T) (D7 T)
instance TSucc (D5 T) (D6 T)
instance TSucc (D4 T) (D5 T)
instance TSucc (D3 T) (D4 T)
instance TSucc (D2 T) (D3 T)
instance TSucc (D1 T) (D2 T)
instance TSucc (D0 T) (D1 T)
instance TSucc (DE F) (DF F)
instance TSucc (DD F) (DE F)
instance TSucc (DC F) (DD F)
instance TSucc (DB F) (DC F)
instance TSucc (DA F) (DB F)
instance TSucc (D9 F) (DA F)
instance TSucc (D8 F) (D9 F)
instance TSucc (D7 F) (D8 F)
instance TSucc (D6 F) (D7 F)
instance TSucc (D5 F) (D6 F)
instance TSucc (D4 F) (D5 F)
instance TSucc (D3 F) (D4 F)
instance TSucc (D2 F) (D3 F)
instance TSucc (D1 F) (D2 F)
instance (TSucc n m, ExtF n, Ext0 m) => TSucc (DF n) (D0 m)
instance TSucc (DE T) T
instance TSucc F (D1 F)
instance TSucc T F
-- | Type-level hexadecimal numbers, positive and negative with infinite
-- precision. Should work out to about 2^72 without changing the default
-- context length limit in GHC.
--
-- TODO: TDivMod, TImplies, TGCD, T*Bit, and the boolean operators
module Data.Type.Hex
-- | $(hexE n) returns an undefined value of the appropriate THex instance
hexE :: Integral a => a -> Exp
-- | $(hexT n) returns the appropriate THex instance
hexT :: Integral a => a -> Type
class TIsZero n b | n -> b
class TIsPositive n b | n -> b
class TIsNegative n b | n -> b
tIsZero :: TIsZero n b => n -> b
tIsPositive :: TIsPositive n b => n -> b
tIsNegative :: TIsNegative n b => n -> b
class TNeg a b | a -> b, b -> a
tNeg :: TNeg a b => a -> b
tSucc :: TSucc n m => n -> m
tPred :: TSucc n m => m -> n
class TAdd a b c | a b -> c, a c -> b, b c -> a
tAdd :: TAdd a b c => a -> b -> c
tSub :: TAdd a b c => c -> a -> b
-- | A simple peasant multiplier. TODO: exploit 2s complement and reverse
-- the worst cases
class TMul a b c | a b -> c
tMul :: TMul a b c => a -> b -> c
-- | peasant exponentiator
class TPow a b c | a b -> c
tPow :: TPow a b c => a -> b -> c
class TNF a b | a -> b
tNF :: TNF a b => a -> b
class THexBinary a b | a -> b, b -> a
-- | Simple type-level Maybe w JustNothing Types
module Data.Type.Maybe
data TNothing
tNothing :: TNothing
data TJust x
tJust :: t -> TJust t
tFromJust :: TJust t -> t
class TCMaybe Closure s => TMaybe s
instance TLt TNothing TNothing F
instance TLt (TJust b) TNothing F
instance TLt TNothing (TJust b) T
instance TLt a b r => TLt (TJust a) (TJust b) r
instance TEq a b r => TEq (TJust a) (TJust b) r
instance TEq (TJust a) TNothing F
instance TEq TNothing (TJust a) F
instance TEq TNothing TNothing T
instance TMaybe (TJust a)
instance TMaybe TNothing
instance TCMaybe Closure (TJust a)
instance TCMaybe Closure TNothing
instance Show a => Show (TJust a)
instance Show TNothing
instance Closed Closure