Remove old coercion pretty-printer
[ghc.git] / compiler / types / Coercion.hs-boot
1 {-# LANGUAGE FlexibleContexts #-}
2
3 module Coercion where
4
5 import {-# SOURCE #-} TyCoRep
6 import {-# SOURCE #-} TyCon
7
8 import BasicTypes ( LeftOrRight )
9 import CoAxiom
10 import Var
11 import Pair
12 import Util
13
14 mkReflCo :: Role -> Type -> Coercion
15 mkTyConAppCo :: HasDebugCallStack => Role -> TyCon -> [Coercion] -> Coercion
16 mkAppCo :: Coercion -> Coercion -> Coercion
17 mkForAllCo :: TyVar -> Coercion -> Coercion -> Coercion
18 mkFunCo :: Role -> Coercion -> Coercion -> Coercion
19 mkCoVarCo :: CoVar -> Coercion
20 mkAxiomInstCo :: CoAxiom Branched -> BranchIndex -> [Coercion] -> Coercion
21 mkPhantomCo :: Coercion -> Type -> Type -> Coercion
22 mkUnsafeCo :: Role -> Type -> Type -> Coercion
23 mkUnivCo :: UnivCoProvenance -> Role -> Type -> Type -> Coercion
24 mkSymCo :: Coercion -> Coercion
25 mkTransCo :: Coercion -> Coercion -> Coercion
26 mkNthCo :: Int -> Coercion -> Coercion
27 mkLRCo :: LeftOrRight -> Coercion -> Coercion
28 mkInstCo :: Coercion -> Coercion -> Coercion
29 mkCoherenceCo :: Coercion -> Coercion -> Coercion
30 mkKindCo :: Coercion -> Coercion
31 mkSubCo :: Coercion -> Coercion
32 mkProofIrrelCo :: Role -> Coercion -> Coercion -> Coercion -> Coercion
33
34 mkFunCos :: Role -> [Coercion] -> Coercion -> Coercion
35
36 isReflCo :: Coercion -> Bool
37 isReflexiveCo :: Coercion -> Bool
38 coVarKindsTypesRole :: CoVar -> (Kind, Kind, Type, Type, Role)
39 coVarRole :: CoVar -> Role
40
41 mkCoercionType :: Role -> Type -> Type -> Type
42
43 data LiftingContext
44 liftCoSubst :: HasDebugCallStack => Role -> LiftingContext -> Type -> Coercion
45 seqCo :: Coercion -> ()
46
47 coercionKind :: Coercion -> Pair Type
48 coercionType :: Coercion -> Type