cryptol-3.0.0: Cryptol: The Language of Cryptography

Safe Haskell | Safe
Language | Haskell2010

Cryptol.TypeCheck.TCon

Synopsis

- infixPrimTy :: TCon -> Maybe (Ident, Fixity)
- builtInType :: Name -> Maybe TCon
- data Kind
  - = KType
  - | KNum
  - | KProp
  - | Kind :-> Kind
- class HasKind t where
  - kindOf :: t -> Kind
- data TCon
  - = TC TC
  - | PC PC
  - | TF TFun
  - | TError Kind
- data PC
  - = PEqual
  - | PNeq
  - | PGeq
  - | PFin
  - | PPrime
  - | PHas Selector
  - | PZero
  - | PLogic
  - | PRing
  - | PIntegral
  - | PField
  - | PRound
  - | PEq
  - | PCmp
  - | PSignedCmp
  - | PLiteral
  - | PLiteralLessThan
  - | PFLiteral
  - | PValidFloat
  - | PAnd
  - | PTrue
- data TC
  - = TCNum Integer
  - | TCInf
  - | TCBit
  - | TCInteger
  - | TCFloat
  - | TCIntMod
  - | TCRational
  - | TCArray
  - | TCSeq
  - | TCFun
  - | TCTuple Int
  - | TCAbstract UserTC
- data UserTC = UserTC Name Kind
- data TFun
  - = TCAdd
  - | TCSub
  - | TCMul
  - | TCDiv
  - | TCMod
  - | TCExp
  - | TCWidth
  - | TCMin
  - | TCMax
  - | TCCeilDiv
  - | TCCeilMod
  - | TCLenFromThenTo

# Documentation

infixPrimTy :: TCon -> Maybe (Ident, Fixity) Source #

This is used for pretty prinitng. XXX: it would be nice to just rely in the info from the Prelude.

builtInType :: Name -> Maybe TCon Source #

data Kind Source #

Kinds, classify types.

Constructors

KType |
KNum |
KProp |
Kind :-> Kind infixr 5 |

#### Instances

Instances details

Generic Kind Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Associated Types type Rep Kind :: Type -> Type Source # Methods from :: Kind -> Rep Kind x Source # to :: Rep Kind x -> Kind Source #
Show Kind Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods showsPrec :: Int -> Kind -> ShowS Source # show :: Kind -> String Source # showList :: [Kind] -> ShowS Source #
PP Kind Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods ppPrec :: Int -> Kind -> Doc Source #
NFData Kind Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods rnf :: Kind -> () Source #
Eq Kind Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods (==) :: Kind -> Kind -> Bool Source # (/=) :: Kind -> Kind -> Bool Source #
Ord Kind Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods compare :: Kind -> Kind -> Ordering Source # (<) :: Kind -> Kind -> Bool Source # (<=) :: Kind -> Kind -> Bool Source # (>) :: Kind -> Kind -> Bool Source # (>=) :: Kind -> Kind -> Bool Source # max :: Kind -> Kind -> Kind Source # min :: Kind -> Kind -> Kind Source #
type Rep Kind Source # |

Instance details

Defined in Cryptol.TypeCheck.TCon

type Rep Kind = D1 ('MetaData "Kind" "Cryptol.TypeCheck.TCon" "cryptol-3.0.0-DBVDUAjB1JeD0WzkHH4ckn" 'False) ((C1 ('MetaCons "KType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KNum" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "KProp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons ":->" ('InfixI 'RightAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))))

class HasKind t where Source #

Methods

kindOf :: t -> Kind Source #

#### Instances

Instances details

HasKind PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: PC -> Kind Source #
HasKind TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: TC -> Kind Source #
HasKind TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: TCon -> Kind Source #
HasKind TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: TFun -> Kind Source #
HasKind UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: UserTC -> Kind Source #
HasKind AbstractType Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods kindOf :: AbstractType -> Kind Source #
HasKind Newtype Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods kindOf :: Newtype -> Kind Source #
HasKind TParam Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods kindOf :: TParam -> Kind Source #
HasKind TVar Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods kindOf :: TVar -> Kind Source #
HasKind TySyn Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods kindOf :: TySyn -> Kind Source #
HasKind Type Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods kindOf :: Type -> Kind Source #

data TCon Source #

Type constants.

Constructors

TC TC |
PC PC |
TF TFun |
TError Kind |

#### Instances

Instances details

Generic TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Associated Types type Rep TCon :: Type -> Type Source # Methods from :: TCon -> Rep TCon x Source # to :: Rep TCon x -> TCon Source #
Show TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods showsPrec :: Int -> TCon -> ShowS Source # show :: TCon -> String Source # showList :: [TCon] -> ShowS Source #
FreeVars TCon Source # |
Instance details Defined in Cryptol.IR.FreeVars Methods freeVars :: TCon -> Deps Source #
TraverseNames TCon Source # |
Instance details Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TCon -> f TCon Source #
HasKind TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: TCon -> Kind Source #
FreeAbstract TCon Source # |
Instance details Defined in Cryptol.TypeCheck.Type Methods freeAbstract :: TCon -> Set UserTC Source #
PP TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods ppPrec :: Int -> TCon -> Doc Source #
NFData TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods rnf :: TCon -> () Source #
Eq TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods (==) :: TCon -> TCon -> Bool Source # (/=) :: TCon -> TCon -> Bool Source #
Ord TCon Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods compare :: TCon -> TCon -> Ordering Source # (<) :: TCon -> TCon -> Bool Source # (<=) :: TCon -> TCon -> Bool Source # (>) :: TCon -> TCon -> Bool Source # (>=) :: TCon -> TCon -> Bool Source # max :: TCon -> TCon -> TCon Source # min :: TCon -> TCon -> TCon Source #
type Rep TCon Source # |

Instance details

Defined in Cryptol.TypeCheck.TCon

type Rep TCon = D1 ('MetaData "TCon" "Cryptol.TypeCheck.TCon" "cryptol-3.0.0-DBVDUAjB1JeD0WzkHH4ckn" 'False) ((C1 ('MetaCons "TC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TC)) :+: C1 ('MetaCons "PC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PC))) :+: (C1 ('MetaCons "TF" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TFun)) :+: C1 ('MetaCons "TError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))))

data PC Source #

Predicate symbols. If you add additional user-visible constructors, please update `primTys`.

Constructors

PEqual

    _ == _

PNeq

    _ /= _

PGeq

    _ >= _

PFin

    fin _

PPrime

    prime _

PHas Selector | `Has sel type field` does not appear in schemas

PZero

    Zero _

PLogic

    Logic _

PRing

    Ring _

PIntegral

    Integral _

PField

    Field _

PRound

    Round _

PEq

    Eq _

PCmp

    Cmp _

PSignedCmp

    SignedCmp _

PLiteral

    Literal _ _

PLiteralLessThan

    LiteralLessThan _ _

PFLiteral

    FLiteral _ _ _

PValidFloat | `ValidFloat _ _` constraints on supported floating point representaitons
PAnd | This is useful when simplifying things in place
PTrue | Ditto

#### Instances

Instances details

Generic PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Associated Types type Rep PC :: Type -> Type Source # Methods from :: PC -> Rep PC x Source # to :: Rep PC x -> PC Source #
Show PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods showsPrec :: Int -> PC -> ShowS Source # show :: PC -> String Source # showList :: [PC] -> ShowS Source #
HasKind PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: PC -> Kind Source #
PP PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods ppPrec :: Int -> PC -> Doc Source #
NFData PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods rnf :: PC -> () Source #
Eq PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods (==) :: PC -> PC -> Bool Source # (/=) :: PC -> PC -> Bool Source #
Ord PC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods compare :: PC -> PC -> Ordering Source # (<) :: PC -> PC -> Bool Source # (<=) :: PC -> PC -> Bool Source # (>) :: PC -> PC -> Bool Source # (>=) :: PC -> PC -> Bool Source # max :: PC -> PC -> PC Source # min :: PC -> PC -> PC Source #
type Rep PC Source # |

Instance details

Defined in Cryptol.TypeCheck.TCon

type Rep PC = D1 ('MetaData "PC" "Cryptol.TypeCheck.TCon" "cryptol-3.0.0-DBVDUAjB1JeD0WzkHH4ckn" 'False) ((((C1 ('MetaCons "PEqual" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PNeq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PGeq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PFin" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PPrime" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "PHas" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Selector)) :+: C1 ('MetaCons "PZero" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PLogic" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PRing" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PIntegral" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "PField" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PRound" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PCmp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PSignedCmp" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "PLiteral" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PLiteralLessThan" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PFLiteral" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "PValidFloat" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PTrue" 'PrefixI 'False) (U1 :: Type -> Type))))))

data TC Source #

1-1 constants. If you add additional user-visible constructors, please update `primTys`.

Constructors

TCNum Integer | Numbers
TCInf | Inf
TCBit | Bit
TCInteger | Integer
TCFloat | Float

TCIntMod

    Z _

TCRational

    Rational

TCArray

    Array _ _

TCSeq

    [_] _

TCFun

    _ -> _

TCTuple Int

    (_, _, _)

TCAbstract UserTC | An abstract type

#### Instances

Instances details

Generic TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Associated Types type Rep TC :: Type -> Type Source # Methods from :: TC -> Rep TC x Source # to :: Rep TC x -> TC Source #
Show TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods showsPrec :: Int -> TC -> ShowS Source # show :: TC -> String Source # showList :: [TC] -> ShowS Source #
TraverseNames TC Source # |
Instance details Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TC -> f TC Source #
HasKind TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: TC -> Kind Source #
PP TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods ppPrec :: Int -> TC -> Doc Source #
NFData TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods rnf :: TC -> () Source #
Eq TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods (==) :: TC -> TC -> Bool Source # (/=) :: TC -> TC -> Bool Source #
Ord TC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods compare :: TC -> TC -> Ordering Source # (<) :: TC -> TC -> Bool Source # (<=) :: TC -> TC -> Bool Source # (>) :: TC -> TC -> Bool Source # (>=) :: TC -> TC -> Bool Source # max :: TC -> TC -> TC Source # min :: TC -> TC -> TC Source #
type Rep TC Source # |

Instance details

Defined in Cryptol.TypeCheck.TCon

type Rep TC = D1 ('MetaData "TC" "Cryptol.TypeCheck.TCon" "cryptol-3.0.0-DBVDUAjB1JeD0WzkHH4ckn" 'False) (((C1 ('MetaCons "TCNum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "TCInf" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCBit" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TCInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCFloat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCIntMod" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TCRational" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCArray" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCSeq" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TCFun" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCTuple" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "TCAbstract" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UserTC))))))

data UserTC Source #

Constructors

UserTC Name Kind |

#### Instances

Instances details

Generic UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Associated Types type Rep UserTC :: Type -> Type Source # Methods from :: UserTC -> Rep UserTC x Source # to :: Rep UserTC x -> UserTC Source #
Show UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods showsPrec :: Int -> UserTC -> ShowS Source # show :: UserTC -> String Source # showList :: [UserTC] -> ShowS Source #
TraverseNames UserTC Source # |
Instance details Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => UserTC -> f UserTC Source #
HasKind UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: UserTC -> Kind Source #
PP UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods ppPrec :: Int -> UserTC -> Doc Source #
NFData UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods rnf :: UserTC -> () Source #
Eq UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods (==) :: UserTC -> UserTC -> Bool Source # (/=) :: UserTC -> UserTC -> Bool Source #
Ord UserTC Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods compare :: UserTC -> UserTC -> Ordering Source # (<) :: UserTC -> UserTC -> Bool Source # (<=) :: UserTC -> UserTC -> Bool Source # (>) :: UserTC -> UserTC -> Bool Source # (>=) :: UserTC -> UserTC -> Bool Source # max :: UserTC -> UserTC -> UserTC Source # min :: UserTC -> UserTC -> UserTC Source #
type Rep UserTC Source # |

Instance details

Defined in Cryptol.TypeCheck.TCon

type Rep UserTC = D1 ('MetaData "UserTC" "Cryptol.TypeCheck.TCon" "cryptol-3.0.0-DBVDUAjB1JeD0WzkHH4ckn" 'False) (C1 ('MetaCons "UserTC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)))

data TFun Source #

Built-in type functions. If you add additional user-visible constructors, please update `primTys` in Cryptol.Prims.Types.

Constructors

TCAdd

     : Num -> Num -> Num

TCSub

     : Num -> Num -> Num

TCMul

     : Num -> Num -> Num

TCDiv

     : Num -> Num -> Num

TCMod

     : Num -> Num -> Num

TCExp

     : Num -> Num -> Num

TCWidth

     : Num -> Num

TCMin

     : Num -> Num -> Num

TCMax

     : Num -> Num -> Num

TCCeilDiv

     : Num -> Num -> Num

TCCeilMod

     : Num -> Num -> Num

TCLenFromThenTo | `: Num -> Num -> Num -> Num` Example: `[ 1, 5 .. 9 ] :: [lengthFromThenTo 1 5 9][b]`

#### Instances

Instances details

Bounded TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods minBound :: TFun Source # maxBound :: TFun Source #
Enum TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods succ :: TFun -> TFun Source # pred :: TFun -> TFun Source # toEnum :: Int -> TFun Source # fromEnum :: TFun -> Int Source # enumFrom :: TFun -> [TFun] Source # enumFromThen :: TFun -> TFun -> [TFun] Source # enumFromTo :: TFun -> TFun -> [TFun] Source # enumFromThenTo :: TFun -> TFun -> TFun -> [TFun] Source #
Generic TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Associated Types type Rep TFun :: Type -> Type Source # Methods from :: TFun -> Rep TFun x Source # to :: Rep TFun x -> TFun Source #
Show TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods showsPrec :: Int -> TFun -> ShowS Source # show :: TFun -> String Source # showList :: [TFun] -> ShowS Source #
HasKind TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods kindOf :: TFun -> Kind Source #
PP TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods ppPrec :: Int -> TFun -> Doc Source #
NFData TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods rnf :: TFun -> () Source #
Eq TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods (==) :: TFun -> TFun -> Bool Source # (/=) :: TFun -> TFun -> Bool Source #
Ord TFun Source # |
Instance details Defined in Cryptol.TypeCheck.TCon Methods compare :: TFun -> TFun -> Ordering Source # (<) :: TFun -> TFun -> Bool Source # (<=) :: TFun -> TFun -> Bool Source # (>) :: TFun -> TFun -> Bool Source # (>=) :: TFun -> TFun -> Bool Source # max :: TFun -> TFun -> TFun Source # min :: TFun -> TFun -> TFun Source #
type Rep TFun Source # |

Instance details

Defined in Cryptol.TypeCheck.TCon

type Rep TFun = D1 ('MetaData "TFun" "Cryptol.TypeCheck.TCon" "cryptol-3.0.0-DBVDUAjB1JeD0WzkHH4ckn" 'False) (((C1 ('MetaCons "TCAdd" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCSub" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCMul" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TCDiv" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCExp" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TCWidth" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCMin" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCMax" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TCCeilDiv" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TCCeilMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TCLenFromThenTo" 'PrefixI 'False) (U1 :: Type -> Type)))))