This file is indexed.

/usr/share/doc/libghc-type-level-numbers-doc/html/type-level-numbers.txt is in libghc-type-level-numbers-doc 0.1.1.1-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Type level numbers implemented using type families.
--   
--   This is type level numbers implemented using type families. Natural
--   numbers use binary encoding. With default context stack numbers up to
--   2^18-1 coudl be represented. Signed integer numbers use balanced
--   ternary encoding.
--   
--   Package is structured as folows:
--   
--   <ul>
--   <li>[<tt>TypeLevel.Number.Classes</tt>] contain generic type families
--   such as Add</li>
--   <li>[<tt>TypeLevel.Number.Nat</tt>] natural numbers implemented using
--   binary encoding</li>
--   <li>[<tt>TypeLevel.Number.Int</tt>] signed integers implemented using
--   balanced ternary encoding</li>
--   <li>[<tt>TypeLevel.Boolean</tt>] type level booleans</li>
--   </ul>
--   
--   So far comparison of numbers, subtraction and multiplication of
--   numbers are supported.
@package type-level-numbers
@version 0.1.1.1


module TypeLevel.Reify

-- | Value with type tag
data Witness t a
Witness :: a -> Witness t a
[getValue] :: Witness t a -> a

-- | Convert type level into value level using
class Reify t a
witness :: Reify t a => Witness t a
instance (Data.Data.Data t, Data.Data.Data a) => Data.Data.Data (TypeLevel.Reify.Witness t a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (TypeLevel.Reify.Witness t a)
instance GHC.Show.Show a => GHC.Show.Show (TypeLevel.Reify.Witness t a)

module TypeLevel.Boolean

-- | Data type for truth
data True

-- | Data type for false.
data False

-- | Negation
notT :: a -> Not a

-- | And for boolean types
andT :: a -> b -> And a b

-- | Or for boolean types
orT :: a -> b -> Or a b

-- | Exlusive or for boolean types
xorT :: a -> b -> Xor a b
instance GHC.Show.Show TypeLevel.Boolean.False
instance GHC.Show.Show TypeLevel.Boolean.True
instance TypeLevel.Reify.Reify TypeLevel.Boolean.True GHC.Types.Bool
instance TypeLevel.Reify.Reify TypeLevel.Boolean.False GHC.Types.Bool


-- | This module contain interface type classes for operations with type
--   level numbers.
module TypeLevel.Number.Classes

-- | Type family for comparing two numbers. It's expected that for any two
--   valid <tt>n</tt> and <tt>m</tt> 'Compare n m' is equal to IsLess when
--   'n&lt;m', IsEqual when 'n=m' and IsGreater when 'n&gt;m'.
compareN :: n -> m -> Compare n m
data IsLesser
data IsEqual
data IsGreater

-- | Numbers n and m are instances of this class if and only is n &lt; m.
class Lesser n m

-- | Numbers n and m are instances of this class if and only is n &lt;= m.
class LesserEq n m

-- | Numbers n and m are instances of this class if and only is n &gt; m.
class Greater n m

-- | Numbers n and m are instances of this class if and only is n &gt;= m.
class GreaterEq n m

-- | Positive number.
class Positive n

-- | Non-zero number. For naturals it's same as positive
class NonZero n

-- | Next number.
nextN :: n -> Next n

-- | Previous number
prevN :: n -> Prev n

-- | Negate number.
negateN :: n -> Negate n

-- | Sum of two numbers.
addN :: n -> m -> Add n m

-- | Difference of two numbers.
subN :: n -> m -> Sub n m

-- | Product of two numbers.
mulN :: n -> m -> Mul n m

-- | Division of two numbers. <tt>n</tt> and <tt>m</tt> should be instances
--   of this class only if remainder of 'n/m' is zero.
divN :: n -> m -> Div n m

-- | Usually numbers have non-unique representation. This type family is
--   canonical representation of number.
instance GHC.Show.Show TypeLevel.Number.Classes.IsLesser
instance GHC.Show.Show TypeLevel.Number.Classes.IsEqual
instance GHC.Show.Show TypeLevel.Number.Classes.IsGreater
instance TypeLevel.Number.Classes.OneOfTwo a a b
instance TypeLevel.Number.Classes.OneOfTwo a b a
instance TypeLevel.Number.Classes.OneOfTwo a a a
instance TypeLevel.Number.Classes.Compare n m ~ TypeLevel.Number.Classes.IsLesser => TypeLevel.Number.Classes.Lesser n m
instance TypeLevel.Number.Classes.Compare n m ~ TypeLevel.Number.Classes.IsGreater => TypeLevel.Number.Classes.Greater n m
instance TypeLevel.Number.Classes.OneOfTwo (TypeLevel.Number.Classes.Compare n m) TypeLevel.Number.Classes.IsLesser TypeLevel.Number.Classes.IsEqual => TypeLevel.Number.Classes.LesserEq n m
instance TypeLevel.Number.Classes.OneOfTwo (TypeLevel.Number.Classes.Compare n m) TypeLevel.Number.Classes.IsGreater TypeLevel.Number.Classes.IsEqual => TypeLevel.Number.Classes.GreaterEq n m


-- | This is type level natural numbers. They are represented using binary
--   encoding which means that reasonable large numbers could be
--   represented. With default context stack depth (20) maximal number is
--   2^18-1 (262143).
--   
--   <pre>
--   Z           = 0
--   I Z         = 1
--   O (I Z)     = 2
--   I (I Z)     = 3
--   O (O (I Z)) = 4
--   ...
--   </pre>
--   
--   It's easy to see that representation for each number is not unique.
--   One could add any numbers of leading zeroes:
--   
--   <pre>
--   I Z = I (O Z) = I (O (O Z)) = 1
--   </pre>
--   
--   In order to enforce uniqueness of representation only numbers without
--   leading zeroes are members of Nat type class. This means than types
--   are equal if and only if numbers are equal.
--   
--   Natural numbers support comparison and following operations: Next,
--   Prev, Add, Sub, Mul. All operations on numbers return normalized
--   numbers.
--   
--   Interface type classes are reexported from TypeLevel.Number.Classes
module TypeLevel.Number.Nat

-- | One bit.
data I n

-- | Zero bit.
data O n

-- | Bit stream terminator.
data Z

-- | Type class for natural numbers. Only numbers without leading zeroes
--   are members of this type class.
class Nat n

-- | Convert natural number to integral value. It's not checked whether
--   value could be represented.
toInt :: (Nat n, Integral i) => n -> i

-- | Some natural number
data SomeNat
[SomeNat] :: Nat n => n -> SomeNat

-- | Apply function which could work with any <a>Nat</a> value only know at
--   runtime.
withNat :: forall i a. (Integral i) => (forall n. Nat n => n -> a) -> i -> a

-- | Create type for natural number.
natT :: Integer -> TypeQ

-- | Create value for type level natural. Value itself is undefined.
nat :: Integer -> ExpQ
instance TypeLevel.Number.Nat.Nat TypeLevel.Number.Nat.Types.Z
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z)
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O n))
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I (TypeLevel.Number.Nat.Types.O n))
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I n))
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I (TypeLevel.Number.Nat.Types.I n))
instance TypeLevel.Number.Nat.Number_Is_Denormalized TypeLevel.Number.Nat.Types.Z => TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O TypeLevel.Number.Nat.Types.Z)
instance (TypeLevel.Number.Nat.Nat n, TypeLevel.Number.Classes.Positive n) => TypeLevel.Number.Nat.Pos n
instance GHC.Show.Show TypeLevel.Number.Nat.SomeNat
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Integer.Type.Integer
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Integer.Type.Integer
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Integer.Type.Integer
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Types.Int
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Types.Int
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Types.Int
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Word.Word8
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.O n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z)))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Word.Word8
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.I n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z)))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Word.Word8
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Word.Word16
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.O n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z)))))))))))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Word.Word16
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.I n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z)))))))))))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Word.Word16
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Word.Word32
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Word.Word32
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Word.Word32
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Word.Word64
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Word.Word64
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Word.Word64
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Int.Int8
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.O n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Int.Int8
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.I n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Int.Int8
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Int.Int16
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.O n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z))))))))))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Int.Int16
instance (TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n), TypeLevel.Number.Classes.Lesser (TypeLevel.Number.Nat.Types.I n) (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.O (TypeLevel.Number.Nat.Types.I TypeLevel.Number.Nat.Types.Z))))))))))))))))) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Int.Int16
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Int.Int32
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Int.Int32
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Int.Int32
instance TypeLevel.Reify.Reify TypeLevel.Number.Nat.Types.Z GHC.Int.Int64
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.O n) GHC.Int.Int64
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Reify.Reify (TypeLevel.Number.Nat.Types.I n) GHC.Int.Int64
instance GHC.Show.Show TypeLevel.Number.Nat.Types.Z
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => GHC.Show.Show (TypeLevel.Number.Nat.Types.O n)
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => GHC.Show.Show (TypeLevel.Number.Nat.Types.I n)
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Number.Classes.Positive (TypeLevel.Number.Nat.Types.I n)
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Number.Classes.Positive (TypeLevel.Number.Nat.Types.O n)
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.I n) => TypeLevel.Number.Classes.NonZero (TypeLevel.Number.Nat.Types.I n)
instance TypeLevel.Number.Nat.Nat (TypeLevel.Number.Nat.Types.O n) => TypeLevel.Number.Classes.NonZero (TypeLevel.Number.Nat.Types.O n)

module TypeLevel.Number.Nat.Num
type N0 = Z
type N1 = I Z
type N2 = O (I Z)
type N3 = I (I Z)
type N4 = O (O (I Z))
type N5 = I (O (I Z))
type N6 = O (I (I Z))
type N7 = I (I (I Z))
type N8 = O (O (O (I Z)))
type N9 = I (O (O (I Z)))
n0 :: N0
n1 :: N1
n2 :: N2
n3 :: N3
n4 :: N4
n5 :: N5
n6 :: N6
n7 :: N7
n8 :: N8
n9 :: N9


-- | Type level signed integer numbers are implemented using balanced
--   ternary encoding much in the same way as natural numbers.
--   
--   Currently following operations are supported: Next, Prev, Add, Sub,
--   Mul.
module TypeLevel.Number.Int

-- | Digit stream terminator
data ZZ

-- | Digit -1
data Dn n

-- | Digit 0
data D0 n

-- | Digit 1
data D1 n

-- | Type class for type level integers. Only numbers without leading
--   zeroes are members of the class.
class IntT n

-- | Convert natural number to integral value. It's not checked whether
--   value could be represented.
toInt :: (IntT n, Integral i) => n -> i

-- | Some natural number
data SomeInt

-- | Apply function which could work with any <tt>Nat</tt> value only know
--   at runtime.
withInt :: forall i a. (Integral i) => (forall n. IntT n => n -> a) -> i -> a

-- | Generate type for integer number.
intT :: Integer -> TypeQ
instance TypeLevel.Number.Int.IntT TypeLevel.Number.Int.Types.ZZ
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 TypeLevel.Number.Int.Types.ZZ)
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn TypeLevel.Number.Int.Types.ZZ)
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn (TypeLevel.Number.Int.Types.Dn n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 (TypeLevel.Number.Int.Types.Dn n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 (TypeLevel.Number.Int.Types.Dn n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn (TypeLevel.Number.Int.Types.D0 n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 (TypeLevel.Number.Int.Types.D0 n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 (TypeLevel.Number.Int.Types.D0 n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn (TypeLevel.Number.Int.Types.D1 n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 (TypeLevel.Number.Int.Types.D1 n))
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 n) => TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 (TypeLevel.Number.Int.Types.D1 n))
instance GHC.Show.Show TypeLevel.Number.Int.Types.ZZ
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.Dn n) => GHC.Show.Show (TypeLevel.Number.Int.Types.Dn n)
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D0 n) => GHC.Show.Show (TypeLevel.Number.Int.Types.D0 n)
instance TypeLevel.Number.Int.IntT (TypeLevel.Number.Int.Types.D1 n) => GHC.Show.Show (TypeLevel.Number.Int.Types.D1 n)
instance GHC.Show.Show TypeLevel.Number.Int.SomeInt