TYPE SIGNATURES meth1 :: forall a. C1 a => a -> a meth2 :: forall a b. (C2 a b, a ~ b) => a -> b meth3 :: forall a b. C3 a b => a -> F3 b -> F3 b meth4 :: forall a b. C4 a b => a -> F4 b -> F4 b TYPE CONSTRUCTORS class C1 a where meth1 :: a -> a {-# MINIMAL meth1 #-} class C2 a b where meth2 :: a ~ b => a -> b {-# MINIMAL meth2 #-} class C3 a b where type family F3 b :: * open meth3 :: a -> F3 b -> F3 b {-# MINIMAL meth3 #-} class C4 a b where meth4 :: a -> F4 b -> F4 b {-# MINIMAL meth4 #-} type family F4 a :: * open type Syn1 a = F4 a type Syn2 a = [a] COERCION AXIOMS axiom Roles3.N:C1 :: C1 a = a -> a -- Defined at Roles3.hs:6:1 axiom Roles3.N:C2 :: C2 a b = a ~ b => a -> b -- Defined at Roles3.hs:9:1 axiom Roles3.N:C3 :: C3 a b = a -> F3 b -> F3 b -- Defined at Roles3.hs:12:1 axiom Roles3.N:C4 :: C4 a b = a -> F4 b -> F4 b -- Defined at Roles3.hs:18:1 Dependent modules: [] Dependent packages: [base-4.10.0.0, ghc-prim-0.5.0.0, integer-gmp-1.0.0.1] ==================== Typechecker ==================== Roles3.$tcC4 = GHC.Types.TyCon 6800596812149592130## 15513203864133461281## Roles3.$trModule (GHC.Types.TrNameS "C4"#) 0 krep krep [InlPrag=[~]] = GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepTyConApp GHC.Types.$tcConstraint [])) Roles3.$tcC3 = GHC.Types.TyCon 5076086601454991970## 10299714674904836194## Roles3.$trModule (GHC.Types.TrNameS "C3"#) 0 krep krep [InlPrag=[~]] = GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepTyConApp GHC.Types.$tcConstraint [])) Roles3.$tcC2 = GHC.Types.TyCon 7902873224172523979## 11840994447152209031## Roles3.$trModule (GHC.Types.TrNameS "C2"#) 0 krep krep [InlPrag=[~]] = GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepTyConApp GHC.Types.$tcConstraint [])) Roles3.$tc'C:C2 = GHC.Types.TyCon 11218882737915989529## 9454910899374397367## Roles3.$trModule (GHC.Types.TrNameS "'C:C2"#) 2 krep krep [InlPrag=[~]] = GHC.Types.KindRepFun (GHC.Types.KindRepFun (GHC.Types.KindRepTyConApp Data.Type.Equality.$tc~ ((:) (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) ((:) (GHC.Types.KindRepVar 0) ((:) (GHC.Types.KindRepVar 1) [])))) (GHC.Types.KindRepFun (GHC.Types.KindRepVar 0) (GHC.Types.KindRepVar 1))) (GHC.Types.KindRepTyConApp Roles3.$tcC2 ((:) (GHC.Types.KindRepVar 0) ((:) (GHC.Types.KindRepVar 1) []))) Roles3.$tcC1 = GHC.Types.TyCon 11013585501375994163## 16371608655219610659## Roles3.$trModule (GHC.Types.TrNameS "C1"#) 0 krep krep [InlPrag=[~]] = GHC.Types.KindRepFun (GHC.Types.KindRepTYPE GHC.Types.LiftedRep) (GHC.Types.KindRepTyConApp GHC.Types.$tcConstraint []) Roles3.$tc'C:C1 = GHC.Types.TyCon 4508088879886988796## 13962145553903222779## Roles3.$trModule (GHC.Types.TrNameS "'C:C1"#) 1 krep krep [InlPrag=[~]] = GHC.Types.KindRepFun (GHC.Types.KindRepFun (GHC.Types.KindRepVar 0) (GHC.Types.KindRepVar 0)) (GHC.Types.KindRepTyConApp Roles3.$tcC1 ((:) (GHC.Types.KindRepVar 0) [])) Roles3.$trModule = GHC.Types.Module (GHC.Types.TrNameS "main"#) (GHC.Types.TrNameS "Roles3"#)