Refining a GADT match
get matches on a GADT, so each branch may assume a different equality. The typechecker chapter argues this one program shape is why constraint solving is deferred at all. Here is the solver actually doing it.
What you wrote.
{-# LANGUAGE GADTs #-}
-- The smallest program that forces an implication constraint: each branch of
-- `get` may assume a different equality, so each becomes its own implication
-- with its own Given.
module Refine where
data T a where
TInt :: T Int
TBool :: T Bool
get :: T a -> a
get TInt = 1
get TBool = TrueThe renamer thinking out loud: environments extended, names resolved.-ddump-rn-trace
rn1 []
rn1: checking family instance consistency994 lines
rn1: } checking family instance consistency
rn1a
rn12
newTopSrcBinder4 lines
Refine T examples/traces/Refine.hs:(8,1)-(10,17)
newTopSrcBinder4 lines
Refine TInt examples/traces/Refine.hs:9:3-16
newTopSrcBinder4 lines
Refine TBool examples/traces/Refine.hs:10:3-17
getLocalNonValBinders new_tc10 lines
tycon: Refine.T
tc_gre: Refine.T TyCon data type
defined at examples/traces/Refine.hs:8:1
sub_gres: [Refine.TInt parent:Refine.T ConLike ConInfo {con_ty: ConIsData ([Refine.TInt,
Refine.TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3,
Refine.TBool parent:Refine.T ConLike ConInfo {con_ty: ConIsData ([Refine.TInt,
Refine.TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3]getLocalNonValBinders 18 lines
[Refine.T TyCon data type defined at examples/traces/Refine.hs:8:1,
Refine.TInt parent:Refine.T ConLike ConInfo {con_ty: ConIsData ([Refine.TInt,
Refine.TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3,
Refine.TBool parent:Refine.T ConLike ConInfo {con_ty: ConIsData ([Refine.TInt,
Refine.TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3]extendGlobalRdrEnvRn 212 lines
GlobalRdrEnv (locals only) {
T:
Refine.T TyCon data type defined at examples/traces/Refine.hs:8:1
TInt:
Refine.TInt parent:Refine.T ConLike ConInfo {con_ty: ConIsData ([Refine.TInt,
Refine.TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3
TBool:
Refine.TBool parent:Refine.T ConLike ConInfo {con_ty: ConIsData ([Refine.TInt,
Refine.TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3 }getLocalNonValBinders 2 []
extendGlobalRdrEnvRn 211 lines
GlobalRdrEnv (locals only) {
T: T TyCon data type defined at examples/traces/Refine.hs:8:1
TInt:
TInt parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3
TBool:
TBool parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3 }extendGlobalRdrEnvRn 211 lines
GlobalRdrEnv (locals only) {
T: T TyCon data type defined at examples/traces/Refine.hs:8:1
TInt:
TInt parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3
TBool:
TBool parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3 }newTopSrcBinder4 lines
Refine get examples/traces/Refine.hs:13:1-3
rnSrcDecls [Refine.get]
extendGlobalRdrEnvRn 212 lines
GlobalRdrEnv (locals only) {
T: T TyCon data type defined at examples/traces/Refine.hs:8:1
TInt:
TInt parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3
TBool:
TBool parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3
get: Refine.get Vanilla defined at examples/traces/Refine.hs:13:1 }Start rnTyClDecls9 lines
[TyClGroup
[]
[data T a
where
TInt :: T Int
TBool :: T Bool]
[]
[]]rntycl-data T []
checkMixedVars36 lines
bndrs [a] bndr_kv_occs [] body_kv_occs [] implicit_kvs [] body_remaining []
rnImplicitTvOccs3 lines
[] []
bindHsQTyVars4 lines
a [] [a]
rnImplicitTvOccs3 lines
[] []
checkThLocalTyName T
checkThLocalTyName T {0} Comp Comp
addUsedGRE Int
rnConDecl (ConDeclGADT)4 lines
[TInt] HsOuterImplicit: [] []
rnImplicitTvOccs3 lines
[] []
checkThLocalTyName T
checkThLocalTyName T {0} Comp Comp
addUsedGRE Bool
rnConDecl (ConDeclGADT)4 lines
[TBool] HsOuterImplicit: [] []
rndata T False []
rnTyClDecls7 lines
tyClGroupTyClDecls: [(data T a
where
TInt :: T Int
TBool :: T Bool,
{Bool, Int, T})]
tc_names: {T}rnTyClDecls SCC analysis800 lines
rdr_env: [0_ESflH :-> [T TyCon data type
defined at examples/traces/Refine.hs:8:1],
0_ESflJ :-> [TInt parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:9:3],
0_ESflT :-> [- parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESflU :-> [* parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESfma :-> [Int TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfmb :-> [TBool parent:T ConLike ConInfo {con_ty: ConIsData ([TInt,
TBool]), fields: ConIsNullary}
defined at examples/traces/Refine.hs:10:3],
0_ESfmc :-> [Bool TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfmd :-> [get Vanilla
defined at examples/traces/Refine.hs:13:1],
0_ESfmf :-> [True parent:Bool ConLike ConInfo {con_ty: ConIsData ([False,
True]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfmi :-> [Foldable TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmk :-> [$! Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfml :-> [. Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfmm :-> [=<< Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfmn :-> [asTypeOf Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfmo :-> [const Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfmp :-> [flip Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfmq :-> [id Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfmr :-> [until Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfms :-> [&& Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfmt :-> [not Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfmu :-> [|| Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfmv :-> [either Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Either’)],
0_ESfmw :-> [all Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmx :-> [and Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmy :-> [any Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmz :-> [concat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmA :-> [concatMap Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmB :-> [mapM_ Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmC :-> [notElem Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmD :-> [or Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmE :-> [sequence_ Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfmF :-> [<$> Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Functor’)],
0_ESfmG :-> [maybe Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Maybe’)],
0_ESfmH :-> [lines Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.OldList’)],
0_ESfmI :-> [unlines Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.OldList’)],
0_ESfmJ :-> [unwords Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.OldList’)],
0_ESfmK :-> [words Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.OldList’)],
0_ESfmL :-> [curry Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Tuple’)],
0_ESfmM :-> [fst Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Tuple’)],
0_ESfmN :-> [snd Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Tuple’)],
0_ESfmO :-> [uncurry Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Tuple’)],
0_ESfmP :-> [error Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Err’)],
0_ESfmQ :-> [errorWithoutStackTrace Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Err’)],
0_ESfmR :-> [undefined Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Err’)],
0_ESfmS :-> [ioError Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.IO.Exception’)],
0_ESfmT :-> [userError Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.IO.Exception’)],
0_ESfmU :-> [!! Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfmV :-> [break Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfmW :-> [cycle Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfmX :-> [drop Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfmY :-> [dropWhile Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfmZ :-> [head Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn0 :-> [init Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn1 :-> [iterate Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn2 :-> [last Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn3 :-> [lookup Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn4 :-> [repeat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn5 :-> [replicate Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn6 :-> [reverse Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn7 :-> [scanl Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn8 :-> [scanl1 Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfn9 :-> [scanr Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfna :-> [scanr1 Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnb :-> [span Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnc :-> [splitAt Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnd :-> [tail Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfne :-> [take Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnf :-> [takeWhile Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfng :-> [unzip Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnh :-> [unzip3 Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfni :-> [zip3 Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnj :-> [zipWith Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnk :-> [zipWith3 Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfnl :-> [subtract Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESfnm :-> [lex Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Read’)],
0_ESfnn :-> [readParen Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Read’)],
0_ESfno :-> [^ Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfnp :-> [^^ Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfnq :-> [even Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfnr :-> [gcd Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfns :-> [lcm Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfnt :-> [odd Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfnu :-> [showChar Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfnv :-> [showParen Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfnw :-> [showString Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfnx :-> [shows Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfny :-> [appendFile Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnz :-> [getChar Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnA :-> [getContents Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnB :-> [getLine Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnC :-> [interact Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnD :-> [putChar Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnE :-> [putStr Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnF :-> [putStrLn Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnG :-> [readFile Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnH :-> [readIO Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnI :-> [readLn Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnJ :-> [writeFile Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfnK :-> [read Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Text.Read’)],
0_ESfnL :-> [reads Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Text.Read’)],
0_ESfnM :-> [<* parent:Applicative Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfnN :-> [liftA2 parent:Applicative Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfnO :-> [<$ parent:Functor Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfnP :-> [/= parent:Eq Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnQ :-> [< parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnR :-> [<= parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnS :-> [> parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnT :-> [compare parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnU :-> [max parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnV :-> [min parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfnW :-> [elem parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfnX :-> [foldMap parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfnY :-> [foldl parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfnZ :-> [foldl' parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo0 :-> [foldl1 parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo1 :-> [foldr parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo2 :-> [foldr1 parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo3 :-> [length parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo4 :-> [maximum parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo5 :-> [minimum parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo6 :-> [null parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo7 :-> [product parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo8 :-> [sum parent:Foldable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Foldable’)],
0_ESfo9 :-> [mapM parent:Traversable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Traversable’)],
0_ESfoa :-> [sequence parent:Traversable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Traversable’)],
0_ESfob :-> [sequenceA parent:Traversable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Traversable’)],
0_ESfoc :-> [traverse parent:Traversable Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Traversable’)],
0_ESfod :-> [maxBound parent:Bounded Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfoe :-> [minBound parent:Bounded Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfof :-> [fromEnum parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfog :-> [pred parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfoh :-> [succ parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfoi :-> [toEnum parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfoj :-> [** parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfok :-> [acos parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfol :-> [acosh parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfom :-> [asin parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfon :-> [asinh parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoo :-> [atan parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfop :-> [atanh parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoq :-> [cos parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfor :-> [cosh parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfos :-> [exp parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfot :-> [log parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfou :-> [logBase parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfov :-> [pi parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfow :-> [sin parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfox :-> [sinh parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoy :-> [sqrt parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoz :-> [tan parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoA :-> [tanh parent:Floating Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoB :-> [atan2 parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoC :-> [decodeFloat parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoD :-> [encodeFloat parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoE :-> [exponent parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoF :-> [floatDigits parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoG :-> [floatRadix parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoH :-> [floatRange parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoI :-> [isDenormalized parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoJ :-> [isIEEE parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoK :-> [isInfinite parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoL :-> [isNaN parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoM :-> [isNegativeZero parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoN :-> [scaleFloat parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoO :-> [significand parent:RealFloat Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESfoP :-> [FilePath TyCon type synonym
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.IO’)],
0_ESfoQ :-> [IOError TyCon type synonym
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.IO.Exception’)],
0_ESfoR :-> [+ parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESfoS :-> [abs parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESfoT :-> [signum parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESfoU :-> [readList parent:Read Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Read’)],
0_ESfoV :-> [readsPrec parent:Read Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Read’)],
0_ESfoW :-> [/ parent:Fractional Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfoX :-> [recip parent:Fractional Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfoY :-> [div parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfoZ :-> [divMod parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp0 :-> [mod parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp1 :-> [quot parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp2 :-> [quotRem parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp3 :-> [rem parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp4 :-> [ceiling parent:RealFrac Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp5 :-> [floor parent:RealFrac Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp6 :-> [properFraction parent:RealFrac Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp7 :-> [round parent:RealFrac Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp8 :-> [truncate parent:RealFrac Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfp9 :-> [show parent:Show Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfpa :-> [showList parent:Show Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfpb :-> [showsPrec parent:Show Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfpc :-> [ShowS TyCon type synonym
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfpd :-> [ReadS TyCon type synonym
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’)],
0_ESfr1 :-> [False parent:Bool ConLike ConInfo {con_ty: ConIsData ([False,
True]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfr2 :-> [Char TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfr4 :-> [Double TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfr6 :-> [Float TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfr9 :-> [Word TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfrc :-> [Ordering TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfrd :-> [LT parent:Ordering ConLike ConInfo {con_ty: ConIsData ([LT,
EQ,
GT]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfre :-> [EQ parent:Ordering ConLike ConInfo {con_ty: ConIsData ([LT,
EQ,
GT]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfrf :-> [GT parent:Ordering ConLike ConInfo {con_ty: ConIsData ([LT,
EQ,
GT]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfrg :-> [Maybe TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Maybe’)],
0_ESfrh :-> [Nothing parent:Maybe ConLike ConInfo {con_ty: ConIsData ([Nothing,
Just]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Maybe’)],
0_ESfri :-> [Just parent:Maybe ConLike ConInfo {con_ty: ConIsData ([Nothing,
Just]), fields: ConHasPositionalArgs}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Maybe’)],
0_ESfrl :-> [~ TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfs9 :-> [Integer TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Bignum.Integer’)],
0_ESfsg :-> [$ Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsj :-> [otherwise Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsk :-> [++ Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsn :-> [map Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsq :-> [return parent:Monad Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsr :-> [>> parent:Monad Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfss :-> [>>= parent:Monad Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsw :-> [fmap parent:Functor Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsx :-> [*> parent:Applicative Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsy :-> [<*> parent:Applicative Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsz :-> [pure parent:Applicative Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsA :-> [mconcat parent:Monoid Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsB :-> [mappend parent:Monoid Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsC :-> [mempty parent:Monoid Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsD :-> [Monoid TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsE :-> [<> parent:Semigroup Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsF :-> [Semigroup TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsG :-> [Applicative TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsH :-> [Functor TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsI :-> [Monad TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsJ :-> [String TyCon type synonym
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Base’)],
0_ESfsO :-> [== parent:Eq Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfsP :-> [>= parent:Ord Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfsQ :-> [Ord TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfsR :-> [Eq TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Classes’)],
0_ESfsS :-> [Right parent:Either ConLike ConInfo {con_ty: ConIsData ([Left,
Right]), fields: ConHasPositionalArgs}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Either’)],
0_ESfsT :-> [Left parent:Either ConLike ConInfo {con_ty: ConIsData ([Left,
Right]), fields: ConHasPositionalArgs}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Either’)],
0_ESfsU :-> [Either TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Either’)],
0_ESfsW :-> [zip Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfsX :-> [filter Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.List’)],
0_ESfsY :-> [fromInteger parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESfsZ :-> [negate parent:Num Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESft0 :-> [Num TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Num’)],
0_ESft1 :-> [Read TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Read’)],
0_ESft2 :-> [realToFrac Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESft3 :-> [fromIntegral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESft4 :-> [toRational parent:Real Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESft5 :-> [toInteger parent:Integral Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESft6 :-> [fromRational parent:Fractional Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESft9 :-> [Rational TyCon type synonym
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESftc :-> [RealFrac TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESftd :-> [Fractional TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESfte :-> [Integral TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESftf :-> [Real TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Real’)],
0_ESftg :-> [Show TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Show’)],
0_ESfth :-> [print Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.System.IO’)],
0_ESfti :-> [Traversable TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Data.Traversable’)],
0_ESftj :-> [enumFromTo parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESftk :-> [enumFromThenTo parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESftl :-> [enumFromThen parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESftm :-> [enumFrom parent:Enum Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESftn :-> [Enum TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESfto :-> [Bounded TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Enum’)],
0_ESftv :-> [RealFloat TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESftw :-> [Floating TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Float’)],
0_ESftX :-> [IO TyCon newtype
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)],
0_ESfQW :-> [seq Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Prim’)],
0_ESfQX :-> [MonadFail TyCon class
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Control.Monad.Fail’)],
0_ESfQY :-> [fail parent:MonadFail Vanilla
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Control.Monad.Fail’)]]rnTycl dependency analysis made groups9 lines
[TyClGroup
[]
[data T a
where
TInt :: T Int
TBool :: T Bool]
[]
[]]Start rnmono
rnImplicitTvOccs3 lines
[a, a] [a]
checkThLocalTyName T
checkThLocalTyName T {0} Comp Comp
checkThLocalTyName a
checkThLocalTyName a {0} Comp Comp
checkThLocalTyName a
checkThLocalTyName a {0} Comp Comp
addUsedGRE True
finish rnmono4 lines
get :: T a -> a get TInt = 1 get TBool = True
rnSrcDecls fixity all_bndrs: {T, TInt, TBool, get}
finish rnSrc8 lines
get :: T a -> a
get TInt = 1
get TBool = True
data T a
where
TInt :: T Int
TBool :: T Boolfinish Dus3 lines
[(Just {T, TInt, TBool}, {}), (Just {get}, {True, TInt, TBool}),
(Nothing, {T}), (Nothing, {}), (Nothing, {Bool, Int, T})]rn13
rn13-plugin
lookupQualifiedNameGHCi: off main
rnExports: Exports: [T{T, TBool, TInt}, get]
RUN5 lines
[(Just {T, TInt, TBool}, {}), (Just {get}, {True, TInt, TBool}),
(Nothing, {T}), (Nothing, {}), (Nothing, {Bool, Int, T}),
(Nothing, {}), (Nothing, {}), (Nothing, {}), (Nothing, {}),
(Nothing, {}), (Nothing, {T, TInt, TBool, get})]warnUnusedImportDecls12 lines
Uses: [True parent:Bool ConLike ConInfo {con_ty: ConIsData ([False,
True]), fields: ConIsNullary}
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’),
Bool TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’),
Int TyCon data type
imported from ‘Prelude’ at examples/traces/Refine.hs:6:8-13
(and originally defined in ‘GHC.Internal.Types’)]
Import usage []The typechecker and constraint solver, step by step: unifications, the work list, the inert set. Open a section to descend.-ddump-tc-trace
Adding diagnostic:3 lines
examples/traces/Refine.hs:1:1:: [GHC-20540]
Module ‘Prelude’ implicitly imported.checkFamInstConsistency [Prelude]
init_consistent_set [(Prelude, 7)]
checkManySize5 lines
mod: Prelude m1: 7 m2: 0 product: 0
Tc2 (src)
Tc3
tcExtendKindEnvList []
tcExtendKindEnvList []
tcTyClGroup554 lines
Decls for [T]
tcExtendKindEnv3 lines
[r2 :-> APromotionErr TyConPE, r3 :-> APromotionErr RecDataConPE, r4 :-> APromotionErr RecDataConPE]
kcTyClGroup548 lines
module Refine
data T a
where
TInt :: T Int
TBool :: T Bool
Residual: WC {}
Level: 1checkInitialKinds3 lines
[]
checkInitialKinds done
tcExtendKindEnvList []
pushLevelAndSolveEqualitiesX237 lines
Called from pushLevelAndSolveEqualities
inferInitialKinds19 lines
[T]
bindImplicitTKBndrsX3 lines
[] []
tc_extend_local_env []
tcExtendBinderStack []
bindExplicitTKBndrs [a]
newMetaKindVar k[tau:1]
tc_extend_local_env [(a, Type variable ‘a’ = a[tyv:1] :: k[tau:1])]
tcExtendBinderStack [a a[tyv:1]]
kcInferDeclHeader: not-cusk7 lines
T [] [a] [] [a[tyv:1]] k[tau:1] -> *
inferInitialKinds done
kcTyClGroup: initial kinds T :: k[tau:1] -> *
tcExtendKindEnvList [(T, ATcTyCon T[tc] :: k[tau:1] -> *)]
kcTyClDecl213 lines
T
[TInt]
OpenKind
[TBool]
OpenKind
final wc = WC {}
ev_binds_var = CoEvBindsVar<ax0>
current evbinds = {}tc_extend_local_env [(a, Type variable ‘a’ = a[tyv:1] :: k[tau:1])]
tcExtendBinderStack [a a[tyv:1]]
kcTyClDecl4 lines
T[tc] [a[tyv:1]] *
bindImplicitTKBndrsX3 lines
[] []
tc_extend_local_env []
tcExtendBinderStack []
bindExplicitTKBndrs []
kcConDecl:GADT91 lines
[TInt] T Int
newAnonMetaTyVar t[tau:1] :: GHC.Internal.Types.RuntimeRep
lk1 T
tcInferTyApps85 lines
T [HsValArg Int]
tcInferTyApps (vis normal app)8 lines
[->] k[tau:1]
Int
k[tau:1]
<InScope = {k[tau:1]}
IdSubst = []
TvSubst = []
CvSubst = []>lk1 Int
tcInferTyApps73 lines
Int []
tcInferTyApps } Int :: *
checkExpectedKind3 lines
Int *
checkExpectedKindX4 lines
Int act_kind': * exp_kind: k[tau:1]
u_tys3 lines
tclvl 1 * ~nominal k[tau:1]
u_tys3 lines
tclvl 1 * ~nominal *
u_tys yields no coercion
uUnfilledVar2 ok5 lines
k[tau:1] :: * * :: * True <*>_N
writeMetaTyVar k[tau:1] :: * := *
u_tys yields no coercion
checkExpectedKind4 lines
* k[tau:1] <*>_N
tcInferTyApps (vis normal app) 2 k[tau:1]
tcInferTyApps } T Int :: *
checkExpectedKind3 lines
T Int *
checkExpectedKindX4 lines
T Int act_kind': * exp_kind: TYPE t[tau:1]
u_tys3 lines
tclvl 1 * ~nominal TYPE t[tau:1]
go-tycon6 lines
TYPE [GHC.Internal.Types.LiftedRep] [t[tau:1]] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal GHC.Internal.Types.LiftedRep t[tau:1]
u_tys3 lines
tclvl 1 GHC.Internal.Types.LiftedRep ~nominal t[tau:1]
u_tys5 lines
tclvl 1 GHC.Internal.Types.RuntimeRep ~nominal GHC.Internal.Types.RuntimeRep
u_tys yields no coercion
uUnfilledVar2 ok5 lines
t[tau:1] :: GHC.Internal.Types.RuntimeRep GHC.Internal.Types.LiftedRep :: GHC.Internal.Types.RuntimeRep True <GHC.Internal.Types.RuntimeRep>_N
writeMetaTyVar2 lines
t[tau:1] :: GHC.Internal.Types.RuntimeRep := GHC.Internal.Types.LiftedRep
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind4 lines
* TYPE t[tau:1] <*>_N
kcConDecl:GADT
bindImplicitTKBndrsX3 lines
[] []
tc_extend_local_env []
tcExtendBinderStack []
bindExplicitTKBndrs []
kcConDecl:GADT86 lines
[TBool] T Bool
newAnonMetaTyVar t[tau:1] :: GHC.Internal.Types.RuntimeRep
lk1 T
tcInferTyApps80 lines
T [HsValArg Bool]
tcInferTyApps (vis normal app)8 lines
[->] k[tau:1]
Bool
k[tau:1]
<InScope = {k[tau:1]}
IdSubst = []
TvSubst = []
CvSubst = []>lk1 Bool
tcInferTyApps68 lines
Bool []
tcInferTyApps } Bool :: *
checkExpectedKind3 lines
Bool *
checkExpectedKindX4 lines
Bool act_kind': * exp_kind: k[tau:1]
u_tys3 lines
tclvl 1 * ~nominal k[tau:1]
found filled tyvar k[tau:1] :-> *
u_tys3 lines
tclvl 1 * ~nominal *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind4 lines
* k[tau:1] <*>_N
tcInferTyApps (vis normal app) 2 k[tau:1]
tcInferTyApps } T Bool :: *
checkExpectedKind3 lines
T Bool *
checkExpectedKindX4 lines
T Bool act_kind': * exp_kind: TYPE t[tau:1]
u_tys3 lines
tclvl 1 * ~nominal TYPE t[tau:1]
go-tycon6 lines
TYPE [GHC.Internal.Types.LiftedRep] [t[tau:1]] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal GHC.Internal.Types.LiftedRep t[tau:1]
u_tys3 lines
tclvl 1 GHC.Internal.Types.LiftedRep ~nominal t[tau:1]
u_tys5 lines
tclvl 1 GHC.Internal.Types.RuntimeRep ~nominal GHC.Internal.Types.RuntimeRep
u_tys yields no coercion
uUnfilledVar2 ok5 lines
t[tau:1] :: GHC.Internal.Types.RuntimeRep GHC.Internal.Types.LiftedRep :: GHC.Internal.Types.RuntimeRep True <GHC.Internal.Types.RuntimeRep>_N
writeMetaTyVar2 lines
t[tau:1] :: GHC.Internal.Types.RuntimeRep := GHC.Internal.Types.LiftedRep
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind4 lines
* TYPE t[tau:1] <*>_N
kcConDecl:GADT
kcTyClDecl done } T
newNoTcEvBinds unique = ax0
solveWanteds4 lines
Level = 1
WC {}solveWanteds
tryDefaulting3 lines
WC {}tryDefaulting } WC {}
pushLevelAndSolveEqualities
Skolemising a[tyv:1] := a[sk:1]
writeMetaTyVar a[tyv:1] :: * := a[sk:1]
Skipping swizzleTcTyConBndrs for T[tc] a[sk:1]
quantifyTyVars has nothing to quantify
generaliseTcTyCon: pre zonk6 lines
tycon = T[tc]
spec_req_tvs = a[sk:1]
tc_res_kind = *
dvs1 = DV {dv_kvs = {}, dv_tvs = {}, dv_cvs = {}}
inferred =generaliseTcTyCon: post zonk6 lines
tycon = T[tc] inferred = spec_req_tvs = a[sk:1] sorted_spec_tvs = req_tvs = [a[sk:1]]
generaliseTcTyCon done8 lines
tycon = T[tc]
tc_res_kind = *
dep_fv_set = {}
inferred_tcbs = []
specified_tcbs = []
required_tcbs = [AnonTCB (@a[sk:1])]
final_tcbs = [AnonTCB (@a[sk:1])]---- kcTyClGroup end ---- } T :: * -> *
tcTyAndCl generalized kinds (T, [AnonTCB (@a[sk:1])], * True)
tcExtendKindEnvList [(T, ATcTyCon T[tc] :: * -> *)]
tcTyClDecl272 lines
data T a
where
TInt :: T Int
TBool :: T Bool
Residual: WC {}
Level: 1
Residual: WC {}
Level: 1
Residual: WC {}
Level: 1bindTyClTyVars3 lines
T [AnonTCB (@a[sk:1])]
tc_extend_local_env [(a, Type variable ‘a’ = a[sk:1] :: *)]
tcExtendBinderStack [a a[sk:1]]
checkDataKindSig *
pushLevelAndSolveEqualitiesX14 lines
Called from pushLevelAndSolveEqualities
final wc = WC {}
ev_binds_var = CoEvBindsVar<ax2>
current evbinds = {}newNoTcEvBinds unique = ax2
solveWanteds4 lines
Level = 1
WC {}solveWanteds
tryDefaulting3 lines
WC {}tryDefaulting } WC {}
pushLevelAndSolveEqualities
doNotQuantifyTyVars has nothing to error on
tcConDecl 1 gadt [TInt]
pushLevelAndSolveEqualitiesX42 lines
Called from tcConDecl:GADT
newInferExpType ax4 1
lk1 T
tcInferTyApps37 lines
T [HsValArg Int]
tcInferTyApps (vis normal app)8 lines
[->] *
Int
*
<InScope = {}
IdSubst = []
TvSubst = []
CvSubst = []>lk1 Int
tcInferTyApps25 lines
Int
[]
final wc = WC {}
ev_binds_var = CoEvBindsVar<ax5>
current evbinds = {}tcInferTyApps } Int :: *
checkExpectedKind3 lines
Int *
checkExpectedKindX4 lines
Int act_kind': * exp_kind: *
tcInferTyApps (vis normal app) 2 *
tcInferTyApps } T Int :: *
Filling inferred ExpType ax4 := *
newNoTcEvBinds unique = ax5
solveWanteds4 lines
Level = 1
WC {}solveWanteds
tryDefaulting3 lines
WC {}tryDefaulting } WC {}
pushLevelAndSolveEqualities
kindGeneralizeAll T Int
quantifyTyVars has nothing to quantify
tcConDecl:GADT4 lines
[TInt] T Int []
tcConDecl 23 lines
[TInt] []
tcConDecl 1 gadt [TBool]
pushLevelAndSolveEqualitiesX42 lines
Called from tcConDecl:GADT
newInferExpType ax9 1
lk1 T
tcInferTyApps37 lines
T [HsValArg Bool]
tcInferTyApps (vis normal app)8 lines
[->] *
Bool
*
<InScope = {}
IdSubst = []
TvSubst = []
CvSubst = []>lk1 Bool
tcInferTyApps25 lines
Bool
[]
final wc = WC {}
ev_binds_var = CoEvBindsVar<axa>
current evbinds = {}tcInferTyApps } Bool :: *
checkExpectedKind3 lines
Bool *
checkExpectedKindX4 lines
Bool act_kind': * exp_kind: *
tcInferTyApps (vis normal app) 2 *
tcInferTyApps } T Bool :: *
Filling inferred ExpType ax9 := *
newNoTcEvBinds unique = axa
solveWanteds4 lines
Level = 1
WC {}solveWanteds
tryDefaulting3 lines
WC {}tryDefaulting } WC {}
pushLevelAndSolveEqualities
kindGeneralizeAll T Bool
quantifyTyVars has nothing to quantify
tcConDecl:GADT4 lines
[TBool] T Bool []
tcConDecl 23 lines
[TBool] []
tcDataDefn3 lines
T [AnonTCB (@a[sk:1])]
---- tcTyClDecl end ---- } T
Starting synonym cycle check [T]
Done synonym cycle check [T]
Starting validity check [T]
Starting validity for tycon T
checkValidTyCon3 lines
T Nothing
cvtc1 T
cvtc2 T
checkValidDataCon6 lines
TInt T [a] T a :: * T Int :: *
checkValidDataCon 2 T Int
checkValidType T Int :: *
done ct T Int
Ambiguity check for114 lines
T Int
tc_sub_type (general case)3 lines
ty_actual = T Int ty_expected = T Int
u_tys3 lines
tclvl 0 T Int ~nominal T Int
go-tycon6 lines
T [Int] [Int] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal Int Int
u_tys3 lines
tclvl 0 Int ~nominal Int
u_tys yields no coercion
u_tys yields no coercion
simplifyAmbiguityCheck16 lines
type = T Int
wanted = WC {}
final wc = WC {}
ev_binds_var = EvBindsVar<axd>
current evbinds = {}newTcEvBinds unique = axd
solveWanteds4 lines
Level = 0
WC {}solveWanteds
tryDefaulting for ambiguity4 lines
WC {}tryDefaulting } WC {}
newTcEvBinds unique = axe
End simplifyAmbiguityCheck
} Done ambiguity check for T Int
checkValidType done T Int :: *
Done validity of data con9 lines
TInt
Datacon wrapper type: T Int
Datacon src bangs: []
Datacon impl bangs: []
Datacon rep type: forall {a}. (a GHC.Internal.Prim.~# Int) => T a
Datacon display type: T Int
Rep typcon binders: [AnonTCB (@a)]
not familycheckValidDataCon6 lines
TBool T [a] T a :: * T Bool :: *
checkValidDataCon 2 T Bool
checkValidType T Bool :: *
done ct T Bool
Ambiguity check for55 lines
T Bool
tc_sub_type (general case)3 lines
ty_actual = T Bool ty_expected = T Bool
u_tys3 lines
tclvl 0 T Bool ~nominal T Bool
go-tycon6 lines
T [Bool] [Bool] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal Bool Bool
u_tys3 lines
tclvl 0 Bool ~nominal Bool
u_tys yields no coercion
u_tys yields no coercion
simplifyAmbiguityCheck16 lines
type = T Bool
wanted = WC {}
final wc = WC {}
ev_binds_var = EvBindsVar<axg>
current evbinds = {}newTcEvBinds unique = axg
solveWanteds4 lines
Level = 0
WC {}solveWanteds
tryDefaulting for ambiguity4 lines
WC {}tryDefaulting } WC {}
newTcEvBinds unique = axh
End simplifyAmbiguityCheck
} Done ambiguity check for T Bool
checkValidType done T Bool :: *
Done validity of data con9 lines
TBool
Datacon wrapper type: T Bool
Datacon src bangs: []
Datacon impl bangs: []
Datacon rep type: forall {a}. (a GHC.Internal.Prim.~# Bool) => T a
Datacon display type: T Bool
Rep typcon binders: [AnonTCB (@a)]
not familyDone validity for tycon T
Done validity check [T]
Adding diagnostic:3 lines
examples/traces/Refine.hs:8:1:: [GHC-65490]
Missing role annotation: type role T nominal---- end tcTyClGroup ----
tcAddTyCons5 lines
tycons [T]
implicits [Data constructor ‘TInt’, Identifier ‘Refine.TInt’,
Identifier ‘Refine.$WTInt’, Data constructor ‘TBool’,
Identifier ‘Refine.TBool’, Identifier ‘Refine.$WTBool’]tcExtendKindEnvList []
tc_extend_local_env []
Adding instances:
addFamInsts
tcAddTyCons3 lines
tycons [] implicits []
tcExtendKindEnvList []
tc_extend_local_env []
tcTyClGroupsPass done5 lines
n_success = 1 n_blocked = 0 n_failed = 0 n_flawed = 0
tcDeriving []
rnd
Adding instances:
Tc4
Tc5
tcExtendKindEnvList []
tcHsSigType2333 lines
T a -> a
Residual: WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
Level: 1
final wc = WC {wc_impl =
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
ev_binds_var = CoEvBindsVar<aAP>
current evbinds = {}
simples: {}
errs: {}pushLevelAndSolveEqualitiesX484 lines
Called from tc_lhs_sig_type
newAnonMetaTyVar t[tau:1] :: GHC.Internal.Types.RuntimeRep
pushLevelAndCaptureConstraints480 lines
2
newMetaKindVar k[tau:2]
bindImplicitTKBndrsX3 lines
[a] [a[sk:2]]
tc_extend_local_env [(a, Type variable ‘a’ = a[sk:2] :: k[tau:2])]
tcExtendBinderStack [a a[sk:2]]
tc_fun_type3 lines
T a a
newAnonMetaTyVar t[tau:2] :: GHC.Internal.Types.RuntimeRep
newAnonMetaTyVar t[tau:2] :: GHC.Internal.Types.RuntimeRep
lk1 T
tcInferTyApps466 lines
T [HsValArg a]
tcInferTyApps (vis normal app)8 lines
[->] *
a
*
<InScope = {}
IdSubst = []
TvSubst = []
CvSubst = []>lk1 a
tcInferTyApps454 lines
a []
tcInferTyApps } a[sk:2] :: k[tau:2]
checkExpectedKind3 lines
a[sk:2] k[tau:2]
checkExpectedKindX4 lines
a act_kind': k[tau:2] exp_kind: *
u_tys3 lines
tclvl 2 k[tau:2] ~nominal *
u_tys3 lines
tclvl 2 * ~nominal *
u_tys yields no coercion
uUnfilledVar2 ok5 lines
k[tau:2] :: * * :: * True <*>_N
writeMetaTyVar k[tau:2] :: * := *
u_tys yields no coercion
checkExpectedKind4 lines
k[tau:2] * <*>_N
tcInferTyApps (vis normal app) 2 *
tcInferTyApps } T a[sk:2] :: *
checkExpectedKind3 lines
T a[sk:2] *
checkExpectedKindX4 lines
T a act_kind': * exp_kind: TYPE t[tau:2]
u_tys3 lines
tclvl 2 * ~nominal TYPE t[tau:2]
go-tycon6 lines
TYPE [GHC.Internal.Types.LiftedRep] [t[tau:2]] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal GHC.Internal.Types.LiftedRep t[tau:2]
u_tys3 lines
tclvl 2 GHC.Internal.Types.LiftedRep ~nominal t[tau:2]
u_tys5 lines
tclvl 2 GHC.Internal.Types.RuntimeRep ~nominal GHC.Internal.Types.RuntimeRep
u_tys yields no coercion
uUnfilledVar2 ok5 lines
t[tau:2] :: GHC.Internal.Types.RuntimeRep GHC.Internal.Types.LiftedRep :: GHC.Internal.Types.RuntimeRep True <GHC.Internal.Types.RuntimeRep>_N
writeMetaTyVar2 lines
t[tau:2] :: GHC.Internal.Types.RuntimeRep := GHC.Internal.Types.LiftedRep
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind4 lines
* TYPE t[tau:2] <*>_N
lk1 a
tcInferTyApps380 lines
a
[]
final wc = WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
ev_binds_var = CoEvBindsVar<axq>
current evbinds = {}
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}tcInferTyApps } a[sk:2] :: k[tau:2]
checkExpectedKind3 lines
a[sk:2] k[tau:2]
checkExpectedKindX4 lines
a act_kind': k[tau:2] exp_kind: TYPE t[tau:2]
u_tys3 lines
tclvl 2 k[tau:2] ~nominal TYPE t[tau:2]
found filled tyvar k[tau:2] :-> *
u_tys3 lines
tclvl 2 * ~nominal TYPE t[tau:2]
go-tycon6 lines
TYPE [GHC.Internal.Types.LiftedRep] [t[tau:2]] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal GHC.Internal.Types.LiftedRep t[tau:2]
u_tys3 lines
tclvl 2 GHC.Internal.Types.LiftedRep ~nominal t[tau:2]
u_tys5 lines
tclvl 2 GHC.Internal.Types.RuntimeRep ~nominal GHC.Internal.Types.RuntimeRep
u_tys yields no coercion
uUnfilledVar2 ok5 lines
t[tau:2] :: GHC.Internal.Types.RuntimeRep GHC.Internal.Types.LiftedRep :: GHC.Internal.Types.RuntimeRep True <GHC.Internal.Types.RuntimeRep>_N
writeMetaTyVar2 lines
t[tau:2] :: GHC.Internal.Types.RuntimeRep := GHC.Internal.Types.LiftedRep
u_tys yields no coercion
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind4 lines
k[tau:2] TYPE t[tau:2] <*>_N
checkExpectedKind3 lines
T a[sk:2] -> a[sk:2] *
checkExpectedKindX4 lines
T a -> a act_kind': * exp_kind: TYPE t[tau:1]
u_tys3 lines
tclvl 2 * ~nominal TYPE t[tau:1]
go-tycon6 lines
TYPE [GHC.Internal.Types.LiftedRep] [t[tau:1]] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal GHC.Internal.Types.LiftedRep t[tau:1]
u_tys3 lines
tclvl 2 GHC.Internal.Types.LiftedRep ~nominal t[tau:1]
uUnfilledVar2 not ok4 lines
tv1: t[tau:1] ty2: GHC.Internal.Types.LiftedRep simple-unify-chk: SUC_CannotUnify
New coercion hole:2 lines
co :: GHC.Internal.Types.LiftedRep GHC.Internal.Prim.~# t[tau:1]
utype_defer5 lines
nominal GHC.Internal.Types.LiftedRep t[tau:1] In the type signature: get :: T a -> a
utype_defer2 {co}
u_tys yields coercion: {co}
u_tys yields coercion: (TYPE {co})_N
checkExpectedKind4 lines
*
TYPE t[tau:1]
(TYPE {co})_NpushLevelAndCaptureConstraints } 2
newNoTcEvBinds unique = axp
newNoTcEvBinds unique = axq
solveWanteds226 lines
Level = 1
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
iterations = 1
residual = WC {}
unsolved_implics = {Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}simplify_loop iteration=0 (definitely_redo = True, 0 simples to solve)
simplify_loop: wc =16 lines
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}solveSimpleWanteds6 lines
Mode: TcSMode{}
Inerts: {Innermost given equalities = 1
Given eqs at this level = False}
Wanteds to solve: {}solveSimpleWanteds end
solveNestedImplications starting168 lines
has_given_eqs = NoGivenEqs
res_implic = Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }
implication evbinds = {}
implication tvcs = [<GHC.Internal.Types.LiftedRep>_N]solveImplication152 lines
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }
Inerts {Innermost given equalities = 1
Given eqs at this level = False}
final wc = WC {}
ev_binds_var = CoEvBindsVar<axp>
current evbinds = {}
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }solveWanteds85 lines
Level = 2
WC {wc_simple =
[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}
iterations = 1
residual = WC {}simplify_loop iteration=0 (definitely_redo = True, 1 simples to solve)
simplify_loop: wc =4 lines
WC {wc_simple =
[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}solveSimpleWanteds68 lines
Mode: TcSMode{}
Inerts: {Innermost given equalities = 1
Given eqs at this level = False}
Wanteds to solve: {[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}Emitting fresh work3 lines
{[W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)}-----------------------------
Start solver pipeline52 lines
tclevel = 2
work item = [W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)
inerts = {Innermost given equalities = 1
Given eqs at this level = False}
rest of worklist = WL {}
Stop(Solved by unification
ev: [W] hole{co} {0} :: GHC.Internal.Types.LiftedRep ~# t[tau:1])solve40 lines
workitem = [W] hole{co} {0}
:: GHC.Internal.Types.LiftedRep ~# t[tau:1] (CNonCanonical)canonicaliseEquality5 lines
[W] hole{co} {0} :: GHC.Internal.Types.LiftedRep ~# t[tau:1]
nominal equality
GHC.Internal.Types.LiftedRep
t[tau:1]rewrite31 lines
GHC.Internal.Types.LiftedRep
rewrite } GHC.Internal.Types.LiftedRep
rewrite28 lines
t[tau:1]
Unfilled tyvar (t[tau:1] :: GHC.Internal.Types.RuntimeRep)
rewrite } t[tau:1]
can_eq_nc: go round again4 lines
[W] hole{co} {0} :: GHC.Internal.Types.LiftedRep ~# t[tau:1]
GHC.Internal.Types.LiftedRep
t[tau:1]can_eq23 lines
GHC.Internal.Types.BoxedRep GHC.Internal.Types.Lifted t[tau:1]
canEqCanLHSFinish5 lines
ev: [W] hole{co} {0} :: GHC.Internal.Types.LiftedRep ~# t[tau:1]
swapped: Is-swapped
lhs: t[tau:1]
rhs: GHC.Internal.Types.LiftedRepSneaky unification:5 lines
Unifies: t[tau:1] := GHC.Internal.Types.LiftedRep Coercion: t[tau:1] ~ GHC.Internal.Types.LiftedRep Left Kind is: GHC.Internal.Types.RuntimeRep Right Kind is: GHC.Internal.Types.RuntimeRep
unifyTyVar t[tau:1] := GHC.Internal.Types.LiftedRep
writeMetaTyVar2 lines
t[tau:1] :: GHC.Internal.Types.RuntimeRep := GHC.Internal.Types.LiftedRep
Filling coercion hole co := <GHC.Internal.Types.LiftedRep>_N
kickOutAfterUnification3 lines
[t[tau:1]] n_kicked = ()
end solve
Step 1[l:2,d:0] Solved by unification:2 lines
[W] hole{co} {0} :: GHC.Internal.Types.LiftedRep ~# t[tau:1]End solver pipeline
getUnsolvedInerts5 lines
tv eqs = {}
fun eqs = {}
dicts = {}
irreds = {}solveSimpleWanteds end
resetUnificationFlag3 lines
ambient: 2 unif_lvl: Just 1
unif_happened False
solveWanteds
getHasGivenEqs7 lines
given_eqs: False
ge_lvl: 1
ambient level: 2
Inerts: {Innermost given equalities = 1
Given eqs at this level = False}
Insols: {}solveImplication 23 lines
{}
WC {}solveImplication 33 lines
ev_binds_var CoEvBindsVar<axp>
implication evbinds = {}setImplicationStatus22 lines
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }neededEvVars9 lines
old_need_implic: ENS{ens_dms = {} ens_fvs = {}}
new_need_implic: ENS{ens_dms = {} ens_fvs = {}}
used_covars: {}
need_ignoring_dms: {}
need_from_dms: {}
need: ENS{ens_dms = {} ens_fvs = {}}
ev_binds: []
live_ev_binds: []setImplicationStatus
solveImplication end
solveNestedImplications end
resetUnificationFlag3 lines
ambient: 1 unif_lvl: Just 1
unif_happened True
solveWanteds
tryDefaulting32 lines
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}zonkSimples done: {}
zonkSimples done: {}
applyDefaultingRules16 lines
wanteds = WC {wc_impl =
Implic {
TcLevel = 2
Skolems = a[sk:2]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
groups = []
info = ([default Num (Integer, Double)], False)applyDefaultingRules } []
tryDefaulting
Constraint solver steps = 1
pushLevelAndSolveEqualities
doNotQuantifyTyVars has nothing to error on
tc_lhs_sig_type3 lines
HsOuterImplicit: [a] HsOuterImplicit: [a[sk:2]]
kindGeneralizeSome4 lines
type: forall a. (T a -> a |> (TYPE {co})_N)
dvs: DV {dv_kvs = {}, dv_tvs = {}, dv_cvs = {}}
filtered_dvs: DV {dv_kvs = {}, dv_tvs = {}, dv_cvs = {}}quantifyTyVars has nothing to quantify
newNoTcEvBinds unique = aAO
tcHsSigType 224 lines
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }newNoTcEvBinds unique = aAP
solveWanteds217 lines
Level = 0
WC {wc_impl =
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
iterations = 1
residual = WC {}
unsolved_implics = {Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}simplify_loop iteration=0 (definitely_redo = True, 0 simples to solve)
simplify_loop: wc =25 lines
WC {wc_impl =
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}solveSimpleWanteds6 lines
Mode: TcSMode{}
Inerts: {Innermost given equalities = 0
Given eqs at this level = False}
Wanteds to solve: {}solveSimpleWanteds end
solveNestedImplications starting141 lines
has_given_eqs = NoGivenEqs
res_implic = Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }
implication evbinds = {}
implication tvcs = []solveImplication125 lines
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }
Inerts {Innermost given equalities = 0
Given eqs at this level = False}
final wc = WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
ev_binds_var = CoEvBindsVar<aAO>
current evbinds = {}
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }solveWanteds15 lines
Level = 1
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}solveWanteds
getHasGivenEqs7 lines
given_eqs: False
ge_lvl: 0
ambient level: 1
Inerts: {Innermost given equalities = 0
Given eqs at this level = False}
Insols: {}solveImplication 214 lines
{}
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}solveImplication 33 lines
ev_binds_var CoEvBindsVar<aAO>
implication evbinds = {}setImplicationStatus34 lines
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (a[sk:2] :: k[tau:2])
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<axp>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }neededEvVars9 lines
old_need_implic: ENS{ens_dms = {} ens_fvs = {}}
new_need_implic: ENS{ens_dms = {} ens_fvs = {}}
used_covars: {}
need_ignoring_dms: {}
need_from_dms: {}
need: ENS{ens_dms = {} ens_fvs = {}}
ev_binds: []
live_ev_binds: []setImplicationStatus
solveImplication end
solveNestedImplications end
resetUnificationFlag3 lines
ambient: 0 unif_lvl: Nothing
unif_happened False
solveWanteds
zonkSimples done: {}
zonkSimples done: {}
emitFlatConstraints14 lines
WC {wc_impl =
Implic {
TcLevel = 1
Skolems =
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = CoEvBindsVar<aAO>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for ‘get’ }}emitFlatConstraints
emitDelayedErrors {}
checkValidType forall a. T a -> a :: *
check_type3 lines
forall a. T a -> a ArbitraryRank
done ct forall a. T a -> a
Ambiguity check for1544 lines
forall a. T a -> a
tc_sub_type (general case)3 lines
ty_actual = forall a. T a -> a ty_expected = forall a. T a -> a
topSkol3 lines
[a[sk:2]] examples/traces/Refine.hs:12:1-15 [a[sk:1]] examples/traces/Refine.hs:12:8-15
tcSkolemiseGeneral the type signature for ‘get’ [a[sk:1]] []
pushLevelAndCaptureConstraints1535 lines
1
cloneAnonMetaTyVar a[tau:1] :: *
Instantiating8 lines
origin arising from a type ambiguity check for
the type signature for ‘get’
tvs [a[sk:2]]
theta []
type T a[sk:2] -> a[sk:2]
with a[tau:1]
theta: []u_tys3 lines
tclvl 1 T a[tau:1] -> a[tau:1] ~nominal T a[sk:1] -> a[sk:1]
u_tys3 lines
tclvl 1 Many ~nominal Many
u_tys yields no coercion
u_tys3 lines
tclvl 1 T a[tau:1] ~nominal T a[sk:1]
go-tycon6 lines
T [a[tau:1]] [a[sk:1]] [nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal, nominal]
u_tc_arg4 lines
nominal a[tau:1] a[sk:1]
u_tys3 lines
tclvl 1 a[tau:1] ~nominal a[sk:1]
u_tys3 lines
tclvl 1 * ~nominal *
u_tys yields no coercion
uUnfilledVar2 ok5 lines
a[tau:1] :: * a[sk:1] :: * True <*>_N
writeMetaTyVar a[tau:1] :: * := a[sk:1]
u_tys yields no coercion
u_tys yields no coercion
u_tys3 lines
tclvl 1 a[tau:1] ~nominal a[sk:1]
found filled tyvar a[tau:1] :-> a[sk:1]
u_tys3 lines
tclvl 1 a[sk:1] ~nominal a[sk:1]
u_tys yields no coercion
u_tys yields no coercion
u_tys yields no coercion
pushLevelAndCaptureConstraints } 1
checkConstraints3 lines
1 [a[sk:1]]
simplifyAmbiguityCheck16 lines
type = forall a. T a -> a
wanted = WC {}
final wc = WC {}
ev_binds_var = EvBindsVar<aAT>
current evbinds = {}newTcEvBinds unique = aAT
solveWanteds4 lines
Level = 0
WC {}solveWanteds
tryDefaulting for ambiguity4 lines
WC {}tryDefaulting } WC {}
newTcEvBinds unique = aAU
End simplifyAmbiguityCheck
} Done ambiguity check for forall a. T a -> a
checkValidType done forall a. T a -> a :: *
end tcHsSigType } forall a. T a -> a
tcuser forall a. T a -> a
tc_extend_local_env2 lines
[(get, Identifier[get::forall a. T a -> a, TopLevelLet {} True])]------------------------------------------------
Bindings for1452 lines
[get]
Generalisation plan CheckGen get :: forall a. T a -> a
tcPolyCheck get :: forall a. T a -> a
newAnonMetaTyVar t[tau:0] :: GHC.Internal.Types.Multiplicity
topSkol3 lines
[a[sk:2]] examples/traces/Refine.hs:12:1-15 [a[sk:1]] examples/traces/Refine.hs:12:1-15
tcSkolemiseGeneral the type signature for ‘get’ [a[sk:1]] []
pushLevelAndCaptureConstraints1443 lines
1
tc_extend_local_env [(a, Type variable ‘a’ = a[sk:1] :: *)]
tcExtendBinderStack [a a[sk:1]]
tcExtendBinderStack [get[<NotTopLevel>]]
tcFunBindMatches 15 lines
get
t[tau:0]
Check{T a[sk:1] -> a[sk:1]}
1tcFunBindMatches 26 lines
ctxt: the type signature for ‘get’
arity: 1
invis_pat_tys: [forall @a[sk:1]]
pat_tys: [Check{T a[sk:1]}]
rhs_ty: Check{a[sk:1]}tcConPat11 lines
con_name: TInt univ_tvs: a[sk:1] ex_tvs: eq_spec: [(a[sk:1], Int)] theta: [] ex_tvs': ctxt_res_tys: [a[sk:1]] pat_ty: T a[sk:1] arg_tys': [] arg_pats PrefixCon: []
tcConPat4 lines
univ_ty_args: [] ex_ty_args: [] val_arg_pats: PrefixCon: []
pushLevelAndCaptureConstraints1412 lines
2
tcBody Check{a[sk:1]}
tcApp1409 lines
rn_expr: 1 rn_fun: 1 fun_ctxt: VACall 0 1 <no location info> rn_args: []
cloneAnonMetaTyVar a[tau:2] :: *
instCallConstraints [$dNum]
Instantiating7 lines
origin arising from the literal ‘1’ tvs [a] theta [Num a] type Integer -> a with a[tau:2] theta: [Num a[tau:2]]
u_tys3 lines
tclvl 2 Integer ~nominal Integer
u_tys yields no coercion
tcInstFun6 lines
tc_fun 1 fun_sigma a[tau:2] fun_ctxt VACall 0 1 <no location info> args: [] do_ql NoQL
tcInstFun:ret a[tau:2]
tcApp:NoQL3 lines
1 a[tau:2]
newAnonMetaTyVar t[tau:2] :: *
checkResultTy1380 lines
tc_fun: 1 app_res_rho: a[tau:2] res_ty: a[sk:1] ds_flag: Shallow
u_tys3 lines
tclvl 2 a[tau:2] ~nominal a[sk:1]
u_tys3 lines
tclvl 2 * ~nominal *
u_tys yields no coercion
uUnfilledVar2 ok5 lines
a[tau:2] :: * a[sk:1] :: * True <*>_N
writeMetaTyVar a[tau:2] :: * := a[sk:1]
u_tys yields no coercion
checkResultTy 1 } <a[sk:1]>_N
End tcApp } 1
pushLevelAndCaptureConstraints } 2
newTcEvBinds unique = aB5
checkConstraints3 lines
2 []
tcConPat11 lines
con_name: TBool univ_tvs: a[sk:1] ex_tvs: eq_spec: [(a[sk:1], Bool)] theta: [] ex_tvs': ctxt_res_tys: [a[sk:1]] pat_ty: T a[sk:1] arg_tys': [] arg_pats PrefixCon: []
tcConPat4 lines
univ_ty_args: [] ex_ty_args: [] val_arg_pats: PrefixCon: []
pushLevelAndCaptureConstraints1339 lines
2
tcBody Check{a[sk:1]}
tcApp1336 lines
rn_expr: True rn_fun: True fun_ctxt: VACall 0 True <no location info> rn_args: []
tcInferId True :: Bool
tcInstFun6 lines
tc_fun True fun_sigma Bool fun_ctxt VACall 0 True <no location info> args: [] do_ql NoQL
tcInstFun:ret Bool
tcApp:NoQL3 lines
True Bool
newAnonMetaTyVar t[tau:2] :: *
checkResultTy1319 lines
tc_fun: True app_res_rho: Bool res_ty: a[sk:1] ds_flag: Shallow
u_tys3 lines
tclvl 2 Bool ~nominal a[sk:1]
uUnfilledVar2 not ok4 lines
tv1: a[sk:1] ty2: Bool simple-unify-chk: SUC_CannotUnify
New coercion hole: co :: Bool GHC.Internal.Prim.~# a[sk:1]
utype_defer6 lines
nominal Bool a[sk:1] In the expression: True In an equation for ‘get’: get TBool = True
utype_defer2 {co}
u_tys yields coercion: {co}
checkResultTy 1 } {co}
End tcApp } True
pushLevelAndCaptureConstraints } 2
newTcEvBinds unique = aBa
checkConstraints3 lines
2 []
tcMatches4 lines
[get TInt = 1, get TBool = True] [T a[sk:1]] a[sk:1]
tcScalingUsage3 lines
t[tau:0] UsageEnv: [] False
pushLevelAndCaptureConstraints } 1
newTcEvBinds unique = aBb
checkConstraints3 lines
1 [a[sk:1]]
tcSpecPrags get []
} End of bindings for4 lines
[get] NonRecursive get forall a. T a -> a
tcExtendBinderStack [get[<TopLevel>]]
tc_extend_local_env2 lines
[(get, Identifier[get::forall a. T a -> a, TopLevelLet])]
check_usage3 lines
t[tau:0] 0
u_tys3 lines
tclvl 0 Many ~nominal t[tau:0]
u_tys5 lines
tclvl 0 GHC.Internal.Types.Multiplicity ~nominal GHC.Internal.Types.Multiplicity
u_tys yields no coercion
uUnfilledVar2 ok5 lines
t[tau:0] :: GHC.Internal.Types.Multiplicity Many :: GHC.Internal.Types.Multiplicity True <GHC.Internal.Types.Multiplicity>_N
writeMetaTyVar t[tau:0] :: GHC.Internal.Types.Multiplicity := Many
u_tys yields no coercion
ensureReflMultiplicityCo <Many>_N
tcImpPrags1 [get :: T a -> a]
tcExtendKindEnvList []
tc_extend_local_env []
tcImpPrags1 []
Tc6
Tc7
Tc7a
simplifyTop962 lines
wanted = WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for:
get :: forall a. T a -> a }}
final wc = WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}
ev_binds_var = EvBindsVar<aBc>
current evbinds = {}
WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}newTcEvBinds unique = aBc
solveWanteds855 lines
Level = 0
WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for:
get :: forall a. T a -> a }}
iterations = 1
residual = WC {}
unsolved_implics = {Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}simplify_loop iteration=0 (definitely_redo = True, 0 simples to solve)
simplify_loop: wc =42 lines
WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for:
get :: forall a. T a -> a }}solveSimpleWanteds6 lines
Mode: TcSMode{}
Inerts: {Innermost given equalities = 0
Given eqs at this level = False}
Wanteds to solve: {}solveSimpleWanteds end
solveNestedImplications starting744 lines
has_given_eqs = NoGivenEqs
res_implic = Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }
implication evbinds = {}
implication tvcs = []solveImplication727 lines
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for:
get :: forall a. T a -> a }
Inerts {Innermost given equalities = 0
Given eqs at this level = False}
final wc = WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {co, co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
ev_binds_var = EvBindsVar<aBb>
current evbinds = {}
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }solveWanteds559 lines
Level = 1
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
iterations = 1
residual = WC {}
unsolved_implics = {Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ },
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {co, co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}simplify_loop iteration=0 (definitely_redo = True, 0 simples to solve)
simplify_loop: wc =29 lines
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}solveSimpleWanteds6 lines
Mode: TcSMode{}
Inerts: {Innermost given equalities = 0
Given eqs at this level = False}
Wanteds to solve: {}solveSimpleWanteds end
solveNestedImplications starting462 lines
has_given_eqs = MaybeGivenEqs
res_implic = Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
implication evbinds = {[W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1]),
[W] $dNum = GHC.Internal.Num.$fNumInt}
implication tvcs = []
has_given_eqs = MaybeGivenEqs
res_implic = Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {co, co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }
implication evbinds = {}
implication tvcs = [<Bool>_N,
{co}
; Sym co]solveImplication226 lines
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted =
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Inerts {Innermost given equalities = 0
Given eqs at this level = False}
{Equalities = {[G] co {0} :: a[sk:1] ~# Int}
Innermost given equalities = 2
Given eqs at this level = True}
final wc = WC {}
ev_binds_var = EvBindsVar<aB5>
current evbinds = {[W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1]),
[W] $dNum = GHC.Internal.Num.$fNumInt}
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }solveSimpleGivens50 lines
[[G] co {0} :: a[sk:1] ~# Int (CNonCanonical)]Emitting fresh work {[G] co {0} :: a[sk:1] ~# Int (CNonCanonical)}
-----------------------------
Start solver pipeline45 lines
tclevel = 2
work item = [G] co {0} :: a[sk:1] ~# Int (CNonCanonical)
inerts = {Innermost given equalities = 0
Given eqs at this level = False}
rest of worklist = WL {}
Stop(Kept inert EqCt
ev: [G] co {0} :: a[sk:1] ~# Int)solve35 lines
workitem = [G] co {0} :: a[sk:1] ~# Int (CNonCanonical)canonicaliseEquality5 lines
[G] co {0} :: a[sk:1] ~# Int
nominal equality
a[sk:1]
Intrewrite27 lines
a[sk:1]
Unfilled tyvar a[sk:1]
rewrite } a[sk:1]
rewrite23 lines
Int
PuOK{redn: {reductionOriginalType: Int
reductionReducedType: Int
reductionCoercion: <Int>_N}
cts: {}}rewrite } Int
can_eq_nc: go round again4 lines
[G] co {0} :: a[sk:1] ~# Int
a[sk:1]
Intcan_eq13 lines
a[sk:1] Int
canEqCanLHSFinish5 lines
ev: [G] co {0} :: a[sk:1] ~# Int
swapped: Not-swapped
lhs: a[sk:1]
rhs: IntcheckTypeEq4 lines
lhs: a[sk:1] rhs: Int
checkTypeEq
end solve
Step 1[l:2,d:0] Kept inert EqCt: [G] co {0} :: a[sk:1] ~# Int
End solver pipeline
End solveSimpleGivens
solveWanteds96 lines
Level = 2
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
iterations = 1
residual = WC {}simplify_loop iteration=0 (definitely_redo = True, 1 simples to solve)
simplify_loop: wc =2 lines
WC {wc_simple = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}solveSimpleWanteds83 lines
Mode: TcSMode{}
Inerts: {Equalities = {[G] co {0} :: a[sk:1] ~# Int}
Innermost given equalities = 2
Given eqs at this level = True}
Wanteds to solve: {[W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}Emitting fresh work {[W] $dNum {0} :: Num a[tau:2] (CNonCanonical)}
-----------------------------
Start solver pipeline69 lines
tclevel = 2
work item = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)
inerts = {Equalities = {[G] co {0} :: a[sk:1] ~# Int}
Innermost given equalities = 2
Given eqs at this level = True}
rest of worklist = WL {}
Stop(Dict/Top (solved wanted)
ev: [W] $dNum {0} :: Num Int)solve58 lines
workitem = [W] $dNum {0} :: Num a[tau:2] (CNonCanonical)rewriteEvidence [W] $dNum {0} :: Num a[tau:2]
rewrite54 lines
Num a[tau:2]
Following filled tyvar a[tau:2] = a[sk:1]
Unfilled tyvar a[sk:1]
Following inert tyvar3 lines
a[sk:1] = Int
[G] co {0} :: a[sk:1] ~# Intrewrite } Num Int
Emitting new wanted3 lines
$dNum :: Num Int arising from the literal ‘1’ at examples/traces/Refine.hs:13:13
addTcEvBind7 lines
EvBindsVar: aB5
ev_bind: [W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1])
bnds: []
bnds': [aB3 :-> [W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1])]solveDictNC3 lines
Num Int
[W] $dNum {0} :: Num IntsolveDict [W] $dNum {0} :: Num Int (CDictCan)
tryInertDicts:no3 lines
[W] $dNum {0} :: Num Int (CDictCan)
Num [Int]matchClassInst pred = Num Int29 lines
No local instance for Num Int
matchInstEnv4 lines
goal: Num [Int] matches: [(instance Num Int -- Defined in ‘GHC.Internal.Num’, [])] unify: NoUnifiers canonical
matchClass success3 lines
dict Num Int canonical witness GHC.Internal.Num.$fNumInt Num Int
match_one3 lines
GHC.Internal.Num.$fNumInt []
match_one 24 lines
GHC.Internal.Num.$fNumInt [] []
} matchClassInst global result3 lines
OneInst []
instance Num Int -- Defined in ‘GHC.Internal.Num’updSolvedDicts: [W] $dNum {0} :: Num Int (CDictCan)
doTopReact/found instance for [W] $dNum {0} :: Num Int
addTcEvBind8 lines
EvBindsVar: aB5
ev_bind: [W] $dNum = GHC.Internal.Num.$fNumInt
bnds: [aB3 :-> [W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1])]
bnds': [aB3 :-> [W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1]),
aBd :-> [W] $dNum = GHC.Internal.Num.$fNumInt]end solve
Step 2[l:2,d:0] Dict/Top (solved wanted): [W] $dNum {0} :: Num Int
End solver pipeline
getUnsolvedInerts5 lines
tv eqs = {}
fun eqs = {}
dicts = {}
irreds = {}solveSimpleWanteds end
resetUnificationFlag3 lines
ambient: 2 unif_lvl: Nothing
unif_happened False
solveWanteds
getHasGivenEqs8 lines
given_eqs: True
ge_lvl: 2
ambient level: 2
Inerts: {Equalities = {[G] co {0} :: a[sk:1] ~# Int}
Innermost given equalities = 2
Given eqs at this level = True}
Insols: {}solveImplication 23 lines
{}
WC {}solveImplication 35 lines
ev_binds_var EvBindsVar<aB5>
implication evbinds = {[W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1]),
[W] $dNum = GHC.Internal.Num.$fNumInt}setImplicationStatus27 lines
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }neededEvVars13 lines
old_need_implic: ENS{ens_dms = {} ens_fvs = {}}
new_need_implic: ENS{ens_dms = {} ens_fvs = {}}
used_covars: {}
need_ignoring_dms: {co, $dNum}
need_from_dms: {}
need: ENS{ens_dms = {} ens_fvs = {co}}
ev_binds: [aB3 :-> [W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1]),
aBd :-> [W] $dNum = GHC.Internal.Num.$fNumInt]
live_ev_binds: [aB3 :-> [W] $dNum
= $dNum `cast` (Sub (Sym (Num co)_N) :: Num Int ~R# Num a[sk:1]),
aBd :-> [W] $dNum = GHC.Internal.Num.$fNumInt]setImplicationStatus
solveImplication end
solveImplication200 lines
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted =
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }
Inerts {Innermost given equalities = 0
Given eqs at this level = False}
{Equalities = {[G] co {0} :: a[sk:1] ~# Bool}
Innermost given equalities = 2
Given eqs at this level = True}
final wc = WC {}
ev_binds_var = EvBindsVar<aBa>
current evbinds = {}
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {co, co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }solveSimpleGivens50 lines
[[G] co {0} :: a[sk:1] ~# Bool (CNonCanonical)]Emitting fresh work {[G] co {0} :: a[sk:1] ~# Bool (CNonCanonical)}
-----------------------------
Start solver pipeline45 lines
tclevel = 2
work item = [G] co {0} :: a[sk:1] ~# Bool (CNonCanonical)
inerts = {Innermost given equalities = 0
Given eqs at this level = False}
rest of worklist = WL {}
Stop(Kept inert EqCt
ev: [G] co {0} :: a[sk:1] ~# Bool)solve35 lines
workitem = [G] co {0} :: a[sk:1] ~# Bool (CNonCanonical)canonicaliseEquality5 lines
[G] co {0} :: a[sk:1] ~# Bool
nominal equality
a[sk:1]
Boolrewrite27 lines
a[sk:1]
Unfilled tyvar a[sk:1]
rewrite } a[sk:1]
rewrite23 lines
Bool
PuOK{redn: {reductionOriginalType: Bool
reductionReducedType: Bool
reductionCoercion: <Bool>_N}
cts: {}}rewrite } Bool
can_eq_nc: go round again4 lines
[G] co {0} :: a[sk:1] ~# Bool
a[sk:1]
Boolcan_eq13 lines
a[sk:1] Bool
canEqCanLHSFinish5 lines
ev: [G] co {0} :: a[sk:1] ~# Bool
swapped: Not-swapped
lhs: a[sk:1]
rhs: BoolcheckTypeEq4 lines
lhs: a[sk:1] rhs: Bool
checkTypeEq
end solve
Step 3[l:2,d:0] Kept inert EqCt: [G] co {0} :: a[sk:1] ~# Bool
End solver pipeline
End solveSimpleGivens
solveWanteds77 lines
Level = 2
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}
iterations = 1
residual = WC {}simplify_loop iteration=0 (definitely_redo = True, 1 simples to solve)
simplify_loop: wc =3 lines
WC {wc_simple =
[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}solveSimpleWanteds62 lines
Mode: TcSMode{}
Inerts: {Equalities = {[G] co {0} :: a[sk:1] ~# Bool}
Innermost given equalities = 2
Given eqs at this level = True}
Wanteds to solve: {[W] hole{co} {0}
:: Bool ~# a[sk:1] (CNonCanonical)}Emitting fresh work2 lines
{[W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)}-----------------------------
Start solver pipeline46 lines
tclevel = 2
work item = [W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)
inerts = {Equalities = {[G] co {0} :: a[sk:1] ~# Bool}
Innermost given equalities = 2
Given eqs at this level = True}
rest of worklist = WL {}
Stop(Solved by reflexivity
ev: [W] hole{co} {0} :: Bool ~# Bool)solve34 lines
workitem = [W] hole{co} {0} :: Bool ~# a[sk:1] (CNonCanonical)canonicaliseEquality5 lines
[W] hole{co} {0} :: Bool ~# a[sk:1]
nominal equality
Bool
a[sk:1]rewrite26 lines
Bool
rewrite } Bool
rewrite23 lines
a[sk:1]
Unfilled tyvar a[sk:1]
Following inert tyvar3 lines
a[sk:1] = Bool
[G] co {0} :: a[sk:1] ~# Boolrewrite } Bool
New coercion hole: co :: Bool GHC.Internal.Prim.~# Bool
Filling coercion hole3 lines
co := {co}
; Sym corewriteEqEvidence7 lines
[W] hole{co} {0} :: Bool ~# a[sk:1]
Bool
Bool
{co}
; Sym co
{}can_eq_nc: go round again4 lines
[W] hole{co} {0} :: Bool ~# Bool
Bool
BoolFilling coercion hole co := <Bool>_N
end solve
Step 4[l:2,d:0] Solved by reflexivity:2 lines
[W] hole{co} {0} :: Bool ~# BoolEnd solver pipeline
getUnsolvedInerts5 lines
tv eqs = {}
fun eqs = {}
dicts = {}
irreds = {}solveSimpleWanteds end
resetUnificationFlag3 lines
ambient: 2 unif_lvl: Nothing
unif_happened False
solveWanteds
getHasGivenEqs8 lines
given_eqs: True
ge_lvl: 2
ambient level: 2
Inerts: {Equalities = {[G] co {0} :: a[sk:1] ~# Bool}
Innermost given equalities = 2
Given eqs at this level = True}
Insols: {}solveImplication 23 lines
{}
WC {}solveImplication 33 lines
ev_binds_var EvBindsVar<aBa>
implication evbinds = {}setImplicationStatus23 lines
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Unsolved
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }neededEvVars9 lines
old_need_implic: ENS{ens_dms = {} ens_fvs = {}}
new_need_implic: ENS{ens_dms = {} ens_fvs = {}}
used_covars: {co, co}
need_ignoring_dms: {co, co}
need_from_dms: {}
need: ENS{ens_dms = {} ens_fvs = {co, co}}
ev_binds: []
live_ev_binds: []setImplicationStatus
solveImplication end
solveNestedImplications end
resetUnificationFlag3 lines
ambient: 1 unif_lvl: Nothing
unif_happened False
solveWanteds
getHasGivenEqs7 lines
given_eqs: False
ge_lvl: 0
ambient level: 1
Inerts: {Innermost given equalities = 0
Given eqs at this level = False}
Insols: {}solveImplication 227 lines
{}
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {co, co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}solveImplication 33 lines
ev_binds_var EvBindsVar<aBb>
implication evbinds = {}setImplicationStatus48 lines
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Unsolved
Given =
Wanted =
WC {wc_impl =
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Int
Wanted = WC {}
Binds = EvBindsVar<aB5>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TInt :: T Int,
in an equation for ‘get’ }
Implic {
TcLevel = 2
Skolems =
Given-eqs = MaybeGivenEqs
Status = Solved {Dead givens = []}
Given = co :: a[sk:1] GHC.Internal.Prim.~# Bool
Wanted = WC {}
Binds = EvBindsVar<aBa>
need = ENS{ens_dms = {} ens_fvs = {co, co}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
a pattern with constructor: TBool :: T Bool,
in an equation for ‘get’ }}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {}}
need_implic = ENS{ens_dms = {} ens_fvs = {}}
the type signature for:
get :: forall a. T a -> a }neededEvVars9 lines
old_need_implic: ENS{ens_dms = {} ens_fvs = {}}
new_need_implic: ENS{ens_dms = {} ens_fvs = {co}}
used_covars: {}
need_ignoring_dms: {co}
need_from_dms: {}
need: ENS{ens_dms = {} ens_fvs = {co}}
ev_binds: []
live_ev_binds: []setImplicationStatus
solveImplication end
solveNestedImplications end
resetUnificationFlag3 lines
ambient: 0 unif_lvl: Nothing
unif_happened False
solveWanteds
tryDefaulting34 lines
WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}zonkSimples done: {}
zonkSimples done: {}
applyDefaultingRules17 lines
wanteds = WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}
groups = []
info = ([default Num (Integer, Double)], False)applyDefaultingRules } []
tryDefaulting
Constraint solver steps = 4
End simplifyTop
newTcEvBinds unique = aDa
reportUnsolved63 lines
type errors: ErrorWithoutFlag expr holes: ErrorWithoutFlag type holes: ErrorWithoutFlag scope holes: ErrorWithoutFlag
reportUnsolved (before zonking and tidying)14 lines
WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}zonkSimples done: {}
zonkSimples done: {}
reportUnsolved (after zonking):17 lines
Free tyvars:
Bound occs: [a]
Tidy env: ([], [])
Wanted: WC {wc_impl =
Implic {
TcLevel = 1
Skolems = a[sk:1]
Given-eqs = NoGivenEqs
Status = Solved {Dead givens = []}
Given =
Wanted = WC {}
Binds = EvBindsVar<aBb>
need = ENS{ens_dms = {} ens_fvs = {co}}
need_implic = ENS{ens_dms = {} ens_fvs = {co}}
the type signature for:
get :: forall a. T a -> a }}reportWanteds 16 lines
Simples = {}
Suppress = False
tidy_cts = []
tidy_items1 = []
tidy_errs = []reportWanteds suppressed: []
tryReporters17 lines
[] []
tryReporters } []
tryReporters13 lines
[] []
tryReporters } []
reportImplic4 lines
tidy env: ([], []) skols: a[sk:1] tidy skols: a[sk:1]
reportWanteds empty WC
tryReporters4 lines
[] []
tryReporters } []
reportUnsolved
reportUnsolved (unsafe overlapping)2 lines
reportUnsolved (unsafe overlapping)
mkTypeableBinds [T]
mkTyConKindRepBinds4 lines
T * -> * * -> *
mkTyConKindRepBinds4 lines
TInt T Int T Int
mkTyConKindRepBinds4 lines
TBool T Bool T Bool
Tc9
Tc11
Adding diagnostic:3 lines
examples/traces/Refine.hs:1:1:: [GHC-85401]
The export item ‘module Refine’ is missing an export listsimplifyTop14 lines
wanted = WC {}
final wc = WC {}
ev_binds_var = EvBindsVar<aDI>
current evbinds = {}newTcEvBinds unique = aDI
solveWanteds4 lines
Level = 0
WC {}solveWanteds
tryDefaulting3 lines
WC {}tryDefaulting } WC {}
End simplifyTop
newTcEvBinds unique = aDJ
reportUnsolved (unsafe overlapping)2 lines
reportUnsolved (unsafe overlapping)
Adding diagnostic:4 lines
examples/traces/Refine.hs:8:1:: [GHC-38417]
Top-level type constructor with no standalone kind signature:
type T :: * -> *newTcEvBinds unique = aDM
checkGivens176 lines
{Innermost given equalities = 0
Given eqs at this level = False} {pm_dDL}
{Equalities = {[G] pm_dDL {0} :: a ~# Int}
Innermost given equalities = 0
Given eqs at this level = True}solveSimpleGivens50 lines
[[G] pm_dDL {0} :: a ~# Int (CNonCanonical)]Emitting fresh work {[G] pm_dDL {0} :: a ~# Int (CNonCanonical)}
-----------------------------
Start solver pipeline45 lines
tclevel = 0
work item = [G] pm_dDL {0} :: a ~# Int (CNonCanonical)
inerts = {Innermost given equalities = 0
Given eqs at this level = False}
rest of worklist = WL {}
Stop(Kept inert EqCt
ev: [G] pm_dDL {0} :: a ~# Int)solve35 lines
workitem = [G] pm_dDL {0} :: a ~# Int (CNonCanonical)canonicaliseEquality5 lines
[G] pm_dDL {0} :: a ~# Int
nominal equality
a
Intrewrite27 lines
a
Unfilled tyvar a
rewrite } a
rewrite23 lines
Int
PuOK{redn: {reductionOriginalType: Int
reductionReducedType: Int
reductionCoercion: <Int>_N}
cts: {}}rewrite } Int
can_eq_nc: go round again4 lines
[G] pm_dDL {0} :: a ~# Int
a
Intcan_eq13 lines
a Int
canEqCanLHSFinish5 lines
ev: [G] pm_dDL {0} :: a ~# Int
swapped: Not-swapped
lhs: a
rhs: IntcheckTypeEq4 lines
lhs: a rhs: Int
checkTypeEq
end solve
Step 1[l:0,d:0] Kept inert EqCt: [G] pm_dDL {0} :: a ~# Int
End solver pipeline
End solveSimpleGivens
checkGivens } {}
Constraint solver steps = 1
newTcEvBinds unique = aDO
checkGivens117 lines
{Innermost given equalities = 0
Given eqs at this level = False} {pm_dDN}
{Equalities = {[G] pm_dDN {0} :: a ~# Bool}
Innermost given equalities = 0
Given eqs at this level = True}solveSimpleGivens50 lines
[[G] pm_dDN {0} :: a ~# Bool (CNonCanonical)]Emitting fresh work {[G] pm_dDN {0} :: a ~# Bool (CNonCanonical)}
-----------------------------
Start solver pipeline45 lines
tclevel = 0
work item = [G] pm_dDN {0} :: a ~# Bool (CNonCanonical)
inerts = {Innermost given equalities = 0
Given eqs at this level = False}
rest of worklist = WL {}
Stop(Kept inert EqCt
ev: [G] pm_dDN {0} :: a ~# Bool)solve35 lines
workitem = [G] pm_dDN {0} :: a ~# Bool (CNonCanonical)canonicaliseEquality5 lines
[G] pm_dDN {0} :: a ~# Bool
nominal equality
a
Boolrewrite27 lines
a
Unfilled tyvar a
rewrite } a
rewrite23 lines
Bool
PuOK{redn: {reductionOriginalType: Bool
reductionReducedType: Bool
reductionCoercion: <Bool>_N}
cts: {}}rewrite } Bool
can_eq_nc: go round again4 lines
[G] pm_dDN {0} :: a ~# Bool
a
Boolcan_eq13 lines
a Bool
canEqCanLHSFinish5 lines
ev: [G] pm_dDN {0} :: a ~# Bool
swapped: Not-swapped
lhs: a
rhs: BoolcheckTypeEq4 lines
lhs: a rhs: Bool
checkTypeEq
end solve
Step 1[l:0,d:0] Kept inert EqCt: [G] pm_dDN {0} :: a ~# Bool
End solver pipeline
End solveSimpleGivens
checkGivens } {}
Constraint solver steps = 1
newTcEvBinds unique = aDQ
checkGivens58 lines
{Innermost given equalities = 0
Given eqs at this level = False} {pm_dDP}
{Equalities = {[G] pm_dDP {0} :: a ~# Bool}
Innermost given equalities = 0
Given eqs at this level = True}solveSimpleGivens50 lines
[[G] pm_dDP {0} :: a ~# Bool (CNonCanonical)]Emitting fresh work {[G] pm_dDP {0} :: a ~# Bool (CNonCanonical)}
-----------------------------
Start solver pipeline45 lines
tclevel = 0
work item = [G] pm_dDP {0} :: a ~# Bool (CNonCanonical)
inerts = {Innermost given equalities = 0
Given eqs at this level = False}
rest of worklist = WL {}
Stop(Kept inert EqCt
ev: [G] pm_dDP {0} :: a ~# Bool)solve35 lines
workitem = [G] pm_dDP {0} :: a ~# Bool (CNonCanonical)canonicaliseEquality5 lines
[G] pm_dDP {0} :: a ~# Bool
nominal equality
a
Boolrewrite27 lines
a
Unfilled tyvar a
rewrite } a
rewrite23 lines
Bool
PuOK{redn: {reductionOriginalType: Bool
reductionReducedType: Bool
reductionCoercion: <Bool>_N}
cts: {}}rewrite } Bool
can_eq_nc: go round again4 lines
[G] pm_dDP {0} :: a ~# Bool
a
Boolcan_eq13 lines
a Bool
canEqCanLHSFinish5 lines
ev: [G] pm_dDP {0} :: a ~# Bool
swapped: Not-swapped
lhs: a
rhs: BoolcheckTypeEq4 lines
lhs: a rhs: Bool
checkTypeEq
end solve
Step 1[l:0,d:0] Kept inert EqCt: [G] pm_dDP {0} :: a ~# Bool
End solver pipeline
End solveSimpleGivens
checkGivens } {}
Constraint solver steps = 1
The whole program after each simplifier iteration. The same banner repeating means separate passes, each running to its own fixed point.-ddump-simpl-iterations
Simplifier iteration=1217 lines
---- Simplifier counts for Simplifier iteration=1
Total ticks: 14
---- End of simplifier counts for Simplifier iteration=1
Result size of Simplifier iteration=1
= {terms: 87, types: 47, coercions: 6, joins: 0/0}
-- RHS size: {terms: 9, types: 15, coercions: 6, joins: 0/0}
get :: forall a. T a -> a
[LclIdX,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [30] 30 20}]
get
= \ (@a) (ds :: T a) ->
case ds of {
TInt co ->
(GHC.Internal.Types.I# 1#) `cast` (Sub (Sym co) :: Int ~R# a);
TBool co ->
GHC.Internal.Types.True `cast` (Sub (Sym co) :: Bool ~R# a)
}
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
$trModule :: GHC.Internal.Prim.Addr#
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 20 0}]
$trModule = "main"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
$trModule :: GHC.Internal.Types.TrName
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$trModule = GHC.Internal.Types.TrNameS $trModule
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
$trModule :: GHC.Internal.Prim.Addr#
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 30 0}]
$trModule = "Refine"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
$trModule :: GHC.Internal.Types.TrName
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$trModule = GHC.Internal.Types.TrNameS $trModule
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Refine.$trModule :: GHC.Internal.Types.Module
[LclIdX,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
Refine.$trModule = GHC.Internal.Types.Module $trModule $trModule
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
$krep [InlPrag=[~]] :: GHC.Internal.Types.KindRep
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$krep
= GHC.Internal.Types.KindRepTyConApp
GHC.Internal.Types.$tcBool
(GHC.Internal.Types.[] @GHC.Internal.Types.KindRep)
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
$krep [InlPrag=[~]] :: GHC.Internal.Types.KindRep
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$krep
= GHC.Internal.Types.KindRepTyConApp
GHC.Internal.Types.$tcInt
(GHC.Internal.Types.[] @GHC.Internal.Types.KindRep)
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
$tcT :: GHC.Internal.Prim.Addr#
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 20 0}]
$tcT = "T"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
$tcT :: GHC.Internal.Types.TrName
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$tcT = GHC.Internal.Types.TrNameS $tcT
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Refine.$tcT :: GHC.Internal.Types.TyCon
[LclIdX,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
Refine.$tcT
= GHC.Internal.Types.TyCon
4139744965234400371#Word64
13591603313320021657#Word64
Refine.$trModule
$tcT
0#
GHC.Internal.Types.krep$*Arr*
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
$krep :: [GHC.Internal.Types.KindRep]
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$krep
= GHC.Internal.Types.:
@GHC.Internal.Types.KindRep
$krep
(GHC.Internal.Types.[] @GHC.Internal.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
$krep [InlPrag=[~]] :: GHC.Internal.Types.KindRep
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$krep = GHC.Internal.Types.KindRepTyConApp Refine.$tcT $krep
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
$tc'TInt :: GHC.Internal.Prim.Addr#
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 30 0}]
$tc'TInt = "'TInt"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
$tc'TInt :: GHC.Internal.Types.TrName
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$tc'TInt = GHC.Internal.Types.TrNameS $tc'TInt
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Refine.$tc'TInt :: GHC.Internal.Types.TyCon
[LclIdX,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
Refine.$tc'TInt
= GHC.Internal.Types.TyCon
4440412398598624573#Word64
4565466717514444298#Word64
Refine.$trModule
$tc'TInt
0#
$krep
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
$krep :: [GHC.Internal.Types.KindRep]
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$krep
= GHC.Internal.Types.:
@GHC.Internal.Types.KindRep
$krep
(GHC.Internal.Types.[] @GHC.Internal.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
$krep [InlPrag=[~]] :: GHC.Internal.Types.KindRep
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$krep = GHC.Internal.Types.KindRepTyConApp Refine.$tcT $krep
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
$tc'TBool :: GHC.Internal.Prim.Addr#
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 30 0}]
$tc'TBool = "'TBool"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
$tc'TBool :: GHC.Internal.Types.TrName
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
$tc'TBool = GHC.Internal.Types.TrNameS $tc'TBool
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Refine.$tc'TBool :: GHC.Internal.Types.TyCon
[LclIdX,
Unf=Unf{Src=<vanilla>, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 10 10}]
Refine.$tc'TBool
= GHC.Internal.Types.TyCon
13110872169412392467#Word64
2571850487090855526#Word64
Refine.$trModule
$tc'TBool
0#
$krepEvery rewrite rule that fired, in order.-ddump-rule-firings
Rule fired: Class op fromInteger (BUILTIN)
Rule fired: Int# -> Integer -> Int# (GHC.Internal.Bignum.Integer)
What to look for
- Typechecker trace → solveImplication
- One implication per branch. Inside each: an Implic { ... } with its own TcLevel, its own skolems, and its own Given.
- Typechecker trace → solveSimpleGivens
- The branch assumption (the equality from the constructor) being installed as a fact before the branch body is checked against it.
- Typechecker trace → the Inerts printouts
- Innermost given equalities = 2 while a branch body is being solved, and = 0 outside it. Local assumptions are local, and the inert set says so in one line.