diff --git a/Hat/Control/Monad.hs b/Hat/Control/Monad.hs
new file mode 100644
--- /dev/null
+++ b/Hat/Control/Monad.hs
@@ -0,0 +1,181 @@
+module Hat.Control.Monad
+  (Functor(gfmap,sfmap),Monad((!>>=),(!>>),greturn,gfail,(|>>=),(|>>),sreturn
+      ,sfail),MonadPlus(gmzero,gmplus,smzero,smplus),gmapM,amapM,hmapM,gmapM_
+    ,amapM_,hmapM_,gforM,gforM_,gsequence,gsequence_,(!=<<),(+=<<),(*=<<),(!>=>)
+    ,(+>=>),(*>=>),(!<=<),gforever,aforever,hforever,gvoid,gjoin,ajoin,hjoin
+    ,gmsum,amsum,hmsum,gfilterM,afilterM,hfilterM,gmapAndUnzipM,amapAndUnzipM
+    ,hmapAndUnzipM,gzipWithM,azipWithM,hzipWithM,gzipWithM_,azipWithM_
+    ,hzipWithM_,gfoldM,afoldM,hfoldM,gfoldM_,afoldM_,hfoldM_,greplicateM
+    ,areplicateM,hreplicateM,greplicateM_,areplicateM_,hreplicateM_,gguard
+    ,aguard,hguard,gwhen,awhen,hwhen,gunless,aunless,hunless,gliftM,aliftM
+    ,hliftM,gliftM2,aliftM2,hliftM2,gliftM3,aliftM3,hliftM3,gliftM4,aliftM4
+    ,hliftM4,gliftM5,aliftM5,hliftM5,gap) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.Monad 
+
+gforM ::
+  Monad m =>
+  T.RefSrcPos ->
+    T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m (T.List b))))
+
+sforM ::
+  Monad m => T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m (T.List b))))
+
+gforM pforM p = T.uconstUse pforM p sforM
+
+sforM =
+  T.uconstDef T.mkRoot aforM
+    (\ p -> T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gmapM T.mkNoSrcPos p))
+
+gforM_ ::
+  Monad m =>
+  T.RefSrcPos ->
+    T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m T.Tuple0)))
+
+sforM_ :: Monad m => T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m T.Tuple0)))
+
+gforM_ pforM_ p = T.uconstUse pforM_ p sforM_
+
+sforM_ =
+  T.uconstDef T.mkRoot aforM_
+    (\ p ->
+      T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gmapM_ T.mkNoSrcPos p))
+
+(!>=>) ::
+  Monad m =>
+  T.RefSrcPos ->
+    T.RefExp ->
+      T.R (T.Fun (T.Fun a (m b)) (T.Fun (T.Fun b (m c)) (T.Fun a (m c))))
+
+(*>=>) ::
+  Monad m =>
+  (T.R (T.Fun a (m b))) ->
+    (T.R (T.Fun b (m c))) -> T.RefExp -> T.R (T.Fun a (m c))
+
+(!>=>) (%>=>) p = T.ufun2 (+>=>) (%>=>) p (*>=>)
+
+(*>=>) ff fg p =
+  T.ufun1 T.mkLambda T.mkNoSrcPos p
+    (\ fx p ->
+      T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>>= p) (T.uap1 T.mkNoSrcPos p ff fx)
+        fg)
+
+(!<=<) ::
+  Monad m =>
+  T.RefSrcPos ->
+    T.RefExp ->
+      T.R (T.Fun (T.Fun b (m c)) (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))
+
+(|<=<) ::
+  Monad m => T.R (T.Fun (T.Fun b (m c)) (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))
+
+(!<=<) (%<=<) p = T.uconstUse (%<=<) p (|<=<)
+
+(|<=<) =
+  T.uconstDef T.mkRoot (+<=<)
+    (\ p -> T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (T.mkNoSrcPos !>=> p))
+
+gforever :: Monad m => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m a) (m b))
+
+hforever :: Monad m => (T.R (m a)) -> T.RefExp -> T.R (m b)
+
+gforever pforever p = T.ufun1 aforever pforever p hforever
+
+hforever fa p =
+  let
+    ga' pa' p = T.uconstUse pa' p sa'
+    sa' =
+      T.uconstDef p a31v19v31v30a'
+        (\ p ->
+          T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>> p) fa (ga' T.mkNoSrcPos p)) in
+    (ga' T.mkNoSrcPos p)
+
+gvoid :: Functor f => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (f a) (f T.Tuple0))
+
+svoid :: Functor f => T.R (T.Fun (f a) (f T.Tuple0))
+
+gvoid pvoid p = T.uconstUse pvoid p svoid
+
+svoid =
+  T.uconstDef T.mkRoot avoid
+    (\ p ->
+      T.uap1 T.mkNoSrcPos p (gfmap T.mkNoSrcPos p)
+        (T.uap1 T.mkNoSrcPos p (gconst T.mkNoSrcPos p)
+          (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0)))
+
+gfoldM_ ::
+  Monad m =>
+  T.RefSrcPos ->
+    T.RefExp ->
+      T.R
+        (T.Fun (T.Fun a (T.Fun b (m a)))
+          (T.Fun a (T.Fun (T.List b) (m T.Tuple0))))
+
+hfoldM_ ::
+  Monad m =>
+  (T.R (T.Fun a (T.Fun b (m a)))) ->
+    (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (m T.Tuple0)
+
+gfoldM_ pfoldM_ p = T.ufun3 afoldM_ pfoldM_ p hfoldM_
+
+hfoldM_ ff fa fxs p =
+  T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>> p)
+    (T.uwrapForward p (hfoldM ff fa fxs p))
+    (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)
+      (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))
+
+greplicateM ::
+  Monad m =>
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun (m a) (m (T.List a))))
+
+hreplicateM ::
+  Monad m => (T.R Int) -> (T.R (m a)) -> T.RefExp -> T.R (m (T.List a))
+
+greplicateM preplicateM p = T.ufun2 areplicateM preplicateM p hreplicateM
+
+hreplicateM fn fx p =
+  T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)
+    (T.uwrapForward p (hreplicate fn fx p))
+
+greplicateM_ ::
+  Monad m =>
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun (m a) (m T.Tuple0)))
+
+hreplicateM_ ::
+  Monad m => (T.R Int) -> (T.R (m a)) -> T.RefExp -> T.R (m T.Tuple0)
+
+greplicateM_ preplicateM_ p = T.ufun2 areplicateM_ preplicateM_ p hreplicateM_
+
+hreplicateM_ fn fx p =
+  T.uap1 T.mkNoSrcPos p (gsequence_ T.mkNoSrcPos p)
+    (T.uwrapForward p (hreplicate fn fx p))
+
+tControl_Monad = T.mkModule "Control.Monad" "Control/Monad.hs" Prelude.False
+
+aforM = T.mkVariable tControl_Monad 150001 150027 3 0 "forM" Prelude.False
+
+aforM_ = T.mkVariable tControl_Monad 190001 190028 3 0 "forM_" Prelude.False
+
+(+>=>) = T.mkVariable tControl_Monad 230003 230005 3 2 ">=>" Prelude.False
+
+(+<=<) = T.mkVariable tControl_Monad 270002 270023 3 0 "<=<" Prelude.False
+
+aforever = T.mkVariable tControl_Monad 310001 310036 3 1 "forever" Prelude.False
+
+avoid = T.mkVariable tControl_Monad 350001 350022 3 0 "void" Prelude.False
+
+afoldM_ = T.mkVariable tControl_Monad 390001 390046 3 3 "foldM_" Prelude.False
+
+areplicateM =
+  T.mkVariable tControl_Monad 440001 440043 3 2 "replicateM" Prelude.False
+
+areplicateM_ =
+  T.mkVariable tControl_Monad 480001 480044 3 2 "replicateM_" Prelude.False
+
+a31v19v31v30a' = T.mkVariable tControl_Monad 310019 310030 3 0 "a'" Prelude.True
diff --git a/Hat/Data/Char.hs b/Hat/Data/Char.hs
new file mode 100644
--- /dev/null
+++ b/Hat/Data/Char.hs
@@ -0,0 +1,2493 @@
+module Hat.Data.Char
+  (Char(),String(),gisControl,aisControl,hisControl,gisSpace,aisSpace,hisSpace
+    ,gisLower,aisLower,hisLower,gisUpper,aisUpper,hisUpper,gisAlpha,aisAlpha
+    ,hisAlpha,gisAlphaNum,aisAlphaNum,hisAlphaNum,gisPrint,aisPrint,hisPrint
+    ,gisDigit,aisDigit,hisDigit,gisOctDigit,aisOctDigit,hisOctDigit,gisHexDigit
+    ,aisHexDigit,hisHexDigit,gisLetter,aisLetter,hisLetter,gisMark,aisMark
+    ,hisMark,gisNumber,aisNumber,hisNumber,gisPunctuation,aisPunctuation
+    ,hisPunctuation,gisSymbol,aisSymbol,hisSymbol,gisSeparator,aisSeparator
+    ,hisSeparator,gisAscii,aisAscii,hisAscii,gisLatin1,aisLatin1,hisLatin1
+    ,gisAsciiUpper,aisAsciiUpper,hisAsciiUpper,gisAsciiLower,aisAsciiLower
+    ,hisAsciiLower,GeneralCategory(UppercaseLetter,LowercaseLetter
+      ,TitlecaseLetter,ModifierLetter,OtherLetter,NonSpacingMark
+      ,SpacingCombiningMark,EnclosingMark,DecimalNumber,LetterNumber,OtherNumber
+      ,ConnectorPunctuation,DashPunctuation,OpenPunctuation,ClosePunctuation
+      ,InitialQuote,FinalQuote,OtherPunctuation,MathSymbol,CurrencySymbol
+      ,ModifierSymbol,OtherSymbol,Space,LineSeparator,ParagraphSeparator,Control
+      ,Format,Surrogate,PrivateUse,NotAssigned),aUppercaseLetter
+    ,aLowercaseLetter,aTitlecaseLetter,aModifierLetter,aOtherLetter
+    ,aNonSpacingMark,aSpacingCombiningMark,aEnclosingMark,aDecimalNumber
+    ,aLetterNumber,aOtherNumber,aConnectorPunctuation,aDashPunctuation
+    ,aOpenPunctuation,aClosePunctuation,aInitialQuote,aFinalQuote
+    ,aOtherPunctuation,aMathSymbol,aCurrencySymbol,aModifierSymbol,aOtherSymbol
+    ,aSpace,aLineSeparator,aParagraphSeparator,aControl,aFormat,aSurrogate
+    ,aPrivateUse,aNotAssigned,ggeneralCategory,ageneralCategory,hgeneralCategory
+    ,gtoUpper,atoUpper,htoUpper,gtoLower,atoLower,htoLower,gtoTitle,atoTitle
+    ,htoTitle,gdigitToInt,adigitToInt,hdigitToInt,gintToDigit,aintToDigit
+    ,hintToDigit,gord,gchr,gshowLitChar,ashowLitChar,hshowLitChar,glexLitChar
+    ,alexLitChar,hlexLitChar,greadLitChar,areadLitChar,hreadLitChar) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.PreludeBasic 
+import Hat.Ix 
+import Hat.PreludeBuiltinTypes 
+import qualified Data.Char 
+
+gisLetter :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisLetter pisLetter p = T.ufun1 aisLetter pisLetter p hisLetter
+
+hisLetter z1isLetter kisLetter =
+  fromBool kisLetter (Data.Char.isLetter (T.toChar kisLetter z1isLetter))
+
+gisMark :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisMark pisMark p = T.ufun1 aisMark pisMark p hisMark
+
+hisMark z1isMark kisMark =
+  fromBool kisMark (Data.Char.isMark (T.toChar kisMark z1isMark))
+
+gisNumber :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisNumber pisNumber p = T.ufun1 aisNumber pisNumber p hisNumber
+
+hisNumber z1isNumber kisNumber =
+  fromBool kisNumber (Data.Char.isNumber (T.toChar kisNumber z1isNumber))
+
+gisPunctuation :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisPunctuation pisPunctuation p =
+  T.ufun1 aisPunctuation pisPunctuation p hisPunctuation
+
+hisPunctuation z1isPunctuation kisPunctuation =
+  fromBool kisPunctuation
+    (Data.Char.isPunctuation (T.toChar kisPunctuation z1isPunctuation))
+
+gisSymbol :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisSymbol pisSymbol p = T.ufun1 aisSymbol pisSymbol p hisSymbol
+
+hisSymbol z1isSymbol kisSymbol =
+  fromBool kisSymbol (Data.Char.isSymbol (T.toChar kisSymbol z1isSymbol))
+
+gisSeparator :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisSeparator pisSeparator p = T.ufun1 aisSeparator pisSeparator p hisSeparator
+
+hisSeparator z1isSeparator kisSeparator =
+  fromBool kisSeparator
+    (Data.Char.isSeparator (T.toChar kisSeparator z1isSeparator))
+
+gisAsciiUpper :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisAsciiUpper pisAsciiUpper p =
+  T.ufun1 aisAsciiUpper pisAsciiUpper p hisAsciiUpper
+
+hisAsciiUpper z1isAsciiUpper kisAsciiUpper =
+  fromBool kisAsciiUpper
+    (Data.Char.isAsciiUpper (T.toChar kisAsciiUpper z1isAsciiUpper))
+
+gisAsciiLower :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)
+
+gisAsciiLower pisAsciiLower p =
+  T.ufun1 aisAsciiLower pisAsciiLower p hisAsciiLower
+
+hisAsciiLower z1isAsciiLower kisAsciiLower =
+  fromBool kisAsciiLower
+    (Data.Char.isAsciiLower (T.toChar kisAsciiLower z1isAsciiLower))
+
+gtoTitle :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)
+
+gtoTitle ptoTitle p = T.ufun1 atoTitle ptoTitle p htoTitle
+
+htoTitle z1toTitle ktoTitle =
+  T.fromChar ktoTitle (Data.Char.toTitle (T.toChar ktoTitle z1toTitle))
+
+data GeneralCategory =
+  UppercaseLetter  | LowercaseLetter  | TitlecaseLetter  | ModifierLetter 
+  | OtherLetter  | NonSpacingMark  | SpacingCombiningMark  | EnclosingMark 
+  | DecimalNumber  | LetterNumber  | OtherNumber  | ConnectorPunctuation 
+  | DashPunctuation  | OpenPunctuation  | ClosePunctuation  | InitialQuote 
+  | FinalQuote  | OtherPunctuation  | MathSymbol  | CurrencySymbol 
+  | ModifierSymbol  | OtherSymbol  | Space  | LineSeparator 
+  | ParagraphSeparator  | Control  | Format  | Surrogate  | PrivateUse 
+  | NotAssigned 
+
+instance T.WrapVal (GeneralCategory)
+  where
+  
+  wrapVal pwrapVal (kwrapVal@UppercaseLetter) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aUppercaseLetter)
+  wrapVal pwrapVal (kwrapVal@LowercaseLetter) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aLowercaseLetter)
+  wrapVal pwrapVal (kwrapVal@TitlecaseLetter) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aTitlecaseLetter)
+  wrapVal pwrapVal (kwrapVal@ModifierLetter) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aModifierLetter)
+  wrapVal pwrapVal (kwrapVal@OtherLetter) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aOtherLetter)
+  wrapVal pwrapVal (kwrapVal@NonSpacingMark) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aNonSpacingMark)
+  wrapVal pwrapVal (kwrapVal@SpacingCombiningMark) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aSpacingCombiningMark)
+  wrapVal pwrapVal (kwrapVal@EnclosingMark) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aEnclosingMark)
+  wrapVal pwrapVal (kwrapVal@DecimalNumber) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aDecimalNumber)
+  wrapVal pwrapVal (kwrapVal@LetterNumber) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aLetterNumber)
+  wrapVal pwrapVal (kwrapVal@OtherNumber) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aOtherNumber)
+  wrapVal pwrapVal (kwrapVal@ConnectorPunctuation) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aConnectorPunctuation)
+  wrapVal pwrapVal (kwrapVal@DashPunctuation) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aDashPunctuation)
+  wrapVal pwrapVal (kwrapVal@OpenPunctuation) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aOpenPunctuation)
+  wrapVal pwrapVal (kwrapVal@ClosePunctuation) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aClosePunctuation)
+  wrapVal pwrapVal (kwrapVal@InitialQuote) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aInitialQuote)
+  wrapVal pwrapVal (kwrapVal@FinalQuote) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aFinalQuote)
+  wrapVal pwrapVal (kwrapVal@OtherPunctuation) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aOtherPunctuation)
+  wrapVal pwrapVal (kwrapVal@MathSymbol) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aMathSymbol)
+  wrapVal pwrapVal (kwrapVal@CurrencySymbol) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aCurrencySymbol)
+  wrapVal pwrapVal (kwrapVal@ModifierSymbol) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aModifierSymbol)
+  wrapVal pwrapVal (kwrapVal@OtherSymbol) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aOtherSymbol)
+  wrapVal pwrapVal (kwrapVal@Space) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aSpace)
+  wrapVal pwrapVal (kwrapVal@LineSeparator) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aLineSeparator)
+  wrapVal pwrapVal (kwrapVal@ParagraphSeparator) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aParagraphSeparator)
+  wrapVal pwrapVal (kwrapVal@Control) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aControl)
+  wrapVal pwrapVal (kwrapVal@Format) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aFormat)
+  wrapVal pwrapVal (kwrapVal@Surrogate) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aSurrogate)
+  wrapVal pwrapVal (kwrapVal@PrivateUse) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aPrivateUse)
+  wrapVal pwrapVal (kwrapVal@NotAssigned) p =
+    T.R kwrapVal (T.mkValueUse p pwrapVal aNotAssigned)
+  
+
+instance Eq (GeneralCategory)
+  where
+  
+  (!==) (%==) p =
+    T.ufun2 (+>>=#>=>>=$!==) (%==) p (*==)
+    where
+    
+    (*==) (T.R UppercaseLetter _) (T.R UppercaseLetter _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R LowercaseLetter _) (T.R LowercaseLetter _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R TitlecaseLetter _) (T.R TitlecaseLetter _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R ModifierLetter _) (T.R ModifierLetter _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R OtherLetter _) (T.R OtherLetter _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R NonSpacingMark _) (T.R NonSpacingMark _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R SpacingCombiningMark _) (T.R SpacingCombiningMark _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R EnclosingMark _) (T.R EnclosingMark _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R DecimalNumber _) (T.R DecimalNumber _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R LetterNumber _) (T.R LetterNumber _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R OtherNumber _) (T.R OtherNumber _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R ConnectorPunctuation _) (T.R ConnectorPunctuation _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R DashPunctuation _) (T.R DashPunctuation _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R OpenPunctuation _) (T.R OpenPunctuation _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R ClosePunctuation _) (T.R ClosePunctuation _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R InitialQuote _) (T.R InitialQuote _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R FinalQuote _) (T.R FinalQuote _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R OtherPunctuation _) (T.R OtherPunctuation _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R MathSymbol _) (T.R MathSymbol _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R CurrencySymbol _) (T.R CurrencySymbol _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R ModifierSymbol _) (T.R ModifierSymbol _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R OtherSymbol _) (T.R OtherSymbol _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R Space _) (T.R Space _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R LineSeparator _) (T.R LineSeparator _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R ParagraphSeparator _) (T.R ParagraphSeparator _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R Control _) (T.R Control _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R Format _) (T.R Format _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R Surrogate _) (T.R Surrogate _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R PrivateUse _) (T.R PrivateUse _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) (T.R NotAssigned _) (T.R NotAssigned _) p =
+      T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue
+    (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse
+    
+  
+
+instance Ord (GeneralCategory)
+  where
+  
+  gcompare pcompare p =
+    T.ufun2 a99v23v99v25compare pcompare p hcompare
+    where
+    
+    hcompare fy1 fy2 p =
+      T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)
+        (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)
+        (T.uwrapForward p (hlocalFromEnum fy2 p))
+      where
+      
+      glocalFromEnum plocalFromEnum p =
+        T.ufun1 a99v23v99v25localFromEnum plocalFromEnum p hlocalFromEnum
+      
+      alocalFromEnum = a99v23v99v25localFromEnum
+      
+      hlocalFromEnum (T.R (UppercaseLetter) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 0)
+      hlocalFromEnum (T.R (LowercaseLetter) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 1)
+      hlocalFromEnum (T.R (TitlecaseLetter) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 2)
+      hlocalFromEnum (T.R (ModifierLetter) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 3)
+      hlocalFromEnum (T.R (OtherLetter) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 4)
+      hlocalFromEnum (T.R (NonSpacingMark) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 5)
+      hlocalFromEnum (T.R (SpacingCombiningMark) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 6)
+      hlocalFromEnum (T.R (EnclosingMark) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 7)
+      hlocalFromEnum (T.R (DecimalNumber) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 8)
+      hlocalFromEnum (T.R (LetterNumber) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 9)
+      hlocalFromEnum (T.R (OtherNumber) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 10)
+      hlocalFromEnum (T.R (ConnectorPunctuation) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 11)
+      hlocalFromEnum (T.R (DashPunctuation) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 12)
+      hlocalFromEnum (T.R (OpenPunctuation) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 13)
+      hlocalFromEnum (T.R (ClosePunctuation) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 14)
+      hlocalFromEnum (T.R (InitialQuote) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 15)
+      hlocalFromEnum (T.R (FinalQuote) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 16)
+      hlocalFromEnum (T.R (OtherPunctuation) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 17)
+      hlocalFromEnum (T.R (MathSymbol) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 18)
+      hlocalFromEnum (T.R (CurrencySymbol) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 19)
+      hlocalFromEnum (T.R (ModifierSymbol) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 20)
+      hlocalFromEnum (T.R (OtherSymbol) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 21)
+      hlocalFromEnum (T.R (Space) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 22)
+      hlocalFromEnum (T.R (LineSeparator) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 23)
+      hlocalFromEnum (T.R (ParagraphSeparator) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 24)
+      hlocalFromEnum (T.R (Control) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 25)
+      hlocalFromEnum (T.R (Format) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 26)
+      hlocalFromEnum (T.R (Surrogate) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 27)
+      hlocalFromEnum (T.R (PrivateUse) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 28)
+      hlocalFromEnum (T.R (NotAssigned) _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 29)
+      hlocalFromEnum _ p = T.fatal p
+      
+    
+  
+
+instance Enum (GeneralCategory)
+  where
+  
+  gfromEnum pfromEnum p =
+    T.ufun1 a99v28v99v31fromEnum pfromEnum p hfromEnum
+    where
+    
+    hfromEnum (T.R UppercaseLetter _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 0)
+    hfromEnum (T.R LowercaseLetter _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 1)
+    hfromEnum (T.R TitlecaseLetter _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 2)
+    hfromEnum (T.R ModifierLetter _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 3)
+    hfromEnum (T.R OtherLetter _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 4)
+    hfromEnum (T.R NonSpacingMark _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 5)
+    hfromEnum (T.R SpacingCombiningMark _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 6)
+    hfromEnum (T.R EnclosingMark _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 7)
+    hfromEnum (T.R DecimalNumber _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 8)
+    hfromEnum (T.R LetterNumber _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 9)
+    hfromEnum (T.R OtherNumber _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 10)
+    hfromEnum (T.R ConnectorPunctuation _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 11)
+    hfromEnum (T.R DashPunctuation _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 12)
+    hfromEnum (T.R OpenPunctuation _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 13)
+    hfromEnum (T.R ClosePunctuation _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 14)
+    hfromEnum (T.R InitialQuote _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 15)
+    hfromEnum (T.R FinalQuote _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 16)
+    hfromEnum (T.R OtherPunctuation _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 17)
+    hfromEnum (T.R MathSymbol _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 18)
+    hfromEnum (T.R CurrencySymbol _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 19)
+    hfromEnum (T.R ModifierSymbol _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 20)
+    hfromEnum (T.R OtherSymbol _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 21)
+    hfromEnum (T.R Space _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 22)
+    hfromEnum (T.R LineSeparator _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 23)
+    hfromEnum (T.R ParagraphSeparator _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 24)
+    hfromEnum (T.R Control _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 25)
+    hfromEnum (T.R Format _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 26)
+    hfromEnum (T.R Surrogate _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 27)
+    hfromEnum (T.R PrivateUse _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 28)
+    hfromEnum (T.R NotAssigned _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+        (T.conInteger T.mkNoSrcPos p 29)
+    hfromEnum _ p = T.fatal p
+    
+  
+  gtoEnum ptoEnum p =
+    T.ufun1 a99v28v99v31toEnum ptoEnum p htoEnum
+    where
+    
+    htoEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter
+      h p = y1toEnum fv99v28v99v31n p
+      
+    htoEnum fv99v28v99v31n p = y1toEnum fv99v28v99v31n p
+    
+    y1toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 1))) (h p) (y2toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p LowercaseLetter aLowercaseLetter
+      h p = y2toEnum fv99v28v99v31n p
+      
+    y1toEnum fv99v28v99v31n p = y2toEnum fv99v28v99v31n p
+    
+    y2toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 2))) (h p) (y3toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p TitlecaseLetter aTitlecaseLetter
+      h p = y3toEnum fv99v28v99v31n p
+      
+    y2toEnum fv99v28v99v31n p = y3toEnum fv99v28v99v31n p
+    
+    y3toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 3))) (h p) (y4toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p ModifierLetter aModifierLetter
+      h p = y4toEnum fv99v28v99v31n p
+      
+    y3toEnum fv99v28v99v31n p = y4toEnum fv99v28v99v31n p
+    
+    y4toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 4))) (h p) (y5toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter
+      h p = y5toEnum fv99v28v99v31n p
+      
+    y4toEnum fv99v28v99v31n p = y5toEnum fv99v28v99v31n p
+    
+    y5toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 5))) (h p) (y6toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p NonSpacingMark aNonSpacingMark
+      h p = y6toEnum fv99v28v99v31n p
+      
+    y5toEnum fv99v28v99v31n p = y6toEnum fv99v28v99v31n p
+    
+    y6toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 6))) (h p) (y7toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p SpacingCombiningMark aSpacingCombiningMark
+      h p = y7toEnum fv99v28v99v31n p
+      
+    y6toEnum fv99v28v99v31n p = y7toEnum fv99v28v99v31n p
+    
+    y7toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 7))) (h p) (y8toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p EnclosingMark aEnclosingMark
+      h p = y8toEnum fv99v28v99v31n p
+      
+    y7toEnum fv99v28v99v31n p = y8toEnum fv99v28v99v31n p
+    
+    y8toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 8))) (h p) (y9toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p DecimalNumber aDecimalNumber
+      h p = y9toEnum fv99v28v99v31n p
+      
+    y8toEnum fv99v28v99v31n p = y9toEnum fv99v28v99v31n p
+    
+    y9toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 9))) (h p) (y10toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p LetterNumber aLetterNumber
+      h p = y10toEnum fv99v28v99v31n p
+      
+    y9toEnum fv99v28v99v31n p = y10toEnum fv99v28v99v31n p
+    
+    y10toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 10))) (h p)
+        (y11toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p OtherNumber aOtherNumber
+      h p = y11toEnum fv99v28v99v31n p
+      
+    y10toEnum fv99v28v99v31n p = y11toEnum fv99v28v99v31n p
+    
+    y11toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 11))) (h p)
+        (y12toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p ConnectorPunctuation aConnectorPunctuation
+      h p = y12toEnum fv99v28v99v31n p
+      
+    y11toEnum fv99v28v99v31n p = y12toEnum fv99v28v99v31n p
+    
+    y12toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 12))) (h p)
+        (y13toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p DashPunctuation aDashPunctuation
+      h p = y13toEnum fv99v28v99v31n p
+      
+    y12toEnum fv99v28v99v31n p = y13toEnum fv99v28v99v31n p
+    
+    y13toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 13))) (h p)
+        (y14toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p OpenPunctuation aOpenPunctuation
+      h p = y14toEnum fv99v28v99v31n p
+      
+    y13toEnum fv99v28v99v31n p = y14toEnum fv99v28v99v31n p
+    
+    y14toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 14))) (h p)
+        (y15toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p ClosePunctuation aClosePunctuation
+      h p = y15toEnum fv99v28v99v31n p
+      
+    y14toEnum fv99v28v99v31n p = y15toEnum fv99v28v99v31n p
+    
+    y15toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 15))) (h p)
+        (y16toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p InitialQuote aInitialQuote
+      h p = y16toEnum fv99v28v99v31n p
+      
+    y15toEnum fv99v28v99v31n p = y16toEnum fv99v28v99v31n p
+    
+    y16toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 16))) (h p)
+        (y17toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p FinalQuote aFinalQuote
+      h p = y17toEnum fv99v28v99v31n p
+      
+    y16toEnum fv99v28v99v31n p = y17toEnum fv99v28v99v31n p
+    
+    y17toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 17))) (h p)
+        (y18toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p OtherPunctuation aOtherPunctuation
+      h p = y18toEnum fv99v28v99v31n p
+      
+    y17toEnum fv99v28v99v31n p = y18toEnum fv99v28v99v31n p
+    
+    y18toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 18))) (h p)
+        (y19toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p MathSymbol aMathSymbol
+      h p = y19toEnum fv99v28v99v31n p
+      
+    y18toEnum fv99v28v99v31n p = y19toEnum fv99v28v99v31n p
+    
+    y19toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 19))) (h p)
+        (y20toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p CurrencySymbol aCurrencySymbol
+      h p = y20toEnum fv99v28v99v31n p
+      
+    y19toEnum fv99v28v99v31n p = y20toEnum fv99v28v99v31n p
+    
+    y20toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 20))) (h p)
+        (y21toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p ModifierSymbol aModifierSymbol
+      h p = y21toEnum fv99v28v99v31n p
+      
+    y20toEnum fv99v28v99v31n p = y21toEnum fv99v28v99v31n p
+    
+    y21toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 21))) (h p)
+        (y22toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p OtherSymbol aOtherSymbol
+      h p = y22toEnum fv99v28v99v31n p
+      
+    y21toEnum fv99v28v99v31n p = y22toEnum fv99v28v99v31n p
+    
+    y22toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 22))) (h p)
+        (y23toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p Space aSpace
+      h p = y23toEnum fv99v28v99v31n p
+      
+    y22toEnum fv99v28v99v31n p = y23toEnum fv99v28v99v31n p
+    
+    y23toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 23))) (h p)
+        (y24toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p LineSeparator aLineSeparator
+      h p = y24toEnum fv99v28v99v31n p
+      
+    y23toEnum fv99v28v99v31n p = y24toEnum fv99v28v99v31n p
+    
+    y24toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 24))) (h p)
+        (y25toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p ParagraphSeparator aParagraphSeparator
+      h p = y25toEnum fv99v28v99v31n p
+      
+    y24toEnum fv99v28v99v31n p = y25toEnum fv99v28v99v31n p
+    
+    y25toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 25))) (h p)
+        (y26toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p Control aControl
+      h p = y26toEnum fv99v28v99v31n p
+      
+    y25toEnum fv99v28v99v31n p = y26toEnum fv99v28v99v31n p
+    
+    y26toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 26))) (h p)
+        (y27toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p Format aFormat
+      h p = y27toEnum fv99v28v99v31n p
+      
+    y26toEnum fv99v28v99v31n p = y27toEnum fv99v28v99v31n p
+    
+    y27toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 27))) (h p)
+        (y28toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p Surrogate aSurrogate
+      h p = y28toEnum fv99v28v99v31n p
+      
+    y27toEnum fv99v28v99v31n p = y28toEnum fv99v28v99v31n p
+    
+    y28toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 28))) (h p)
+        (y29toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p PrivateUse aPrivateUse
+      h p = y29toEnum fv99v28v99v31n p
+      
+    y28toEnum fv99v28v99v31n p = y29toEnum fv99v28v99v31n p
+    
+    y29toEnum fv99v28v99v31n p =
+      T.ucguard
+        (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n
+          (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+            (T.conInteger T.mkNoSrcPos p 29))) (h p)
+        (y30toEnum fv99v28v99v31n p)
+      where
+      
+      h p = T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned
+      h p = y30toEnum fv99v28v99v31n p
+      
+    y29toEnum fv99v28v99v31n p = y30toEnum fv99v28v99v31n p
+    
+    y30toEnum _ p =
+      T.uwrapForward p
+        (Hat.Prelude.herror
+          (T.fromLitString T.mkNoSrcPos p "toEnum: argument out of bounds") p)
+    
+  
+  genumFrom penumFrom p =
+    T.ufun1 a99v28v99v31enumFrom penumFrom p henumFrom
+    where
+    
+    henumFrom fy1 p =
+      T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fy1
+        (T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)
+    
+  
+  genumFromThen penumFromThen p =
+    T.ufun2 a99v28v99v31enumFromThen penumFromThen p henumFromThen
+    where
+    
+    henumFromThen fy1 fy2 p =
+      T.uap3 T.mkNoSrcPos p (Hat.Prelude.genumFromThenTo T.mkNoSrcPos p) fy1 fy2
+        (T.ucif p
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>= p)
+            (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy1)
+            (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy2))
+          (T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)
+          (T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter))
+    
+  
+
+instance Read (GeneralCategory)
+  where
+  
+  greadsPrec preadsPrec p =
+    T.ufun1 a99v34v99v37readsPrec preadsPrec p hreadsPrec
+    where
+    
+    hreadsPrec fy1 p =
+      T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+        (T.uwrapForward p
+          (Hat.Prelude.hreadParen
+            (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)
+            (T.uwrapForward p
+              (Hat.PreludeBasic.hthenLex
+                (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                  (T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter))
+                (T.fromLitString T.mkNoSrcPos p "UppercaseLetter") p)) p))
+        (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+          (T.uwrapForward p
+            (Hat.Prelude.hreadParen
+              (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)
+              (T.uwrapForward p
+                (Hat.PreludeBasic.hthenLex
+                  (T.uap1 T.mkNoSrcPos p
+                    (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                    (T.con0 T.mkNoSrcPos p LowercaseLetter aLowercaseLetter))
+                  (T.fromLitString T.mkNoSrcPos p "LowercaseLetter") p)) p))
+          (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+            (T.uwrapForward p
+              (Hat.Prelude.hreadParen
+                (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)
+                (T.uwrapForward p
+                  (Hat.PreludeBasic.hthenLex
+                    (T.uap1 T.mkNoSrcPos p
+                      (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                      (T.con0 T.mkNoSrcPos p TitlecaseLetter aTitlecaseLetter))
+                    (T.fromLitString T.mkNoSrcPos p "TitlecaseLetter") p)) p))
+            (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+              (T.uwrapForward p
+                (Hat.Prelude.hreadParen
+                  (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)
+                  (T.uwrapForward p
+                    (Hat.PreludeBasic.hthenLex
+                      (T.uap1 T.mkNoSrcPos p
+                        (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                        (T.con0 T.mkNoSrcPos p ModifierLetter aModifierLetter))
+                      (T.fromLitString T.mkNoSrcPos p "ModifierLetter") p)) p))
+              (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                (T.uwrapForward p
+                  (Hat.Prelude.hreadParen
+                    (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)
+                    (T.uwrapForward p
+                      (Hat.PreludeBasic.hthenLex
+                        (T.uap1 T.mkNoSrcPos p
+                          (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                          (T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter))
+                        (T.fromLitString T.mkNoSrcPos p "OtherLetter") p)) p))
+                (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                  (T.uwrapForward p
+                    (Hat.Prelude.hreadParen
+                      (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                        Hat.Prelude.aFalse)
+                      (T.uwrapForward p
+                        (Hat.PreludeBasic.hthenLex
+                          (T.uap1 T.mkNoSrcPos p
+                            (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                            (T.con0 T.mkNoSrcPos p NonSpacingMark
+                              aNonSpacingMark))
+                          (T.fromLitString T.mkNoSrcPos p "NonSpacingMark") p))
+                      p))
+                  (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                    (T.uwrapForward p
+                      (Hat.Prelude.hreadParen
+                        (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                          Hat.Prelude.aFalse)
+                        (T.uwrapForward p
+                          (Hat.PreludeBasic.hthenLex
+                            (T.uap1 T.mkNoSrcPos p
+                              (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                              (T.con0 T.mkNoSrcPos p SpacingCombiningMark
+                                aSpacingCombiningMark))
+                            (T.fromLitString T.mkNoSrcPos p
+                              "SpacingCombiningMark") p)) p))
+                    (T.uap2 T.mkNoSrcPos p
+                      (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                      (T.uwrapForward p
+                        (Hat.Prelude.hreadParen
+                          (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                            Hat.Prelude.aFalse)
+                          (T.uwrapForward p
+                            (Hat.PreludeBasic.hthenLex
+                              (T.uap1 T.mkNoSrcPos p
+                                (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                                (T.con0 T.mkNoSrcPos p EnclosingMark
+                                  aEnclosingMark))
+                              (T.fromLitString T.mkNoSrcPos p "EnclosingMark")
+                              p)) p))
+                      (T.uap2 T.mkNoSrcPos p
+                        (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                        (T.uwrapForward p
+                          (Hat.Prelude.hreadParen
+                            (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                              Hat.Prelude.aFalse)
+                            (T.uwrapForward p
+                              (Hat.PreludeBasic.hthenLex
+                                (T.uap1 T.mkNoSrcPos p
+                                  (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                                  (T.con0 T.mkNoSrcPos p DecimalNumber
+                                    aDecimalNumber))
+                                (T.fromLitString T.mkNoSrcPos p "DecimalNumber")
+                                p)) p))
+                        (T.uap2 T.mkNoSrcPos p
+                          (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                          (T.uwrapForward p
+                            (Hat.Prelude.hreadParen
+                              (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                                Hat.Prelude.aFalse)
+                              (T.uwrapForward p
+                                (Hat.PreludeBasic.hthenLex
+                                  (T.uap1 T.mkNoSrcPos p
+                                    (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                                    (T.con0 T.mkNoSrcPos p LetterNumber
+                                      aLetterNumber))
+                                  (T.fromLitString T.mkNoSrcPos p
+                                    "LetterNumber") p)) p))
+                          (T.uap2 T.mkNoSrcPos p
+                            (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                            (T.uwrapForward p
+                              (Hat.Prelude.hreadParen
+                                (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                                  Hat.Prelude.aFalse)
+                                (T.uwrapForward p
+                                  (Hat.PreludeBasic.hthenLex
+                                    (T.uap1 T.mkNoSrcPos p
+                                      (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                                      (T.con0 T.mkNoSrcPos p OtherNumber
+                                        aOtherNumber))
+                                    (T.fromLitString T.mkNoSrcPos p
+                                      "OtherNumber") p)) p))
+                            (T.uap2 T.mkNoSrcPos p
+                              (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                              (T.uwrapForward p
+                                (Hat.Prelude.hreadParen
+                                  (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                                    Hat.Prelude.aFalse)
+                                  (T.uwrapForward p
+                                    (Hat.PreludeBasic.hthenLex
+                                      (T.uap1 T.mkNoSrcPos p
+                                        (Hat.PreludeBasic.gyield T.mkNoSrcPos p)
+                                        (T.con0 T.mkNoSrcPos p
+                                          ConnectorPunctuation
+                                          aConnectorPunctuation))
+                                      (T.fromLitString T.mkNoSrcPos p
+                                        "ConnectorPunctuation") p)) p))
+                              (T.uap2 T.mkNoSrcPos p
+                                (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                                (T.uwrapForward p
+                                  (Hat.Prelude.hreadParen
+                                    (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                                      Hat.Prelude.aFalse)
+                                    (T.uwrapForward p
+                                      (Hat.PreludeBasic.hthenLex
+                                        (T.uap1 T.mkNoSrcPos p
+                                          (Hat.PreludeBasic.gyield T.mkNoSrcPos
+                                            p)
+                                          (T.con0 T.mkNoSrcPos p DashPunctuation
+                                            aDashPunctuation))
+                                        (T.fromLitString T.mkNoSrcPos p
+                                          "DashPunctuation") p)) p))
+                                (T.uap2 T.mkNoSrcPos p
+                                  (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                                  (T.uwrapForward p
+                                    (Hat.Prelude.hreadParen
+                                      (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                                        Hat.Prelude.aFalse)
+                                      (T.uwrapForward p
+                                        (Hat.PreludeBasic.hthenLex
+                                          (T.uap1 T.mkNoSrcPos p
+                                            (Hat.PreludeBasic.gyield
+                                              T.mkNoSrcPos p)
+                                            (T.con0 T.mkNoSrcPos p
+                                              OpenPunctuation aOpenPunctuation))
+                                          (T.fromLitString T.mkNoSrcPos p
+                                            "OpenPunctuation") p)) p))
+                                  (T.uap2 T.mkNoSrcPos p
+                                    (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                                    (T.uwrapForward p
+                                      (Hat.Prelude.hreadParen
+                                        (T.con0 T.mkNoSrcPos p Hat.Prelude.False
+                                          Hat.Prelude.aFalse)
+                                        (T.uwrapForward p
+                                          (Hat.PreludeBasic.hthenLex
+                                            (T.uap1 T.mkNoSrcPos p
+                                              (Hat.PreludeBasic.gyield
+                                                T.mkNoSrcPos p)
+                                              (T.con0 T.mkNoSrcPos p
+                                                ClosePunctuation
+                                                aClosePunctuation))
+                                            (T.fromLitString T.mkNoSrcPos p
+                                              "ClosePunctuation") p)) p))
+                                    (T.uap2 T.mkNoSrcPos p
+                                      (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                                      (T.uwrapForward p
+                                        (Hat.Prelude.hreadParen
+                                          (T.con0 T.mkNoSrcPos p
+                                            Hat.Prelude.False
+                                            Hat.Prelude.aFalse)
+                                          (T.uwrapForward p
+                                            (Hat.PreludeBasic.hthenLex
+                                              (T.uap1 T.mkNoSrcPos p
+                                                (Hat.PreludeBasic.gyield
+                                                  T.mkNoSrcPos p)
+                                                (T.con0 T.mkNoSrcPos p
+                                                  InitialQuote aInitialQuote))
+                                              (T.fromLitString T.mkNoSrcPos p
+                                                "InitialQuote") p)) p))
+                                      (T.uap2 T.mkNoSrcPos p
+                                        (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                                        (T.uwrapForward p
+                                          (Hat.Prelude.hreadParen
+                                            (T.con0 T.mkNoSrcPos p
+                                              Hat.Prelude.False
+                                              Hat.Prelude.aFalse)
+                                            (T.uwrapForward p
+                                              (Hat.PreludeBasic.hthenLex
+                                                (T.uap1 T.mkNoSrcPos p
+                                                  (Hat.PreludeBasic.gyield
+                                                    T.mkNoSrcPos p)
+                                                  (T.con0 T.mkNoSrcPos p
+                                                    FinalQuote aFinalQuote))
+                                                (T.fromLitString T.mkNoSrcPos p
+                                                  "FinalQuote") p)) p))
+                                        (T.uap2 T.mkNoSrcPos p
+                                          (Hat.PreludeBasic.galt T.mkNoSrcPos p)
+                                          (T.uwrapForward p
+                                            (Hat.Prelude.hreadParen
+                                              (T.con0 T.mkNoSrcPos p
+                                                Hat.Prelude.False
+                                                Hat.Prelude.aFalse)
+                                              (T.uwrapForward p
+                                                (Hat.PreludeBasic.hthenLex
+                                                  (T.uap1 T.mkNoSrcPos p
+                                                    (Hat.PreludeBasic.gyield
+                                                      T.mkNoSrcPos p)
+                                                    (T.con0 T.mkNoSrcPos p
+                                                      OtherPunctuation
+                                                      aOtherPunctuation))
+                                                  (T.fromLitString T.mkNoSrcPos
+                                                    p "OtherPunctuation") p))
+                                              p))
+                                          (T.uap2 T.mkNoSrcPos p
+                                            (Hat.PreludeBasic.galt T.mkNoSrcPos
+                                              p)
+                                            (T.uwrapForward p
+                                              (Hat.Prelude.hreadParen
+                                                (T.con0 T.mkNoSrcPos p
+                                                  Hat.Prelude.False
+                                                  Hat.Prelude.aFalse)
+                                                (T.uwrapForward p
+                                                  (Hat.PreludeBasic.hthenLex
+                                                    (T.uap1 T.mkNoSrcPos p
+                                                      (Hat.PreludeBasic.gyield
+                                                        T.mkNoSrcPos p)
+                                                      (T.con0 T.mkNoSrcPos p
+                                                        MathSymbol aMathSymbol))
+                                                    (T.fromLitString
+                                                      T.mkNoSrcPos p
+                                                      "MathSymbol") p)) p))
+                                            (T.uap2 T.mkNoSrcPos p
+                                              (Hat.PreludeBasic.galt
+                                                T.mkNoSrcPos p)
+                                              (T.uwrapForward p
+                                                (Hat.Prelude.hreadParen
+                                                  (T.con0 T.mkNoSrcPos p
+                                                    Hat.Prelude.False
+                                                    Hat.Prelude.aFalse)
+                                                  (T.uwrapForward p
+                                                    (Hat.PreludeBasic.hthenLex
+                                                      (T.uap1 T.mkNoSrcPos p
+                                                        (Hat.PreludeBasic.gyield
+                                                          T.mkNoSrcPos p)
+                                                        (T.con0 T.mkNoSrcPos p
+                                                          CurrencySymbol
+                                                          aCurrencySymbol))
+                                                      (T.fromLitString
+                                                        T.mkNoSrcPos p
+                                                        "CurrencySymbol") p))
+                                                  p))
+                                              (T.uap2 T.mkNoSrcPos p
+                                                (Hat.PreludeBasic.galt
+                                                  T.mkNoSrcPos p)
+                                                (T.uwrapForward p
+                                                  (Hat.Prelude.hreadParen
+                                                    (T.con0 T.mkNoSrcPos p
+                                                      Hat.Prelude.False
+                                                      Hat.Prelude.aFalse)
+                                                    (T.uwrapForward p
+                                                      (Hat.PreludeBasic.hthenLex
+                                                        (T.uap1 T.mkNoSrcPos p
+                                                          (Hat.PreludeBasic.gyield
+                                                            T.mkNoSrcPos p)
+                                                          (T.con0 T.mkNoSrcPos p
+                                                            ModifierSymbol
+                                                            aModifierSymbol))
+                                                        (T.fromLitString
+                                                          T.mkNoSrcPos p
+                                                          "ModifierSymbol") p))
+                                                    p))
+                                                (T.uap2 T.mkNoSrcPos p
+                                                  (Hat.PreludeBasic.galt
+                                                    T.mkNoSrcPos p)
+                                                  (T.uwrapForward p
+                                                    (Hat.Prelude.hreadParen
+                                                      (T.con0 T.mkNoSrcPos p
+                                                        Hat.Prelude.False
+                                                        Hat.Prelude.aFalse)
+                                                      (T.uwrapForward p
+                                                        (Hat.PreludeBasic.hthenLex
+                                                          (T.uap1 T.mkNoSrcPos p
+                                                            (Hat.PreludeBasic.gyield
+                                                              T.mkNoSrcPos p)
+                                                            (T.con0 T.mkNoSrcPos
+                                                              p OtherSymbol
+                                                              aOtherSymbol))
+                                                          (T.fromLitString
+                                                            T.mkNoSrcPos p
+                                                            "OtherSymbol") p))
+                                                      p))
+                                                  (T.uap2 T.mkNoSrcPos p
+                                                    (Hat.PreludeBasic.galt
+                                                      T.mkNoSrcPos p)
+                                                    (T.uwrapForward p
+                                                      (Hat.Prelude.hreadParen
+                                                        (T.con0 T.mkNoSrcPos p
+                                                          Hat.Prelude.False
+                                                          Hat.Prelude.aFalse)
+                                                        (T.uwrapForward p
+                                                          (Hat.PreludeBasic.hthenLex
+                                                            (T.uap1 T.mkNoSrcPos
+                                                              p
+                                                              (Hat.PreludeBasic.gyield
+                                                                T.mkNoSrcPos p)
+                                                              (T.con0
+                                                                T.mkNoSrcPos p
+                                                                Space aSpace))
+                                                            (T.fromLitString
+                                                              T.mkNoSrcPos p
+                                                              "Space") p)) p))
+                                                    (T.uap2 T.mkNoSrcPos p
+                                                      (Hat.PreludeBasic.galt
+                                                        T.mkNoSrcPos p)
+                                                      (T.uwrapForward p
+                                                        (Hat.Prelude.hreadParen
+                                                          (T.con0 T.mkNoSrcPos p
+                                                            Hat.Prelude.False
+                                                            Hat.Prelude.aFalse)
+                                                          (T.uwrapForward p
+                                                            (Hat.PreludeBasic.hthenLex
+                                                              (T.uap1
+                                                                T.mkNoSrcPos p
+                                                                (Hat.PreludeBasic.gyield
+                                                                  T.mkNoSrcPos
+                                                                  p)
+                                                                (T.con0
+                                                                  T.mkNoSrcPos p
+                                                                  LineSeparator
+                                                                  aLineSeparator))
+                                                              (T.fromLitString
+                                                                T.mkNoSrcPos p
+                                                                "LineSeparator")
+                                                              p)) p))
+                                                      (T.uap2 T.mkNoSrcPos p
+                                                        (Hat.PreludeBasic.galt
+                                                          T.mkNoSrcPos p)
+                                                        (T.uwrapForward p
+                                                          (Hat.Prelude.hreadParen
+                                                            (T.con0 T.mkNoSrcPos
+                                                              p
+                                                              Hat.Prelude.False
+                                                              Hat.Prelude.aFalse)
+                                                            (T.uwrapForward p
+                                                              (Hat.PreludeBasic.hthenLex
+                                                                (T.uap1
+                                                                  T.mkNoSrcPos p
+                                                                  (Hat.PreludeBasic.gyield
+                                                                    T.mkNoSrcPos
+                                                                    p)
+                                                                  (T.con0
+                                                                    T.mkNoSrcPos
+                                                                    p
+                                                                    ParagraphSeparator
+                                                                    aParagraphSeparator))
+                                                                (T.fromLitString
+                                                                  T.mkNoSrcPos p
+                                                                  "ParagraphSeparator")
+                                                                p)) p))
+                                                        (T.uap2 T.mkNoSrcPos p
+                                                          (Hat.PreludeBasic.galt
+                                                            T.mkNoSrcPos p)
+                                                          (T.uwrapForward p
+                                                            (Hat.Prelude.hreadParen
+                                                              (T.con0
+                                                                T.mkNoSrcPos p
+                                                                Hat.Prelude.False
+                                                                Hat.Prelude.aFalse)
+                                                              (T.uwrapForward p
+                                                                (Hat.PreludeBasic.hthenLex
+                                                                  (T.uap1
+                                                                    T.mkNoSrcPos
+                                                                    p
+                                                                    (Hat.PreludeBasic.gyield
+                                                                      T.mkNoSrcPos
+                                                                      p)
+                                                                    (T.con0
+                                                                      T.mkNoSrcPos
+                                                                      p Control
+                                                                      aControl))
+                                                                  (T.fromLitString
+                                                                    T.mkNoSrcPos
+                                                                    p "Control")
+                                                                  p)) p))
+                                                          (T.uap2 T.mkNoSrcPos p
+                                                            (Hat.PreludeBasic.galt
+                                                              T.mkNoSrcPos p)
+                                                            (T.uwrapForward p
+                                                              (Hat.Prelude.hreadParen
+                                                                (T.con0
+                                                                  T.mkNoSrcPos p
+                                                                  Hat.Prelude.False
+                                                                  Hat.Prelude.aFalse)
+                                                                (T.uwrapForward
+                                                                  p
+                                                                  (Hat.PreludeBasic.hthenLex
+                                                                    (T.uap1
+                                                                      T.mkNoSrcPos
+                                                                      p
+                                                                      (Hat.PreludeBasic.gyield
+                                                                        T.mkNoSrcPos
+                                                                        p)
+                                                                      (T.con0
+                                                                        T.mkNoSrcPos
+                                                                        p Format
+                                                                        aFormat))
+                                                                    (T.fromLitString
+                                                                      T.mkNoSrcPos
+                                                                      p
+                                                                      "Format")
+                                                                    p)) p))
+                                                            (T.uap2 T.mkNoSrcPos
+                                                              p
+                                                              (Hat.PreludeBasic.galt
+                                                                T.mkNoSrcPos p)
+                                                              (T.uwrapForward p
+                                                                (Hat.Prelude.hreadParen
+                                                                  (T.con0
+                                                                    T.mkNoSrcPos
+                                                                    p
+                                                                    Hat.Prelude.False
+                                                                    Hat.Prelude.aFalse)
+                                                                  (T.uwrapForward
+                                                                    p
+                                                                    (Hat.PreludeBasic.hthenLex
+                                                                      (T.uap1
+                                                                        T.mkNoSrcPos
+                                                                        p
+                                                                        (Hat.PreludeBasic.gyield
+                                                                          T.mkNoSrcPos
+                                                                          p)
+                                                                        (T.con0
+                                                                          T.mkNoSrcPos
+                                                                          p
+                                                                          Surrogate
+                                                                          aSurrogate))
+                                                                      (T.fromLitString
+                                                                        T.mkNoSrcPos
+                                                                        p
+                                                                        "Surrogate")
+                                                                      p)) p))
+                                                              (T.uap2
+                                                                T.mkNoSrcPos p
+                                                                (Hat.PreludeBasic.galt
+                                                                  T.mkNoSrcPos
+                                                                  p)
+                                                                (T.uwrapForward
+                                                                  p
+                                                                  (Hat.Prelude.hreadParen
+                                                                    (T.con0
+                                                                      T.mkNoSrcPos
+                                                                      p
+                                                                      Hat.Prelude.False
+                                                                      Hat.Prelude.aFalse)
+                                                                    (T.uwrapForward
+                                                                      p
+                                                                      (Hat.PreludeBasic.hthenLex
+                                                                        (T.uap1
+                                                                          T.mkNoSrcPos
+                                                                          p
+                                                                          (Hat.PreludeBasic.gyield
+                                                                            T.mkNoSrcPos
+                                                                            p)
+                                                                          (T.con0
+                                                                            T.mkNoSrcPos
+                                                                            p
+                                                                            PrivateUse
+                                                                            aPrivateUse))
+                                                                        (T.fromLitString
+                                                                          T.mkNoSrcPos
+                                                                          p
+                                                                          "PrivateUse")
+                                                                        p)) p))
+                                                                (T.uwrapForward
+                                                                  p
+                                                                  (Hat.Prelude.hreadParen
+                                                                    (T.con0
+                                                                      T.mkNoSrcPos
+                                                                      p
+                                                                      Hat.Prelude.False
+                                                                      Hat.Prelude.aFalse)
+                                                                    (T.uwrapForward
+                                                                      p
+                                                                      (Hat.PreludeBasic.hthenLex
+                                                                        (T.uap1
+                                                                          T.mkNoSrcPos
+                                                                          p
+                                                                          (Hat.PreludeBasic.gyield
+                                                                            T.mkNoSrcPos
+                                                                            p)
+                                                                          (T.con0
+                                                                            T.mkNoSrcPos
+                                                                            p
+                                                                            NotAssigned
+                                                                            aNotAssigned))
+                                                                        (T.fromLitString
+                                                                          T.mkNoSrcPos
+                                                                          p
+                                                                          "NotAssigned")
+                                                                        p))
+                                                                    p))))))))))))))))))))))))))))))
+    
+  
+
+instance Show (GeneralCategory)
+  where
+  
+  gshowsPrec pshowsPrec p =
+    T.ufun2 a99v40v99v43showsPrec pshowsPrec p hshowsPrec
+    where
+    
+    hshowsPrec fy1 (T.R (UppercaseLetter) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "UppercaseLetter")
+    hshowsPrec fy1 (T.R (LowercaseLetter) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "LowercaseLetter")
+    hshowsPrec fy1 (T.R (TitlecaseLetter) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "TitlecaseLetter")
+    hshowsPrec fy1 (T.R (ModifierLetter) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "ModifierLetter")
+    hshowsPrec fy1 (T.R (OtherLetter) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "OtherLetter")
+    hshowsPrec fy1 (T.R (NonSpacingMark) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "NonSpacingMark")
+    hshowsPrec fy1 (T.R (SpacingCombiningMark) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "SpacingCombiningMark")
+    hshowsPrec fy1 (T.R (EnclosingMark) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "EnclosingMark")
+    hshowsPrec fy1 (T.R (DecimalNumber) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "DecimalNumber")
+    hshowsPrec fy1 (T.R (LetterNumber) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "LetterNumber")
+    hshowsPrec fy1 (T.R (OtherNumber) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "OtherNumber")
+    hshowsPrec fy1 (T.R (ConnectorPunctuation) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "ConnectorPunctuation")
+    hshowsPrec fy1 (T.R (DashPunctuation) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "DashPunctuation")
+    hshowsPrec fy1 (T.R (OpenPunctuation) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "OpenPunctuation")
+    hshowsPrec fy1 (T.R (ClosePunctuation) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "ClosePunctuation")
+    hshowsPrec fy1 (T.R (InitialQuote) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "InitialQuote")
+    hshowsPrec fy1 (T.R (FinalQuote) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "FinalQuote")
+    hshowsPrec fy1 (T.R (OtherPunctuation) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "OtherPunctuation")
+    hshowsPrec fy1 (T.R (MathSymbol) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "MathSymbol")
+    hshowsPrec fy1 (T.R (CurrencySymbol) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "CurrencySymbol")
+    hshowsPrec fy1 (T.R (ModifierSymbol) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "ModifierSymbol")
+    hshowsPrec fy1 (T.R (OtherSymbol) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "OtherSymbol")
+    hshowsPrec fy1 (T.R (Space) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "Space")
+    hshowsPrec fy1 (T.R (LineSeparator) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "LineSeparator")
+    hshowsPrec fy1 (T.R (ParagraphSeparator) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "ParagraphSeparator")
+    hshowsPrec fy1 (T.R (Control) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "Control")
+    hshowsPrec fy1 (T.R (Format) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "Format")
+    hshowsPrec fy1 (T.R (Surrogate) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "Surrogate")
+    hshowsPrec fy1 (T.R (PrivateUse) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "PrivateUse")
+    hshowsPrec fy1 (T.R (NotAssigned) _) p =
+      T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)
+        (T.fromLitString T.mkNoSrcPos p "NotAssigned")
+    hshowsPrec _ _ p = T.fatal p
+    
+  
+
+instance Bounded (GeneralCategory)
+  where
+  
+  gminBound pminBound p = T.uconstUse pminBound p sminBound
+  
+  sminBound =
+    T.uconstDef T.mkRoot a99v46v99v52minBound
+      (\ p -> T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter)
+  
+  gmaxBound pmaxBound p = T.uconstUse pmaxBound p smaxBound
+  
+  smaxBound =
+    T.uconstDef T.mkRoot a99v46v99v52maxBound
+      (\ p -> T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)
+  
+
+instance Ix (GeneralCategory)
+  where
+  
+  grange prange p =
+    T.ufun1 a99v55v99v56range prange p hrange
+    where
+    
+    hrange (T.R (T.Tuple2 fy1 fy2) _) p =
+      T.uwrapForward p
+        (Hat.PreludeBasic.hmap (glocalToEnum T.mkNoSrcPos p)
+          (T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p)
+            (T.uwrapForward p (hlocalFromEnum fy1 p))
+            (T.uwrapForward p (hlocalFromEnum fy2 p))) p)
+      where
+      
+      glocalToEnum ::
+        T.RefSrcPos -> T.RefExp -> T.R (T.Fun Hat.Prelude.Int GeneralCategory)
+      
+      hlocalToEnum :: (T.R Hat.Prelude.Int) -> T.RefExp -> T.R GeneralCategory
+      
+      glocalToEnum plocalToEnum p =
+        T.ufun1 a99v55v99v56localToEnum plocalToEnum p hlocalToEnum
+      
+      alocalToEnum = a99v55v99v56localToEnum
+      
+      hlocalToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 0))) (h p)
+          (y1localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter
+        h p = y1localToEnum fv99v55v99v56n p
+        
+      hlocalToEnum fv99v55v99v56n p = y1localToEnum fv99v55v99v56n p
+      
+      y1localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 1))) (h p)
+          (y2localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p LowercaseLetter aLowercaseLetter
+        h p = y2localToEnum fv99v55v99v56n p
+        
+      y1localToEnum fv99v55v99v56n p = y2localToEnum fv99v55v99v56n p
+      
+      y2localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 2))) (h p)
+          (y3localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p TitlecaseLetter aTitlecaseLetter
+        h p = y3localToEnum fv99v55v99v56n p
+        
+      y2localToEnum fv99v55v99v56n p = y3localToEnum fv99v55v99v56n p
+      
+      y3localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 3))) (h p)
+          (y4localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p ModifierLetter aModifierLetter
+        h p = y4localToEnum fv99v55v99v56n p
+        
+      y3localToEnum fv99v55v99v56n p = y4localToEnum fv99v55v99v56n p
+      
+      y4localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 4))) (h p)
+          (y5localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter
+        h p = y5localToEnum fv99v55v99v56n p
+        
+      y4localToEnum fv99v55v99v56n p = y5localToEnum fv99v55v99v56n p
+      
+      y5localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 5))) (h p)
+          (y6localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p NonSpacingMark aNonSpacingMark
+        h p = y6localToEnum fv99v55v99v56n p
+        
+      y5localToEnum fv99v55v99v56n p = y6localToEnum fv99v55v99v56n p
+      
+      y6localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 6))) (h p)
+          (y7localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p SpacingCombiningMark aSpacingCombiningMark
+        h p = y7localToEnum fv99v55v99v56n p
+        
+      y6localToEnum fv99v55v99v56n p = y7localToEnum fv99v55v99v56n p
+      
+      y7localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 7))) (h p)
+          (y8localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p EnclosingMark aEnclosingMark
+        h p = y8localToEnum fv99v55v99v56n p
+        
+      y7localToEnum fv99v55v99v56n p = y8localToEnum fv99v55v99v56n p
+      
+      y8localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 8))) (h p)
+          (y9localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p DecimalNumber aDecimalNumber
+        h p = y9localToEnum fv99v55v99v56n p
+        
+      y8localToEnum fv99v55v99v56n p = y9localToEnum fv99v55v99v56n p
+      
+      y9localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 9))) (h p)
+          (y10localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p LetterNumber aLetterNumber
+        h p = y10localToEnum fv99v55v99v56n p
+        
+      y9localToEnum fv99v55v99v56n p = y10localToEnum fv99v55v99v56n p
+      
+      y10localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 10))) (h p)
+          (y11localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p OtherNumber aOtherNumber
+        h p = y11localToEnum fv99v55v99v56n p
+        
+      y10localToEnum fv99v55v99v56n p = y11localToEnum fv99v55v99v56n p
+      
+      y11localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 11))) (h p)
+          (y12localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p ConnectorPunctuation aConnectorPunctuation
+        h p = y12localToEnum fv99v55v99v56n p
+        
+      y11localToEnum fv99v55v99v56n p = y12localToEnum fv99v55v99v56n p
+      
+      y12localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 12))) (h p)
+          (y13localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p DashPunctuation aDashPunctuation
+        h p = y13localToEnum fv99v55v99v56n p
+        
+      y12localToEnum fv99v55v99v56n p = y13localToEnum fv99v55v99v56n p
+      
+      y13localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 13))) (h p)
+          (y14localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p OpenPunctuation aOpenPunctuation
+        h p = y14localToEnum fv99v55v99v56n p
+        
+      y13localToEnum fv99v55v99v56n p = y14localToEnum fv99v55v99v56n p
+      
+      y14localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 14))) (h p)
+          (y15localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p ClosePunctuation aClosePunctuation
+        h p = y15localToEnum fv99v55v99v56n p
+        
+      y14localToEnum fv99v55v99v56n p = y15localToEnum fv99v55v99v56n p
+      
+      y15localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 15))) (h p)
+          (y16localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p InitialQuote aInitialQuote
+        h p = y16localToEnum fv99v55v99v56n p
+        
+      y15localToEnum fv99v55v99v56n p = y16localToEnum fv99v55v99v56n p
+      
+      y16localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 16))) (h p)
+          (y17localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p FinalQuote aFinalQuote
+        h p = y17localToEnum fv99v55v99v56n p
+        
+      y16localToEnum fv99v55v99v56n p = y17localToEnum fv99v55v99v56n p
+      
+      y17localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 17))) (h p)
+          (y18localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p OtherPunctuation aOtherPunctuation
+        h p = y18localToEnum fv99v55v99v56n p
+        
+      y17localToEnum fv99v55v99v56n p = y18localToEnum fv99v55v99v56n p
+      
+      y18localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 18))) (h p)
+          (y19localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p MathSymbol aMathSymbol
+        h p = y19localToEnum fv99v55v99v56n p
+        
+      y18localToEnum fv99v55v99v56n p = y19localToEnum fv99v55v99v56n p
+      
+      y19localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 19))) (h p)
+          (y20localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p CurrencySymbol aCurrencySymbol
+        h p = y20localToEnum fv99v55v99v56n p
+        
+      y19localToEnum fv99v55v99v56n p = y20localToEnum fv99v55v99v56n p
+      
+      y20localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 20))) (h p)
+          (y21localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p ModifierSymbol aModifierSymbol
+        h p = y21localToEnum fv99v55v99v56n p
+        
+      y20localToEnum fv99v55v99v56n p = y21localToEnum fv99v55v99v56n p
+      
+      y21localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 21))) (h p)
+          (y22localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p OtherSymbol aOtherSymbol
+        h p = y22localToEnum fv99v55v99v56n p
+        
+      y21localToEnum fv99v55v99v56n p = y22localToEnum fv99v55v99v56n p
+      
+      y22localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 22))) (h p)
+          (y23localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p Space aSpace
+        h p = y23localToEnum fv99v55v99v56n p
+        
+      y22localToEnum fv99v55v99v56n p = y23localToEnum fv99v55v99v56n p
+      
+      y23localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 23))) (h p)
+          (y24localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p LineSeparator aLineSeparator
+        h p = y24localToEnum fv99v55v99v56n p
+        
+      y23localToEnum fv99v55v99v56n p = y24localToEnum fv99v55v99v56n p
+      
+      y24localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 24))) (h p)
+          (y25localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p ParagraphSeparator aParagraphSeparator
+        h p = y25localToEnum fv99v55v99v56n p
+        
+      y24localToEnum fv99v55v99v56n p = y25localToEnum fv99v55v99v56n p
+      
+      y25localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 25))) (h p)
+          (y26localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p Control aControl
+        h p = y26localToEnum fv99v55v99v56n p
+        
+      y25localToEnum fv99v55v99v56n p = y26localToEnum fv99v55v99v56n p
+      
+      y26localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 26))) (h p)
+          (y27localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p Format aFormat
+        h p = y27localToEnum fv99v55v99v56n p
+        
+      y26localToEnum fv99v55v99v56n p = y27localToEnum fv99v55v99v56n p
+      
+      y27localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 27))) (h p)
+          (y28localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p Surrogate aSurrogate
+        h p = y28localToEnum fv99v55v99v56n p
+        
+      y27localToEnum fv99v55v99v56n p = y28localToEnum fv99v55v99v56n p
+      
+      y28localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 28))) (h p)
+          (y29localToEnum fv99v55v99v56n p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p PrivateUse aPrivateUse
+        h p = y29localToEnum fv99v55v99v56n p
+        
+      y28localToEnum fv99v55v99v56n p = y29localToEnum fv99v55v99v56n p
+      
+      y29localToEnum fv99v55v99v56n p =
+        T.ucguard
+          (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n
+            (T.uap1 T.mkNoSrcPos p
+              (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+              (T.conInteger T.mkNoSrcPos p 29))) (h p) (T.fatal p)
+        where
+        
+        h p = T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned
+        h p = T.fatal p
+        
+      y29localToEnum _ p = T.fatal p
+      
+      glocalFromEnum ::
+        T.RefSrcPos -> T.RefExp -> T.R (T.Fun GeneralCategory Hat.Prelude.Int)
+      
+      hlocalFromEnum :: (T.R GeneralCategory) -> T.RefExp -> T.R Hat.Prelude.Int
+      
+      glocalFromEnum plocalFromEnum p =
+        T.ufun1 a99v55v99v56localFromEnum plocalFromEnum p hlocalFromEnum
+      
+      alocalFromEnum = a99v55v99v56localFromEnum
+      
+      hlocalFromEnum (T.R UppercaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 0)
+      hlocalFromEnum (T.R LowercaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 1)
+      hlocalFromEnum (T.R TitlecaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 2)
+      hlocalFromEnum (T.R ModifierLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 3)
+      hlocalFromEnum (T.R OtherLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 4)
+      hlocalFromEnum (T.R NonSpacingMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 5)
+      hlocalFromEnum (T.R SpacingCombiningMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 6)
+      hlocalFromEnum (T.R EnclosingMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 7)
+      hlocalFromEnum (T.R DecimalNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 8)
+      hlocalFromEnum (T.R LetterNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 9)
+      hlocalFromEnum (T.R OtherNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 10)
+      hlocalFromEnum (T.R ConnectorPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 11)
+      hlocalFromEnum (T.R DashPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 12)
+      hlocalFromEnum (T.R OpenPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 13)
+      hlocalFromEnum (T.R ClosePunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 14)
+      hlocalFromEnum (T.R InitialQuote _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 15)
+      hlocalFromEnum (T.R FinalQuote _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 16)
+      hlocalFromEnum (T.R OtherPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 17)
+      hlocalFromEnum (T.R MathSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 18)
+      hlocalFromEnum (T.R CurrencySymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 19)
+      hlocalFromEnum (T.R ModifierSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 20)
+      hlocalFromEnum (T.R OtherSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 21)
+      hlocalFromEnum (T.R Space _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 22)
+      hlocalFromEnum (T.R LineSeparator _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 23)
+      hlocalFromEnum (T.R ParagraphSeparator _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 24)
+      hlocalFromEnum (T.R Control _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 25)
+      hlocalFromEnum (T.R Format _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 26)
+      hlocalFromEnum (T.R Surrogate _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 27)
+      hlocalFromEnum (T.R PrivateUse _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 28)
+      hlocalFromEnum (T.R NotAssigned _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 29)
+      hlocalFromEnum _ p = T.fatal p
+      
+    hrange _ p = T.fatal p
+    
+  
+  gindex pindex p =
+    T.ufun2 a99v55v99v56index pindex p hindex
+    where
+    
+    hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p =
+      T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!- p)
+        (T.uwrapForward p (hlocalFromEnum fy3 p))
+        (T.uwrapForward p (hlocalFromEnum fy1 p))
+      where
+      
+      glocalFromEnum ::
+        T.RefSrcPos -> T.RefExp -> T.R (T.Fun GeneralCategory Hat.Prelude.Int)
+      
+      hlocalFromEnum :: (T.R GeneralCategory) -> T.RefExp -> T.R Hat.Prelude.Int
+      
+      glocalFromEnum plocalFromEnum p =
+        T.ufun1 a99v55v99v56localFromEnum plocalFromEnum p hlocalFromEnum
+      
+      alocalFromEnum = a99v55v99v56localFromEnum
+      
+      hlocalFromEnum (T.R UppercaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 0)
+      hlocalFromEnum (T.R LowercaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 1)
+      hlocalFromEnum (T.R TitlecaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 2)
+      hlocalFromEnum (T.R ModifierLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 3)
+      hlocalFromEnum (T.R OtherLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 4)
+      hlocalFromEnum (T.R NonSpacingMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 5)
+      hlocalFromEnum (T.R SpacingCombiningMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 6)
+      hlocalFromEnum (T.R EnclosingMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 7)
+      hlocalFromEnum (T.R DecimalNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 8)
+      hlocalFromEnum (T.R LetterNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 9)
+      hlocalFromEnum (T.R OtherNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 10)
+      hlocalFromEnum (T.R ConnectorPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 11)
+      hlocalFromEnum (T.R DashPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 12)
+      hlocalFromEnum (T.R OpenPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 13)
+      hlocalFromEnum (T.R ClosePunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 14)
+      hlocalFromEnum (T.R InitialQuote _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 15)
+      hlocalFromEnum (T.R FinalQuote _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 16)
+      hlocalFromEnum (T.R OtherPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 17)
+      hlocalFromEnum (T.R MathSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 18)
+      hlocalFromEnum (T.R CurrencySymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 19)
+      hlocalFromEnum (T.R ModifierSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 20)
+      hlocalFromEnum (T.R OtherSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 21)
+      hlocalFromEnum (T.R Space _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 22)
+      hlocalFromEnum (T.R LineSeparator _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 23)
+      hlocalFromEnum (T.R ParagraphSeparator _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 24)
+      hlocalFromEnum (T.R Control _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 25)
+      hlocalFromEnum (T.R Format _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 26)
+      hlocalFromEnum (T.R Surrogate _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 27)
+      hlocalFromEnum (T.R PrivateUse _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 28)
+      hlocalFromEnum (T.R NotAssigned _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 29)
+      hlocalFromEnum _ p = T.fatal p
+      
+    hindex _ _ p = T.fatal p
+    
+  
+  ginRange pinRange p =
+    T.ufun2 a99v55v99v56inRange pinRange p hinRange
+    where
+    
+    hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p =
+      T.uap2 T.mkNoSrcPos p (Hat.Ix.ginRange T.mkNoSrcPos p)
+        (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
+          (T.uwrapForward p (hlocalFromEnum fy1 p))
+          (T.uwrapForward p (hlocalFromEnum fy2 p)))
+        (T.uwrapForward p (hlocalFromEnum fy3 p))
+      where
+      
+      glocalFromEnum ::
+        T.RefSrcPos -> T.RefExp -> T.R (T.Fun GeneralCategory Hat.Prelude.Int)
+      
+      hlocalFromEnum :: (T.R GeneralCategory) -> T.RefExp -> T.R Hat.Prelude.Int
+      
+      glocalFromEnum plocalFromEnum p =
+        T.ufun1 a99v55v99v56localFromEnum plocalFromEnum p hlocalFromEnum
+      
+      alocalFromEnum = a99v55v99v56localFromEnum
+      
+      hlocalFromEnum (T.R UppercaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 0)
+      hlocalFromEnum (T.R LowercaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 1)
+      hlocalFromEnum (T.R TitlecaseLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 2)
+      hlocalFromEnum (T.R ModifierLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 3)
+      hlocalFromEnum (T.R OtherLetter _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 4)
+      hlocalFromEnum (T.R NonSpacingMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 5)
+      hlocalFromEnum (T.R SpacingCombiningMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 6)
+      hlocalFromEnum (T.R EnclosingMark _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 7)
+      hlocalFromEnum (T.R DecimalNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 8)
+      hlocalFromEnum (T.R LetterNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 9)
+      hlocalFromEnum (T.R OtherNumber _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 10)
+      hlocalFromEnum (T.R ConnectorPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 11)
+      hlocalFromEnum (T.R DashPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 12)
+      hlocalFromEnum (T.R OpenPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 13)
+      hlocalFromEnum (T.R ClosePunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 14)
+      hlocalFromEnum (T.R InitialQuote _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 15)
+      hlocalFromEnum (T.R FinalQuote _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 16)
+      hlocalFromEnum (T.R OtherPunctuation _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 17)
+      hlocalFromEnum (T.R MathSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 18)
+      hlocalFromEnum (T.R CurrencySymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 19)
+      hlocalFromEnum (T.R ModifierSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 20)
+      hlocalFromEnum (T.R OtherSymbol _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 21)
+      hlocalFromEnum (T.R Space _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 22)
+      hlocalFromEnum (T.R LineSeparator _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 23)
+      hlocalFromEnum (T.R ParagraphSeparator _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 24)
+      hlocalFromEnum (T.R Control _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 25)
+      hlocalFromEnum (T.R Format _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 26)
+      hlocalFromEnum (T.R Surrogate _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 27)
+      hlocalFromEnum (T.R PrivateUse _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 28)
+      hlocalFromEnum (T.R NotAssigned _) p =
+        T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
+          (T.conInteger T.mkNoSrcPos p 29)
+      hlocalFromEnum _ p = T.fatal p
+      
+    hinRange _ _ p = T.fatal p
+    
+  
+
+ggenCat :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)
+
+ggenCat pgenCat p = T.ufun1 agenCat pgenCat p hgenCat
+
+hgenCat z1genCat kgenCat =
+  T.fromInt kgenCat
+    ((\_ i -> Prelude.fromEnum (Data.Char.generalCategory (Prelude.toEnum i))) Prelude.True
+      (T.toInt kgenCat z1genCat))
+
+ggeneralCategory :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char GeneralCategory)
+
+hgeneralCategory :: (T.R Char) -> T.RefExp -> T.R GeneralCategory
+
+ggeneralCategory pgeneralCategory p =
+  T.ufun1 ageneralCategory pgeneralCategory p hgeneralCategory
+
+hgeneralCategory fc p =
+  T.uwrapForward p
+    (((gtoEnum T.mkNoSrcPos p)
+        *$
+        (T.uwrapForward p
+          (((ggenCat T.mkNoSrcPos p)
+              *$
+              (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fc)) p))) p)
+
+tData_Char = T.mkModule "Data.Char" "Data/Char.hs" Prelude.False
+
+aUppercaseLetter =
+  T.mkConstructor tData_Char 690011 690025 3 0 "UppercaseLetter"
+
+aLowercaseLetter =
+  T.mkConstructor tData_Char 700011 700025 3 0 "LowercaseLetter"
+
+aTitlecaseLetter =
+  T.mkConstructor tData_Char 710011 710025 3 0 "TitlecaseLetter"
+
+aModifierLetter = T.mkConstructor tData_Char 720011 720024 3 0 "ModifierLetter"
+
+aOtherLetter = T.mkConstructor tData_Char 730011 730021 3 0 "OtherLetter"
+
+aNonSpacingMark = T.mkConstructor tData_Char 740011 740024 3 0 "NonSpacingMark"
+
+aSpacingCombiningMark =
+  T.mkConstructor tData_Char 750011 750030 3 0 "SpacingCombiningMark"
+
+aEnclosingMark = T.mkConstructor tData_Char 760011 760023 3 0 "EnclosingMark"
+
+aDecimalNumber = T.mkConstructor tData_Char 770011 770023 3 0 "DecimalNumber"
+
+aLetterNumber = T.mkConstructor tData_Char 780011 780022 3 0 "LetterNumber"
+
+aOtherNumber = T.mkConstructor tData_Char 790011 790021 3 0 "OtherNumber"
+
+aConnectorPunctuation =
+  T.mkConstructor tData_Char 800011 800030 3 0 "ConnectorPunctuation"
+
+aDashPunctuation =
+  T.mkConstructor tData_Char 810011 810025 3 0 "DashPunctuation"
+
+aOpenPunctuation =
+  T.mkConstructor tData_Char 820011 820025 3 0 "OpenPunctuation"
+
+aClosePunctuation =
+  T.mkConstructor tData_Char 830011 830026 3 0 "ClosePunctuation"
+
+aInitialQuote = T.mkConstructor tData_Char 840011 840022 3 0 "InitialQuote"
+
+aFinalQuote = T.mkConstructor tData_Char 850011 850020 3 0 "FinalQuote"
+
+aOtherPunctuation =
+  T.mkConstructor tData_Char 860011 860026 3 0 "OtherPunctuation"
+
+aMathSymbol = T.mkConstructor tData_Char 870011 870020 3 0 "MathSymbol"
+
+aCurrencySymbol = T.mkConstructor tData_Char 880011 880024 3 0 "CurrencySymbol"
+
+aModifierSymbol = T.mkConstructor tData_Char 890011 890024 3 0 "ModifierSymbol"
+
+aOtherSymbol = T.mkConstructor tData_Char 900011 900021 3 0 "OtherSymbol"
+
+aSpace = T.mkConstructor tData_Char 910011 910015 3 0 "Space"
+
+aLineSeparator = T.mkConstructor tData_Char 920011 920023 3 0 "LineSeparator"
+
+aParagraphSeparator =
+  T.mkConstructor tData_Char 930011 930028 3 0 "ParagraphSeparator"
+
+aControl = T.mkConstructor tData_Char 940011 940017 3 0 "Control"
+
+aFormat = T.mkConstructor tData_Char 950011 950016 3 0 "Format"
+
+aSurrogate = T.mkConstructor tData_Char 960011 960019 3 0 "Surrogate"
+
+aPrivateUse = T.mkConstructor tData_Char 970011 970020 3 0 "PrivateUse"
+
+aNotAssigned = T.mkConstructor tData_Char 980011 980021 3 0 "NotAssigned"
+
+aisLetter = T.mkVariable tData_Char 480001 490026 3 1 "isLetter" Prelude.False
+
+aisMark = T.mkVariable tData_Char 500001 510024 3 1 "isMark" Prelude.False
+
+aisNumber = T.mkVariable tData_Char 520001 530026 3 1 "isNumber" Prelude.False
+
+aisPunctuation =
+  T.mkVariable tData_Char 540001 550031 3 1 "isPunctuation" Prelude.False
+
+aisSymbol = T.mkVariable tData_Char 560001 570026 3 1 "isSymbol" Prelude.False
+
+aisSeparator =
+  T.mkVariable tData_Char 580001 590029 3 1 "isSeparator" Prelude.False
+
+aisAsciiUpper =
+  T.mkVariable tData_Char 600001 610030 3 1 "isAsciiUpper" Prelude.False
+
+aisAsciiLower =
+  T.mkVariable tData_Char 620001 630030 3 1 "isAsciiLower" Prelude.False
+
+atoTitle = T.mkVariable tData_Char 650001 660025 3 1 "toTitle" Prelude.False
+
+agenCat = T.mkVariable tData_Char 1010001 1030022 3 1 "genCat" Prelude.False
+
+ageneralCategory =
+  T.mkVariable tData_Char 1060001 1060043 3 1 "generalCategory" Prelude.False
+
+(+>>=#>=>>=$!==) = T.mkVariable tData_Char 990019 990020 3 2 "==" Prelude.False
+
+a99v23v99v25compare =
+  T.mkVariable tData_Char 990023 990025 3 2 "compare" Prelude.False
+
+a99v28v99v31fromEnum =
+  T.mkVariable tData_Char 990028 990031 3 1 "fromEnum" Prelude.False
+
+a99v28v99v31toEnum =
+  T.mkVariable tData_Char 990028 990031 3 1 "toEnum" Prelude.False
+
+a99v28v99v31enumFrom =
+  T.mkVariable tData_Char 990028 990031 3 1 "enumFrom" Prelude.False
+
+a99v28v99v31enumFromThen =
+  T.mkVariable tData_Char 990028 990031 3 2 "enumFromThen" Prelude.False
+
+a99v34v99v37readsPrec =
+  T.mkVariable tData_Char 990034 990037 3 1 "readsPrec" Prelude.False
+
+a99v40v99v43showsPrec =
+  T.mkVariable tData_Char 990040 990043 3 2 "showsPrec" Prelude.False
+
+a99v46v99v52minBound =
+  T.mkVariable tData_Char 990046 990052 3 0 "minBound" Prelude.False
+
+a99v46v99v52maxBound =
+  T.mkVariable tData_Char 990046 990052 3 0 "maxBound" Prelude.False
+
+a99v55v99v56range =
+  T.mkVariable tData_Char 990055 990056 3 1 "range" Prelude.False
+
+a99v55v99v56index =
+  T.mkVariable tData_Char 990055 990056 3 2 "index" Prelude.False
+
+a99v55v99v56inRange =
+  T.mkVariable tData_Char 990055 990056 3 2 "inRange" Prelude.False
+
+a99v23v99v25localFromEnum =
+  T.mkVariable tData_Char 990023 990025 3 1 "localFromEnum" Prelude.True
+
+a99v55v99v56localToEnum =
+  T.mkVariable tData_Char 990055 990056 3 1 "localToEnum" Prelude.True
+
+a99v55v99v56localFromEnum =
+  T.mkVariable tData_Char 990055 990056 3 1 "localFromEnum" Prelude.True
diff --git a/Hat/Data/List.hs b/Hat/Data/List.hs
new file mode 100644
--- /dev/null
+++ b/Hat/Data/List.hs
@@ -0,0 +1,289 @@
+module Hat.Data.List
+  ((!++),(+++),(*++),ghead,ahead,hhead,glast,alast,hlast,gtail,atail,htail,ginit
+    ,ainit,hinit,gnull,anull,hnull,glength,alength,hlength,gmap,amap,hmap
+    ,greverse,gintersperse,aintersperse,hintersperse,gintercalate,aintercalate
+    ,hintercalate,gtranspose,atranspose,htranspose,gsubsequences,asubsequences
+    ,hsubsequences,gpermutations,apermutations,hpermutations,gfoldl,afoldl
+    ,hfoldl,gfoldl',afoldl',hfoldl',gfoldl1,afoldl1,hfoldl1,gfoldl1',afoldl1'
+    ,hfoldl1',gfoldr,afoldr,hfoldr,gfoldr1,afoldr1,hfoldr1,gconcat,aconcat
+    ,hconcat,gconcatMap,aconcatMap,hconcatMap,gand,gor,gany,aany,hany,gall,aall
+    ,hall,gsum,gproduct,gmaximum,amaximum,hmaximum,gminimum,aminimum,hminimum
+    ,gscanl,ascanl,hscanl,gscanl1,ascanl1,hscanl1,gscanr,ascanr,hscanr,gscanr1
+    ,ascanr1,hscanr1,gmapAccumL,amapAccumL,hmapAccumL,gmapAccumR,amapAccumR
+    ,hmapAccumR,giterate,aiterate,hiterate,grepeat,arepeat,hrepeat,greplicate
+    ,areplicate,hreplicate,gcycle,acycle,hcycle,gunfoldr,aunfoldr,hunfoldr,gtake
+    ,atake,htake,gdrop,adrop,hdrop,gsplitAt,asplitAt,hsplitAt,gtakeWhile
+    ,atakeWhile,htakeWhile,gdropWhile,adropWhile,hdropWhile,gspan,aspan,hspan
+    ,gbreak,abreak,hbreak,gstripPrefix,astripPrefix,hstripPrefix,ggroup,ginits
+    ,ainits,hinits,gtails,atails,htails,gisPrefixOf,aisPrefixOf,hisPrefixOf
+    ,gisSuffixOf,aisSuffixOf,hisSuffixOf,gisInfixOf,aisInfixOf,hisInfixOf,gelem
+    ,aelem,helem,gnotElem,anotElem,hnotElem,glookup,alookup,hlookup,gfind,afind
+    ,hfind,gfilter,afilter,hfilter,gpartition,apartition,hpartition,(!!!),(+!!)
+    ,(*!!),gelemIndex,aelemIndex,helemIndex,gelemIndices,aelemIndices
+    ,helemIndices,gfindIndex,afindIndex,hfindIndex,gfindIndices,afindIndices
+    ,hfindIndices,gzip,gzip3,gzip4,gzip5,gzip6,gzip7,gzipWith,azipWith,hzipWith
+    ,gzipWith3,azipWith3,hzipWith3,gzipWith4,azipWith4,hzipWith4,gzipWith5
+    ,azipWith5,hzipWith5,gzipWith6,azipWith6,hzipWith6,gzipWith7,azipWith7
+    ,hzipWith7,gunzip,gunzip3,gunzip4,gunzip5,gunzip6,gunzip7,glines,alines
+    ,hlines,gwords,awords,hwords,gunlines,gunwords,aunwords,hunwords,gnub
+    ,gdelete,(!\\),gunion,gintersect,gsort,ginsert,gnubBy,anubBy,hnubBy
+    ,gdeleteBy,adeleteBy,hdeleteBy,gdeleteFirstsBy,adeleteFirstsBy
+    ,hdeleteFirstsBy,gunionBy,aunionBy,hunionBy,gintersectBy,aintersectBy
+    ,hintersectBy,ggroupBy,agroupBy,hgroupBy,gsortBy,asortBy,hsortBy,ginsertBy
+    ,ainsertBy,hinsertBy,gmaximumBy,amaximumBy,hmaximumBy,gminimumBy,aminimumBy
+    ,hminimumBy,ggenericLength,agenericLength,hgenericLength,ggenericTake
+    ,agenericTake,hgenericTake,ggenericDrop,agenericDrop,hgenericDrop
+    ,ggenericSplitAt,agenericSplitAt,hgenericSplitAt,ggenericIndex,agenericIndex
+    ,hgenericIndex,ggenericReplicate,agenericReplicate,hgenericReplicate) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.List 
+
+gintercalate ::
+  T.RefSrcPos ->
+    T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List (T.List a)) (T.List a)))
+
+hintercalate ::
+  (T.R (T.List a)) -> (T.R (T.List (T.List a))) -> T.RefExp -> T.R (T.List a)
+
+gintercalate pintercalate p = T.ufun2 aintercalate pintercalate p hintercalate
+
+hintercalate fxs fxss p =
+  T.uwrapForward p (hconcat (T.uwrapForward p (hintersperse fxs fxss p)) p)
+
+gsubsequences ::
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a)))
+
+hsubsequences :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a))
+
+gsubsequences psubsequences p =
+  T.ufun1 asubsequences psubsequences p hsubsequences
+
+hsubsequences fxs p =
+  T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.con0 T.mkNoSrcPos p T.List T.aList)
+    (T.uwrapForward p (hnonEmptySubsequences fxs p))
+
+gnonEmptySubsequences ::
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a)))
+
+hnonEmptySubsequences :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a))
+
+gnonEmptySubsequences pnonEmptySubsequences p =
+  T.ufun1 anonEmptySubsequences pnonEmptySubsequences p hnonEmptySubsequences
+
+hnonEmptySubsequences (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList
+hnonEmptySubsequences (T.R (T.Cons fx fxs) _) p =
+  T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.fromExpList T.mkNoSrcPos p [fx])
+    (T.uwrapForward p
+      (hfoldr (gf T.mkNoSrcPos p) (T.con0 T.mkNoSrcPos p T.List T.aList)
+        (T.uwrapForward p (hnonEmptySubsequences fxs p)) p))
+  where
+  
+  gf pf p = T.ufun2 a42v9v42v34f pf p hf
+  
+  af = a42v9v42v34f
+  
+  hf fys fr p =
+    T.con2 T.mkNoSrcPos p T.Cons T.aCons fys
+      (T.con2 T.mkNoSrcPos p T.Cons T.aCons
+        (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx fys) fr)
+  
+hnonEmptySubsequences _ p = T.fatal p
+
+gpermutations ::
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a)))
+
+hpermutations :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a))
+
+gpermutations ppermutations p =
+  T.ufun1 apermutations ppermutations p hpermutations
+
+hpermutations fxs0 p =
+  T.con2 T.mkNoSrcPos p T.Cons T.aCons fxs0
+    (T.uwrapForward p (hperms fxs0 (T.con0 T.mkNoSrcPos p T.List T.aList) p))
+  where
+  
+  gperms pperms p = T.ufun2 a50v5v55v64perms pperms p hperms
+  
+  aperms = a50v5v55v64perms
+  
+  hperms (T.R T.List _) _ p = T.con0 T.mkNoSrcPos p T.List T.aList
+  hperms (T.R (T.Cons ft fts) _) fis p =
+    T.uwrapForward p
+      (hfoldr (ginterleave T.mkNoSrcPos p)
+        (T.uwrapForward p
+          (hperms fts (T.con2 T.mkNoSrcPos p T.Cons T.aCons ft fis) p))
+        (T.uwrapForward p (hpermutations fis p)) p)
+    where
+    
+    ginterleave pinterleave p =
+      T.ufun2 a52v13v52v75interleave pinterleave p hinterleave
+    
+    ainterleave = a52v13v52v75interleave
+    
+    hinterleave fxs fr p =
+      let
+        gzs pzs p = T.uconstUse pzs p szs
+        j52v42v52v47zs =
+          case T.uwrapForward p (hinterleave' (gid T.mkNoSrcPos p) fxs fr p) of
+            T.R (T.Tuple2 _ fzs) kzs -> (kzs,fzs)
+            _ -> T.fatal p
+        szs =
+          T.uconstDef p a52v45v52v46zs
+            (\ _ -> case j52v42v52v47zs of (kzs,fzs) -> fzs) in
+        (gzs T.mkNoSrcPos p)
+    
+    ginterleave' pinterleave' p =
+      T.ufun3 a53v13v55v64interleave' pinterleave' p hinterleave'
+    
+    ainterleave' = a53v13v55v64interleave'
+    
+    hinterleave' _ (T.R T.List _) fr p =
+      T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fts fr
+    hinterleave' ff (T.R (T.Cons fy fys) _) fr p =
+      let
+        gus pus p = T.uconstUse pus p sus
+        gzs pus p = T.uconstUse pus p szs
+        j54v42v54v48us =
+          case
+            T.uwrapForward p
+              (hinterleave'
+                (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) ff
+                  (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fy)) fys fr p) of
+            T.R (T.Tuple2 fus fzs) kus -> (kus,fus,fzs)
+            _ -> T.fatal p
+        sus =
+          T.uconstDef p a54v43v54v44us
+            (\ _ -> case j54v42v54v48us of (kus,fus,fzs) -> fus)
+        szs =
+          T.uconstDef p a54v46v54v47zs
+            (\ _ -> case j54v42v54v48us of (kus,fus,fzs) -> fzs) in
+        (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
+          (T.con2 T.mkNoSrcPos p T.Cons T.aCons fy (gus T.mkNoSrcPos p))
+          (T.con2 T.mkNoSrcPos p T.Cons T.aCons
+            (T.uap1 T.mkNoSrcPos p ff
+              (T.con2 T.mkNoSrcPos p T.Cons T.aCons ft
+                (T.con2 T.mkNoSrcPos p T.Cons T.aCons fy (gus T.mkNoSrcPos p))))
+            (gzs T.mkNoSrcPos p)))
+    hinterleave' _ _ _ p = T.fatal p
+    
+  hperms _ _ p = T.fatal p
+  
+
+gfoldl' ::
+  T.RefSrcPos ->
+    T.RefExp -> T.R (T.Fun (T.Fun a (T.Fun b a)) (T.Fun a (T.Fun (T.List b) a)))
+
+hfoldl' ::
+  (T.R (T.Fun a (T.Fun b a))) ->
+    (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R a
+
+gfoldl' pfoldl' p = T.ufun3 afoldl' pfoldl' p hfoldl'
+
+hfoldl' ff fa (T.R T.List _) p = T.projection T.mkNoSrcPos p fa
+hfoldl' ff fa (T.R (T.Cons fx fxs) _) p =
+  let
+    ga' pa' p = T.uconstUse pa' p sa'
+    sa' = T.uconstDef p a60v25v60v34a' (\ p -> T.uap2 T.mkNoSrcPos p ff fa fx)
+    in
+    (T.uwrapForward p
+      (hseq (ga' T.mkNoSrcPos p)
+        (T.uwrapForward p (hfoldl' ff (ga' T.mkNoSrcPos p) fxs p)) p))
+hfoldl' _ _ _ p = T.fatal p
+
+gfoldl1' ::
+  T.RefSrcPos ->
+    T.RefExp -> T.R (T.Fun (T.Fun a (T.Fun a a)) (T.Fun (T.List a) a))
+
+hfoldl1' :: (T.R (T.Fun a (T.Fun a a))) -> (T.R (T.List a)) -> T.RefExp -> T.R a
+
+gfoldl1' pfoldl1' p = T.ufun2 afoldl1' pfoldl1' p hfoldl1'
+
+hfoldl1' ff (T.R (T.Cons fx fxs) _) p = T.uwrapForward p (hfoldl' ff fx fxs p)
+hfoldl1' _ (T.R T.List _) p =
+  T.uwrapForward p
+    (herror (T.fromLitString T.mkNoSrcPos p "Prelude.foldl1': empty list") p)
+hfoldl1' _ _ p = T.fatal p
+
+gstripPrefix ::
+  Eq a =>
+  T.RefSrcPos ->
+    T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) (Maybe (T.List a))))
+
+hstripPrefix ::
+  Eq a =>
+  (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R (Maybe (T.List a))
+
+gstripPrefix pstripPrefix p = T.ufun2 astripPrefix pstripPrefix p hstripPrefix
+
+hstripPrefix (T.R T.List _) fys p = T.con1 T.mkNoSrcPos p Just aJust fys
+hstripPrefix (z1stripPrefix@(T.R (T.Cons fx fxs) _))
+  (z2stripPrefix@(T.R (T.Cons fy fys) _)) p =
+  T.ucguard (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p) fx fy)
+    (T.uwrapForward p (hstripPrefix fxs fys p))
+    (y1stripPrefix z1stripPrefix z2stripPrefix p)
+hstripPrefix z1stripPrefix z2stripPrefix p =
+  y1stripPrefix z1stripPrefix z2stripPrefix p
+
+y1stripPrefix _ _ p = T.con0 T.mkNoSrcPos p Nothing aNothing
+
+gisInfixOf ::
+  Eq a =>
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) Bool))
+
+hisInfixOf ::
+  Eq a => (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R Bool
+
+gisInfixOf pisInfixOf p = T.ufun2 aisInfixOf pisInfixOf p hisInfixOf
+
+hisInfixOf fneedle fhaystack p =
+  T.uap2 T.mkNoSrcPos p (gany T.mkNoSrcPos p)
+    (T.uap1 T.mkNoSrcPos p (gisPrefixOf T.mkNoSrcPos p) fneedle)
+    (T.uwrapForward p (htails fhaystack p))
+
+tData_List = T.mkModule "Data.List" "Data/List.hs" Prelude.False
+
+aintercalate =
+  T.mkVariable tData_List 270001 270047 3 2 "intercalate" Prelude.False
+
+asubsequences =
+  T.mkVariable tData_List 330001 330055 3 1 "subsequences" Prelude.False
+
+anonEmptySubsequences =
+  T.mkVariable tData_List 400001 420034 3 1 "nonEmptySubsequences" Prelude.False
+
+apermutations =
+  T.mkVariable tData_List 480001 550064 3 1 "permutations" Prelude.False
+
+afoldl' = T.mkVariable tData_List 590001 600061 3 3 "foldl'" Prelude.False
+
+afoldl1' = T.mkVariable tData_List 640001 650063 3 2 "foldl1'" Prelude.False
+
+astripPrefix =
+  T.mkVariable tData_List 760001 790025 3 2 "stripPrefix" Prelude.False
+
+aisInfixOf = T.mkVariable tData_List 900001 900067 3 2 "isInfixOf" Prelude.False
+
+a42v9v42v34f = T.mkVariable tData_List 420009 420034 3 2 "f" Prelude.True
+
+a50v5v55v64perms =
+  T.mkVariable tData_List 500005 550064 3 2 "perms" Prelude.True
+
+a52v13v52v75interleave =
+  T.mkVariable tData_List 520013 520075 3 2 "interleave" Prelude.True
+
+a53v13v55v64interleave' =
+  T.mkVariable tData_List 530013 550064 3 3 "interleave'" Prelude.True
+
+a52v45v52v46zs = T.mkVariable tData_List 520045 520046 3 0 "zs" Prelude.True
+
+a54v43v54v44us = T.mkVariable tData_List 540043 540044 3 0 "us" Prelude.True
+
+a54v46v54v47zs = T.mkVariable tData_List 540046 540047 3 0 "zs" Prelude.True
+
+a60v25v60v34a' = T.mkVariable tData_List 600025 600034 3 0 "a'" Prelude.True
diff --git a/Hat/Data/Maybe.hs b/Hat/Data/Maybe.hs
new file mode 100644
--- /dev/null
+++ b/Hat/Data/Maybe.hs
@@ -0,0 +1,16 @@
+module Hat.Data.Maybe
+  (Maybe(Nothing,Just),aNothing,aJust,gmaybe,amaybe,hmaybe,gisJust,aisJust
+    ,hisJust,gisNothing,gfromJust,afromJust,hfromJust,gfromMaybe,afromMaybe
+    ,hfromMaybe,glistToMaybe,alistToMaybe,hlistToMaybe,gmaybeToList,amaybeToList
+    ,hmaybeToList,gcatMaybes,acatMaybes,hcatMaybes,gmapMaybe,amapMaybe
+    ,hmapMaybe) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.Maybe 
+
+tData_Maybe = T.mkModule "Data.Maybe" "Data/Maybe.hs" Prelude.False
diff --git a/Hat/System/Environment.hs b/Hat/System/Environment.hs
new file mode 100644
--- /dev/null
+++ b/Hat/System/Environment.hs
@@ -0,0 +1,48 @@
+module Hat.System.Environment
+  (ggetArgs,ggetProgName,ggetEnv,agetEnv,hgetEnv) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.PreludeBuiltinTypes 
+import Hat.IOBuiltin 
+import qualified System.Environment 
+
+ggetArgs :: T.RefSrcPos -> T.RefExp -> T.R (IO (T.List String))
+
+ggetArgs pgetArgs p = T.uconstUse pgetArgs p sgetArgs
+
+sgetArgs =
+  T.uconstDef T.mkRoot agetArgs
+    (\ p -> (T.fromIO (fromList fromString)) p System.Environment.getArgs)
+
+ggetProgName :: T.RefSrcPos -> T.RefExp -> T.R (IO String)
+
+ggetProgName pgetProgName p = T.uconstUse pgetProgName p sgetProgName
+
+sgetProgName =
+  T.uconstDef T.mkRoot agetProgName
+    (\ p -> (T.fromIO fromString) p System.Environment.getProgName)
+
+ggetEnv :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO String))
+
+ggetEnv pgetEnv p = T.ufun1 agetEnv pgetEnv p hgetEnv
+
+hgetEnv z1getEnv kgetEnv =
+  (T.fromIO fromString) kgetEnv
+    (System.Environment.getEnv (toString kgetEnv z1getEnv))
+
+tSystem_Environment =
+  T.mkModule "System.Environment" "System/Environment.hs" Prelude.False
+
+agetArgs =
+  T.mkVariable tSystem_Environment 90001 100015 3 0 "getArgs" Prelude.False
+
+agetProgName =
+  T.mkVariable tSystem_Environment 120001 130019 3 0 "getProgName" Prelude.False
+
+agetEnv =
+  T.mkVariable tSystem_Environment 150001 160024 3 1 "getEnv" Prelude.False
diff --git a/Hat/System/Exit.hs b/Hat/System/Exit.hs
new file mode 100644
--- /dev/null
+++ b/Hat/System/Exit.hs
@@ -0,0 +1,48 @@
+module Hat.System.Exit
+  (ExitCode(ExitSuccess,ExitFailure),aExitSuccess,aExitFailure,gexitWith
+    ,aexitWith,hexitWith,gexitFailure,gexitSuccess) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.PreludeBuiltinTypes 
+import Hat.SystemBuiltinTypes 
+import Hat.SystemBuiltin 
+import qualified System.Exit 
+
+gexitWith :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun ExitCode (IO a))
+
+gexitWith pexitWith p = T.ufun1 aexitWith pexitWith p hexitWith
+
+hexitWith z1exitWith kexitWith =
+  (T.fromIO T.fromId) kexitWith
+    (System.Exit.exitWith (toExitCode kexitWith z1exitWith))
+
+gexitFailure :: T.RefSrcPos -> T.RefExp -> T.R (IO a)
+
+gexitFailure pexitFailure p = T.uconstUse pexitFailure p sexitFailure
+
+sexitFailure =
+  T.uconstDef T.mkRoot aexitFailure
+    (\ p -> (T.fromIO T.fromId) p System.Exit.exitFailure)
+
+gexitSuccess :: T.RefSrcPos -> T.RefExp -> T.R (IO a)
+
+gexitSuccess pexitSuccess p = T.uconstUse pexitSuccess p sexitSuccess
+
+sexitSuccess =
+  T.uconstDef T.mkRoot aexitSuccess
+    (\ p -> (T.fromIO T.fromId) p System.Exit.exitSuccess)
+
+tSystem_Exit = T.mkModule "System.Exit" "System/Exit.hs" Prelude.False
+
+aexitWith = T.mkVariable tSystem_Exit 100001 110027 3 1 "exitWith" Prelude.False
+
+aexitFailure =
+  T.mkVariable tSystem_Exit 120001 130018 3 0 "exitFailure" Prelude.False
+
+aexitSuccess =
+  T.mkVariable tSystem_Exit 140001 150018 3 0 "exitSuccess" Prelude.False
diff --git a/Hat/System/IO.hs b/Hat/System/IO.hs
new file mode 100644
--- /dev/null
+++ b/Hat/System/IO.hs
@@ -0,0 +1,131 @@
+module Hat.System.IO
+  (IO(),gfixIO,afixIO,hfixIO,FilePath(),Handle(),gstdin,gstdout,gstderr
+    ,gwithFile,awithFile,hwithFile,gopenFile,aopenFile,hopenFile,IOMode(ReadMode
+      ,WriteMode,AppendMode,ReadWriteMode),aReadMode,aWriteMode,aAppendMode
+    ,aReadWriteMode,ghClose,ahClose,hhClose,greadFile,areadFile,hreadFile
+    ,gwriteFile,awriteFile,hwriteFile,gappendFile,aappendFile,happendFile
+    ,ghFileSize,ahFileSize,hhFileSize,ghSetFileSize,ahSetFileSize,hhSetFileSize
+    ,ghIsEOF,ahIsEOF,hhIsEOF,gisEOF,BufferMode(NoBuffering,LineBuffering
+      ,BlockBuffering),aNoBuffering,aLineBuffering,aBlockBuffering
+    ,ghSetBuffering,ahSetBuffering,hhSetBuffering,ghGetBuffering,ahGetBuffering
+    ,hhGetBuffering,ghFlush,ahFlush,hhFlush,ghGetPosn,ahGetPosn,hhGetPosn
+    ,ghSetPosn,ahSetPosn,hhSetPosn,HandlePosn(),ghSeek,ahSeek,hhSeek
+    ,SeekMode(AbsoluteSeek,RelativeSeek,SeekFromEnd),aAbsoluteSeek,aRelativeSeek
+    ,aSeekFromEnd,ghTell,ahTell,hhTell,ghIsOpen,ahIsOpen,hhIsOpen,ghIsClosed
+    ,ahIsClosed,hhIsClosed,ghIsReadable,ahIsReadable,hhIsReadable,ghIsWritable
+    ,ahIsWritable,hhIsWritable,ghIsSeekable,ahIsSeekable,hhIsSeekable
+    ,ghIsTerminalDevice,ahIsTerminalDevice,hhIsTerminalDevice,ghSetEcho
+    ,ahSetEcho,hhSetEcho,ghGetEcho,ahGetEcho,hhGetEcho,ghShow,ahShow,hhShow
+    ,ghWaitForInput,ahWaitForInput,hhWaitForInput,ghReady,ahReady,hhReady
+    ,ghGetChar,ahGetChar,hhGetChar,ghGetLine,ahGetLine,hhGetLine,ghLookAhead
+    ,ahLookAhead,hhLookAhead,ghGetContents,ahGetContents,hhGetContents,ghPutChar
+    ,ahPutChar,hhPutChar,ghPutStr,ahPutStr,hhPutStr,ghPutStrLn,ahPutStrLn
+    ,hhPutStrLn,ghPrint,ahPrint,hhPrint,ginteract,ainteract,hinteract,gputChar
+    ,aputChar,hputChar,gputStr,aputStr,hputStr,gputStrLn,aputStrLn,hputStrLn
+    ,gprint,aprint,hprint,ggetChar,ggetLine,ggetContents,greadIO,areadIO,hreadIO
+    ,greadLn) where
+
+import qualified Hat.PreludeBasic 
+import qualified Prelude 
+import Hat.Hack 
+import qualified Hat.Hat as T 
+import Hat.Hat  (WrapVal(wrapVal))
+import Hat.Prelude 
+import Hat.IO 
+import Hat.PreludeBuiltinTypes 
+import Hat.IOBuiltin 
+import qualified System.IO 
+
+gfixIO :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Fun a (IO a)) (IO a))
+
+gfixIO pfixIO p = T.ufun1 afixIO pfixIO p hfixIO
+
+hfixIO z1fixIO kfixIO =
+  (T.fromIO T.fromId) kfixIO
+    (System.IO.fixIO ((toFun T.fromId (T.toIO T.toId)) kfixIO z1fixIO))
+
+gwithFile ::
+  T.RefSrcPos ->
+    T.RefExp ->
+      T.R (T.Fun String (T.Fun IOMode (T.Fun (T.Fun Handle (IO r)) (IO r))))
+
+gwithFile pwithFile p = T.ufun3 awithFile pwithFile p hwithFile
+
+hwithFile z1withFile z2withFile z3withFile kwithFile =
+  (T.fromIO T.fromId) kwithFile
+    (System.IO.withFile (toString kwithFile z1withFile)
+      (toIOMode kwithFile z2withFile)
+      ((toFun fromHandle (T.toIO T.toId)) kwithFile z3withFile))
+
+ghSetFileSize ::
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Integer (IO T.Tuple0)))
+
+ghSetFileSize phSetFileSize p =
+  T.ufun2 ahSetFileSize phSetFileSize p hhSetFileSize
+
+hhSetFileSize z1hSetFileSize z2hSetFileSize khSetFileSize =
+  (T.fromIO T.fromTuple0) khSetFileSize
+    (System.IO.hSetFileSize (toHandle khSetFileSize z1hSetFileSize)
+      (T.toInteger khSetFileSize z2hSetFileSize))
+
+ghTell :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Integer))
+
+ghTell phTell p = T.ufun1 ahTell phTell p hhTell
+
+hhTell z1hTell khTell =
+  (T.fromIO T.fromInteger) khTell (System.IO.hTell (toHandle khTell z1hTell))
+
+ghIsTerminalDevice :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))
+
+ghIsTerminalDevice phIsTerminalDevice p =
+  T.ufun1 ahIsTerminalDevice phIsTerminalDevice p hhIsTerminalDevice
+
+hhIsTerminalDevice z1hIsTerminalDevice khIsTerminalDevice =
+  (T.fromIO fromBool) khIsTerminalDevice
+    (System.IO.hIsTerminalDevice
+      (toHandle khIsTerminalDevice z1hIsTerminalDevice))
+
+ghSetEcho ::
+  T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Bool (IO T.Tuple0)))
+
+ghSetEcho phSetEcho p = T.ufun2 ahSetEcho phSetEcho p hhSetEcho
+
+hhSetEcho z1hSetEcho z2hSetEcho khSetEcho =
+  (T.fromIO T.fromTuple0) khSetEcho
+    (System.IO.hSetEcho (toHandle khSetEcho z1hSetEcho)
+      (toBool khSetEcho z2hSetEcho))
+
+ghGetEcho :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))
+
+ghGetEcho phGetEcho p = T.ufun1 ahGetEcho phGetEcho p hhGetEcho
+
+hhGetEcho z1hGetEcho khGetEcho =
+  (T.fromIO fromBool) khGetEcho
+    (System.IO.hGetEcho (toHandle khGetEcho z1hGetEcho))
+
+ghShow :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO String))
+
+ghShow phShow p = T.ufun1 ahShow phShow p hhShow
+
+hhShow z1hShow khShow =
+  (T.fromIO fromString) khShow (System.IO.hShow (toHandle khShow z1hShow))
+
+tSystem_IO = T.mkModule "System.IO" "System/IO.hs" Prelude.False
+
+afixIO = T.mkVariable tSystem_IO 200001 210028 3 1 "fixIO" Prelude.False
+
+awithFile = T.mkVariable tSystem_IO 230001 240056 3 3 "withFile" Prelude.False
+
+ahSetFileSize =
+  T.mkVariable tSystem_IO 260001 270041 3 2 "hSetFileSize" Prelude.False
+
+ahTell = T.mkVariable tSystem_IO 290001 300023 3 1 "hTell" Prelude.False
+
+ahIsTerminalDevice =
+  T.mkVariable tSystem_IO 320001 330035 3 1 "hIsTerminalDevice" Prelude.False
+
+ahSetEcho = T.mkVariable tSystem_IO 350001 360034 3 2 "hSetEcho" Prelude.False
+
+ahGetEcho = T.mkVariable tSystem_IO 380001 390026 3 1 "hGetEcho" Prelude.False
+
+ahShow = T.mkVariable tSystem_IO 410001 420023 3 1 "hShow" Prelude.False
diff --git a/examples/BadInsort.hs b/examples/BadInsort.hs
new file mode 100644
--- /dev/null
+++ b/examples/BadInsort.hs
@@ -0,0 +1,16 @@
+-- Simple faulty insertion sort
+
+sort :: Ord a => [a] -> [a]
+-- FAULT (1): missing equation for [] argument
+sort (x:xs)	=	insert x (sort xs)
+
+insert :: Ord a => a -> [a] -> [a]
+insert x []	=	[x]
+insert x (y:ys)	=	if x <= y
+ 	 	-- FAULT (2): y missing from result
+ 	 	then x : ys
+ 	 	-- FAULT (3): recursive call is same
+ 	 	else y : insert x (y:ys)
+
+main	=	putStrLn (sort "program")
+
diff --git a/examples/Clausify.hs b/examples/Clausify.hs
new file mode 100644
--- /dev/null
+++ b/examples/Clausify.hs
@@ -0,0 +1,157 @@
+-- Reducing propositions to clausal form.
+-- Colin Runciman, University of York.
+-- Original version, 18/10/90.
+-- This is Version 5 (see JFP Heap Profiling paper) translated for nhc.
+
+module Main(main) where
+
+main :: IO ()
+main = do
+         inp <- getContents
+         putStr (concatMap clauses (lines inp))
+
+data StackFrame = Ast Formula | Lex Char 
+type Stack = [StackFrame]
+
+data Formula =
+  Tru |
+  Sym Char |
+  Not Formula |
+  Dis Formula Formula |
+  Con Formula Formula |
+  Imp Formula Formula |
+  Eqv Formula Formula 
+
+type Clause = (String,String)
+
+-- separate positive and negative literals, eliminating duplicates
+clause :: Formula -> Clause
+clause p = clause' p ([] , [])
+
+clause' :: Formula -> Clause -> Clause
+clause' (Dis p q)       x   = clause' p (clause' q x)
+clause' (Sym s)       (c,a) = (insert s c , a)
+clause' (Not (Sym s)) (c,a) = (c , insert s a)
+
+-- the main pipeline from propositional formulae to printed clauses
+clauses :: String -> String
+clauses s = concat (map disp ( unicl ( split ( disin ( negin ( elim ( parse
+              s )))))))
+
+-- push disjunctions beneath conjunctions
+disin :: Formula -> Formula
+disin (Con p q) = Con (disin p) (disin q)
+disin (Dis p q) = disin' (disin p) (disin q)
+disin p = p
+
+disin' :: Formula -> Formula -> Formula
+disin' (Con p q) r = Con (disin' p r) (disin' q r)
+disin' p (Con q r) = Con (disin' p q) (disin' p r)
+disin' p q = Dis p q
+
+-- format pair of lists of propositional symbols as clausal axiom
+disp :: Clause -> String
+disp (l,r) = interleave l spaces ++ "<=" ++ interleave spaces r ++ "\n"
+
+-- eliminate connectives other than not, disjunction and conjunction
+elim :: Formula -> Formula
+elim (Not p) = Not (elim p)
+elim (Dis p q) = Dis (elim p) (elim q)
+elim (Con p q) = Con (elim p) (elim q)
+elim (Imp p q) = Dis (Not (elim p)) (elim q)
+elim (Eqv f f') = Con (elim (Imp f f')) (elim (Imp f' f))
+elim p = p
+
+-- insertion of an item (here a prop symbol) into an ordered list
+insert :: Char -> String -> String
+insert x []     = [x]
+insert x yys@(y:ys) = if x < y then x:yys
+                  else if x > y then y:insert x ys
+                  else yys
+
+interleave :: [a] -> [a] -> [a]
+interleave (x:xs) ys = x : interleave ys xs
+interleave []     _  = []
+
+-- shift negation to innermost positions
+negin :: Formula -> Formula
+negin (Not (Not p)) = negin p
+negin (Not (Con p q)) = Dis (negin (Not p)) (negin (Not q))
+negin (Not (Dis p q)) = Con (negin (Not p)) (negin (Not q))
+negin (Dis p q) = Dis (negin p) (negin q)
+negin (Con p q) = Con (negin p) (negin q)
+negin p = p
+
+-- the priorities of symbols during parsing
+opri :: Char -> Int
+opri '(' = 0
+opri '=' = 1
+opri '>' = 2
+opri '|' = 3
+opri '&' = 4
+opri '~' = 5
+
+-- parsing a propositional formula
+parse :: String -> Formula
+-- parse t = f where [Ast f] = parse' t []
+parse t = case parse' t [] of
+          Ast f : [] -> f
+
+parse' :: String -> Stack -> Stack
+parse' [] s = redstar s
+parse' (' ':t) s = parse' t s
+parse' ('(':t) s = parse' t (Lex '(' : s)
+parse' (')':t) s = parse' t (x:s')
+                   where
+                   (x : Lex '(' : s') = redstar s
+parse' (c:t) s = if 'a'<= c && c <= 'z' then parse' t (Ast (Sym c) : s)
+                 else if spri s > opri c then parse' (c:t) (red s)
+                 else parse' t (Lex c : s)
+
+-- reduction of the parse stack
+red :: Stack -> Stack
+red (Ast p : Lex '=' : Ast q : s) = Ast (Eqv q p) : s
+red (Ast p : Lex '>' : Ast q : s) = Ast (Imp q p) : s
+red (Ast p : Lex '|' : Ast q : s) = Ast (Dis q p) : s
+red (Ast p : Lex '&' : Ast q : s) = Ast (Con q p) : s
+red (Ast p : Lex '~' : s) = Ast (Not p) : s
+
+-- iterative reduction of the parse stack
+redstar :: Stack -> Stack
+redstar = while ((/=) 0 . spri) red
+
+spaces :: String
+spaces = repeat ' '
+
+-- split CNF formula into a list of conjuncts
+split :: Formula -> [Formula]
+split (Con p q) = split p ++ split q
+split Tru = []
+split p = [p]
+
+-- priority of the parse stack
+spri :: Stack -> Int
+spri (Ast x : Lex c : s) = opri c
+spri s = 0
+
+-- does any symbol appear in both consequent and antecedant of clause
+tautclause :: Clause -> Bool
+tautclause (c,a) = intersect c a /= []
+
+intersect :: Eq a => [a] -> [a] -> [a]
+intersect = filter . (flip elem)
+
+-- form unique clausal axioms excluding tautologies
+unicl :: [Formula] -> [Clause]
+unicl = filterset (not . tautclause) . map clause 
+
+filterset :: Eq a => (a->Bool) -> [a] -> [a]
+filterset = filterset' []
+
+filterset' s p [] = []
+filterset' s p (x:xs) = if not (x `elem` s) && p x then x:filterset' (x:s) p xs
+                                               else filterset' s p xs
+
+while :: (a->Bool) -> (a->a) -> a -> a
+while p f x = if p x then while p f (f x) else x
+
diff --git a/examples/Hamming.hs b/examples/Hamming.hs
new file mode 100644
--- /dev/null
+++ b/examples/Hamming.hs
@@ -0,0 +1,14 @@
+hamming :: [Int] -> [Int]
+hamming ps =
+    tail (hamming_ps)
+    where
+    hamming_ps  = 1 : foldl1 merge (map hamProd ps)
+    hamProd p   = map (p*) hamming_ps
+
+merge (x:xs) (y:ys) =
+    case compare x y of
+    LT -> x : merge xs (y:ys)
+    EQ -> x : merge xs ys          
+    GT -> y : merge (x:xs) ys
+
+main = print (take 10 (hamming [2, 3, 5]))
diff --git a/examples/Hanoi.hs b/examples/Hanoi.hs
new file mode 100644
--- /dev/null
+++ b/examples/Hanoi.hs
@@ -0,0 +1,12 @@
+main = hanoi 3
+
+hanoi :: Int -> IO ()
+hanoi = h 'A' 'B' 'C'
+        where
+        h :: Char -> Char -> Char -> Int -> IO ()
+        h a b c 0 = return ()
+        h a b c n =
+          do
+            h a c b (n-1)
+            putStr ("move disc from " ++ a : " to " ++ b : "\n")
+	    h c b a (n-1)
diff --git a/examples/Insort.hs b/examples/Insort.hs
new file mode 100644
--- /dev/null
+++ b/examples/Insort.hs
@@ -0,0 +1,13 @@
+-- Simple insertion sort
+
+sort :: Ord a => [a] -> [a]
+sort []	=	[]
+sort (x:xs)	=	insert x (sort xs)
+
+insert :: Ord a => a -> [a] -> [a]
+insert x []	=	[x]
+insert x (y:ys)	=	if x <= y then x : y : ys
+ 	 	else y : insert x ys
+
+main	=	putStrLn (sort "program")
+
diff --git a/examples/Queens.hs b/examples/Queens.hs
new file mode 100644
--- /dev/null
+++ b/examples/Queens.hs
@@ -0,0 +1,48 @@
+
+-- The queens problem made famous by Wirth.
+
+type Board = [Int]
+
+main :: IO ()
+main =
+  if null solutions then putStrLn "no solution!"
+  else putStr (showBoard (head solutions))
+  where
+  solutions = queens 4
+
+queens :: Int -> [Board]
+queens n = valid n n 
+
+valid :: Int -> Int -> [Board]
+valid 0 n = [[]]
+valid m n = filter safe (extend n (valid (m-1) n)) 
+
+extend :: Int -> [Board] -> [Board]
+extend n bs = consEach [1..n] bs 
+
+consEach :: [a] -> [[a]] -> [[a]]
+consEach [] y = []
+consEach (a:x) y = map (a:) y ++ consEach x y 
+
+safe :: Board -> Bool
+safe (a:b) = no_threat a b 1
+
+no_threat :: Int -> Board -> Int -> Bool
+no_threat a [] m = True
+no_threat a (b:y) m =
+  a /= b && a+m /= b && a-m /= b && no_threat a y (m+1) 
+
+showBoard :: Board -> String 
+showBoard b =
+  unlines (concat (zipWith rank [1..] b))
+  where
+  rank r qcol =
+    map line ["o o o", " \\|/ ", " === "]
+    where
+    line crown_slice =
+      concat (zipWith square [1..] b)
+      where
+      square scol _ =
+        if scol == qcol then crown_slice
+        else if scol `rem` (2::Int) == r `rem` (2::Int) then "....."
+        else "     "
diff --git a/examples/Soda.hs b/examples/Soda.hs
new file mode 100644
--- /dev/null
+++ b/examples/Soda.hs
@@ -0,0 +1,60 @@
+------------------------------------------------------------------
+-- Searching in a grid of words for hidden words oriented in any of
+-- the 8 possible directions.
+-- Colin Runciman, May 1984 (this version, for tracing, March 2000)
+------------------------------------------------------------------
+
+main = mapM (putStr.find) hidden
+    where
+    find word = word ++ " " ++ concat dirs ++ "\n"
+        where
+        dirs = map snd (
+            filter (any (contains word) . fst)
+                [(r,"right "), (d,"down "), (dl,"downleft "), (ul,"upleft ")]
+            ++
+            filter (any (contains drow) . fst) 
+                [(r,"left "), (d,"up "), (dl,"upright "), (ul,"downright ")] )
+        drow = reverse word
+    r  = grid
+    d  = transpose grid
+    dl = diagonals grid
+    ul = diagonals (reverse grid)
+
+transpose [r] = map (:[]) r
+transpose (r:rs) = zipWith (:) r (transpose rs)
+
+diagonals [r] = map (:[]) r
+diagonals (r:rs) = zipinit r ([]:diagonals rs)
+
+zipinit [] ys = ys
+zipinit (x:xs) (y:ys) = (x : y) : zipinit xs ys
+
+contains xs ys = any (prefix xs) (suffixes ys)
+
+suffixes [] = []
+suffixes xs = xs : suffixes (tail xs) 
+
+prefix [] ys = True
+prefix xs [] = False
+prefix (x:xs) (y:ys) = x == y && prefix xs ys
+
+grid =
+   [['Y', 'I', 'O', 'M', 'R', 'E', 'S', 'K', 'S', 'T'],
+    ['A', 'E', 'H', 'Y', 'G', 'E', 'H', 'E', 'D', 'W'],
+    ['Z', 'F', 'I', 'A', 'C', 'N', 'I', 'T', 'I', 'A'],
+    ['N', 'T', 'O', 'C', 'O', 'M', 'V', 'O', 'O', 'R'],
+    ['E', 'R', 'D', 'L', 'O', 'C', 'E', 'N', 'S', 'M'],
+    ['Z', 'O', 'U', 'R', 'P', 'S', 'R', 'N', 'D', 'A'],
+    ['O', 'Y', 'A', 'S', 'M', 'O', 'Y', 'E', 'D', 'L'],
+    ['R', 'N', 'D', 'E', 'N', 'L', 'O', 'A', 'I', 'T'],
+    ['F', 'I', 'W', 'I', 'N', 'T', 'E', 'R', 'R', 'C'],
+    ['F', 'E', 'Z', 'E', 'E', 'R', 'F', 'T', 'F', 'I'],
+    ['I', 'I', 'D', 'T', 'P', 'H', 'U', 'B', 'R', 'L'],
+    ['C', 'N', 'O', 'H', 'S', 'G', 'E', 'I', 'O', 'N'],
+    ['E', 'G', 'M', 'O', 'P', 'S', 'T', 'A', 'S', 'O'],
+    ['T', 'G', 'F', 'F', 'C', 'I', 'S', 'H', 'T', 'H'],
+    ['O', 'T', 'B', 'C', 'S', 'S', 'N', 'O', 'W', 'I']]
+
+hidden =
+  ["COSY", "SOFT", "WINTER", "SHIVER", "FROZEN", "SNOW",
+   "WARM", "HEAT", "COLD",   "FREEZE", "FROST",  "ICE" ]
diff --git a/hat.cabal b/hat.cabal
--- a/hat.cabal
+++ b/hat.cabal
@@ -1,6 +1,6 @@
 
 name:                hat
-version:             2.7.0.0
+version:             2.7.0.1
 synopsis:            The Haskell tracer, generating and viewing Haskell execution traces
 description:
   hat-trans transforms Module.hs into Hat/Module.hs such that when the program is
@@ -12,13 +12,14 @@
 
   It is the least possible update to make Hat work with Cabal.
   Hat 2.07 works only with ghc for Haskell 98 (plus a few extensions) and
-  the standard Haskell 98 libraries. Although it should build on any operating system,
+  the standard Haskell 98 libraries plus some Haskell 2010 libraries. 
+  Although it should build on any operating system,
   most viewing tools use ASCII console escape sequences and they open xterms;
   hence they will only work well under Unix and X11.
 
   Installation:
 
-  > cabal -v install (--user | --global)
+  > cabal -v install
 
   Flag -v allows you to see what is going on. Building takes a long time 
   (one module has 25.000 lines of code). Don't worry about numerous warning messages.
@@ -39,6 +40,7 @@
   > hat-trail / hat-observe / hat-explore /...   MyProgram
 
   There is documentation in the "docs" folder, but much of it is outdated.
+  There are a few small programs for exploring tracing in the "examples" folder.
 homepage:            http://www.cs.kent.ac.uk/~oc
 license:             OtherLicense
 license-file:        docs/copyright.html
@@ -52,16 +54,16 @@
 build-type:          Simple
 cabal-version:       >=1.8
 
-data-dir:	     libhx
-data-files:	     *.hx
-extra-source-files:  include/*.h, tools/*.h, libraries/*.hs, docs/*.html, docs/*.hs, docs/*.ps.gz, docs/*.eps, docs/*.gif, docs/*.pdf, docs/*.tex, docs/*.dvi, docs/*.hva, docs/man/*.1, docs/man/*.1.in
+data-dir:	     libraries
+data-files:	     *.hx, *.hs, Control/*.hx, Control/*.hs, Data/*.hx, Data/*.hs
+extra-source-files:  include/*.h, tools/*.h, docs/*.html, docs/*.hs, docs/*.ps.gz, docs/*.eps, docs/*.gif, docs/*.pdf, docs/*.tex, docs/*.dvi, docs/*.hva, docs/man/*.1, docs/man/*.1.in, examples/*.hs
 
 source-repository head
   type:		     git
   location:	     git://github.com/OlafChitil/hat.git
 
 library
-  exposed-modules:     Hat.Array, Hat.Char, Hat.Complex, Hat.CPUTime, Hat.Directory, Hat.Hack, Hat.Hat, Hat.IO, Hat.Ix, Hat.List, Hat.Locale, Hat.Maybe, Hat.Monad, Hat.Numeric, Hat.Prelude, Hat.PreludeBasic, Hat.Random, Hat.Ratio, Hat.System, Hat.Time
+  exposed-modules:     Hat.Array, Hat.Char, Hat.Complex, Hat.CPUTime, Hat.Directory, Hat.Hack, Hat.Hat, Hat.IO, Hat.Ix, Hat.List, Hat.Locale, Hat.Maybe, Hat.Monad, Hat.Numeric, Hat.Prelude, Hat.PreludeBasic, Hat.Random, Hat.Ratio, Hat.System, Hat.Time, Hat.Control.Monad, Hat.Data.Char, Hat.Data.Maybe, Hat.Data.List, Hat.System.Environment, Hat.System.Exit, Hat.System.IO
   build-depends:       base ==4.5.*, directory ==1.1.*, random ==1.0.*, process ==1.1.*, old-time ==1.1.*, old-locale ==1.0.*
   other-modules:       Hat.DirectoryBuiltin, Hat.DirectoryBuiltinTypes, Hat.IOBuiltin, Hat.IOBuiltinTypes, Hat.PreludeBuiltin, Hat.PreludeBuiltinTypes, Hat.RandomBuiltin, Hat.SystemBuiltin, Hat.SystemBuiltinTypes, Hat.TimeBuiltin, Hat.TimeBuiltinTypes
   extensions:	       ForeignFunctionInterface
@@ -128,8 +130,8 @@
   -- currently just calls hat-delta; was a separate tool
   main-is:	     HatDetect.hs
   hs-source-dirs:    tools
-  other-modules:     Pretty, Slice, LowLevel, CommonUI, NodeExp, SExp, ADT, EDT, SrcRef, FDT, Detect, Explore, HighlightStyle, PrettyLibHighlight, Ident
-  build-depends:     base ==4.5.*, process ==1.1.*, containers ==0.4.*
+  other-modules:     LowLevel, SExp, TExp, HighlightStyle, CommonUI, SrcRef
+  build-depends:     base ==4.5.*, directory ==1.1.*, process ==1.1.*, haskeline ==0.6.*
   extensions:	     ForeignFunctionInterface
   includes:	     art.h, ntohl.h
   include-dirs:	     include
@@ -203,7 +205,7 @@
 executable pretty-hat
   main-is:	     PrettyHat.hs
   hs-source-dirs:    tools
-  other-modules:     Pretty, NodeExp, EDT, HighlightStyle, Detect, Slice, ADT, Explore, SExp, CommonUI, SrcRef, Ident, LowLevel, PrettyLibHighlight
+  other-modules:     Pretty, NodeExp, EDT, HighlightStyle, Delta, Slice, ADT, Explore, SExp, CommonUI, SrcRef, Ident, LowLevel, PrettyLibHighlight
   build-depends:     base ==4.5.*, process ==1.1.*, containers ==0.4.*
   extensions:	     ForeignFunctionInterface
   includes:	     art.h, ntohl.h
@@ -214,7 +216,7 @@
 executable hat-delta
   main-is:	     HatDelta.hs
   hs-source-dirs:    tools
-  other-modules:     Pretty, Slice, LowLevel, CommonUI, NodeExp, SExp, ADT, EDT, SrcRef, FDT, Detect, Explore, HighlightStyle, PrettyLibHighlight, Ident
+  other-modules:     Pretty, Slice, LowLevel, CommonUI, NodeExp, SExp, ADT, EDT, SrcRef, FDT, Delta, Explore, HighlightStyle, PrettyLibHighlight, Ident
   build-depends:     base ==4.5.*, process ==1.1.*, containers ==0.4.*
   extensions:	     ForeignFunctionInterface
   includes:	     art.h, ntohl.h
diff --git a/libhx/Array.hx b/libhx/Array.hx
deleted file mode 100644
--- a/libhx/Array.hx
+++ /dev/null
@@ -1,22 +0,0 @@
-module Array
-(Var "!",Value {args = 1, fixity = L, priority = 9, letBound = True, traced = False})
-(Var "//",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
-(Var "accum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "accumArray",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "array",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "assocs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "bounds",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "elems",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "indices",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ixmap",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "listArray",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "(7:8-7:9,Ix).inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "(7:8-7:9,Ix).index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "(7:8-7:9,Ix).range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "(7:8-7:9,Ix).rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Array",TyCls (Ty [] []))
-(TypeClass "Ix",TyCls (Cls ["range","index","inRange","rangeSize"]))
diff --git a/libhx/CPUTime.hx b/libhx/CPUTime.hx
deleted file mode 100644
--- a/libhx/CPUTime.hx
+++ /dev/null
@@ -1,3 +0,0 @@
-module CPUTime
-(Var "cpuTimePrecision",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getCPUTime",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libhx/Char.hx b/libhx/Char.hx
deleted file mode 100644
--- a/libhx/Char.hx
+++ /dev/null
@@ -1,24 +0,0 @@
-module Char
-(Var "chr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "digitToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "intToDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lexLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ord",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Char",TyCls (Ty [] []))
-(TypeClass "String",TyCls (Ty [] []))
diff --git a/libhx/Complex.hx b/libhx/Complex.hx
deleted file mode 100644
--- a/libhx/Complex.hx
+++ /dev/null
@@ -1,11 +0,0 @@
-module Complex
-(Var "cis",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "conjugate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "imagPart",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "magnitude",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mkPolar",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "phase",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "polar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "realPart",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Complex" ":+",Value {args = 2, fixity = None, priority = 6, letBound = True, traced = False})
-(TypeClass "Complex",TyCls (Ty [":+"] []))
diff --git a/libhx/Directory.hx b/libhx/Directory.hx
deleted file mode 100644
--- a/libhx/Directory.hx
+++ /dev/null
@@ -1,20 +0,0 @@
-module Directory
-(Var "createDirectory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "doesDirectoryExist",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "doesFileExist",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getCurrentDirectory",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getDirectoryContents",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getModificationTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getPermissions",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "removeDirectory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "removeFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "renameDirectory",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "renameFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "setCurrentDirectory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "setPermissions",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Permissions" "Permissions",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "executable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "readable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "searchable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "writable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Permissions",TyCls (Ty ["Permissions"] ["readable","writable","executable","searchable"]))
diff --git a/libhx/DirectoryBuiltin.hx b/libhx/DirectoryBuiltin.hx
deleted file mode 100644
--- a/libhx/DirectoryBuiltin.hx
+++ /dev/null
@@ -1,1 +0,0 @@
-module DirectoryBuiltin
diff --git a/libhx/DirectoryBuiltinTypes.hx b/libhx/DirectoryBuiltinTypes.hx
deleted file mode 100644
--- a/libhx/DirectoryBuiltinTypes.hx
+++ /dev/null
@@ -1,7 +0,0 @@
-module DirectoryBuiltinTypes
-(Con Data "Permissions" "Permissions",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "executable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "readable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "searchable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "Permissions" "writable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Permissions",TyCls (Ty ["Permissions"] ["readable","writable","executable","searchable"]))
diff --git a/libhx/IO.hx b/libhx/IO.hx
deleted file mode 100644
--- a/libhx/IO.hx
+++ /dev/null
@@ -1,78 +0,0 @@
-module IO
-(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "bracket",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "bracket_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hClose",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hFileSize",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hFlush",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hGetBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hGetChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hGetContents",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hGetLine",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hGetPosn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hIsClosed",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hIsEOF",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hIsOpen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hIsReadable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hIsSeekable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hIsWritable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hLookAhead",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hPrint",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hPutChar",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hPutStr",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hPutStrLn",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hReady",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hSeek",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hSetBuffering",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hSetPosn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "hWaitForInput",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioeGetErrorString",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioeGetFileName",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioeGetHandle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlreadyExistsError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlreadyInUseError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isDoesNotExistError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isEOF",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isEOFError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isFullError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isIllegalOperation",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isPermissionError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isUserError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "openFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "stderr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "stdin",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "stdout",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "try",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "BufferMode" "BlockBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "BufferMode" "LineBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "BufferMode" "NoBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "ReadMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "ReadWriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "SeekMode" "RelativeSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "SeekMode" "SeekFromEnd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "BufferMode",TyCls (Ty ["NoBuffering","LineBuffering","BlockBuffering"] []))
-(TypeClass "FilePath",TyCls (Syn 0 THelper))
-(TypeClass "Handle",TyCls (Ty [] []))
-(TypeClass "HandlePosn",TyCls (Ty [] []))
-(TypeClass "IO",TyCls (Ty [] []))
-(TypeClass "IOError",TyCls (Ty [] []))
-(TypeClass "IOMode",TyCls (Ty ["ReadMode","WriteMode","AppendMode","ReadWriteMode"] []))
-(TypeClass "SeekMode",TyCls (Ty ["AbsoluteSeek","RelativeSeek","SeekFromEnd"] []))
diff --git a/libhx/IOBuiltin.hx b/libhx/IOBuiltin.hx
deleted file mode 100644
--- a/libhx/IOBuiltin.hx
+++ /dev/null
@@ -1,3 +0,0 @@
-module IOBuiltin
-(TypeClass "Handle", TyCls (Ty [] []))
-(TypeClass "HandlePosn", TyCls (Ty [] []))
diff --git a/libhx/IOBuiltinTypes.hx b/libhx/IOBuiltinTypes.hx
deleted file mode 100644
--- a/libhx/IOBuiltinTypes.hx
+++ /dev/null
@@ -1,14 +0,0 @@
-module IOBuiltinTypes
-(Con Data "BufferMode" "BlockBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "BufferMode" "LineBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "BufferMode" "NoBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "ReadMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "ReadWriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "SeekMode" "RelativeSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "SeekMode" "SeekFromEnd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "BufferMode",TyCls (Ty ["NoBuffering","LineBuffering","BlockBuffering"] []))
-(TypeClass "IOMode",TyCls (Ty ["ReadMode","WriteMode","AppendMode","ReadWriteMode"] []))
-(TypeClass "SeekMode",TyCls (Ty ["AbsoluteSeek","RelativeSeek","SeekFromEnd"] []))
diff --git a/libhx/Ix.hx b/libhx/Ix.hx
deleted file mode 100644
--- a/libhx/Ix.hx
+++ /dev/null
@@ -1,6 +0,0 @@
-module Ix
-(Method "Ix" "inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ix" "rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Ix",TyCls (Cls ["range","index","inRange","rangeSize"]))
diff --git a/libhx/List.hx b/libhx/List.hx
deleted file mode 100644
--- a/libhx/List.hx
+++ /dev/null
@@ -1,105 +0,0 @@
-module List
-(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
-(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Var "\\\\",Value {args = 0, fixity = None, priority = 5, letBound = True, traced = False})
-(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "delete",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "deleteBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "deleteFirstsBy",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "elemIndex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "elemIndices",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "find",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "findIndex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "findIndices",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "genericDrop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "genericIndex",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "genericLength",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "genericReplicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "genericSplitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "genericTake",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "group",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "groupBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "inits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "insert",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "insertBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "intersect",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "intersectBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "intersperse",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isPrefixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isSuffixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapAccumL",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapAccumR",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maximumBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "minimumBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "nub",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "nubBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "partition",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sort",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sortBy",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "tails",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "transpose",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unfoldr",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "union",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unionBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip4",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip5",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip6",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip7",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip4",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip5",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip6",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip7",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith4",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith5",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith6",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith7",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libhx/Locale.hx b/libhx/Locale.hx
deleted file mode 100644
--- a/libhx/Locale.hx
+++ /dev/null
@@ -1,11 +0,0 @@
-module Locale
-(Var "defaultTimeLocale",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "TimeLocale" "TimeLocale",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "amPm",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "dateFmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "dateTimeFmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "months",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "time12Fmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "timeFmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeLocale" "wDays",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "TimeLocale",TyCls (Ty ["TimeLocale"] ["wDays","months","amPm","dateTimeFmt","dateFmt","timeFmt","time12Fmt"]))
diff --git a/libhx/Maybe.hx b/libhx/Maybe.hx
deleted file mode 100644
--- a/libhx/Maybe.hx
+++ /dev/null
@@ -1,13 +0,0 @@
-module Maybe
-(Var "catMaybes",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromJust",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromMaybe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isJust",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isNothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "listToMaybe",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapMaybe",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maybeToList",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
diff --git a/libhx/Monad.hx b/libhx/Monad.hx
deleted file mode 100644
--- a/libhx/Monad.hx
+++ /dev/null
@@ -1,32 +0,0 @@
-module Monad
-(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
-(Var "ap",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "filterM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "guard",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "join",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "liftM",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "liftM2",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "liftM3",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "liftM4",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "liftM5",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapAndUnzipM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "msum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unless",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "when",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWithM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWithM_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "MonadPlus" "mplus",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "MonadPlus" "mzero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Functor",TyCls (Cls ["fmap"]))
-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
-(TypeClass "MonadPlus",TyCls (Cls ["mzero","mplus"]))
diff --git a/libhx/Numeric.hx b/libhx/Numeric.hx
deleted file mode 100644
--- a/libhx/Numeric.hx
+++ /dev/null
@@ -1,19 +0,0 @@
-module Numeric
-(Var "floatToDigits",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromRat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lexDigits",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readDec",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readInt",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readSigned",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showEFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showFFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showFloat",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showGFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showInt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showIntAtBase",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showSigned",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libhx/Prelude.hx b/libhx/Prelude.hx
deleted file mode 100644
--- a/libhx/Prelude.hx
+++ /dev/null
@@ -1,273 +0,0 @@
-module Prelude
-(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
-(Var "$",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})
-(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False})
-(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
-(Var "^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
-(Var "^^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
-(Var "_filter",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "_foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "asTypeOf",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "const",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "curry",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "either",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "even",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "flip",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromIntegral",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fst",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "gcd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lcm",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "not",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "odd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "otherwise",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "read",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reads",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "realToFrac",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showString",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "shows",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "snd",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "subtract",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "uncurry",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "until",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})
-(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})
-(Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
-(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
-(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "()",TyCls (Ty ["()"] []))
-(TypeClass "->",TyCls (Ty [] []))
-(TypeClass "Bool",TyCls (Ty ["False","True"] []))
-(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"]))
-(TypeClass "Char",TyCls (Ty [] []))
-(TypeClass "Double",TyCls (Ty [] []))
-(TypeClass "Either",TyCls (Ty ["Left","Right"] []))
-(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))
-(TypeClass "Eq",TyCls (Cls ["==","/="]))
-(TypeClass "FilePath",TyCls (Syn 0 THelper))
-(TypeClass "Float",TyCls (Ty [] []))
-(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))
-(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))
-(TypeClass "Functor",TyCls (Cls ["fmap"]))
-(TypeClass "IO",TyCls (Ty [] []))
-(TypeClass "IOError",TyCls (Ty [] []))
-(TypeClass "Int",TyCls (Ty [] []))
-(TypeClass "Integer",TyCls (Ty [] []))
-(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"]))
-(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
-(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))
-(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"]))
-(TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))
-(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))
-(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))
-(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))
-(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))
-(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))
-(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))
-(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))
-(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))
-(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))
-(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))
-(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))
-(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))
-(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))
-(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))
-(TypeClass "Rational",TyCls (Syn 0 THelper))
-(TypeClass "Read",TyCls (Cls ["readsPrec","readList"]))
-(TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
-(TypeClass "Real",TyCls (Cls ["toRational"]))
-(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))
-(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))
-(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"]))
-(TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
-(TypeClass "String",TyCls (Ty [] []))
-(TypeClass "[]",TyCls (Ty ["[]",":"] []))
diff --git a/libhx/PreludeBasic.hx b/libhx/PreludeBasic.hx
deleted file mode 100644
--- a/libhx/PreludeBasic.hx
+++ /dev/null
@@ -1,597 +0,0 @@
-module PreludeBasic
-(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
-(Var "$",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "%",Value {args = 2, fixity = L, priority = 7, letBound = True, traced = False})
-(Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "(19:8-19:21,PreludeBuiltin).writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False})
-(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
-(Var "^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
-(Var "^^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
-(Var "_filter",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "_foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "alt",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "approxRational",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "asTypeOf",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "asciiTab",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "chr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "const",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "curry",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "denominator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "digitToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "either",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "even",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "expt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "expts",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "flip",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "floatToDigits",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "formatRealFloat",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromIntegral",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromRat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromRat'",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fst",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "gcd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "intEnumFromByTo",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "intToDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "integerLogBase",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lcm",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lexDigits",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lexLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lift",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maxExpt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "minExpt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "nonnull",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "not",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "numerator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "numericEnumFrom",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "numericEnumFromThen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "numericEnumFromThenTo",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "numericEnumFromTo",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "odd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ord",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "otherwise",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "prec",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "protectEsc",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "read",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readDec",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readInt",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readSigned",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reads",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "realToFrac",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reduce",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "roundTo",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scaleRat",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showEFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showFFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showFloat",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showGFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showInt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showIntAtBase",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showSigned",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showString",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "shows",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "snd",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "subtract",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "thenAp",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "thenLex",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "uncurry",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "until",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "yield",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})
-(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "()" "(19:8-19:21,PreludeBuiltin).()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "(19:8-19:21,PreludeBuiltin).False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "(19:8-19:21,PreludeBuiltin).True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "FFFormat" "FFExponent",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "FFFormat" "FFFixed",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "FFFormat" "FFGeneric",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.10" "(19:8-19:21,PreludeBuiltin).Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.11" "(19:8-19:21,PreludeBuiltin).Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.12" "(19:8-19:21,PreludeBuiltin).Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.13" "(19:8-19:21,PreludeBuiltin).Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.14" "(19:8-19:21,PreludeBuiltin).Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.15" "(19:8-19:21,PreludeBuiltin).Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.2" "(19:8-19:21,PreludeBuiltin).Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.3" "(19:8-19:21,PreludeBuiltin).Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.4" "(19:8-19:21,PreludeBuiltin).Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.5" "(19:8-19:21,PreludeBuiltin).Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.6" "(19:8-19:21,PreludeBuiltin).Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.7" "(19:8-19:21,PreludeBuiltin).Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.8" "(19:8-19:21,PreludeBuiltin).Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.9" "(19:8-19:21,PreludeBuiltin).Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ratio" ":%",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "[]" "(19:8-19:21,PreludeBuiltin).:",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Con Data "[]" "(19:8-19:21,PreludeBuiltin).[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})
-(Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
-(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
-(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "()",TyCls (Ty ["()"] []))
-(TypeClass "->",TyCls (Ty [] []))
-(TypeClass "Bool",TyCls (Ty ["False","True"] []))
-(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"]))
-(TypeClass "Char",TyCls (Ty [] []))
-(TypeClass "Double",TyCls (Ty [] []))
-(TypeClass "Either",TyCls (Ty ["Left","Right"] []))
-(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))
-(TypeClass "Eq",TyCls (Cls ["==","/="]))
-(TypeClass "FFFormat",TyCls (Ty ["FFExponent","FFFixed","FFGeneric"] []))
-(TypeClass "FilePath",TyCls (Syn 0 THelper))
-(TypeClass "Float",TyCls (Ty [] []))
-(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))
-(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))
-(TypeClass "Functor",TyCls (Cls ["fmap"]))
-(TypeClass "IO",TyCls (Ty [] []))
-(TypeClass "IOError",TyCls (Ty [] []))
-(TypeClass "Int",TyCls (Ty [] []))
-(TypeClass "Integer",TyCls (Ty [] []))
-(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"]))
-(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
-(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))
-(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"]))
-(TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))
-(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))
-(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))
-(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))
-(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))
-(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))
-(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))
-(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))
-(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))
-(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))
-(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))
-(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))
-(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))
-(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))
-(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))
-(TypeClass "Ratio",TyCls (Ty [":%"] []))
-(TypeClass "Rational",TyCls (Syn 0 THelper))
-(TypeClass "Read",TyCls (Cls ["readsPrec","readList"]))
-(TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
-(TypeClass "Real",TyCls (Cls ["toRational"]))
-(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))
-(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))
-(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"]))
-(TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
-(TypeClass "String",TyCls (Ty [] []))
-(TypeClass "[]",TyCls (Ty ["[]",":"] []))
diff --git a/libhx/PreludeBuiltin.hx b/libhx/PreludeBuiltin.hx
deleted file mode 100644
--- a/libhx/PreludeBuiltin.hx
+++ /dev/null
@@ -1,175 +0,0 @@
-module PreludeBuiltin
-(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "()",TyCls (Ty ["()"] []))
-(TypeClass "->",TyCls (Ty [] []))
-(TypeClass "Bool",TyCls (Ty ["False","True"] []))
-(TypeClass "Char",TyCls (Ty [] []))
-(TypeClass "Double",TyCls (Ty [] []))
-(TypeClass "Float",TyCls (Ty [] []))
-(TypeClass "IO",TyCls (Ty [] []))
-(TypeClass "IOError",TyCls (Ty [] []))
-(TypeClass "Int",TyCls (Ty [] []))
-(TypeClass "Integer",TyCls (Ty [] []))
-(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))
-(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))
-(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))
-(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))
-(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))
-(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))
-(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))
-(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))
-(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))
-(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))
-(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))
-(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))
-(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))
-(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))
-(TypeClass "String",TyCls (Ty [] []))
-(TypeClass "[]",TyCls (Ty ["[]",":"] []))
diff --git a/libhx/PreludeBuiltinTypes.hx b/libhx/PreludeBuiltinTypes.hx
deleted file mode 100644
--- a/libhx/PreludeBuiltinTypes.hx
+++ /dev/null
@@ -1,48 +0,0 @@
-module TPreludeBuiltinTypes
-(TypeClass "IO", TyCls (Ty [] []))
-(TypeClass "IOError", TyCls (Ty [] []))
-(TypeClass "Double", TyCls (Ty [] []))
-(TypeClass "Float", TyCls (Ty [] []))
-(TypeClass "Integer", TyCls (Ty [] []))
-(TypeClass "Int", TyCls (Ty [] []))
-(TypeClass "Char", TyCls (Ty [] []))
-(TypeClass "->", TyCls (Ty [] []))
-(TypeClass "String", TyCls (Ty [] []))
-(TypeClass "[]", TyCls (Ty ["[]",":"] []))
-(TypeClass "Bool", TyCls (Ty ["False","True"] []))
-(TypeClass "()", TyCls (Ty ["()"] []))
-(TypeClass "Prelude.2", TyCls (Ty ["Prelude.2"] []))
-(TypeClass "Prelude.3", TyCls (Ty ["Prelude.3"] []))
-(TypeClass "Prelude.4", TyCls (Ty ["Prelude.4"] []))
-(TypeClass "Prelude.5", TyCls (Ty ["Prelude.5"] []))
-(TypeClass "Prelude.6", TyCls (Ty ["Prelude.6"] []))
-(TypeClass "Prelude.7", TyCls (Ty ["Prelude.7"] []))
-(TypeClass "Prelude.8", TyCls (Ty ["Prelude.8"] []))
-(TypeClass "Prelude.9", TyCls (Ty ["Prelude.9"] []))
-(TypeClass "Prelude.10", TyCls (Ty ["Prelude.10"] []))
-(TypeClass "Prelude.11", TyCls (Ty ["Prelude.11"] []))
-(TypeClass "Prelude.12", TyCls (Ty ["Prelude.12"] []))
-(TypeClass "Prelude.13", TyCls (Ty ["Prelude.13"] []))
-(TypeClass "Prelude.14", TyCls (Ty ["Prelude.14"] []))
-(TypeClass "Prelude.15", TyCls (Ty ["Prelude.15"] []))
-(Con Data "[]" ":",Value{args=2,fixity=R,priority=5,letBound=True,traced=False})
-(Con Data "[]" "[]",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Bool" "False",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Bool" "True",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "()" "()",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.2" "Prelude.2",Value{args=2,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.3" "Prelude.3",Value{args=3,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.4" "Prelude.4",Value{args=4,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.5" "Prelude.5",Value{args=5,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.6" "Prelude.6",Value{args=6,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.7" "Prelude.7",Value{args=7,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.8" "Prelude.8",Value{args=8,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.9" "Prelude.9",Value{args=9,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.10" "Prelude.10",Value{args=10,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.11" "Prelude.11",Value{args=11,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.12" "Prelude.12",Value{args=12,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.13" "Prelude.13",Value{args=13,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.14" "Prelude.14",Value{args=14,fixity=Def,priority=9,letBound=True,traced=False})
-(Con Data "Prelude.15" "Prelude.15",Value{args=15,fixity=Def,priority=9,letBound=True,traced=False})
-(Var "error",Value{args=1,fixity=Def,priority=9,letBound=True,traced=False})
-(Var "undefined",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
diff --git a/libhx/PreludeReal.hx b/libhx/PreludeReal.hx
deleted file mode 100644
--- a/libhx/PreludeReal.hx
+++ /dev/null
@@ -1,239 +0,0 @@
-module Prelude
-(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
-(Var "$",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})
-(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
-(Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False})
-(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
-(Var "^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
-(Var "^^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
-(Var "_filter",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "_foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "asTypeOf",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "const",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "curry",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "either",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "even",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "flip",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fromIntegral",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "fst",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "gcd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lcm",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "not",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
-(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "odd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "otherwise",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "read",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "readParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reads",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "realToFrac",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
-(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "showString",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "shows",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "snd",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "subtract",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "uncurry",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "until",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})
-(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})
-(Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
-(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
-(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
-(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
-(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
-(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Bool",TyCls (Ty ["False","True"] []))
-(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"]))
-(TypeClass "Char",TyCls (Ty [] []))
-(TypeClass "Double",TyCls (Ty [] []))
-(TypeClass "Either",TyCls (Ty ["Left","Right"] []))
-(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))
-(TypeClass "Eq",TyCls (Cls ["==","/="]))
-(TypeClass "FilePath",TyCls (Syn 0 THelper))
-(TypeClass "Float",TyCls (Ty [] []))
-(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))
-(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))
-(TypeClass "Functor",TyCls (Cls ["fmap"]))
-(TypeClass "IO",TyCls (Ty [] []))
-(TypeClass "IOError",TyCls (Ty [] []))
-(TypeClass "Int",TyCls (Ty [] []))
-(TypeClass "Integer",TyCls (Ty [] []))
-(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"]))
-(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
-(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))
-(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"]))
-(TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))
-(TypeClass "Rational",TyCls (Syn 0 THelper))
-(TypeClass "Read",TyCls (Cls ["readsPrec","readList"]))
-(TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
-(TypeClass "Real",TyCls (Cls ["toRational"]))
-(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))
-(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))
-(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"]))
-(TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
-(TypeClass "String",TyCls (Ty [] []))
diff --git a/libhx/Random.hx b/libhx/Random.hx
deleted file mode 100644
--- a/libhx/Random.hx
+++ /dev/null
@@ -1,18 +0,0 @@
-module Random
-(Var "getStdGen",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getStdRandom",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "mkStdGen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "newStdGen",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "setStdGen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Random" "random",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Random" "randomIO",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Random" "randomR",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Random" "randomRIO",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Random" "randomRs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "Random" "randoms",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RandomGen" "genRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RandomGen" "next",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Method "RandomGen" "split",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Random",TyCls (Cls ["randomR","random","randomRs","randoms","randomRIO","randomIO"]))
-(TypeClass "RandomGen",TyCls (Cls ["genRange","next","split"]))
-(TypeClass "StdGen",TyCls (Ty [] []))
diff --git a/libhx/RandomBuiltin.hx b/libhx/RandomBuiltin.hx
deleted file mode 100644
--- a/libhx/RandomBuiltin.hx
+++ /dev/null
@@ -1,2 +0,0 @@
-module RandomBuiltin
-(TypeClass "StdGen", TyCls (Ty [] []))
diff --git a/libhx/Ratio.hx b/libhx/Ratio.hx
deleted file mode 100644
--- a/libhx/Ratio.hx
+++ /dev/null
@@ -1,7 +0,0 @@
-module Ratio
-(Var "%",Value {args = 2, fixity = L, priority = 7, letBound = True, traced = False})
-(Var "approxRational",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "denominator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "numerator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "Ratio",TyCls (Ty [":%"] []))
-(TypeClass "Rational",TyCls (Syn 0 THelper))
diff --git a/libhx/System.hx b/libhx/System.hx
deleted file mode 100644
--- a/libhx/System.hx
+++ /dev/null
@@ -1,10 +0,0 @@
-module System
-(Var "exitFailure",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "exitWith",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getArgs",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getEnv",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getProgName",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "system",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = True})
-(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = True})
-(TypeClass "ExitCode",TyCls (Ty ["ExitSuccess","ExitFailure"] []))
diff --git a/libhx/SystemBuiltin.hx b/libhx/SystemBuiltin.hx
deleted file mode 100644
--- a/libhx/SystemBuiltin.hx
+++ /dev/null
@@ -1,1 +0,0 @@
-module SystemBuiltin
diff --git a/libhx/SystemBuiltinTypes.hx b/libhx/SystemBuiltinTypes.hx
deleted file mode 100644
--- a/libhx/SystemBuiltinTypes.hx
+++ /dev/null
@@ -1,4 +0,0 @@
-module SystemBuiltinTypes
-(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = True})
-(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = True})
-(TypeClass "ExitCode",TyCls (Ty ["ExitSuccess","ExitFailure"] []))
diff --git a/libhx/Time.hx b/libhx/Time.hx
deleted file mode 100644
--- a/libhx/Time.hx
+++ /dev/null
@@ -1,54 +0,0 @@
-module Time
-(Var "addToClockTime",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "calendarTimeToString",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "diffClockTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "formatCalendarTime",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "getClockTime",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toCalendarTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toClockTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Var "toUTCTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "April",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "August",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "December",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "February",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "January",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "July",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "June",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "March",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "May",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "November",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "October",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "September",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "TimeDiff" "TimeDiff",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctIsDST",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctTZ",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctTZName",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctWDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctYDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "CalendarTime",TyCls (Ty ["CalendarTime"] ["ctYear","ctMonth","ctDay","ctHour","ctMin","ctSec","ctPicosec","ctWDay","ctYDay","ctTZName","ctTZ","ctIsDST"]))
-(TypeClass "ClockTime",TyCls (Ty [] []))
-(TypeClass "Day",TyCls (Ty ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] []))
-(TypeClass "Month",TyCls (Ty ["January","February","March","April","May","June","July","August","September","October","November","December"] []))
-(TypeClass "TimeDiff",TyCls (Ty ["TimeDiff"] ["tdYear","tdMonth","tdDay","tdHour","tdMin","tdSec","tdPicosec"]))
diff --git a/libhx/TimeBuiltin.hx b/libhx/TimeBuiltin.hx
deleted file mode 100644
--- a/libhx/TimeBuiltin.hx
+++ /dev/null
@@ -1,2 +0,0 @@
-module TimeBuiltin
-(TypeClass "ClockTime", TyCls (Ty [] []))
diff --git a/libhx/TimeBuiltinTypes.hx b/libhx/TimeBuiltinTypes.hx
deleted file mode 100644
--- a/libhx/TimeBuiltinTypes.hx
+++ /dev/null
@@ -1,45 +0,0 @@
-module TimeBuiltinTypes
-(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "April",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "August",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "December",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "February",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "January",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "July",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "June",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "March",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "May",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "November",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "October",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "Month" "September",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
-(Con Data "TimeDiff" "TimeDiff",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctIsDST",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctTZ",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctTZName",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctWDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctYDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "CalendarTime" "ctYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(Field "TimeDiff" "tdYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
-(TypeClass "CalendarTime",TyCls (Ty ["CalendarTime"] ["ctYear","ctMonth","ctDay","ctHour","ctMin","ctSec","ctPicosec","ctWDay","ctYDay","ctTZName","ctTZ","ctIsDST"]))
-(TypeClass "Day",TyCls (Ty ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] []))
-(TypeClass "Month",TyCls (Ty ["January","February","March","April","May","June","July","August","September","October","November","December"] []))
-(TypeClass "TimeDiff",TyCls (Ty ["TimeDiff"] ["tdYear","tdMonth","tdDay","tdHour","tdMin","tdSec","tdPicosec"]))
diff --git a/libraries/Array.hx b/libraries/Array.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Array.hx
@@ -0,0 +1,22 @@
+module Array
+(Var "!",Value {args = 1, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "//",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "accum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "accumArray",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "array",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "assocs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "bounds",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elems",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "indices",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ixmap",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "listArray",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "(7:8-7:9,Ix).inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "(7:8-7:9,Ix).index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "(7:8-7:9,Ix).range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "(7:8-7:9,Ix).rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Array",TyCls (Ty [] []))
+(TypeClass "Ix",TyCls (Cls ["range","index","inRange","rangeSize"]))
diff --git a/libraries/CPUTime.hs b/libraries/CPUTime.hs
--- a/libraries/CPUTime.hs
+++ b/libraries/CPUTime.hs
@@ -1,7 +1,7 @@
 module CPUTime ( getCPUTime, cpuTimePrecision ) where
 
 import PreludeBuiltinTypes
-import qualified TraceOrigSystem.CPUTime as TraceOrigCPUTime
+import qualified NotHat.System.CPUTime as NotHat.CPUTime
 
 foreign import haskell "CPUTime.getCPUTime"
  getCPUTime        :: IO Integer
diff --git a/libraries/CPUTime.hx b/libraries/CPUTime.hx
new file mode 100644
--- /dev/null
+++ b/libraries/CPUTime.hx
@@ -0,0 +1,3 @@
+module CPUTime
+(Var "cpuTimePrecision",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getCPUTime",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libraries/Char.hx b/libraries/Char.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Char.hx
@@ -0,0 +1,24 @@
+module Char
+(Var "chr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "digitToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intToDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lexLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ord",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Char",TyCls (Ty [] []))
+(TypeClass "String",TyCls (Ty [] []))
diff --git a/libraries/Complex.hx b/libraries/Complex.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Complex.hx
@@ -0,0 +1,11 @@
+module Complex
+(Var "cis",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "conjugate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "imagPart",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "magnitude",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mkPolar",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "phase",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "polar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "realPart",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Complex" ":+",Value {args = 2, fixity = None, priority = 6, letBound = True, traced = False})
+(TypeClass "Complex",TyCls (Ty [":+"] []))
diff --git a/libraries/Control/Monad.hs b/libraries/Control/Monad.hs
new file mode 100644
--- /dev/null
+++ b/libraries/Control/Monad.hs
@@ -0,0 +1,48 @@
+-- Haskell 2010 module reexports Haskell 98 module plus added functions
+
+module Control.Monad (  
+    Functor(fmap),  Monad((>>=), (>>), return, fail),  MonadPlus(mzero, mplus),  
+    mapM,  mapM_,  forM,  forM_,  sequence,  sequence_,  (=<<),  (>=>),  (<=<),  
+    forever,  void,  join,  msum,  filterM,  mapAndUnzipM,  zipWithM,  
+    zipWithM_,  foldM,  foldM_,  replicateM,  replicateM_,  guard,  when,  
+    unless,  liftM,  liftM2,  liftM3,  liftM4,  liftM5,  ap  
+  ) where
+
+import Monad
+
+-- | 'forM' is 'mapM' with its arguments flipped
+forM            :: Monad m => [a] -> (a -> m b) -> m [b]
+forM            = flip mapM
+
+-- | 'forM_' is 'mapM_' with its arguments flipped
+forM_           :: Monad m => [a] -> (a -> m b) -> m ()
+forM_           = flip mapM_
+
+-- | Left-to-right Kleisli composition of monads.
+(>=>)       :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
+f >=> g     = \x -> f x >>= g
+
+-- | Right-to-left Kleisli composition of monads. @('>=>')@, with the arguments flipped
+(<=<)       :: Monad m => (b -> m c) -> (a -> m b) -> (a -> m c)
+(<=<)       = flip (>=>)
+
+-- | @'forever' act@ repeats the action infinitely.
+forever     :: (Monad m) => m a -> m b
+forever a   = let a' = a >> a' in a'
+
+-- | @'void' value@ discards or ignores the result of evaluation, such as the return value of an 'IO' action.
+void :: Functor f => f a -> f ()
+void = fmap (const ())
+
+-- | Like 'foldM', but discards the result.
+foldM_            :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m ()
+foldM_ f a xs     = foldM f a xs >> return ()
+
+-- | @'replicateM' n act@ performs the action @n@ times,
+-- gathering the results.
+replicateM        :: (Monad m) => Int -> m a -> m [a]
+replicateM n x    = sequence (replicate n x)
+
+-- | Like 'replicateM', but discards the result.
+replicateM_       :: (Monad m) => Int -> m a -> m ()
+replicateM_ n x   = sequence_ (replicate n x)
diff --git a/libraries/Control/Monad.hx b/libraries/Control/Monad.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Control/Monad.hx
@@ -0,0 +1,41 @@
+module Control.Monad
+(Var "<=<",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
+(Var ">=>",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ap",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filterM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldM_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "forM",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "forM_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "forever",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "guard",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "join",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM2",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM3",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM4",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM5",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapAndUnzipM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "msum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicateM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicateM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unless",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "void",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "when",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWithM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWithM_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "MonadPlus" "mplus",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "MonadPlus" "mzero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Functor",TyCls (Cls ["fmap"]))
+(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
+(TypeClass "MonadPlus",TyCls (Cls ["mzero","mplus"]))
diff --git a/libraries/Data/Char.hs b/libraries/Data/Char.hs
new file mode 100644
--- /dev/null
+++ b/libraries/Data/Char.hs
@@ -0,0 +1,106 @@
+-- For Haskell 2010 re-export from Haskell 98 Prelude basic plus 
+-- additional type and functions
+
+module Data.Char (  
+    Char,  String,  isControl,  isSpace,  isLower,  isUpper,  isAlpha,  
+    isAlphaNum,  isPrint,  isDigit,  isOctDigit,  isHexDigit,  isLetter,  
+    isMark,  isNumber,  isPunctuation,  isSymbol,  isSeparator,  isAscii,  
+    isLatin1,  isAsciiUpper,  isAsciiLower,  
+    GeneralCategory(UppercaseLetter,  
+                    LowercaseLetter,  
+                    TitlecaseLetter,  
+                    ModifierLetter,  
+                    OtherLetter,  
+                    NonSpacingMark,  
+                    SpacingCombiningMark,  
+                    EnclosingMark,  
+                    DecimalNumber,  
+                    LetterNumber,  
+                    OtherNumber,  
+                    ConnectorPunctuation,  
+                    DashPunctuation,  
+                    OpenPunctuation,  
+                    ClosePunctuation,  
+                    InitialQuote,  
+                    FinalQuote,  
+                    OtherPunctuation,  
+                    MathSymbol,  
+                    CurrencySymbol,  
+                    ModifierSymbol,  
+                    OtherSymbol,  
+                    Space,  
+                    LineSeparator,  
+                    ParagraphSeparator,  
+                    Control,  
+                    Format,  
+                    Surrogate,  
+                    PrivateUse,  
+                    NotAssigned),  
+    generalCategory,  toUpper,  toLower,  toTitle,  digitToInt,  intToDigit,  
+    ord,  chr,  showLitChar,  lexLitChar,  readLitChar  
+  ) where
+
+import PreludeBasic
+import Ix
+import PreludeBuiltinTypes  -- (fromBool)
+import qualified NotHat.Data.Char  -- not to be transformed
+
+foreign import haskell "Data.Char.isLetter"
+  isLetter :: Char -> Bool
+foreign import haskell "Data.Char.isMark"
+  isMark :: Char -> Bool
+foreign import haskell "Data.Char.isNumber"
+  isNumber :: Char -> Bool
+foreign import haskell "Data.Char.isPunctuation"
+  isPunctuation :: Char -> Bool
+foreign import haskell "Data.Char.isSymbol"
+  isSymbol :: Char -> Bool
+foreign import haskell "Data.Char.isSeparator"
+  isSeparator :: Char -> Bool
+foreign import haskell "Data.Char.isAsciiUpper"
+  isAsciiUpper :: Char -> Bool
+foreign import haskell "Data.Char.isAsciiLower"
+  isAsciiLower :: Char -> Bool
+
+foreign import haskell "Data.Char.toTitle"
+  toTitle :: Char -> Char
+
+data GeneralCategory
+        = UppercaseLetter       -- ^ Lu: Letter, Uppercase
+        | LowercaseLetter       -- ^ Ll: Letter, Lowercase
+        | TitlecaseLetter       -- ^ Lt: Letter, Titlecase
+        | ModifierLetter        -- ^ Lm: Letter, Modifier
+        | OtherLetter           -- ^ Lo: Letter, Other
+        | NonSpacingMark        -- ^ Mn: Mark, Non-Spacing
+        | SpacingCombiningMark  -- ^ Mc: Mark, Spacing Combining
+        | EnclosingMark         -- ^ Me: Mark, Enclosing
+        | DecimalNumber         -- ^ Nd: Number, Decimal
+        | LetterNumber          -- ^ Nl: Number, Letter
+        | OtherNumber           -- ^ No: Number, Other
+        | ConnectorPunctuation  -- ^ Pc: Punctuation, Connector
+        | DashPunctuation       -- ^ Pd: Punctuation, Dash
+        | OpenPunctuation       -- ^ Ps: Punctuation, Open
+        | ClosePunctuation      -- ^ Pe: Punctuation, Close
+        | InitialQuote          -- ^ Pi: Punctuation, Initial quote
+        | FinalQuote            -- ^ Pf: Punctuation, Final quote
+        | OtherPunctuation      -- ^ Po: Punctuation, Other
+        | MathSymbol            -- ^ Sm: Symbol, Math
+        | CurrencySymbol        -- ^ Sc: Symbol, Currency
+        | ModifierSymbol        -- ^ Sk: Symbol, Modifier
+        | OtherSymbol           -- ^ So: Symbol, Other
+        | Space                 -- ^ Zs: Separator, Space
+        | LineSeparator         -- ^ Zl: Separator, Line
+        | ParagraphSeparator    -- ^ Zp: Separator, Paragraph
+        | Control               -- ^ Cc: Other, Control
+        | Format                -- ^ Cf: Other, Format
+        | Surrogate             -- ^ Cs: Other, Surrogate
+        | PrivateUse            -- ^ Co: Other, Private Use
+        | NotAssigned           -- ^ Cn: Other, Not Assigned
+        deriving (Eq, Ord, Enum, Read, Show, Bounded, Ix)
+
+foreign import haskell 
+  "(\\_ i -> Prelude.fromEnum (Data.Char.generalCategory (Prelude.toEnum i))) Prelude.True"
+  genCat :: Int -> Int
+
+generalCategory :: Char -> GeneralCategory
+generalCategory c = toEnum $ genCat $ ord c
diff --git a/libraries/Data/Char.hx b/libraries/Data/Char.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Data/Char.hx
@@ -0,0 +1,65 @@
+module Data.Char
+(Var "chr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "digitToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "generalCategory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intToDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAsciiLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAsciiUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLetter",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isMark",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isNumber",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPunctuation",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSeparator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSymbol",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lexLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ord",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toTitle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "ClosePunctuation",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "ConnectorPunctuation",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "Control",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "CurrencySymbol",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "DashPunctuation",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "DecimalNumber",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "EnclosingMark",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "FinalQuote",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "Format",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "InitialQuote",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "LetterNumber",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "LineSeparator",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "LowercaseLetter",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "MathSymbol",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "ModifierLetter",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "ModifierSymbol",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "NonSpacingMark",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "NotAssigned",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "OpenPunctuation",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "OtherLetter",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "OtherNumber",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "OtherPunctuation",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "OtherSymbol",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "ParagraphSeparator",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "PrivateUse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "Space",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "SpacingCombiningMark",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "Surrogate",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "TitlecaseLetter",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "GeneralCategory" "UppercaseLetter",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Char",TyCls (Ty [] []))
+(TypeClass "GeneralCategory",TyCls (Ty ["UppercaseLetter","LowercaseLetter","TitlecaseLetter","ModifierLetter","OtherLetter","NonSpacingMark","SpacingCombiningMark","EnclosingMark","DecimalNumber","LetterNumber","OtherNumber","ConnectorPunctuation","DashPunctuation","OpenPunctuation","ClosePunctuation","InitialQuote","FinalQuote","OtherPunctuation","MathSymbol","CurrencySymbol","ModifierSymbol","OtherSymbol","Space","LineSeparator","ParagraphSeparator","Control","Format","Surrogate","PrivateUse","NotAssigned"] []))
+(TypeClass "String",TyCls (Ty [] []))
diff --git a/libraries/Data/List.hs b/libraries/Data/List.hs
new file mode 100644
--- /dev/null
+++ b/libraries/Data/List.hs
@@ -0,0 +1,90 @@
+-- Haskell 2010 module by re-exporting Haskell 98 module and adding a bit
+
+module Data.List (  
+    (++),  head,  last,  tail,  init,  null,  length,  map,  reverse,  
+    intersperse,  intercalate,  transpose,  subsequences,  permutations,  
+    foldl,  foldl',  foldl1,  foldl1',  foldr,  foldr1,  concat,  concatMap,  
+    and,  or,  any,  all,  sum,  product,  maximum,  minimum,  scanl,  scanl1,  
+    scanr,  scanr1,  mapAccumL,  mapAccumR,  iterate,  repeat,  replicate,  
+    cycle,  unfoldr,  take,  drop,  splitAt,  takeWhile,  dropWhile,  span,  
+    break,  stripPrefix,  group,  inits,  tails,  isPrefixOf,  isSuffixOf,  
+    isInfixOf,  elem,  notElem,  lookup,  find,  filter,  partition,  (!!),  
+    elemIndex,  elemIndices,  findIndex,  findIndices,  zip,  zip3,  zip4,  
+    zip5,  zip6,  zip7,  zipWith,  zipWith3,  zipWith4,  zipWith5,  zipWith6,  
+    zipWith7,  unzip,  unzip3,  unzip4,  unzip5,  unzip6,  unzip7,  lines,  
+    words,  unlines,  unwords,  nub,  delete,  (\\),  union,  intersect,  sort,  
+    insert,  nubBy,  deleteBy,  deleteFirstsBy,  unionBy,  intersectBy,  
+    groupBy,  sortBy,  insertBy,  maximumBy,  minimumBy,  genericLength,  
+    genericTake,  genericDrop,  genericSplitAt,  genericIndex,  genericReplicate  
+  ) where
+
+import List
+
+-- | 'intercalate' @xs xss@ is equivalent to @('concat' ('intersperse' xs xss))@.
+-- It inserts the list @xs@ in between the lists in @xss@ and concatenates the
+-- result.
+intercalate :: [a] -> [[a]] -> [a]
+intercalate xs xss = concat (intersperse xs xss)
+
+-- | The 'subsequences' function returns the list of all subsequences of the argument.
+--
+-- > subsequences "abc" == ["","a","b","ab","c","ac","bc","abc"]
+subsequences            :: [a] -> [[a]]
+subsequences xs         =  [] : nonEmptySubsequences xs
+
+-- | The 'nonEmptySubsequences' function returns the list of all subsequences of the argument,
+--   except for the empty list.
+--
+-- > nonEmptySubsequences "abc" == ["a","b","ab","c","ac","bc","abc"]
+nonEmptySubsequences         :: [a] -> [[a]]
+nonEmptySubsequences []      =  []
+nonEmptySubsequences (x:xs)  =  [x] : foldr f [] (nonEmptySubsequences xs)
+  where f ys r = ys : (x : ys) : r
+
+-- | The 'permutations' function returns the list of all permutations of the argument.
+--
+-- > permutations "abc" == ["abc","bac","cba","bca","cab","acb"]
+permutations            :: [a] -> [[a]]
+permutations xs0        =  xs0 : perms xs0 []
+  where
+    perms []     _  = []
+    perms (t:ts) is = foldr interleave (perms ts (t:is)) (permutations is)
+      where interleave    xs     r = let (_,zs) = interleave' id xs r in zs
+            interleave' _ []     r = (ts, r)
+            interleave' f (y:ys) r = let (us,zs) = interleave' (f . (y:)) ys r
+                                     in  (y:us, f (t:y:us) : zs)
+
+-- | A strict version of 'foldl'.
+foldl'           :: (a -> b -> a) -> a -> [b] -> a
+foldl' f a []     = a
+foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
+
+-- | A strict version of 'foldl1'
+foldl1'                  :: (a -> a -> a) -> [a] -> a
+foldl1' f (x:xs)         =  foldl' f x xs
+foldl1' _ []             =  error "Prelude.foldl1': empty list"
+
+-- | The 'stripPrefix' function drops the given prefix from a list.
+-- It returns 'Nothing' if the list did not start with the prefix
+-- given, or 'Just' the list after the prefix, if it does.
+--
+-- > stripPrefix "foo" "foobar" == Just "bar"
+-- > stripPrefix "foo" "foo" == Just ""
+-- > stripPrefix "foo" "barfoo" == Nothing
+-- > stripPrefix "foo" "barfoobaz" == Nothing
+stripPrefix :: Eq a => [a] -> [a] -> Maybe [a]
+stripPrefix [] ys = Just ys
+stripPrefix (x:xs) (y:ys)
+ | x == y = stripPrefix xs ys
+stripPrefix _ _ = Nothing
+
+-- | The 'isInfixOf' function takes two lists and returns 'True'
+-- iff the first list is contained, wholly and intact,
+-- anywhere within the second.
+--
+-- Example:
+--
+-- >isInfixOf "Haskell" "I really like Haskell." == True
+-- >isInfixOf "Ial" "I really like Haskell." == False
+isInfixOf               :: (Eq a) => [a] -> [a] -> Bool
+isInfixOf needle haystack = any (isPrefixOf needle) (tails haystack)
diff --git a/libraries/Data/List.hx b/libraries/Data/List.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Data/List.hx
@@ -0,0 +1,112 @@
+module Data.List
+(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Var "\\\\",Value {args = 0, fixity = None, priority = 5, letBound = True, traced = False})
+(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "delete",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "deleteBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "deleteFirstsBy",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "elemIndex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elemIndices",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "find",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "findIndex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "findIndices",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl'",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl1'",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericDrop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericIndex",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericLength",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericReplicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericSplitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericTake",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "group",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "groupBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "inits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "insert",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "insertBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intercalate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intersect",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intersectBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intersperse",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isInfixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPrefixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSuffixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapAccumL",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapAccumR",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximumBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimumBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "nub",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "nubBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "partition",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "permutations",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sort",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sortBy",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "stripPrefix",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "subsequences",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tails",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "transpose",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unfoldr",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "union",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unionBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip4",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip5",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip6",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip7",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip4",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip5",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip6",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip7",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith4",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith5",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith6",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith7",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libraries/Data/Maybe.hs b/libraries/Data/Maybe.hs
new file mode 100644
--- /dev/null
+++ b/libraries/Data/Maybe.hs
@@ -0,0 +1,8 @@
+-- Haskell 2010 module just re-exports Haskell 98 module
+
+module Data.Maybe (  
+    Maybe(Nothing, Just),  maybe,  isJust,  isNothing,  fromJust,  fromMaybe,  
+    listToMaybe,  maybeToList,  catMaybes,  mapMaybe  
+  ) where
+
+import Maybe
diff --git a/libraries/Data/Maybe.hx b/libraries/Data/Maybe.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Data/Maybe.hx
@@ -0,0 +1,13 @@
+module Data.Maybe
+(Var "catMaybes",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromJust",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromMaybe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isJust",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isNothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "listToMaybe",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapMaybe",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybeToList",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
diff --git a/libraries/Directory.hs b/libraries/Directory.hs
--- a/libraries/Directory.hs
+++ b/libraries/Directory.hs
@@ -12,7 +12,7 @@
 import DirectoryBuiltinTypes
 import DirectoryBuiltin
 import TimeBuiltin
-import qualified TraceOrigSystem.Directory as TraceOrigDirectory
+import qualified NotHat.System.Directory as NotHat.Directory
 
 instance Eq   Permissions where 
   (==) = primPermissionsEq
diff --git a/libraries/Directory.hx b/libraries/Directory.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Directory.hx
@@ -0,0 +1,20 @@
+module Directory
+(Var "createDirectory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "doesDirectoryExist",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "doesFileExist",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getCurrentDirectory",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getDirectoryContents",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getModificationTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getPermissions",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "removeDirectory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "removeFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "renameDirectory",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "renameFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "setCurrentDirectory",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "setPermissions",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Permissions" "Permissions",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "executable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "readable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "searchable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "writable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Permissions",TyCls (Ty ["Permissions"] ["readable","writable","executable","searchable"]))
diff --git a/libraries/DirectoryBuiltin.hx b/libraries/DirectoryBuiltin.hx
new file mode 100644
--- /dev/null
+++ b/libraries/DirectoryBuiltin.hx
@@ -0,0 +1,1 @@
+module DirectoryBuiltin
diff --git a/libraries/DirectoryBuiltinTypes.hx b/libraries/DirectoryBuiltinTypes.hx
new file mode 100644
--- /dev/null
+++ b/libraries/DirectoryBuiltinTypes.hx
@@ -0,0 +1,7 @@
+module DirectoryBuiltinTypes
+(Con Data "Permissions" "Permissions",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "executable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "readable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "searchable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "Permissions" "writable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Permissions",TyCls (Ty ["Permissions"] ["readable","writable","executable","searchable"]))
diff --git a/libraries/IO.hs b/libraries/IO.hs
--- a/libraries/IO.hs
+++ b/libraries/IO.hs
@@ -24,9 +24,9 @@
 
 import Ix(Ix(range, index, inRange))
 import PreludeBuiltinTypes
-import TraceOrigSystem.IO(Handle,HandlePosn)
-import qualified TraceOrigSystem.IO as TraceOrigIO
-import qualified TraceOrigSystem.IO.Error as TraceOrigError
+import NotHat.System.IO(Handle,HandlePosn)
+import qualified NotHat.System.IO as NotHat.IO
+import qualified NotHat.System.IO.Error as NotHat.Error
 import IOBuiltinTypes
 import IOBuiltin
 
diff --git a/libraries/IO.hx b/libraries/IO.hx
new file mode 100644
--- /dev/null
+++ b/libraries/IO.hx
@@ -0,0 +1,78 @@
+module IO
+(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "bracket",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "bracket_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hClose",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hFileSize",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hFlush",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hGetBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hGetChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hGetContents",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hGetLine",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hGetPosn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hIsClosed",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hIsEOF",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hIsOpen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hIsReadable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hIsSeekable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hIsWritable",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hLookAhead",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hPrint",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hPutChar",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hPutStr",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hPutStrLn",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hReady",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hSeek",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hSetBuffering",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hSetPosn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "hWaitForInput",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioeGetErrorString",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioeGetFileName",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioeGetHandle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlreadyExistsError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlreadyInUseError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isDoesNotExistError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isEOF",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isEOFError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isFullError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isIllegalOperation",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPermissionError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isUserError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "openFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "stderr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "stdin",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "stdout",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "try",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "BufferMode" "BlockBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "BufferMode" "LineBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "BufferMode" "NoBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "ReadMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "ReadWriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "SeekMode" "RelativeSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "SeekMode" "SeekFromEnd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "BufferMode",TyCls (Ty ["NoBuffering","LineBuffering","BlockBuffering"] []))
+(TypeClass "FilePath",TyCls (Syn 0 THelper))
+(TypeClass "Handle",TyCls (Ty [] []))
+(TypeClass "HandlePosn",TyCls (Ty [] []))
+(TypeClass "IO",TyCls (Ty [] []))
+(TypeClass "IOError",TyCls (Ty [] []))
+(TypeClass "IOMode",TyCls (Ty ["ReadMode","WriteMode","AppendMode","ReadWriteMode"] []))
+(TypeClass "SeekMode",TyCls (Ty ["AbsoluteSeek","RelativeSeek","SeekFromEnd"] []))
diff --git a/libraries/IOBuiltin.hx b/libraries/IOBuiltin.hx
new file mode 100644
--- /dev/null
+++ b/libraries/IOBuiltin.hx
@@ -0,0 +1,3 @@
+module IOBuiltin
+(TypeClass "Handle", TyCls (Ty [] []))
+(TypeClass "HandlePosn", TyCls (Ty [] []))
diff --git a/libraries/IOBuiltinTypes.hx b/libraries/IOBuiltinTypes.hx
new file mode 100644
--- /dev/null
+++ b/libraries/IOBuiltinTypes.hx
@@ -0,0 +1,14 @@
+module IOBuiltinTypes
+(Con Data "BufferMode" "BlockBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "BufferMode" "LineBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "BufferMode" "NoBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "ReadMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "ReadWriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "SeekMode" "RelativeSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "SeekMode" "SeekFromEnd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "BufferMode",TyCls (Ty ["NoBuffering","LineBuffering","BlockBuffering"] []))
+(TypeClass "IOMode",TyCls (Ty ["ReadMode","WriteMode","AppendMode","ReadWriteMode"] []))
+(TypeClass "SeekMode",TyCls (Ty ["AbsoluteSeek","RelativeSeek","SeekFromEnd"] []))
diff --git a/libraries/Ix.hx b/libraries/Ix.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Ix.hx
@@ -0,0 +1,6 @@
+module Ix
+(Method "Ix" "inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ix" "rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Ix",TyCls (Cls ["range","index","inRange","rangeSize"]))
diff --git a/libraries/List.hx b/libraries/List.hx
new file mode 100644
--- /dev/null
+++ b/libraries/List.hx
@@ -0,0 +1,105 @@
+module List
+(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Var "\\\\",Value {args = 0, fixity = None, priority = 5, letBound = True, traced = False})
+(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "delete",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "deleteBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "deleteFirstsBy",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "elemIndex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elemIndices",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "find",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "findIndex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "findIndices",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericDrop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericIndex",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericLength",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericReplicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericSplitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "genericTake",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "group",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "groupBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "inits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "insert",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "insertBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intersect",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intersectBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intersperse",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPrefixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSuffixOf",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapAccumL",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapAccumR",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximumBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimumBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "nub",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "nubBy",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "partition",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sort",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sortBy",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tails",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "transpose",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unfoldr",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "union",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unionBy",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip4",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip5",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip6",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip7",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip4",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip5",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip6",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip7",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith4",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith5",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith6",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith7",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libraries/Locale.hx b/libraries/Locale.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Locale.hx
@@ -0,0 +1,11 @@
+module Locale
+(Var "defaultTimeLocale",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "TimeLocale" "TimeLocale",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "amPm",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "dateFmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "dateTimeFmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "months",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "time12Fmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "timeFmt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeLocale" "wDays",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "TimeLocale",TyCls (Ty ["TimeLocale"] ["wDays","months","amPm","dateTimeFmt","dateFmt","timeFmt","time12Fmt"]))
diff --git a/libraries/Maybe.hs b/libraries/Maybe.hs
--- a/libraries/Maybe.hs
+++ b/libraries/Maybe.hs
@@ -17,7 +17,7 @@
 
 fromJust               :: Maybe a -> a
 fromJust (Just a)      =  a
-fromJust Nothing       =  error "Maybe.fromJust: Nothing"
+fromJust Nothing       =  error "Data.Maybe.fromJust: Nothing"
 
 fromMaybe              :: a -> Maybe a -> a
 fromMaybe d Nothing    =  d
diff --git a/libraries/Maybe.hx b/libraries/Maybe.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Maybe.hx
@@ -0,0 +1,13 @@
+module Maybe
+(Var "catMaybes",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromJust",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromMaybe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isJust",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isNothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "listToMaybe",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapMaybe",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybeToList",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
diff --git a/libraries/Monad.hx b/libraries/Monad.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Monad.hx
@@ -0,0 +1,32 @@
+module Monad
+(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
+(Var "ap",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filterM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "guard",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "join",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM2",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM3",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM4",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "liftM5",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapAndUnzipM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "msum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unless",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "when",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWithM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWithM_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "MonadPlus" "mplus",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "MonadPlus" "mzero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Functor",TyCls (Cls ["fmap"]))
+(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
+(TypeClass "MonadPlus",TyCls (Cls ["mzero","mplus"]))
diff --git a/libraries/Numeric.hx b/libraries/Numeric.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Numeric.hx
@@ -0,0 +1,19 @@
+module Numeric
+(Var "floatToDigits",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromRat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lexDigits",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readDec",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readInt",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readSigned",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showEFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showFFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showFloat",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showGFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showInt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showIntAtBase",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showSigned",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
diff --git a/libraries/Prelude.hx b/libraries/Prelude.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Prelude.hx
@@ -0,0 +1,273 @@
+module Prelude
+(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "$",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})
+(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False})
+(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
+(Var "^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
+(Var "^^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
+(Var "_filter",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "_foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "asTypeOf",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "const",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "curry",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "either",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "even",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "flip",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromIntegral",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fst",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "gcd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lcm",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "not",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "odd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "otherwise",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "read",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reads",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "realToFrac",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showString",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "shows",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "snd",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "subtract",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "uncurry",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "until",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})
+(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})
+(Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
+(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
+(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "()",TyCls (Ty ["()"] []))
+(TypeClass "->",TyCls (Ty [] []))
+(TypeClass "Bool",TyCls (Ty ["False","True"] []))
+(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"]))
+(TypeClass "Char",TyCls (Ty [] []))
+(TypeClass "Double",TyCls (Ty [] []))
+(TypeClass "Either",TyCls (Ty ["Left","Right"] []))
+(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))
+(TypeClass "Eq",TyCls (Cls ["==","/="]))
+(TypeClass "FilePath",TyCls (Syn 0 THelper))
+(TypeClass "Float",TyCls (Ty [] []))
+(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))
+(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))
+(TypeClass "Functor",TyCls (Cls ["fmap"]))
+(TypeClass "IO",TyCls (Ty [] []))
+(TypeClass "IOError",TyCls (Ty [] []))
+(TypeClass "Int",TyCls (Ty [] []))
+(TypeClass "Integer",TyCls (Ty [] []))
+(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"]))
+(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
+(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
+(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))
+(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"]))
+(TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))
+(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))
+(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))
+(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))
+(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))
+(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))
+(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))
+(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))
+(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))
+(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))
+(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))
+(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))
+(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))
+(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))
+(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))
+(TypeClass "Rational",TyCls (Syn 0 THelper))
+(TypeClass "Read",TyCls (Cls ["readsPrec","readList"]))
+(TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
+(TypeClass "Real",TyCls (Cls ["toRational"]))
+(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))
+(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))
+(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"]))
+(TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
+(TypeClass "String",TyCls (Ty [] []))
+(TypeClass "[]",TyCls (Ty ["[]",":"] []))
diff --git a/libraries/PreludeBasic.hx b/libraries/PreludeBasic.hx
new file mode 100644
--- /dev/null
+++ b/libraries/PreludeBasic.hx
@@ -0,0 +1,597 @@
+module PreludeBasic
+(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "$",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "%",Value {args = 2, fixity = L, priority = 7, letBound = True, traced = False})
+(Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "(19:8-19:21,PreludeBuiltin).writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False})
+(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
+(Var "^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
+(Var "^^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
+(Var "_filter",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "_foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "alt",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "approxRational",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "asTypeOf",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "asciiTab",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "chr",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "const",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "curry",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "denominator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "digitToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "either",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "even",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "expt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "expts",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "flip",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "floatToDigits",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "formatRealFloat",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromIntegral",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromRat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromRat'",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fst",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "gcd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intEnumFromByTo",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "intToDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "integerLogBase",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lcm",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lexDigits",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lexLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lift",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maxExpt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minExpt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "nonnull",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "not",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "numerator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "numericEnumFrom",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "numericEnumFromThen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "numericEnumFromThenTo",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "numericEnumFromTo",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "odd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ord",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "otherwise",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "prec",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "protectEsc",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "read",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readDec",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readInt",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readSigned",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reads",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "realToFrac",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reduce",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "roundTo",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scaleRat",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showEFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showFFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showFloat",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showGFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showHex",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showInt",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showIntAtBase",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showLitChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showOct",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showSigned",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showString",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "shows",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "snd",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "subtract",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "thenAp",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "thenLex",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "uncurry",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "until",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "yield",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})
+(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "()" "(19:8-19:21,PreludeBuiltin).()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "(19:8-19:21,PreludeBuiltin).False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "(19:8-19:21,PreludeBuiltin).True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "FFFormat" "FFExponent",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "FFFormat" "FFFixed",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "FFFormat" "FFGeneric",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.10" "(19:8-19:21,PreludeBuiltin).Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.11" "(19:8-19:21,PreludeBuiltin).Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.12" "(19:8-19:21,PreludeBuiltin).Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.13" "(19:8-19:21,PreludeBuiltin).Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.14" "(19:8-19:21,PreludeBuiltin).Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.15" "(19:8-19:21,PreludeBuiltin).Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.2" "(19:8-19:21,PreludeBuiltin).Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.3" "(19:8-19:21,PreludeBuiltin).Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.4" "(19:8-19:21,PreludeBuiltin).Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.5" "(19:8-19:21,PreludeBuiltin).Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.6" "(19:8-19:21,PreludeBuiltin).Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.7" "(19:8-19:21,PreludeBuiltin).Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.8" "(19:8-19:21,PreludeBuiltin).Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.9" "(19:8-19:21,PreludeBuiltin).Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ratio" ":%",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "[]" "(19:8-19:21,PreludeBuiltin).:",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Con Data "[]" "(19:8-19:21,PreludeBuiltin).[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})
+(Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
+(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
+(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "()",TyCls (Ty ["()"] []))
+(TypeClass "->",TyCls (Ty [] []))
+(TypeClass "Bool",TyCls (Ty ["False","True"] []))
+(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"]))
+(TypeClass "Char",TyCls (Ty [] []))
+(TypeClass "Double",TyCls (Ty [] []))
+(TypeClass "Either",TyCls (Ty ["Left","Right"] []))
+(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))
+(TypeClass "Eq",TyCls (Cls ["==","/="]))
+(TypeClass "FFFormat",TyCls (Ty ["FFExponent","FFFixed","FFGeneric"] []))
+(TypeClass "FilePath",TyCls (Syn 0 THelper))
+(TypeClass "Float",TyCls (Ty [] []))
+(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))
+(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))
+(TypeClass "Functor",TyCls (Cls ["fmap"]))
+(TypeClass "IO",TyCls (Ty [] []))
+(TypeClass "IOError",TyCls (Ty [] []))
+(TypeClass "Int",TyCls (Ty [] []))
+(TypeClass "Integer",TyCls (Ty [] []))
+(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"]))
+(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
+(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
+(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))
+(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"]))
+(TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))
+(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))
+(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))
+(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))
+(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))
+(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))
+(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))
+(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))
+(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))
+(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))
+(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))
+(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))
+(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))
+(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))
+(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))
+(TypeClass "Ratio",TyCls (Ty [":%"] []))
+(TypeClass "Rational",TyCls (Syn 0 THelper))
+(TypeClass "Read",TyCls (Cls ["readsPrec","readList"]))
+(TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
+(TypeClass "Real",TyCls (Cls ["toRational"]))
+(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))
+(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))
+(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"]))
+(TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
+(TypeClass "String",TyCls (Ty [] []))
+(TypeClass "[]",TyCls (Ty ["[]",":"] []))
diff --git a/libraries/PreludeBuiltin.hs b/libraries/PreludeBuiltin.hs
--- a/libraries/PreludeBuiltin.hs
+++ b/libraries/PreludeBuiltin.hs
@@ -53,9 +53,9 @@
   ) where
 
 import PreludeBuiltinTypes
-import TraceOrigHat.Hat  -- for some primitive types
-import qualified TraceOrigPrelude  -- not to be transformed
-import qualified TraceOrigData.Char as TraceOrigChar  -- not to be transformed
+import NotHat.Hat.Hat  -- for some primitive types
+import qualified NotHat.Prelude  -- not to be transformed
+import qualified NotHat.Data.Char as NotHat.Char  -- not to be transformed
 
 -- types appearing here
 -- (->), String, Char, Bool, Int, Integer, Float, Double, (,), IO, IOError, ()
diff --git a/libraries/PreludeBuiltin.hx b/libraries/PreludeBuiltin.hx
new file mode 100644
--- /dev/null
+++ b/libraries/PreludeBuiltin.hx
@@ -0,0 +1,175 @@
+module PreludeBuiltin
+(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "()",TyCls (Ty ["()"] []))
+(TypeClass "->",TyCls (Ty [] []))
+(TypeClass "Bool",TyCls (Ty ["False","True"] []))
+(TypeClass "Char",TyCls (Ty [] []))
+(TypeClass "Double",TyCls (Ty [] []))
+(TypeClass "Float",TyCls (Ty [] []))
+(TypeClass "IO",TyCls (Ty [] []))
+(TypeClass "IOError",TyCls (Ty [] []))
+(TypeClass "Int",TyCls (Ty [] []))
+(TypeClass "Integer",TyCls (Ty [] []))
+(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))
+(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))
+(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))
+(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))
+(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))
+(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))
+(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))
+(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))
+(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))
+(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))
+(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))
+(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))
+(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))
+(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))
+(TypeClass "String",TyCls (Ty [] []))
+(TypeClass "[]",TyCls (Ty ["[]",":"] []))
diff --git a/libraries/PreludeBuiltinTypes.hx b/libraries/PreludeBuiltinTypes.hx
new file mode 100644
--- /dev/null
+++ b/libraries/PreludeBuiltinTypes.hx
@@ -0,0 +1,48 @@
+module TPreludeBuiltinTypes
+(TypeClass "IO", TyCls (Ty [] []))
+(TypeClass "IOError", TyCls (Ty [] []))
+(TypeClass "Double", TyCls (Ty [] []))
+(TypeClass "Float", TyCls (Ty [] []))
+(TypeClass "Integer", TyCls (Ty [] []))
+(TypeClass "Int", TyCls (Ty [] []))
+(TypeClass "Char", TyCls (Ty [] []))
+(TypeClass "->", TyCls (Ty [] []))
+(TypeClass "String", TyCls (Ty [] []))
+(TypeClass "[]", TyCls (Ty ["[]",":"] []))
+(TypeClass "Bool", TyCls (Ty ["False","True"] []))
+(TypeClass "()", TyCls (Ty ["()"] []))
+(TypeClass "Prelude.2", TyCls (Ty ["Prelude.2"] []))
+(TypeClass "Prelude.3", TyCls (Ty ["Prelude.3"] []))
+(TypeClass "Prelude.4", TyCls (Ty ["Prelude.4"] []))
+(TypeClass "Prelude.5", TyCls (Ty ["Prelude.5"] []))
+(TypeClass "Prelude.6", TyCls (Ty ["Prelude.6"] []))
+(TypeClass "Prelude.7", TyCls (Ty ["Prelude.7"] []))
+(TypeClass "Prelude.8", TyCls (Ty ["Prelude.8"] []))
+(TypeClass "Prelude.9", TyCls (Ty ["Prelude.9"] []))
+(TypeClass "Prelude.10", TyCls (Ty ["Prelude.10"] []))
+(TypeClass "Prelude.11", TyCls (Ty ["Prelude.11"] []))
+(TypeClass "Prelude.12", TyCls (Ty ["Prelude.12"] []))
+(TypeClass "Prelude.13", TyCls (Ty ["Prelude.13"] []))
+(TypeClass "Prelude.14", TyCls (Ty ["Prelude.14"] []))
+(TypeClass "Prelude.15", TyCls (Ty ["Prelude.15"] []))
+(Con Data "[]" ":",Value{args=2,fixity=R,priority=5,letBound=True,traced=False})
+(Con Data "[]" "[]",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Bool" "False",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Bool" "True",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "()" "()",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.2" "Prelude.2",Value{args=2,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.3" "Prelude.3",Value{args=3,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.4" "Prelude.4",Value{args=4,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.5" "Prelude.5",Value{args=5,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.6" "Prelude.6",Value{args=6,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.7" "Prelude.7",Value{args=7,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.8" "Prelude.8",Value{args=8,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.9" "Prelude.9",Value{args=9,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.10" "Prelude.10",Value{args=10,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.11" "Prelude.11",Value{args=11,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.12" "Prelude.12",Value{args=12,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.13" "Prelude.13",Value{args=13,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.14" "Prelude.14",Value{args=14,fixity=Def,priority=9,letBound=True,traced=False})
+(Con Data "Prelude.15" "Prelude.15",Value{args=15,fixity=Def,priority=9,letBound=True,traced=False})
+(Var "error",Value{args=1,fixity=Def,priority=9,letBound=True,traced=False})
+(Var "undefined",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
diff --git a/libraries/PreludeReal.hx b/libraries/PreludeReal.hx
new file mode 100644
--- /dev/null
+++ b/libraries/PreludeReal.hx
@@ -0,0 +1,239 @@
+module Prelude
+(Var "!!",Value {args = 2, fixity = L, priority = 9, letBound = True, traced = False})
+(Var "$",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})
+(Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})
+(Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False})
+(Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})
+(Var "^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
+(Var "^^",Value {args = 2, fixity = R, priority = 8, letBound = True, traced = False})
+(Var "_filter",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "_foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "all",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "and",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "any",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "asTypeOf",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "break",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "concatMap",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "const",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "curry",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "cycle",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "drop",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "dropWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "either",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "elem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "even",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "filter",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "flip",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "foldr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fromIntegral",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "fst",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "gcd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "interact",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "iterate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "last",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lcm",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "length",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lex",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lines",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "lookup",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "map",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mapM_",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maximum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "maybe",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "minimum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "not",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "notElem",Value {args = 1, fixity = None, priority = 4, letBound = True, traced = False})
+(Var "null",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "odd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "or",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "otherwise",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "print",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "product",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStr",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "putStrLn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "read",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readIO",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readLn",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "readParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reads",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "realToFrac",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "repeat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "replicate",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "reverse",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanl1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "scanr1",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})
+(Var "sequence",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sequence_",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showParen",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "showString",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "shows",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "snd",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "span",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "splitAt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "subtract",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "sum",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "tail",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "take",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "takeWhile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "uncurry",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unlines",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "until",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unwords",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "unzip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "words",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zip3",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})
+(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})
+(Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})
+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})
+(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
+(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})
+(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})
+(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Bool",TyCls (Ty ["False","True"] []))
+(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"]))
+(TypeClass "Char",TyCls (Ty [] []))
+(TypeClass "Double",TyCls (Ty [] []))
+(TypeClass "Either",TyCls (Ty ["Left","Right"] []))
+(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))
+(TypeClass "Eq",TyCls (Cls ["==","/="]))
+(TypeClass "FilePath",TyCls (Syn 0 THelper))
+(TypeClass "Float",TyCls (Ty [] []))
+(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))
+(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))
+(TypeClass "Functor",TyCls (Cls ["fmap"]))
+(TypeClass "IO",TyCls (Ty [] []))
+(TypeClass "IOError",TyCls (Ty [] []))
+(TypeClass "Int",TyCls (Ty [] []))
+(TypeClass "Integer",TyCls (Ty [] []))
+(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"]))
+(TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))
+(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))
+(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))
+(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"]))
+(TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))
+(TypeClass "Rational",TyCls (Syn 0 THelper))
+(TypeClass "Read",TyCls (Cls ["readsPrec","readList"]))
+(TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
+(TypeClass "Real",TyCls (Cls ["toRational"]))
+(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))
+(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))
+(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"]))
+(TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))
+(TypeClass "String",TyCls (Ty [] []))
diff --git a/libraries/Random.hs b/libraries/Random.hs
--- a/libraries/Random.hs
+++ b/libraries/Random.hs
@@ -10,7 +10,7 @@
 
 import PreludeBuiltinTypes
 import RandomBuiltin
-import qualified TraceOrigSystem.Random as TraceOrigRandom
+import qualified NotHat.System.Random as NotHat.Random
 import Char
 
 ---------------- The RandomGen class ------------------------
diff --git a/libraries/Random.hx b/libraries/Random.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Random.hx
@@ -0,0 +1,18 @@
+module Random
+(Var "getStdGen",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getStdRandom",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "mkStdGen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "newStdGen",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "setStdGen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Random" "random",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Random" "randomIO",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Random" "randomR",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Random" "randomRIO",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Random" "randomRs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "Random" "randoms",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RandomGen" "genRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RandomGen" "next",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Method "RandomGen" "split",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Random",TyCls (Cls ["randomR","random","randomRs","randoms","randomRIO","randomIO"]))
+(TypeClass "RandomGen",TyCls (Cls ["genRange","next","split"]))
+(TypeClass "StdGen",TyCls (Ty [] []))
diff --git a/libraries/RandomBuiltin.hx b/libraries/RandomBuiltin.hx
new file mode 100644
--- /dev/null
+++ b/libraries/RandomBuiltin.hx
@@ -0,0 +1,2 @@
+module RandomBuiltin
+(TypeClass "StdGen", TyCls (Ty [] []))
diff --git a/libraries/Ratio.hx b/libraries/Ratio.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Ratio.hx
@@ -0,0 +1,7 @@
+module Ratio
+(Var "%",Value {args = 2, fixity = L, priority = 7, letBound = True, traced = False})
+(Var "approxRational",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "denominator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "numerator",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "Ratio",TyCls (Ty [":%"] []))
+(TypeClass "Rational",TyCls (Syn 0 THelper))
diff --git a/libraries/System.hs b/libraries/System.hs
--- a/libraries/System.hs
+++ b/libraries/System.hs
@@ -6,9 +6,9 @@
 import PreludeBuiltinTypes
 import SystemBuiltinTypes
 import SystemBuiltin
-import qualified TraceOrigSystem.Cmd as TraceOrigCmd
-import qualified TraceOrigSystem.Environment as TraceOrigEnvironment
-import qualified TraceOrigSystem.Exit as TraceOrigExit
+import qualified NotHat.System.Cmd as NotHat.Cmd
+import qualified NotHat.System.Environment as NotHat.Environment
+import qualified NotHat.System.Exit as NotHat.Exit
 
 foreign import haskell "Environment.getArgs"
  getArgs :: IO [String]
diff --git a/libraries/System.hx b/libraries/System.hx
new file mode 100644
--- /dev/null
+++ b/libraries/System.hx
@@ -0,0 +1,10 @@
+module System
+(Var "exitFailure",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "exitWith",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getArgs",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getEnv",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getProgName",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "system",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = True})
+(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = True})
+(TypeClass "ExitCode",TyCls (Ty ["ExitSuccess","ExitFailure"] []))
diff --git a/libraries/SystemBuiltin.hx b/libraries/SystemBuiltin.hx
new file mode 100644
--- /dev/null
+++ b/libraries/SystemBuiltin.hx
@@ -0,0 +1,1 @@
+module SystemBuiltin
diff --git a/libraries/SystemBuiltinTypes.hx b/libraries/SystemBuiltinTypes.hx
new file mode 100644
--- /dev/null
+++ b/libraries/SystemBuiltinTypes.hx
@@ -0,0 +1,4 @@
+module SystemBuiltinTypes
+(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = True})
+(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = True})
+(TypeClass "ExitCode",TyCls (Ty ["ExitSuccess","ExitFailure"] []))
diff --git a/libraries/Time.hs b/libraries/Time.hs
--- a/libraries/Time.hs
+++ b/libraries/Time.hs
@@ -20,7 +20,7 @@
 import PreludeBuiltinTypes
 import TimeBuiltinTypes
 import TimeBuiltin
-import qualified TraceOrigSystem.Time as TraceOrigTime
+import qualified NotHat.System.Time as NotHat.Time
 
 -- data ClockTime = ...                    -- Implementation-dependent
 
diff --git a/libraries/Time.hx b/libraries/Time.hx
new file mode 100644
--- /dev/null
+++ b/libraries/Time.hx
@@ -0,0 +1,54 @@
+module Time
+(Var "addToClockTime",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "calendarTimeToString",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "diffClockTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "formatCalendarTime",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "getClockTime",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toCalendarTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toClockTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Var "toUTCTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "April",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "August",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "December",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "February",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "January",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "July",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "June",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "March",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "May",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "November",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "October",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "September",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "TimeDiff" "TimeDiff",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctIsDST",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctTZ",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctTZName",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctWDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctYDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "CalendarTime",TyCls (Ty ["CalendarTime"] ["ctYear","ctMonth","ctDay","ctHour","ctMin","ctSec","ctPicosec","ctWDay","ctYDay","ctTZName","ctTZ","ctIsDST"]))
+(TypeClass "ClockTime",TyCls (Ty [] []))
+(TypeClass "Day",TyCls (Ty ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] []))
+(TypeClass "Month",TyCls (Ty ["January","February","March","April","May","June","July","August","September","October","November","December"] []))
+(TypeClass "TimeDiff",TyCls (Ty ["TimeDiff"] ["tdYear","tdMonth","tdDay","tdHour","tdMin","tdSec","tdPicosec"]))
diff --git a/libraries/TimeBuiltin.hx b/libraries/TimeBuiltin.hx
new file mode 100644
--- /dev/null
+++ b/libraries/TimeBuiltin.hx
@@ -0,0 +1,2 @@
+module TimeBuiltin
+(TypeClass "ClockTime", TyCls (Ty [] []))
diff --git a/libraries/TimeBuiltinTypes.hx b/libraries/TimeBuiltinTypes.hx
new file mode 100644
--- /dev/null
+++ b/libraries/TimeBuiltinTypes.hx
@@ -0,0 +1,45 @@
+module TimeBuiltinTypes
+(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "April",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "August",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "December",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "February",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "January",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "July",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "June",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "March",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "May",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "November",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "October",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "Month" "September",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})
+(Con Data "TimeDiff" "TimeDiff",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctIsDST",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctTZ",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctTZName",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctWDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctYDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "CalendarTime" "ctYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdMin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdMonth",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdPicosec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdSec",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(Field "TimeDiff" "tdYear",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
+(TypeClass "CalendarTime",TyCls (Ty ["CalendarTime"] ["ctYear","ctMonth","ctDay","ctHour","ctMin","ctSec","ctPicosec","ctWDay","ctYDay","ctTZName","ctTZ","ctIsDST"]))
+(TypeClass "Day",TyCls (Ty ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] []))
+(TypeClass "Month",TyCls (Ty ["January","February","March","April","May","June","July","August","September","October","November","December"] []))
+(TypeClass "TimeDiff",TyCls (Ty ["TimeDiff"] ["tdYear","tdMonth","tdDay","tdHour","tdMin","tdSec","tdPicosec"]))
diff --git a/tools/CommonUI.hs b/tools/CommonUI.hs
--- a/tools/CommonUI.hs
+++ b/tools/CommonUI.hs
@@ -29,7 +29,7 @@
 hatDelta f n = "xterm -e hat-delta "++f++" "++show (int n)++" &"
 
 hatDetect :: FilePath -> FileNode -> String
-hatDetect f n = "xterm -e hat-delta --detect "++f++" "++show (int n)++" &"
+hatDetect f n = "xterm -e hat-detect "++f++" "++show (int n)++" &"
 
 hatTrail :: FilePath -> FileNode -> String
 hatTrail f n  = "xterm -e hat-trail "++f++" -remote "++show (int n)++" &"
diff --git a/tools/Delta.hs b/tools/Delta.hs
new file mode 100644
--- /dev/null
+++ b/tools/Delta.hs
@@ -0,0 +1,354 @@
+{-# LANGUAGE EmptyDataDecls #-}
+
+-- Low-level routines specifically for hat-delta / hat-detect.
+module Delta
+  ( findMain, findMainCall, edtNextChild
+  , doObserve, doTrail, doDelta, doDetect, doAnim, doExplore, doView
+  , identifyBug, identifyCycle
+  , questionText, showHeuristic
+  , ParentSet, newParentSet
+  , anySuspect
+  , DetectCommand(..), toCommand
+  , DeltaOption(..), HeuristicMode(..), HeuristicBool(..)
+  ) where
+
+import Data.Char          (toLower,ord)
+import System.Cmd         (system)
+import System.Environment (getArgs,getProgName)
+import System.Exit        (exitWith,ExitCode(..))
+import Control.Monad      (when)
+
+import LowLevel (FileNode(..),nil,unevaluated,SimpleNodeType(..)
+                ,simpleNodeType,NodeType(..),nodeType,getSrcRef)
+import Foreign.Ptr        (Ptr)
+import System.IO.Unsafe   (unsafePerformIO)
+import Numeric  (showHex)
+import CommonUI (Options(..),hatAnim,hatDelta,hatDetect,hatExplore
+                ,hatTrail,hatObserve,hatView)
+import Explore  (Location(..),getLocation, getDefLocation,redexParent
+                ,Coord(..))
+import HighlightStyle (Highlight(..),Colour(..),highlight,getTerminalSize)
+import PrettyLibHighlight
+                (text, simple)
+import SExp     (prettySExp)
+import ADT      (ADT(..))
+import NodeExp  (NodeExp(..),fullEval,flatEval,getNode,nodeExp2SExp
+                ,removeResultCycles,nodeExpForNode,removeNonResultCycles
+                ,fullEvalText,flatEvalText,children,finalResult,children)
+import SrcRef	(readSrcRef)
+import Slice    (Slice(..),sliceStartLine,sliceEndLine,sliceFile,offsetSlice
+                ,highlightSlice,makeSlice,srcRef2Slice,RangeOrd(..))
+
+data DeltaOption = Version
+                 | ShowHelp
+                 | QuickCheckMode
+                 | SliceDepth Int
+                 | DepthLimit Int
+                 | DisableADTCompression
+                 | NoSliceValue Float
+                 | Heuristic HeuristicMode
+                 | TreeType String
+                   deriving Eq
+
+data HeuristicMode = ValueHeuristic Float
+                   | Correct
+                   | Incorrect
+                   | Add HeuristicMode HeuristicMode
+                   | Negate HeuristicMode
+                   | Multiply HeuristicMode HeuristicMode
+                   | Invert HeuristicMode
+                   | If HeuristicBool HeuristicMode HeuristicMode
+                     deriving (Eq,Show,Read)
+data HeuristicBool = TrueBool
+                   | FalseBool
+                   | Not HeuristicBool
+                   | And HeuristicBool HeuristicBool
+                   | Or HeuristicBool HeuristicBool
+                   | Eq HeuristicMode HeuristicMode
+                   | Gt HeuristicMode HeuristicMode
+                   | Lt HeuristicMode HeuristicMode deriving (Eq,Show,Read)
+
+data PS
+type ParentSet = Ptr PS
+
+data DetectCommand = Yes
+                   | No
+--                   | Maybe
+--                   | MaybeYes
+--                   | MaybeNo
+                   | Quit
+                   | Help
+                   | Observe
+                   | Trail
+                   | Detect
+                   | Delta
+                   | Anim
+                   | Explore
+                   | View
+                   | Split
+                   | ShowADT
+                   | ShowADTHs
+                   | Children
+                   | Set String String
+                   | Get String
+                   | Undo
+                   | Unknown
+
+toCommand :: String -> DetectCommand
+toCommand cmd =
+  case map toLower $ dropWhile (== ':') $ takeWhile (/=' ') cmd of
+    "yes"      -> Yes
+    "y"        -> Yes
+    "true"     -> Yes
+    "t"        -> Yes
+    "no"       -> No
+    "n"        -> No
+    "false"    -> No
+    "f"        -> No
+    "quit"     -> Quit
+    "q"        -> Quit
+    "help"     -> Help
+    "h"        -> Help
+    "?"        -> Help
+    "u"        -> Undo
+    "undo"     -> Undo
+    "observe"  -> Observe
+    "trail"    -> Trail
+    "detect"   -> Detect
+    "delta"    -> Delta
+    "anim"     -> Anim
+    "animate"  -> Anim
+    "explore"  -> Explore
+    "source"   -> View
+    "split"    -> Split
+    "show"     -> ShowADT
+    "adt"      -> ShowADT
+    "adth"     -> ShowADTHs
+    "children" -> Children
+    "set"      -> Set var val
+                  where
+                    setText = dropWhile (==' ') $ dropWhile (/=' ') cmd
+                    var = map toLower $ takeWhile (/=' ') setText
+                    val = dropWhile (==' ') $ dropWhile (/=' ') setText
+    "get"      -> Get var
+                  where var = dropWhile (==' ') $ dropWhile (/=' ') cmd
+    _          -> Unknown
+
+doAnim :: NodeExp -> FilePath -> IO ()
+doAnim exp f =
+  do errCode <- system $ hatAnim f (getNode exp)
+     checkOK errCode "hat-anim"
+
+doDelta :: NodeExp -> FilePath -> IO ()
+doDelta exp f =
+  do errCode <- system $ hatDelta f (getNode exp)
+     checkOK errCode "hat-delta"
+
+doDetect :: NodeExp -> FilePath -> IO ()
+doDetect exp f =
+  do errCode <- system $ hatDetect f (getNode exp)
+     checkOK errCode "hat-detect"
+
+doExplore :: NodeExp -> FilePath -> IO ()
+doExplore exp f =
+  do errCode <- system $ hatExplore f (getNode exp)
+     checkOK errCode "hat-explore"
+
+doObserve :: NodeExp -> FilePath -> IO ()
+doObserve exp f =
+  do errCode <- system $ hatObserve f (flatEvalText 200 exp)
+     checkOK errCode "hat-observe"
+
+doTrail :: NodeExp -> FilePath -> IO ()
+doTrail exp f = do errCode <- system $ hatTrail f (getNode exp)
+                   checkOK errCode "hat-trail"
+
+doView :: NodeExp -> IO ()
+doView exp = do errCode <-   system
+                           $ hatView
+                           $ readSrcRef
+                           $ getSrcRef
+                           $ getNode exp
+                checkOK errCode "hat-view"
+
+identifyBug :: [DeltaOption] -> NodeExp -> String
+identifyBug opts exp
+  =    highlight [Background Red] "Bug identified:"
+    ++ "\n  "
+    ++ (showLocation opts exp)
+
+identifyCycle :: [DeltaOption] -> [ADT] -> String
+identifyCycle opts l
+  =    highlight [Background Red] "Bug identified in cycling functions:"
+    ++ "\n  "
+    ++ concatMap (  (++ "\n---\n")
+                  . (showLocation opts)
+                  . (\(Branch _ n _ _) -> n))
+                 l
+
+showLocation :: [DeltaOption] -> NodeExp -> String
+showLocation opts exp =
+     show file ++ ":"
+  ++ show functionStartOffset ++ "-"
+  ++ show functionEndOffset ++ ":\n"
+  ++ (if not(SliceDepth 0 `elem` opts) && maybeSlice /= Nothing then
+        (highlightSlice offsetSubFunctionSlice $
+                        getFileRange functionStartOffset functionEndOffset file)
+      else getFileRange functionStartOffset functionEndOffset file)
+--  ++ "\nSlice: " ++ show subFunctionSlice
+--  ++ "\nNode: " ++ (show $ getNode exp)
+  where
+    (file,(Location {begin=Coord{row=functionStartOffset}
+                    ,end=Coord{row=functionEndOffset}})) =
+      getDefLocation (getNode exp)
+    subFunctionSlice = (\(Just x) -> x) $ maybeSlice
+    offsetSubFunctionSlice = offsetSlice (-functionStartOffset,0) 0
+                                         subFunctionSlice
+    maybeSlice = makeSlice 1 exp
+
+getFileRange :: Int -> Int -> FilePath -> String
+getFileRange s e =   unlines
+                   . map ("  "++) 
+                   . drop (s - 1) 
+                   . take e
+                   . lines
+                   . unsafePerformIO
+                   . readFile
+
+showHeuristic :: (NodeExp -> Float)
+              -> NodeExp
+              -> String
+              -> String
+showHeuristic f e s =
+  s ++ show (f e)
+
+indent :: Int -> String -> String
+indent n = tail . concatMap (("\n"++) . ((take n $ repeat ' ')++)) . lines
+
+padTo :: Int -> String -> String
+padTo n s = pad n (take n s)
+            where
+              pad n s = take (n - (length s)) (repeat ' ') ++ s
+
+questionText :: Int ->
+                (NodeExp -> String) ->
+                (NodeExp -> String) ->
+                NodeExp ->
+                String
+questionText w f g exp =
+     mainQText w f g exp
+  ++ withinText f exp
+  where
+    withinText :: (NodeExp -> String) ->
+                  NodeExp ->
+                  String
+    withinText f exp =
+      if    isQuestionable parent
+         && pF == eF
+         && (   (pSt <= eSt && pEnd > eEnd)
+             || (pSt < eSt && pEnd >= eEnd))
+        then let pExp = (  removeNonResultCycles
+                         $ removeResultCycles
+                         $ nodeExpForNode parent)
+             in    "\nWithin:\n"
+                ++ f pExp
+                ++ withinText f pExp
+        else ""
+      where
+        parent = redexParent $ getNode exp
+        (pF,(Location {begin=Coord{row=pSt}
+                      ,end=Coord{row=pEnd}})) = getDefLocation parent
+        (eF,(Location {begin=Coord{row=eSt}
+                      ,end=Coord{row=eEnd}})) = getDefLocation (getNode exp)
+    subFunctionSlice = (\(Just x) -> x) $ makeSlice 1 exp
+
+isQuestionable :: FileNode -> Bool
+isQuestionable x = x > FileNode 5 && 
+                   (t == ExpApp || t == ExpConstUse || t == ExpConstDef)
+                   where t = nodeType x
+
+mainQText :: Int ->
+           (NodeExp -> String) ->
+           (NodeExp -> String) ->
+           NodeExp ->
+           String
+mainQText w f g exp =
+  if    numLines lhs == 1
+     && numLines rhs == 1
+     && (width lhs + width rhs) < (w - 4)
+    then lhs ++ " = " ++ rhs
+    else lhs ++ "\n=\n" ++ rhs
+  where
+    lhs = f exp
+    rhs = g exp
+    numLines :: String -> Int
+    numLines = length . lines
+    width :: String -> Int
+    width = maximum . (map length) . lines . stripHidden
+    stripHidden :: String -> String
+    stripHidden [] = []
+    stripHidden (x:xs) = if ord x == 27 then stripToM xs
+                                        else x:stripHidden xs
+                         where
+                           stripToM [] = []
+                           stripToM ('m':xs) = stripHidden xs
+                           stripToM (x:xs) = stripToM xs
+
+removeEscaping :: String -> String
+removeEscaping [] = []
+removeEscaping ('\ESC':xs) = removeEscaping $ tail $ dropWhile (/= 'm') xs
+removeEscaping (x:xs) = x:(removeEscaping xs)
+
+checkOK errcode s = when (errcode/=ExitSuccess)
+                         (putStrLn ("ERROR: Unable to start "++s++"."))
+
+file :: NodeExp -> FilePath
+file = takeWhile (/= '.') . fst . getDefLocation . getNode
+
+foreign import ccall "parentset.h" newParentSet    :: FileNode -> IO ParentSet
+foreign import ccall "parentset.h" freeParentSet   :: ParentSet -> IO ()
+foreign import ccall "parentset.h" extendParentSet :: ParentSet -> FileNode -> IO ()
+
+foreign import ccall "detectutils.h" findMainUse   :: Bool -> IO FileNode
+foreign import ccall "detectutils.h" nextChild     :: ParentSet -> IO FileNode
+foreign import ccall "detectutils.h" anySuspect    :: FileNode -> IO Bool
+
+findMain :: IO FileNode
+findMain = findMainUse False
+
+findMainCall :: IO FileNode
+findMainCall = findMainUse True
+
+-- For debugging:
+-- foreign import ccall showParentSet   :: ParentSet -> IO ()
+
+edtNextChild :: ParentSet -> IO FileNode
+edtNextChild ps = do
+ -- candidate ps
+    c <- candidate ps
+    b <- anySuspect c
+    if c==LowLevel.nil || b then return c else edtNextChild ps
+  where
+  candidate ps = do
+    c <- nextChild ps
+ -- putStrLn ("edtNextChild: "++showHex (int c) "")
+    if c==LowLevel.unevaluated	-- actually EOF
+      then return LowLevel.nil
+      else if c==LowLevel.nil
+      then candidate ps
+      else case simpleNodeType c of
+        NodeConditional -> do extendParentSet ps c
+                              --showParentSet ps
+                              candidate ps
+        NodeIdentifier  -> candidate ps
+        NodeBasicValue  -> candidate ps
+        NodeCAF         -> return c
+        NodeApplication -> case nodeType c of
+                             ExpApp      -> return c
+                             ExpValueApp -> candidate ps
+        NodeSugar       -> return c
+        NodeSpecial     -> case nodeType c of
+                             ExpProjection -> return c
+                             _             -> do extendParentSet ps c
+                                                 candidate ps
+        _               -> error "unexpected node in edtNextChild"
diff --git a/tools/Detect.hs b/tools/Detect.hs
--- a/tools/Detect.hs
+++ b/tools/Detect.hs
@@ -2,322 +2,29 @@
 
 -- Low-level routines specifically for hat-detect.
 module Detect
-  ( findMain, findMainCall, edtNextChild
-  , doObserve, doTrail, doDelta, doDetect, doAnim, doExplore, doView
-  , identifyBug, identifyCycle
-  , questionText, showHeuristic
+  ( findMain, edtNextChild
   , ParentSet, newParentSet
   , anySuspect
-  , DetectCommand(..), toCommand
-  , DeltaOption(..), HeuristicMode(..), HeuristicBool(..)
   ) where
 
-import Data.Char          (toLower,ord)
-import System.Cmd         (system)
-import System.Environment (getArgs,getProgName)
-import System.Exit        (exitWith,ExitCode(..))
-import Control.Monad      (when)
-
-import LowLevel (FileNode(..),nil,unevaluated,SimpleNodeType(..)
-                ,simpleNodeType,NodeType(..),nodeType,getSrcRef)
-import Foreign.Ptr        (Ptr)
-import System.IO.Unsafe   (unsafePerformIO)
-import Numeric  (showHex)
-import CommonUI (Options(..),hatAnim,hatDelta,hatDetect,hatExplore
-                ,hatTrail,hatObserve,hatView)
-import Explore  (Location(..),getLocation, getDefLocation,redexParent
-                ,Coord(..))
-import HighlightStyle (Highlight(..),Colour(..),highlight,getTerminalSize)
-import PrettyLibHighlight
-                (text, simple)
-import SExp     (prettySExp)
-import ADT      (ADT(..))
-import NodeExp  (NodeExp(..),fullEval,flatEval,getNode,nodeExp2SExp
-                ,removeResultCycles,nodeExpForNode,removeNonResultCycles
-                ,fullEvalText,flatEvalText,children,finalResult,children)
-import SrcRef	(readSrcRef)
-import Slice    (Slice(..),sliceStartLine,sliceEndLine,sliceFile,offsetSlice
-                ,highlightSlice,makeSlice,srcRef2Slice,RangeOrd(..))
-
-data DeltaOption = Version
-                 | ShowHelp
-                 | QuickCheckMode
-                 | SliceDepth Int
-                 | DepthLimit Int
-                 | DisableADTCompression
-                 | NoSliceValue Float
-                 | Heuristic HeuristicMode
-                 | TreeType String
-                   deriving Eq
-
-data HeuristicMode = ValueHeuristic Float
-                   | Correct
-                   | Incorrect
-                   | Add HeuristicMode HeuristicMode
-                   | Negate HeuristicMode
-                   | Multiply HeuristicMode HeuristicMode
-                   | Invert HeuristicMode
-                   | If HeuristicBool HeuristicMode HeuristicMode
-                     deriving (Eq,Show,Read)
-data HeuristicBool = TrueBool
-                   | FalseBool
-                   | Not HeuristicBool
-                   | And HeuristicBool HeuristicBool
-                   | Or HeuristicBool HeuristicBool
-                   | Eq HeuristicMode HeuristicMode
-                   | Gt HeuristicMode HeuristicMode
-                   | Lt HeuristicMode HeuristicMode deriving (Eq,Show,Read)
+import LowLevel (FileNode(..),nil,unevaluated
+                ,SimpleNodeType(..),simpleNodeType,NodeType(..),nodeType)
+import Numeric (showHex)
+import Foreign.Ptr
 
 data PS
 type ParentSet = Ptr PS
 
-data DetectCommand = Yes
-                   | No
---                   | Maybe
---                   | MaybeYes
---                   | MaybeNo
-                   | Quit
-                   | Help
-                   | Observe
-                   | Trail
-                   | Detect
-                   | Delta
-                   | Anim
-                   | Explore
-                   | View
-                   | Split
-                   | ShowADT
-                   | ShowADTHs
-                   | Children
-                   | Set String String
-                   | Get String
-                   | Undo
-                   | Unknown
-
-toCommand :: String -> DetectCommand
-toCommand cmd =
-  case map toLower $ dropWhile (== ':') $ takeWhile (/=' ') cmd of
-    "yes"      -> Yes
-    "y"        -> Yes
-    "true"     -> Yes
-    "t"        -> Yes
-    "no"       -> No
-    "n"        -> No
-    "false"    -> No
-    "f"        -> No
-    "quit"     -> Quit
-    "q"        -> Quit
-    "help"     -> Help
-    "h"        -> Help
-    "?"        -> Help
-    "u"        -> Undo
-    "undo"     -> Undo
-    "observe"  -> Observe
-    "trail"    -> Trail
-    "detect"   -> Detect
-    "delta"    -> Delta
-    "anim"     -> Anim
-    "animate"  -> Anim
-    "explore"  -> Explore
-    "source"   -> View
-    "split"    -> Split
-    "show"     -> ShowADT
-    "adt"      -> ShowADT
-    "adth"     -> ShowADTHs
-    "children" -> Children
-    "set"      -> Set var val
-                  where
-                    setText = dropWhile (==' ') $ dropWhile (/=' ') cmd
-                    var = map toLower $ takeWhile (/=' ') setText
-                    val = dropWhile (==' ') $ dropWhile (/=' ') setText
-    "get"      -> Get var
-                  where var = dropWhile (==' ') $ dropWhile (/=' ') cmd
-    _          -> Unknown
-
-doAnim :: NodeExp -> FilePath -> IO ()
-doAnim exp f =
-  do errCode <- system $ hatAnim f (getNode exp)
-     checkOK errCode "hat-anim"
-
-doDelta :: NodeExp -> FilePath -> IO ()
-doDelta exp f =
-  do errCode <- system $ hatDelta f (getNode exp)
-     checkOK errCode "hat-delta"
-
-doDetect :: NodeExp -> FilePath -> IO ()
-doDetect exp f =
-  do errCode <- system $ hatDetect f (getNode exp)
-     checkOK errCode "hat-detect"
-
-doExplore :: NodeExp -> FilePath -> IO ()
-doExplore exp f =
-  do errCode <- system $ hatExplore f (getNode exp)
-     checkOK errCode "hat-explore"
-
-doObserve :: NodeExp -> FilePath -> IO ()
-doObserve exp f =
-  do errCode <- system $ hatObserve f (flatEvalText 200 exp)
-     checkOK errCode "hat-observe"
-
-doTrail :: NodeExp -> FilePath -> IO ()
-doTrail exp f = do errCode <- system $ hatTrail f (getNode exp)
-                   checkOK errCode "hat-trail"
-
-doView :: NodeExp -> IO ()
-doView exp = do errCode <-   system
-                           $ hatView
-                           $ readSrcRef
-                           $ getSrcRef
-                           $ getNode exp
-                checkOK errCode "hat-view"
-
-identifyBug :: [DeltaOption] -> NodeExp -> String
-identifyBug opts exp
-  =    highlight [Background Red] "Bug identified:"
-    ++ "\n  "
-    ++ (showLocation opts exp)
-
-identifyCycle :: [DeltaOption] -> [ADT] -> String
-identifyCycle opts l
-  =    highlight [Background Red] "Bug identified in cycling functions:"
-    ++ "\n  "
-    ++ concatMap (  (++ "\n---\n")
-                  . (showLocation opts)
-                  . (\(Branch _ n _ _) -> n))
-                 l
-
-showLocation :: [DeltaOption] -> NodeExp -> String
-showLocation opts exp =
-     show file ++ ":"
-  ++ show functionStartOffset ++ "-"
-  ++ show functionEndOffset ++ ":\n"
-  ++ (if not(SliceDepth 0 `elem` opts) && maybeSlice /= Nothing then
-        (highlightSlice offsetSubFunctionSlice $
-                        getFileRange functionStartOffset functionEndOffset file)
-      else getFileRange functionStartOffset functionEndOffset file)
---  ++ "\nSlice: " ++ show subFunctionSlice
---  ++ "\nNode: " ++ (show $ getNode exp)
-  where
-    (file,(Location {begin=Coord{row=functionStartOffset}
-                    ,end=Coord{row=functionEndOffset}})) =
-      getDefLocation (getNode exp)
-    subFunctionSlice = (\(Just x) -> x) $ maybeSlice
-    offsetSubFunctionSlice = offsetSlice (-functionStartOffset,0) 0
-                                         subFunctionSlice
-    maybeSlice = makeSlice 1 exp
-
-getFileRange :: Int -> Int -> FilePath -> String
-getFileRange s e =   unlines
-                   . map ("  "++) 
-                   . drop (s - 1) 
-                   . take e
-                   . lines
-                   . unsafePerformIO
-                   . readFile
-
-showHeuristic :: (NodeExp -> Float)
-              -> NodeExp
-              -> String
-              -> String
-showHeuristic f e s =
-  s ++ show (f e)
-
-indent :: Int -> String -> String
-indent n = tail . concatMap (("\n"++) . ((take n $ repeat ' ')++)) . lines
-
-padTo :: Int -> String -> String
-padTo n s = pad n (take n s)
-            where
-              pad n s = take (n - (length s)) (repeat ' ') ++ s
-
-questionText :: Int ->
-                (NodeExp -> String) ->
-                (NodeExp -> String) ->
-                NodeExp ->
-                String
-questionText w f g exp =
-     mainQText w f g exp
-  ++ withinText f exp
-  where
-    withinText :: (NodeExp -> String) ->
-                  NodeExp ->
-                  String
-    withinText f exp =
-      if    isQuestionable parent
-         && pF == eF
-         && (   (pSt <= eSt && pEnd > eEnd)
-             || (pSt < eSt && pEnd >= eEnd))
-        then let pExp = (  removeNonResultCycles
-                         $ removeResultCycles
-                         $ nodeExpForNode parent)
-             in    "\nWithin:\n"
-                ++ f pExp
-                ++ withinText f pExp
-        else ""
-      where
-        parent = redexParent $ getNode exp
-        (pF,(Location {begin=Coord{row=pSt}
-                      ,end=Coord{row=pEnd}})) = getDefLocation parent
-        (eF,(Location {begin=Coord{row=eSt}
-                      ,end=Coord{row=eEnd}})) = getDefLocation (getNode exp)
-    subFunctionSlice = (\(Just x) -> x) $ makeSlice 1 exp
-
-isQuestionable :: FileNode -> Bool
-isQuestionable x = x > FileNode 5 && 
-                   (t == ExpApp || t == ExpConstUse || t == ExpConstDef)
-                   where t = nodeType x
-
-mainQText :: Int ->
-           (NodeExp -> String) ->
-           (NodeExp -> String) ->
-           NodeExp ->
-           String
-mainQText w f g exp =
-  if    numLines lhs == 1
-     && numLines rhs == 1
-     && (width lhs + width rhs) < (w - 4)
-    then lhs ++ " = " ++ rhs
-    else lhs ++ "\n=\n" ++ rhs
-  where
-    lhs = f exp
-    rhs = g exp
-    numLines :: String -> Int
-    numLines = length . lines
-    width :: String -> Int
-    width = maximum . (map length) . lines . stripHidden
-    stripHidden :: String -> String
-    stripHidden [] = []
-    stripHidden (x:xs) = if ord x == 27 then stripToM xs
-                                        else x:stripHidden xs
-                         where
-                           stripToM [] = []
-                           stripToM ('m':xs) = stripHidden xs
-                           stripToM (x:xs) = stripToM xs
-
-removeEscaping :: String -> String
-removeEscaping [] = []
-removeEscaping ('\ESC':xs) = removeEscaping $ tail $ dropWhile (/= 'm') xs
-removeEscaping (x:xs) = x:(removeEscaping xs)
-
-checkOK errcode s = when (errcode/=ExitSuccess)
-                         (putStrLn ("ERROR: Unable to start "++s++"."))
-
-file :: NodeExp -> FilePath
-file = takeWhile (/= '.') . fst . getDefLocation . getNode
-
 foreign import ccall "parentset.h" newParentSet    :: FileNode -> IO ParentSet
 foreign import ccall "parentset.h" freeParentSet   :: ParentSet -> IO ()
 foreign import ccall "parentset.h" extendParentSet :: ParentSet -> FileNode -> IO ()
 
 foreign import ccall "detectutils.h" findMainUse   :: Bool -> IO FileNode
-foreign import ccall "detectutils.h" nextChild     :: ParentSet -> IO FileNode
-foreign import ccall "detectutils.h" anySuspect    :: FileNode -> IO Bool
+foreign import ccall "detectutils.h" nextChild       :: ParentSet -> IO FileNode
+foreign import ccall "detectutils.h" anySuspect      :: FileNode -> IO Bool
 
 findMain :: IO FileNode
 findMain = findMainUse False
-
-findMainCall :: IO FileNode
-findMainCall = findMainUse True
 
 -- For debugging:
 -- foreign import ccall showParentSet   :: ParentSet -> IO ()
diff --git a/tools/EDT.hs b/tools/EDT.hs
--- a/tools/EDT.hs
+++ b/tools/EDT.hs
@@ -7,7 +7,7 @@
 
 import NodeExp (NodeExp(..),children,flatEvalText,fullEvalText)
 import ADT     (ADT(..))
-import Detect  (questionText)
+import Delta   (questionText)
 
 -- | Creates an evaluation dependancy tree
 buildEDT :: NodeExp -- ^ The trace to gather an EDT from -
diff --git a/tools/FDT.hs b/tools/FDT.hs
--- a/tools/FDT.hs
+++ b/tools/FDT.hs
@@ -15,7 +15,7 @@
 import Explore  (redexParent)
 import LowLevel (FileNode(..))
 import ADT      (ADT(..))
-import Detect   (questionText)
+import Delta    (questionText)
 
 
 type IndexEntry = (FileNode,ADT)
diff --git a/tools/HatDelta.hs b/tools/HatDelta.hs
--- a/tools/HatDelta.hs
+++ b/tools/HatDelta.hs
@@ -15,7 +15,7 @@
 
 -- Hat Imports
 import CommonUI       (Options(..))
-import Detect         (doAnim,doDelta,doDetect,doExplore,doObserve,doTrail
+import Delta          (doAnim,doDelta,doDetect,doExplore,doObserve,doTrail
                       ,doView,findMain,DetectCommand(..),toCommand,identifyBug
                       ,identifyCycle,findMain,DeltaOption(..),HeuristicMode(..)
                       ,HeuristicBool(..),DetectCommand(..),toCommand
diff --git a/tools/HatDetect.hs b/tools/HatDetect.hs
--- a/tools/HatDetect.hs
+++ b/tools/HatDetect.hs
@@ -1,51 +1,547 @@
-module Main where
-
--- System Imports
-import System.IO     (stdin,stdout,stderr,hPutStrLn)
-import System.Cmd    (system)
+import LowLevel		(FileNode(..),nil,hatVersionNumber,openHatFile
+			,getSrcRef,getDefnRef)
+import qualified SrcRef           (SrcRef(..), readSrcRef)
+import SExp		(prettyEquation)
+import TExp		(TExp,linearise)
+import HighlightStyle	(highlight,Highlight(..),Colour(..),getTerminalSize)
+import Foreign.C.String (withCString)
+import Numeric          (showHex)
+import System.IO.Unsafe (unsafePerformIO)
+import Detect		(findMain,edtNextChild,ParentSet,newParentSet,anySuspect)
+import CmdLine		(initialize,cmdline)
+import CommonUI		(hatObserve,hatTrail,hatAnim,hatView,shortHelpText
+			,Options(..),initialOptions,Keep(..)
+			,OptionCmd(..),optionCmd,onOff,number,safeReadInt
+			,optionsUpdate,showOption,showOnOff)
+import Data.Maybe
 import System.Environment (getArgs,getProgName)
-import System.Exit   (exitWith,ExitCode(..))
-import Control.Monad (when)
-import Data.List     (isSuffixOf)
+import System.Exit      (exitWith,ExitCode(..))
+import System.Cmd    (system)
+import Control.Monad    (when)
+import Data.List        (isPrefixOf,isSuffixOf,intersperse)
+import Data.Char        (isDigit,digitToInt,toLower,isSpace)
+import System.IO        (hFlush,stdout,hSetBuffering,BufferMode(..))
+import System.Directory (doesFileExist)
 
-import CommonUI      (Options(..),hatDetect)
-import Detect        (findMain)
-import LowLevel      (openHatFile)
-import Foreign.C.String (withCString)
 
-main = do args    <- System.Environment.getArgs
-          prog    <- System.Environment.getProgName
-          modName <- case args of
-                       ("-v":_) -> do hPutStrLn stdout versionString
-                                      exitWith ExitSuccess
-                       (f:_)    -> return f
-                       _        -> do hPutStrLn stderr (usage "no root module")
-                                      exitWith (ExitFailure 1)
-          withCString prog (\p-> withCString (hatFile modName) (openHatFile p))
-          main <- findMain
-          errCode <- system $ hatDetect (hatFile modName) main
-          checkOK errCode "hat-delta"
+{-
+Issues to resolve:
+  The 'memoise' option is really the same as Filter Unique ?
+  Should the :observe command take the current equation, a numbered eqn,
+  or a string query?
+  Should the :detect command exist at all (only for orthogonality)?
+  Should the :trail command take an equation number, or the current eqn?
+-}
 
-checkOK errcode s = when (errcode/=ExitSuccess)
-                         (putStrLn ("ERROR: Unable to start "++s++"."))
+-----------------------------------------------------------------------
+-- type for state of session
+data State = State
+	{ filename    :: FilePath	-- .hat file name
+	, treePath    :: [ParentSet]	-- path to here through EDT (head=here)
+	, currentNode :: FileNode	-- location of current equation
+--	, children    :: [FileNode]	-- current EDT children
+--	, recentNodes :: [(FileNode, LinExpr, Bool)] -- already considered nodes
+	, trusted     :: [FileNode]	-- trusted fun-identifiers
+	, postponed   :: [(Int,FileNode)]-- postponed questions
+	, questnumber :: Int		-- current question number
+	, screenWidth :: Int		-- for pretty-printing
+	, options     :: Options	-- user-configurable display options
+	, memoMode    :: Bool		-- memoizeMode
+	, reconsider  :: Bool		-- True when reconsidering a
+	}				--   postponed question
+initialState :: FilePath -> ParentSet -> State
+initialState file start = State
+	{ filename = file
+	, treePath = [start]
+	, currentNode = LowLevel.nil
+--	, children = [start]
+--	, recentNodes = []
+	, trusted = []
+	, postponed = []
+	, questnumber = 1
+	, screenWidth = 80
+	, options = initialOptions
+	, memoMode = True
+	, reconsider = False
+	}
 
-progName :: String
-progName = "hat-detect"
+setState :: Mode -> State -> State
+setState (O o)       state = state {options=optionsUpdate o (options state)}
+setState (Memoise b) state = state {memoMode=b}
 
-version :: Float
-version = 1.0
+showState :: Mode -> State -> String
+showState (O o)       state = showOption o (options state)
+showState (Memoise _) state = "  "++ highlight [Underscore] "memoise"
+                              ++ showOnOff (memoMode state)
+                              ++ "remember previous answers"
 
-versionString :: String
-versionString = progName ++ " version: " ++ (show version) ++ "\n" ++
-                "(c) 2005 Thomas Davie\n"
 
-usage :: String -> String
-usage err = progName ++ ": " ++ err ++ "\n" ++
-            "usage: " ++ progName ++ " [MODULE]\n"
+-----------------------------------------------------------------------
+main = do
+    hSetBuffering stdout NoBuffering
+    arguments <- System.Environment.getArgs
+    let numArgs = length arguments
+    when (numArgs < 1) (do putStrLn cmdlineHelp
+                           exitWith (ExitFailure 1))
+    putStrLn ("\n        hat-detect "++hatVersionNumber
+             ++" ("++shortHelpText++")\n")
+    (width,_) <- getTerminalSize
+    CmdLine.initialize	-- for readline functionality
+    let hatFile = rectify (arguments!!0)
+    prog <- System.Environment.getProgName
+    withCString prog (\p-> withCString hatFile (openHatFile p))
+    case numArgs of
+      1 -> do mainNode <- findMain
+              if mainNode == LowLevel.nil
+                then error "Bad file format! \"Main.main\" could not be found!"
+                else do mainPS <- newParentSet mainNode
+                        askQuestion mainNode mainPS
+                                    (initialState hatFile mainPS)
+                                                           { screenWidth=width }
+      2 -> case safeReadInt 0 (arguments!!1) of
+             0 -> do putStrLn cmdlineHelp
+                     exitWith (ExitFailure 1)
+             a -> do startPS <- newParentSet (FileNode a)
+                     askQuestion (FileNode a) startPS
+                                 (initialState hatFile startPS)
+                                               { screenWidth=width }
+                     putStrLn (highlight [Foreground Blue] "Press return.")
+                     _ <- getLine
+                     return ()
+      _ -> do putStrLn cmdlineHelp
+              exitWith (ExitFailure 1)
+    putStrLn (highlight [Foreground Blue] "Done.")
+  where
+    rectify :: FilePath -> FilePath
+    rectify f | ".hat" `isSuffixOf` f = f
+              | otherwise = f ++ ".hat"
 
-hatFile :: FilePath -> FilePath
-hatFile = (flip rectify) ".hat"
+-----------------------------------------------------------------------
 
-rectify :: FilePath -> String -> FilePath
-rectify f ext | ext `isSuffixOf` f = f
-              | otherwise = f ++ ext
+
+
+-- Add new node to the list of already-seen nodes.  List holds node, linear
+-- representation of it, and the value of the users answer (Yes=True, No=False)
+addToRecentNodes :: [(FileNode,[TExp],Bool)] -> FileNode -> Bool
+                    -> [(FileNode,[TExp],Bool)]
+
+addToRecentNodes recentNodes node answerYes =
+ {- (node, linearise (toHatExpressionTree 100 node), answerYes)
+    :  -}
+    recentNodes
+
+-- check whether node is less general than an earlier given answer
+memoizeCheck :: [(FileNode,[TExp],Bool)] -> FileNode -> Maybe Bool
+memoizeCheck recentNodes node =
+    memoizeCheck' recentNodes [] {-(linearise (toHatExpressionTree 100 node))-}
+  where
+    memoizeCheck' [] _ = Nothing
+ -- memoizeCheck' ((_,expr2,answer):recentNodes) expr1 =
+ --     if compareExpr expr1 expr2 then Just answer
+ --     else memoizeCheck' recentNodes expr1
+
+-- The main interactive loop
+interactive :: FileNode -> ParentSet -> State -> IO ()
+interactive node ps state = do
+--  node = parent of current question, ps = complete trail of parents
+    cmd <- getCommand "hat-detect> "
+    doCommand cmd node ps state
+
+askQuestion :: FileNode -> ParentSet -> State -> IO ()
+askQuestion node ps state = do
+    c <- edtNextChild ps -- (head (treePath state))
+ -- t <- anySuspect c
+    if c==LowLevel.nil
+      then do putStrLn ("bug found at "++showHex (int node) "")
+              putStrLn (prettyEquation "    " ""
+                                       (screenWidth state)
+                                       (options state)
+                                       node)
+              return ()
+      else do putStrLn (prettyEquation (show (questnumber state)++"  ")
+                                       "" -- (showHex (int c) (" "++show t))
+                                       (screenWidth state)
+                                       (options state)
+                                       c)
+              interactive node ps state { currentNode = c
+					, questnumber = questnumber state +1 }
+
+{-
+interactive :: State -> IO (Bool,Int,State)
+interactive state
+    | null (children state) && null (postponed state) =
+        -- nothing else to do
+        return (True,0,state)
+interactive state
+    | null (children state) && not (null (postponed state)) =
+        -- take one postponed question as new current question
+        interactive state {children=[node]
+                          ,questnumber=qn
+                          ,postponed=tail (postponed state)
+                          ,reconsider=False
+                          }
+    where (qn,node) = head (postponed state)
+interactive state | not (null (children state)) =
+  let node = head (children state) -- ask about the next remaining EDT child
+      answer = memoizeCheck (recentNodes state) node in
+  if node  `elem`  map (\(a,_,_)->a) (recentNodes state)
+      || (memoMode state && isJust answer)
+  then if fromJust answer -- don't ask about identical(!) node in memoizemode
+       then doCommand (Answer Yes) state -- pretend user answered "YES"
+       else doCommand (Answer No)  state -- pretend user answered "NO"
+  else if hatLeftmost node `elem` trusted state
+       then doCommand (Answer Yes) state -- pretend user answered "YES"
+       else do when (reconsider state) (putStrLn "reconsider: ")
+               putStr (prettyEquation (show (questnumber state)++" ") ("? ")
+                                      (screenWidth state)
+                                      (options state)
+                                      node)
+               hFlush stdout
+               cmd <- getCommand "hat-detect> "
+               doCommand cmd state
+-}
+
+
+doCommand :: Cmd -> FileNode -> ParentSet -> State -> IO ()
+
+doCommand Quit n ps state = return ()
+doCommand (Help s) n ps state =
+     do interactiveHelp (dropWhile isSpace s)
+        interactive n ps state
+doCommand Status n ps state =
+     do mapM_ (\m-> putStrLn (showState m state))
+              [ O (Uneval True), O (Strings True), O (Lists True)
+              , O (Qualify True), O (Equations True), Memoise True
+              , O (CutOff 0), O (Filter All) ]
+        interactive n ps state
+doCommand (Set mode) n ps state =
+     do	let state' = setState mode state
+        putStrLn (showState mode state')
+        interactive n ps state'
+----
+{-
+doCommand Children n ps state =
+     do putStrLn ("children = "++show (children state))
+        interactive n ps state
+doCommand Trust n ps state = -- user defined function trusting
+     do let child = head (children state)
+            trustFun = hatLeftmost child
+        putStrLn (showExpression trustFun "   Ok, \""
+                  ++ "\" is trusted from now on.")
+        (b,q,state') <- interactive n ps state
+				{recentNodes = addToRecentNodes
+                                                   (recentNodes state)
+                                                   child True
+				,trusted = trustFun:trusted state
+				,questnumber = questnumber state + 1
+				,reconsider = False
+				}
+        if q/=questnumber state then return (b,q,state')
+          else interactive n ps state { options = options state'
+                                   , memoMode = memoMode state'
+                                   , reconsider = False
+                                   }
+-}
+doCommand Untrust n ps state =
+     do putStrLn "Ok, all functions are untrusted now."
+        interactive n ps state {trusted=[]}
+
+---- answering the question: yes, no, ?yes, or ?no
+doCommand (Answer Yes) n ps state =
+    askQuestion n ps state	-- look for next sibling
+doCommand (Answer No) n ps state = do
+    let c = currentNode state
+    p <- newParentSet c		-- descend into this subtree
+    askQuestion c p state {treePath=(p:treePath state)}
+{-
+doCommand (Answer Yes) n ps state =
+     do let child = head (children state)
+        (b,q,state') <- interactive n ps state
+				{ children = tail (children state)
+				, recentNodes = addToRecentNodes
+							(recentNodes state)
+							child True
+				, questnumber = questnumber state + 1
+				, reconsider = False
+				}
+        if q/=questnumber state then return (b,q,state')
+	  else interactive n ps state { options = state'
+                                   , memoMode = memoMode state'
+                                   , reconsider = False
+                                   }
+doCommand (Answer QueryYes) n ps state =
+     do let child = head (children state)
+        (b,q,state') <- interactive n ps state
+				{ children  = tail (children state)
+				, postponed = postponed state ++
+						[(questnumber state,child)]
+				, questnumber = questnumber state + 1
+				, reconsider = False
+				}
+        if q/=questnumber state then return (b,q,state')
+	  else interactive n state ps { options = options state'
+                                   , memoMode = memoMode state'
+                                   , reconsider = False
+                                   }
+doCommand (Answer No) n ps state =
+     do let child = head (children state)
+	    newchildren = edtChildren child
+        (b,q,state') <- interactive n ps state
+				{ children = newchildren
+				, recentNodes = addToRecentNodes
+							(recentNodes state)
+							child False
+				, postponed = []
+				, questnumber = questnumber state + 1
+				, reconsider = False
+				}
+        if q==questnumber state then
+	       interactive n ps state { options = options state'
+                                   , memoMode = memoMode state'
+                                   , reconsider = False
+                                   }
+          else if b && q==0 then
+             do let lmo = hatLeftmost child
+		    src = if isInvalidNode lmo then HatNoSourceRef
+                                               else hatSourceRef lmo
+                putStrLn ("\nErroneous reduction:\n"
+		          ++ highlight [Foreground Blue]
+                                       (prettyEquation "" ""
+                                                (screenWidth state)
+                                                (options state)
+                                                child)
+                          ++ showExpression lmo
+                                  "\nBug found within the body of function: \""
+                          ++ "\"\n"
+		          ++ "line "++show (row src)++", column "
+			  ++ show (column src)
+			  ++ " in module \"" ++ moduleName src
+			  ++ "\", file: \"" ++ moduleFile src ++"\"")
+		putStr ("\n:q to quit, any other key to go back to question "
+                        ++ show (questnumber state) ++": ")
+		cmd <- getCommand "hat-detect> "
+		case cmd of
+                    Quit -> return (False,-1,state')
+                    _    -> interactive state
+	  else return (b,q,state')
+
+doCommand (Answer QueryNo) n ps state | not (reconsider state) =
+     do let child = head (children state)
+	    newchildren = edtChildren child
+        (b,q,state') <- interactive n ps state
+				{ children = newchildren
+				, recentNodes = addToRecentNodes
+							(recentNodes state)
+							child False
+				, postponed = []
+				, questnumber = questnumber state + 1
+				, reconsider = False
+				}
+        if q==questnumber state then
+	       interactive n ps state { options = options state'
+                                   , memoMode = memoMode state'
+                                   , reconsider = False
+                                   }
+          else if b && q==0 then
+	              interactive n ps state { options = options state'
+                                          , trusted = trusted state'
+                                          , memoMode = memoMode state'
+                                          , reconsider = True
+                                          }
+	  else return (b,q,state')
+doCommand (Answer QueryNo) n ps state | reconsider state =
+     do putStrLn ("The question has already been deferred once.\n\
+                  \You must answer it now with y/y?/n ")
+        interactive n ps state
+doCommand (AskQuestion q) n ps state =
+        if q>0 && q<questnumber state then
+	     return (False,q,state) -- return q, and ask question again
+        else do putStrLn "No question with this number!"
+	        interactive n ps state
+----
+-}
+doCommand (StartTool (Observe q)) n ps state =
+     do errcode <- system (hatObserve (filename state) q)
+     	when (errcode/=ExitSuccess)
+	     (putStrLn ("ERROR: Unable to start hat-observe.\n\
+                        \Check settings and availability of hat-observe."))
+        interactive n ps state
+doCommand (StartTool Trail) n ps state =
+     do errcode <- system (hatTrail (filename state) (currentNode state))
+        when (errcode/=ExitSuccess)
+             (putStrLn "ERROR: Unable to start hat-trail.\n\
+	               \Check settings and availability of hat-trail.")
+        interactive n ps state
+doCommand (StartTool Anim) n ps state =
+     do errcode <- system (hatAnim (filename state) (currentNode state))
+        when (errcode/=ExitSuccess)
+             (putStrLn "ERROR: Unable to start hat-anim.\n\
+	               \Check settings and availability of hat-anim.")
+        interactive n ps state
+----
+doCommand (Source q) n ps state =
+     do let srcref = getSrcRef (currentNode state)
+        when (srcref /= nil)
+             (do let srcRef = SrcRef.readSrcRef srcref
+                 system (hatView srcRef) -- (srcRefFile srcref)
+                                        -- (srcRefLine srcref)
+                                        -- (srcRefCol srcref))
+                 return ())
+        interactive n ps state
+doCommand (Definition q) n ps state =
+     do let defn = getDefnRef (currentNode state)
+        when (defn /= nil)
+             (do let defnRef = SrcRef.readSrcRef defn
+                 ok <- doesFileExist (SrcRef.filename defnRef)
+                 if not ok then putStrLn "defn source file not found"
+                   else do system (hatView defnRef) -- (defnFile defn)
+                                                  -- (defnLine defn)
+                                                  -- (defnCol defn))
+                           return ())
+        interactive n ps state
+----
+doCommand _ n ps state =
+     do putStrLn ("Unknown command.  "++shortHelpText)
+        interactive n ps state
+----
+
+
+interactiveHelp s = do
+    putStrLn (if null s then basicHelpText else detailedHelp s)
+  where
+    basicHelpText = "\
+\------------- :help <cmd> for more detail ---------------------------------\n\
+\ y   or  yes      you believe the equation is ok\n\
+\ n   or  no       you believe the equation is wrong\n\
+\ ?y  or  y?       you are not sure (but try ok for now)\n\
+\ ?n  or  n?       you are not sure (but try wrong for now)\n\
+\ <n>              go back to question <n>\n\
+\ :set             show all current mode settings\n\
+\ :set <flag>      change one mode setting (:help set for more detail)\n\
+\ :observe <query> start hat-observe with the given query\n\
+\ :trail           start hat-trail on the current equation\n\
+\ :detect <n>      start another hat-detect on equation number <n>\n\
+\ :animate <n>     start hat-anim on equation number <n>\n\
+\ :source <n>      show the source application for equation <n>\n\
+\ :Source <n>      show the source definition for identifier in equation <n>\n\
+\ :trust           trust all applications of the current function\n\
+\ :untrust         untrust ALL functions which were previously trusted\n\
+\ :+[n]            short-cut to increase cutoff depth by <n> (default 1)\n\
+\ :-[n]            short-cut to decrease cutoff depth by <n> (default 1)\n\
+\ :resize          detect new window size for pretty-printing\n\
+\ :help <cmd>  :?  show this help text (:help <cmd> for more detail)\n\
+\ :quit            quit\n\
+\---------------------------------------------------------------------------"
+
+    detailedHelp s
+      | ':' == head s  = detailedHelp (tail s)
+      | s `isPrefixOf` "set" = "\
+\ :set               show all current mode settings\n\
+\ :set <flag>        change one mode setting\n\
+\   <flag> can be: uneval [on|off]      show unevaluated expressions in full\n\
+\                  strSugar [on|off]    sugar character strings\n\
+\                  listSugar [on|off]   sugar lists\n\
+\                  recursive [on|off]   show recursive calls\n\
+\                  qualified [on|off]   show all identifiers qualified\n\
+\                  equations [on|off]   show rhs of equations\n\
+\                  [all|unique]         ask all questions or only unique q's\n\
+\                  memoise [on|off]     memoise answers already given\n\
+\                  cutoff <n>           cut-off depth for deeply nested exprs"
+      | s `isPrefixOf` "detect"  = "\
+\ :detect            start hat-detect on the current equation\n\
+\    Start a fresh copy of hat-detect."
+      | s `isPrefixOf` "animate"  = "\
+\ :animate           start hat-anim on the current equation\n\
+\    hat-anim is an interactive browser showing the forward reduction of an\n\
+\    expression towards its final result."
+      | s `isPrefixOf` "trail"  = "\
+\ :trail <n>         start hat-trail browser on equation <n>\n\
+\    hat-trail is an interactive browser that permits exploration backwards\n\
+\    from a value, expression, or error message, through the function calls\n\
+\    that ultimately led to the production of that value.\n\
+\    When invoked from within hat-detect, hat-trail begins with the\n\
+\    expression on the left of the equation numbered <n> in the list of\n\
+\    equations shown by hat-detect."
+      | s `isPrefixOf` "observe"  = "\
+\ :observe <query>   start hat-observe in a new window with the new query\n\
+\    With no argument, a new interactive hat-observe window is started for\n\
+\    the same traced program.  Given a query argument, the new window starts\n\
+\    with an immediate search for the expression pattern before giving\n\
+\    an interactive prompt."
+      | otherwise = " topic '"++s++"' has no further help text"
+
+
+cmdlineHelp =
+   "usage: hat-detect file-name\n"
+   ++"       algorithmic debugging on a hat trace file"
+
+
+data Cmd = Answer Answer | AskQuestion Int
+         | Trust | Untrust | Children
+         | Help String | Quit | Unknown
+         | StartTool Tool | Source Int | Definition Int
+         | Status | Set Mode | Shell String | Resize
+data Answer = Yes | No | QueryYes | QueryNo
+data Tool = Trail | Anim | Observe String | Detect Int
+data Mode = O OptionCmd
+          | Memoise Bool
+
+getCommand :: String -> IO Cmd
+getCommand prompt = do
+    s <- cmdline prompt
+    if null s then return Unknown
+      else if all isDigit s then return (number AskQuestion [s] 0)
+      else if head s `elem` "yYnN?mM" then return (answer (map toLower s))
+      else if head s /= ':' then return Unknown
+      else case words (tail s) of
+          [] -> return Unknown
+          (cmd:ss)
+              | cmd `isPrefixOf` "quit" -> return Quit
+              | cmd `isPrefixOf` "help" -> return (Help (unwords ss))
+              | cmd `isPrefixOf` "observe" ->
+				return (StartTool (Observe (unwords ss)))
+              | cmd `isPrefixOf` "trail"   ->
+				return (StartTool Trail)
+              | cmd `isPrefixOf` "animate" ->
+				return (StartTool Anim)
+              | cmd `isPrefixOf` "detect"  ->
+				return (number (StartTool . Detect) ss 0)
+              | cmd `isPrefixOf` "trust"    -> return Trust
+              | cmd `isPrefixOf` "untrust"  -> return Untrust
+              | cmd `isPrefixOf` "children" -> return Children
+              | cmd `isPrefixOf` "source"   -> return (number Source ss 0)
+              | cmd `isPrefixOf` "Source"   -> return (number Definition ss 0)
+              | cmd `isPrefixOf` "resize"   -> return Resize
+              | cmd `isPrefixOf` "set" ->
+                  case ss of
+                    []      -> return Status
+                    (m:sss) ->
+                        case optionCmd ss of
+                          Just o  -> return (Set (O o))
+                          Nothing -> if m `isPrefixOf` "memoise"
+                                     then return (maybe Unknown Set
+                                                        (onOff Memoise sss))
+                                     else return Unknown
+              | head cmd == '?' -> return (Help (unwords (tail cmd:ss)))
+              | head cmd == '+' ->
+                          return (number (Set . O . Deeper) (tail cmd:ss) 1)
+              | head cmd == '-' ->
+                          return (number (Set . O . Shallower) (tail cmd:ss) 1)
+              | head cmd == '!' -> return (Shell (unwords (tail cmd:ss)))
+              | otherwise  ->  return Unknown
+
+
+-- answer expects some partial checking of the string to have been done already
+answer :: String -> Cmd
+answer "y"   = Answer Yes
+answer "n"   = Answer No
+answer "yes" = Answer Yes
+answer "no"  = Answer No
+answer "y?"  = Answer QueryYes
+answer "n?"  = Answer QueryNo
+answer "?y"  = Answer QueryYes
+answer "?n"  = Answer QueryNo
+answer "?"   = Answer QueryNo
+answer "maybe" = Answer QueryNo
+answer _     = Unknown
+
diff --git a/trans/AuxFile.hs b/trans/AuxFile.hs
--- a/trans/AuxFile.hs
+++ b/trans/AuxFile.hs
@@ -100,7 +100,7 @@
           else (auxTree,idMap)
 
     normalImport modid = 
-      not (sPrelude flags && "TraceOrig" `isPrefixOf` getUnqualified modid)
+      not (sPrelude flags && "NotHat." `isPrefixOf` getUnqualified modid)
       
     getAuxFile :: (TokenId,Visibility) -> IO [(Identifier,AuxiliaryInfo)]
     getAuxFile (modid,importVisible) = 
diff --git a/trans/Wrapper.hs b/trans/Wrapper.hs
--- a/trans/Wrapper.hs
+++ b/trans/Wrapper.hs
@@ -55,7 +55,7 @@
 
 mkImportOriginal :: TokenId -> ImpDecl TokenId
 mkImportOriginal modId =
-  ImportQ (noPos, mkUnqualifiedTokenId ("TraceOrig"++show modId)) (Hiding [])
+  ImportQ (noPos, mkUnqualifiedTokenId ("NotHat."++show modId)) (Hiding [])
 
 traverse :: TokenId -> Maybe [Export TokenId] -> Decls TokenId -> Decls TokenId
 traverse modId exports (DeclsParse ds) = DeclsParse (concatMap walk ds)
