diff --git a/ghc/tests/Makefile b/ghc/tests/Makefile
index 290137ae408efc5a05a7320940b0890e07f5f6f5..249c6c590b15975a384ca7d6566fe12541b40f6f 100644
--- a/ghc/tests/Makefile
+++ b/ghc/tests/Makefile
@@ -1,7 +1,9 @@
-TOP = ..
+TOP = .
 include $(TOP)/mk/boilerplate.mk
 
-SUBDIRS = reader rename simplCore typecheck deSugar printing ccall deriving programs
+SUBDIRS = ccall deriving deSugar printing reader rename simplCore typecheck 
+
+#programs
 
 include $(TOP)/mk/target.mk
 
diff --git a/ghc/tests/ccall/Makefile b/ghc/tests/ccall/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..af2657823ea5a59eb07449cec396dfbeec046a3b
--- /dev/null
+++ b/ghc/tests/ccall/Makefile
@@ -0,0 +1,7 @@
+TOP = ..
+include $(TOP)/mk/boilerplate.mk
+
+SUBDIRS = should_compile should_fail
+
+include $(TOP)/mk/target.mk
+
diff --git a/ghc/tests/ccall/should_compile/Makefile b/ghc/tests/ccall/should_compile/Makefile
index a02df9bee1f222174f020d9d500651a8960458bf..14dc4927e4d35ea51512d0487dcdd895e01ce558 100644
--- a/ghc/tests/ccall/should_compile/Makefile
+++ b/ghc/tests/ccall/should_compile/Makefile
@@ -1,15 +1,9 @@
-TOP = ../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
 HC_OPTS += -dcore-lint -fglasgow-exts
 
-cc002_RUNTEST_OPTS = -x 1
-cc004_RUNTEST_OPTS = -x 1
-cc007_RUNTEST_OPTS = -x 1
-
 # Note that these tests are still in a state of flux... don't believe errors
 # they report. In fact, these aren't really very good tests at all...
 
@@ -21,12 +15,4 @@ cc005_HC_OPTS = -fvia-C -ddump-stg -ddump-flatC
 cc006_HC_OPTS = -fvia-C -ddump-stg -ddump-flatC
 cc007_HC_OPTS = -fvia-C -ddump-stg -ddump-flatC
 
-
-%.o : %.hs
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
-
-all :: $(HS_OBJS)
-
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/ccall/should_compile/cc001.stderr b/ghc/tests/ccall/should_compile/cc001.stderr
index 952647f47a433b278eff31fcac657bfa95d81d2f..4556d5de230e6eeaa306d872ba4756bed672f63e 100644
--- a/ghc/tests/ccall/should_compile/cc001.stderr
+++ b/ghc/tests/ccall/should_compile/cc001.stderr
@@ -2,332 +2,261 @@
 
 ================================================================================
 Typechecked:
-{- nonrec -}
-{- nonrec -}
-{- nonrec -}
-d.Fractional_a16j =
-    PrelNum.$d23{-rtW,p-}
-fromRational_a16o =
-    PrelNum.fromRational{-8T,p-}
-	PrelBase.Float{-3c,p-}
-	d.Fractional_a16j
-lit_a16r =
-    fromRational_a16o
-	1.0000000000000000
-d.Fractional_a16n =
-    PrelNum.$d14{-rtM,p-}
-fromRational_a16q =
-    PrelNum.fromRational{-8T,p-}
-	PrelBase.Double{-3a,p-}
-	d.Fractional_a16n
-lit_a16p =
-    fromRational_a16q
-	2.0000000000000000
-{- nonrec -}
-AbsBinds [] [] [([], c{-r5,x-}, c_a15h)]
-    c_a15h
-	x1_r4l x2_r4n x3_r4p x4_r4r
-		=   STBase.ST{-5G,p-}{i}
-			[GHC.RealWorld{-3s,p-}, PrelBase.Float{-3c,p-}]
-			_ccall_ c
-			    x1_r4l x2_r4n x3_r4p x4_r4r
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [([], b{-r3,x-}, b_a15F)]
-    b_a15F
-	x_r4j   =   STBase.ST{-5G,p-}{i}
-			[GHC.RealWorld{-3s,p-}, PrelBase.Int{-3g,p-}]
-			_ccall_ b
-			    x_r4j
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [([], a{-r1,x-}, a_a15R)]
-    a_a15R
-	=   STBase.ST{-5G,p-}{i}
-		[GHC.RealWorld{-3s,p-}, PrelBase.Int{-3g,p-}]
-		_ccall_ a
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [([], d{-r7,x-}, d_a15Y)]
-    d_a15Y
-	=   STBase.thenPrimIO{-r4w,p-}
-		[PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-}]
-		a{-r1,x-}
-		(\ x_r4t   ->  STBase.thenPrimIO{-r4w,p-}
-				   [PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-}]
-				   (b{-r3,x-}
-					x_r4t)
-				   (\ y_r4v   ->  c{-r5,x-}
-						      y_r4v 'f' lit_a16r lit_a16p))
-{- nonrec -}
+AbsBinds [] [] [([], c{-r5,x-}, c_aZc)]
+    c_aZc x1_r4l x2_r4m x3_r4n x4_r4o
+	  = STBase.ST{-5G,w-}{i}
+		[GHC.RealWorld{-3s,W-}, PrelBase.Float{-3c,W-}] _ccall_ c
+								    x1_r4l x2_r4m x3_r4n x4_r4o
+AbsBinds [] [] [([], b{-r3,x-}, b_aZE)]
+    b_aZE x_r4j
+	  = STBase.ST{-5G,w-}{i}
+		[GHC.RealWorld{-3s,W-}, PrelBase.Int{-3g,W-}] _ccall_ b x_r4j
+AbsBinds [] [] [([], a{-r1,x-}, a_aZR)]
+    a_aZR
+	= STBase.ST{-5G,w-}{i}
+	      [GHC.RealWorld{-3s,W-}, PrelBase.Int{-3g,W-}] _ccall_ a
+AbsBinds [] [] [([], d{-r7,x-}, d_aZY)]
+    d_aZY
+	= STBase.thenPrimIO{-r4t,p-}
+	      [PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-}]
+	      a{-r1,x-}
+	      (\ x_r4q
+		 -> STBase.thenPrimIO{-r4t,p-}
+			[PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-}]
+			(b{-r3,x-} x_r4q)
+			(\ y_r4s -> c{-r5,x-} y_r4s 'f' lit_a10r lit_a10t))
+d.Fractional_a10l = PrelNum.$d23{-rsg,p-}
+fromRational_a10q =
+    PrelNum.fromRational{-8T,p-} PrelBase.Float{-3c,W-}
+	d.Fractional_a10l
+lit_a10r = fromRational_a10q 1.0000000000000000
+d.Fractional_a10p = PrelNum.$d14{-rs6,p-}
+fromRational_a10s =
+    PrelNum.fromRational{-8T,p-} PrelBase.Double{-3a,W-}
+	d.Fractional_a10p
+lit_a10t = fromRational_a10s 2.0000000000000000
 
 
 ================================================================================
 Desugared:
 Rec {
-d.Fractional_a16j  :: 
-    {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Fractional_a16j =
-    PrelNum.$d23{-rtW,p-}
-fromRational_a16o  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a16o =
-    PrelNum.fromRational{-8T,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Fractional_a16j
-lit_a16r  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a16r =
-    fromRational_a16o
-	_rational_  1 1
-d.Fractional_a16n  :: 
-    {PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,p-}}
-{-# L #-}
-d.Fractional_a16n =
-    PrelNum.$d14{-rtM,p-}
-fromRational_a16q  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
-{-# L #-}
-fromRational_a16q =
-    PrelNum.fromRational{-8T,p-}
-	_@_ PrelBase.Double{-3a,p-} d.Fractional_a16n
-lit_a16p  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a16p =
-    fromRational_a16q
-	_rational_  2 1
-c_a15h  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Char{-38,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+c_aZc  ::  PrelBase.Int{-3g,W-}
+	   -> PrelBase.Char{-38,W-}
+	   -> PrelBase.Float{-3c,W-}
+	   -> PrelBase.Double{-3a,W-}
+	   -> STBase.PrimIO{-3P,W-} PrelBase.Float{-3c,W-}
 {-# L #-}
-c_a15h =
-    \ x1_r4l  :: 
-	  PrelBase.Int{-3g,p-}
+c_aZc =
+    \ x1_r4l  ::  PrelBase.Int{-3g,W-}
       {-# L #-}
-      x1_r4l x2_r4n  :: 
-		 PrelBase.Char{-38,p-}
+      x1_r4l x2_r4m  ::  PrelBase.Char{-38,W-}
 	     {-# L #-}
-	     x2_r4n x3_r4p  :: 
-			PrelBase.Float{-3c,p-}
+	     x2_r4m x3_r4n  ::  PrelBase.Float{-3c,W-}
 		    {-# L #-}
-		    x3_r4p x4_r4r  :: 
-			       PrelBase.Double{-3a,p-}
+		    x3_r4n x4_r4o  ::  PrelBase.Double{-3a,W-}
 			   {-# L #-}
-			   x4_r4r ->
+			   x4_r4o ->
 	let {
-	  ds_d1et  :: 
-	      STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
-	      -> (PrelBase.Float{-3c,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+	  ds_d17v  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
+		       -> (PrelBase.Float{-3c,W-}, STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
 	  {-# L #-}
-	  ds_d1et =
-	      \ ds_d1ez  :: 
-		    STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+	  ds_d17v =
+	      \ ds_d17B  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		{-# L #-}
-		ds_d1ez ->
-		  case ds_d1ez of { STBase.S#{-5D,p-}{i} ds_d1eI  ->
-		  case x1_r4l of { PrelBase.I#{-5b,p-}{i} ds_d1eR  ->
-		  case x2_r4n of { PrelBase.C#{-54,p-}{i} ds_d1f0  ->
-		  case x3_r4p of { PrelBase.F#{-59,p-}{i} ds_d1f9  ->
-		  case x4_r4r of { PrelBase.D#{-56,p-}{i} ds_d1fw  ->
+		ds_d17B ->
+		  case ds_d17B of { STBase.S#{-5D,w-}{i} ds_d18A  ->
+		  case x1_r4l of { PrelBase.I#{-5b,w-}{i} ds_d18J  ->
+		  case x2_r4m of { PrelBase.C#{-54,w-}{i} ds_d18S  ->
+		  case x3_r4n of { PrelBase.F#{-59,w-}{i} ds_d191  ->
+		  case x4_r4o of { PrelBase.D#{-56,w-}{i} ds_d19o  ->
 		  case
-		      _ccall_ c [(STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-} GHC.Char#{-37,p-} GHC.Float#{-3b,p-} GHC.Double#{-39,p-}]!
-			  ds_d1eI ds_d1eR ds_d1f0 ds_d1f9 ds_d1fw
+		      _ccall_ c [(STBase.StateAndFloat#{-3C,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.Int#{-3f,W-} GHC.Char#{-37,W-} GHC.Float#{-3b,W-} GHC.Double#{-39,W-}]!
+			  ds_d18A ds_d18J ds_d18S ds_d191 ds_d19o
 		  of {
-		  STBase.StateAndFloat#{-5u,p-}{i} ds_d1fZ ds_d1fX  ->
+		  STBase.StateAndFloat#{-5u,w-}{i} ds_d19R ds_d19P  ->
 		  let {
-		    ds_d1fO  :: 
-			PrelBase.Float{-3c,p-}
+		    ds_d19G  ::  PrelBase.Float{-3c,W-}
 		    {-# L #-}
-		    ds_d1fO =
-			PrelBase.F#{-59,p-}{i}
-			    {ds_d1fX} } in
+		    ds_d19G =
+			PrelBase.F#{-59,w-}{i} {ds_d19P} } in
 		  let {
-		    ds_d1fS  :: 
-			STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		    ds_d19K  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		    {-# L #-}
-		    ds_d1fS =
-			STBase.S#{-5D,p-}{i}
-			    {_@_ GHC.RealWorld{-3s,p-} ds_d1fZ}
+		    ds_d19K =
+			STBase.S#{-5D,w-}{i} {_@_ GHC.RealWorld{-3s,W-} ds_d19R}
 		  } in 
-		    PrelTup.(,){-62,p-}{i}
-			{_@_ PrelBase.Float{-3c,p-}
-			 _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
-			 ds_d1fO
-			 ds_d1fS};};};};};};}
+		    PrelTup.(,){-62,w-}{i}
+			{_@_ PrelBase.Float{-3c,W-}
+			 _@_ (STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
+			 ds_d19G
+			 ds_d19K};};};};};};}
 	} in 
-	  STBase.ST{-5G,p-}{i}
-	      _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Float{-3c,p-} ds_d1et
-c{-r5,x-}  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Char{-38,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+	  STBase.ST{-5G,w-}{i}
+	      _@_ GHC.RealWorld{-3s,W-} _@_ PrelBase.Float{-3c,W-} ds_d17v
+c{-r5,x-}  ::  PrelBase.Int{-3g,W-}
+	       -> PrelBase.Char{-38,W-}
+	       -> PrelBase.Float{-3c,W-}
+	       -> PrelBase.Double{-3a,W-}
+	       -> STBase.PrimIO{-3P,W-} PrelBase.Float{-3c,W-}
 {-# L #-}
 c{-r5,x-} =
-    c_a15h
-b_a15F  :: 
-    PrelBase.Int{-3g,p-} -> STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+    c_aZc
+b_aZE  ::  PrelBase.Int{-3g,W-}
+	   -> STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 {-# L #-}
-b_a15F =
-    \ x_r4j  :: 
-	  PrelBase.Int{-3g,p-}
+b_aZE =
+    \ x_r4j  ::  PrelBase.Int{-3g,W-}
       {-# L #-}
       x_r4j ->
 	let {
-	  ds_d1gj  :: 
-	      STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
-	      -> (PrelBase.Int{-3g,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+	  ds_d1ab  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
+		       -> (PrelBase.Int{-3g,W-}, STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
 	  {-# L #-}
-	  ds_d1gj =
-	      \ ds_d1gp  :: 
-		    STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+	  ds_d1ab =
+	      \ ds_d1ah  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		{-# L #-}
-		ds_d1gp ->
-		  case ds_d1gp of { STBase.S#{-5D,p-}{i} ds_d1gy  ->
-		  case x_r4j of { PrelBase.I#{-5b,p-}{i} ds_d1gM  ->
+		ds_d1ah ->
+		  case ds_d1ah of { STBase.S#{-5D,w-}{i} ds_d1aq  ->
+		  case x_r4j of { PrelBase.I#{-5b,w-}{i} ds_d1aE  ->
 		  case
-		      _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]!
-			  ds_d1gy ds_d1gM
+		      _ccall_ b [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.Int#{-3f,W-}]!
+			  ds_d1aq ds_d1aE
 		  of {
-		  STBase.StateAndInt#{-5v,p-}{i} ds_d1hf ds_d1hd  ->
+		  STBase.StateAndInt#{-5v,w-}{i} ds_d1b7 ds_d1b5  ->
 		  let {
-		    ds_d1h4  :: 
-			PrelBase.Int{-3g,p-}
+		    ds_d1aW  ::  PrelBase.Int{-3g,W-}
 		    {-# L #-}
-		    ds_d1h4 =
-			PrelBase.I#{-5b,p-}{i}
-			    {ds_d1hd} } in
+		    ds_d1aW =
+			PrelBase.I#{-5b,w-}{i} {ds_d1b5} } in
 		  let {
-		    ds_d1h8  :: 
-			STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		    ds_d1b0  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		    {-# L #-}
-		    ds_d1h8 =
-			STBase.S#{-5D,p-}{i}
-			    {_@_ GHC.RealWorld{-3s,p-} ds_d1hf}
+		    ds_d1b0 =
+			STBase.S#{-5D,w-}{i} {_@_ GHC.RealWorld{-3s,W-} ds_d1b7}
 		  } in 
-		    PrelTup.(,){-62,p-}{i}
-			{_@_ PrelBase.Int{-3g,p-}
-			 _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
-			 ds_d1h4
-			 ds_d1h8};};};}
+		    PrelTup.(,){-62,w-}{i}
+			{_@_ PrelBase.Int{-3g,W-}
+			 _@_ (STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
+			 ds_d1aW
+			 ds_d1b0};};};}
 	} in 
-	  STBase.ST{-5G,p-}{i}
-	      _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Int{-3g,p-} ds_d1gj
-b{-r3,x-}  :: 
-    PrelBase.Int{-3g,p-} -> STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+	  STBase.ST{-5G,w-}{i}
+	      _@_ GHC.RealWorld{-3s,W-} _@_ PrelBase.Int{-3g,W-} ds_d1ab
+b{-r3,x-}  ::  PrelBase.Int{-3g,W-}
+	       -> STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 {-# L #-}
 b{-r3,x-} =
-    b_a15F
-a_a15R  :: 
-    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+    b_aZE
+a_aZR  ::  STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 {-# L #-}
-a_a15R =
+a_aZR =
     let {
-      ds_d1hy  :: 
-	  STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
-	  -> (PrelBase.Int{-3g,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+      ds_d1bq  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
+		   -> (PrelBase.Int{-3g,W-}, STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
       {-# L #-}
-      ds_d1hy =
-	  \ ds_d1hE  :: 
-		STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+      ds_d1bq =
+	  \ ds_d1bw  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 	    {-# L #-}
-	    ds_d1hE ->
-	      case ds_d1hE of { STBase.S#{-5D,p-}{i} ds_d1hP  ->
+	    ds_d1bw ->
+	      case ds_d1bw of { STBase.S#{-5D,w-}{i} ds_d1bH  ->
 	      case
-		  _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]!
-		      ds_d1hP
+		  _ccall_ a [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]!
+		      ds_d1bH
 	      of {
-	      STBase.StateAndInt#{-5v,p-}{i} ds_d1ii ds_d1ig  ->
+	      STBase.StateAndInt#{-5v,w-}{i} ds_d1ca ds_d1c8  ->
 	      let {
-		ds_d1i7  :: 
-		    PrelBase.Int{-3g,p-}
+		ds_d1bZ  ::  PrelBase.Int{-3g,W-}
 		{-# L #-}
-		ds_d1i7 =
-		    PrelBase.I#{-5b,p-}{i}
-			{ds_d1ig} } in
+		ds_d1bZ =
+		    PrelBase.I#{-5b,w-}{i} {ds_d1c8} } in
 	      let {
-		ds_d1ib  :: 
-		    STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		ds_d1c3  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		{-# L #-}
-		ds_d1ib =
-		    STBase.S#{-5D,p-}{i}
-			{_@_ GHC.RealWorld{-3s,p-} ds_d1ii}
+		ds_d1c3 =
+		    STBase.S#{-5D,w-}{i} {_@_ GHC.RealWorld{-3s,W-} ds_d1ca}
 	      } in 
-		PrelTup.(,){-62,p-}{i}
-		    {_@_ PrelBase.Int{-3g,p-}
-		     _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
-		     ds_d1i7
-		     ds_d1ib};};}
+		PrelTup.(,){-62,w-}{i}
+		    {_@_ PrelBase.Int{-3g,W-}
+		     _@_ (STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
+		     ds_d1bZ
+		     ds_d1c3};};}
     } in 
-      STBase.ST{-5G,p-}{i}
-	  _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Int{-3g,p-} ds_d1hy
-a{-r1,x-}  :: 
-    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+      STBase.ST{-5G,w-}{i}
+	  _@_ GHC.RealWorld{-3s,W-} _@_ PrelBase.Int{-3g,W-} ds_d1bq
+a{-r1,x-}  ::  STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 {-# L #-}
 a{-r1,x-} =
-    a_a15R
-d_a15Y  :: 
-    STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+    a_aZR
+d_aZY  ::  STBase.PrimIO{-3P,W-} PrelBase.Float{-3c,W-}
 {-# L #-}
-d_a15Y =
+d_aZY =
     let {
-      ds_d1iE  :: 
-	  PrelBase.Int{-3g,p-}
-	  -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+      ds_d1cw  ::  PrelBase.Int{-3g,W-}
+		   -> STBase.PrimIO{-3P,W-} PrelBase.Float{-3c,W-}
       {-# L #-}
-      ds_d1iE =
-	  \ x_r4t  :: 
-		PrelBase.Int{-3g,p-}
+      ds_d1cw =
+	  \ x_r4q  ::  PrelBase.Int{-3g,W-}
 	    {-# L #-}
-	    x_r4t ->
+	    x_r4q ->
 	      let {
-		ds_d1iT  :: 
-		    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+		ds_d1cL  ::  STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 		{-# L #-}
-		ds_d1iT =
-		    b{-r3,x-}
-			x_r4t } in
+		ds_d1cL =
+		    b{-r3,x-} x_r4q } in
 	      let {
-		ds_d1iX  :: 
-		    PrelBase.Int{-3g,p-}
-		    -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+		ds_d1cP  ::  PrelBase.Int{-3g,W-}
+			     -> STBase.PrimIO{-3P,W-} PrelBase.Float{-3c,W-}
 		{-# L #-}
-		ds_d1iX =
-		    \ y_r4v  :: 
-			  PrelBase.Int{-3g,p-}
+		ds_d1cP =
+		    \ y_r4s  ::  PrelBase.Int{-3g,W-}
 		      {-# L #-}
-		      y_r4v ->
-			let {
-			  ds_d1jf  :: 
-			      PrelBase.Char{-38,p-}
-			  {-# L #-}
-			  ds_d1jf =
-			      PrelBase.C#{-54,p-}{i}
-				  {'f'}
-			} in 
-			  c{-r5,x-}
-			      y_r4v ds_d1jf lit_a16r lit_a16p
+		      y_r4s ->
+			(let {
+			   ds_d1df  ::  PrelBase.Char{-38,W-}
+			   {-# L #-}
+			   ds_d1df =
+			       PrelBase.C#{-54,w-}{i} {'f'}
+			 } in  c{-r5,x-} y_r4s ds_d1df)
+			    lit_a10r lit_a10t
 	      } in 
-		STBase.thenPrimIO{-r4w,p-}
-		    _@_ PrelBase.Int{-3g,p-} _@_ PrelBase.Float{-3c,p-} ds_d1iT ds_d1iX
+		STBase.thenPrimIO{-r4t,p-}
+		    _@_ PrelBase.Int{-3g,W-} _@_ PrelBase.Float{-3c,W-} ds_d1cL ds_d1cP
     } in 
-      STBase.thenPrimIO{-r4w,p-}
-	  _@_ PrelBase.Int{-3g,p-}
-	  _@_ PrelBase.Float{-3c,p-}
+      STBase.thenPrimIO{-r4t,p-}
+	  _@_ PrelBase.Int{-3g,W-}
+	  _@_ PrelBase.Float{-3c,W-}
 	  a{-r1,x-}
-	  ds_d1iE
-d{-r7,x-}  :: 
-    STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+	  ds_d1cw
+d{-r7,x-}  ::  STBase.PrimIO{-3P,W-} PrelBase.Float{-3c,W-}
 {-# L #-}
 d{-r7,x-} =
-    d_a15Y
+    d_aZY
+d.Fractional_a10l  ::  {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Fractional_a10l =
+    PrelNum.$d23{-rsg,p-}
+fromRational_a10q  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a10q =
+    PrelNum.fromRational{-8T,p-}
+	_@_ PrelBase.Float{-3c,W-} d.Fractional_a10l
+lit_a10r  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a10r =
+    fromRational_a10q _rational_  1 1
+d.Fractional_a10p  ::  {PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,W-}}
+{-# L #-}
+d.Fractional_a10p =
+    PrelNum.$d14{-rs6,p-}
+fromRational_a10s  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Double{-3a,W-}
+{-# L #-}
+fromRational_a10s =
+    PrelNum.fromRational{-8T,p-}
+	_@_ PrelBase.Double{-3a,W-} d.Fractional_a10p
+lit_a10t  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a10t =
+    fromRational_a10s _rational_  2 1
 end Rec }
-
-NOTE: Simplifier still going after 4 iterations; bailing out.
diff --git a/ghc/tests/ccall/should_compile/cc002.stderr b/ghc/tests/ccall/should_compile/cc002.stderr
deleted file mode 100644
index 4d70998fca38bd08e7acad6e3487eaf82be50a51..0000000000000000000000000000000000000000
--- a/ghc/tests/ccall/should_compile/cc002.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
- 
-cc002.hs:11: No instance for:
-		 `Foreign.CReturnable Foreign.ForeignObj'
-    cc002.hs:11:
-	in the result of the _ccall_ to a
-    When checking signature(s) for: `a'
-
-
-Compilation had errors
diff --git a/ghc/tests/ccall/should_compile/cc003.stderr b/ghc/tests/ccall/should_compile/cc003.stderr
index 1f8dfdc0608338756e80376eee2e0a8a5c86b28f..d4eca73d31f4c5efd1c099032c3c54b29480f0c1 100644
--- a/ghc/tests/ccall/should_compile/cc003.stderr
+++ b/ghc/tests/ccall/should_compile/cc003.stderr
@@ -2,114 +2,95 @@
 
 ================================================================================
 Typechecked:
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [([], fubar{-r1,x-}, fubar_aZa)]
-    fubar_aZa
-	=   STBase.seqPrimIO{-r46,p-}
-		[PrelBase.(){-40,p-}, PrelBase.Int{-3g,p-}]
-		(STBase.ST{-5G,p-}{i}
-		     [GHC.RealWorld{-3s,p-}, PrelBase.(){-40,p-}]
-		     _ccall_ f)
-		(STBase.ST{-5G,p-}{i}
-		     [GHC.RealWorld{-3s,p-}, PrelBase.Int{-3g,p-}]
-		     _ccall_ b)
-{- nonrec -}
+AbsBinds [] [] [([], fubar{-r1,x-}, fubar_aTQ)]
+    fubar_aTQ
+	= STBase.seqPrimIO{-r46,p-}
+	      [PrelBase.(){-40,W-}, PrelBase.Int{-3g,W-}]
+	      (STBase.ST{-5G,w-}{i}
+		   [GHC.RealWorld{-3s,W-}, PrelBase.(){-40,W-}] _ccall_ f)
+	      (STBase.ST{-5G,w-}{i}
+		   [GHC.RealWorld{-3s,W-}, PrelBase.Int{-3g,W-}] _ccall_ b)
 
 
 ================================================================================
 Desugared:
-fubar_aZa  :: 
-    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+Rec {
+fubar_aTQ  ::  STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 {-# L #-}
-fubar_aZa =
-    let { ds_d110  :: 
-	      STBase.ST{-3O,p-} GHC.RealWorld{-3s,p-} PrelBase.(){-40,p-}
+fubar_aTQ =
+    let { ds_dVM  ::  STBase.PrimIO{-3P,W-} PrelBase.(){-40,W-}
 	  {-# L #-}
-	  ds_d110 =
+	  ds_dVM =
       let {
-	ds_d11g  :: 
-	    STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
-	    -> (PrelBase.(){-40,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+	ds_dW2  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
+		    -> (PrelBase.(){-40,W-}, STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
 	{-# L #-}
-	ds_d11g =
-	    \ ds_d11m  :: 
-		  STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+	ds_dW2 =
+	    \ ds_dW8  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 	      {-# L #-}
-	      ds_d11m ->
-		case ds_d11m of { STBase.S#{-5D,p-}{i} ds_d11x  ->
+	      ds_dW8 ->
+		case ds_dW8 of { STBase.S#{-5D,w-}{i} ds_dWn  ->
 		case
-		    _ccall_ f [(STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]!
-			ds_d11x
+		    _ccall_ f [(STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]!
+			ds_dWn
 		of {
-		STBase.S#{-5D,p-}{i} ds_d11X  ->
+		STBase.S#{-5D,w-}{i} ds_dWN  ->
 		let {
-		  ds_d11Q  :: 
-		      STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		  ds_dWG  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		  {-# L #-}
-		  ds_d11Q =
-		      STBase.S#{-5D,p-}{i}
-			  {_@_ GHC.RealWorld{-3s,p-} ds_d11X}
+		  ds_dWG =
+		      STBase.S#{-5D,w-}{i} {_@_ GHC.RealWorld{-3s,W-} ds_dWN}
 		} in 
-		  PrelTup.(,){-62,p-}{i}
-		      {_@_ PrelBase.(){-40,p-}
-		       _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
-		       PrelBase.(){-60,p-}{i}
-		       ds_d11Q};};}
+		  PrelTup.(,){-62,w-}{i}
+		      {_@_ PrelBase.(){-40,W-}
+		       _@_ (STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
+		       PrelBase.(){-60,w-}{i}
+		       ds_dWG};};}
       } in 
-	STBase.ST{-5G,p-}{i}
-	    _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.(){-40,p-} ds_d11g
+	STBase.ST{-5G,w-}{i}
+	    _@_ GHC.RealWorld{-3s,W-} _@_ PrelBase.(){-40,W-} ds_dW2
     } in
-    let { ds_d114  :: 
-	      STBase.ST{-3O,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}
+    let { ds_dVQ  ::  STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 	  {-# L #-}
-	  ds_d114 =
+	  ds_dVQ =
       let {
-	ds_d12a  :: 
-	    STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
-	    -> (PrelBase.Int{-3g,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+	ds_dX0  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
+		    -> (PrelBase.Int{-3g,W-}, STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
 	{-# L #-}
-	ds_d12a =
-	    \ ds_d12g  :: 
-		  STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+	ds_dX0 =
+	    \ ds_dX6  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 	      {-# L #-}
-	      ds_d12g ->
-		case ds_d12g of { STBase.S#{-5D,p-}{i} ds_d12r  ->
+	      ds_dX6 ->
+		case ds_dX6 of { STBase.S#{-5D,w-}{i} ds_dXh  ->
 		case
-		    _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]!
-			ds_d12r
+		    _ccall_ b [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]!
+			ds_dXh
 		of {
-		STBase.StateAndInt#{-5v,p-}{i} ds_d12U ds_d12S  ->
+		STBase.StateAndInt#{-5v,w-}{i} ds_dXK ds_dXI  ->
 		let {
-		  ds_d12J  :: 
-		      PrelBase.Int{-3g,p-}
+		  ds_dXz  ::  PrelBase.Int{-3g,W-}
 		  {-# L #-}
-		  ds_d12J =
-		      PrelBase.I#{-5b,p-}{i}
-			  {ds_d12S} } in
+		  ds_dXz =
+		      PrelBase.I#{-5b,w-}{i} {ds_dXI} } in
 		let {
-		  ds_d12N  :: 
-		      STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		  ds_dXD  ::  STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		  {-# L #-}
-		  ds_d12N =
-		      STBase.S#{-5D,p-}{i}
-			  {_@_ GHC.RealWorld{-3s,p-} ds_d12U}
+		  ds_dXD =
+		      STBase.S#{-5D,w-}{i} {_@_ GHC.RealWorld{-3s,W-} ds_dXK}
 		} in 
-		  PrelTup.(,){-62,p-}{i}
-		      {_@_ PrelBase.Int{-3g,p-}
-		       _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
-		       ds_d12J
-		       ds_d12N};};}
+		  PrelTup.(,){-62,w-}{i}
+		      {_@_ PrelBase.Int{-3g,W-}
+		       _@_ (STBase.State{-3M,W-} GHC.RealWorld{-3s,W-})
+		       ds_dXz
+		       ds_dXD};};}
       } in 
-	STBase.ST{-5G,p-}{i}
-	    _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Int{-3g,p-} ds_d12a
+	STBase.ST{-5G,w-}{i}
+	    _@_ GHC.RealWorld{-3s,W-} _@_ PrelBase.Int{-3g,W-} ds_dX0
     } in
     STBase.seqPrimIO{-r46,p-}
-	_@_ PrelBase.(){-40,p-} _@_ PrelBase.Int{-3g,p-} ds_d110 ds_d114
-fubar{-r1,x-}  :: 
-    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+	_@_ PrelBase.(){-40,W-} _@_ PrelBase.Int{-3g,W-} ds_dVM ds_dVQ
+fubar{-r1,x-}  ::  STBase.PrimIO{-3P,W-} PrelBase.Int{-3g,W-}
 {-# L #-}
 fubar{-r1,x-} =
-    fubar_aZa
-
-NOTE: Simplifier still going after 4 iterations; bailing out.
+    fubar_aTQ
+end Rec }
diff --git a/ghc/tests/ccall/should_compile/cc005.stderr b/ghc/tests/ccall/should_compile/cc005.stderr
index ed9f6bbb536fe26448e756bffbc2ed28ab45d92b..c86a6ae0ae54fd8fb9c9bbf02c9889bcec9c5037 100644
--- a/ghc/tests/ccall/should_compile/cc005.stderr
+++ b/ghc/tests/ccall/should_compile/cc005.stderr
@@ -1,276 +1,205 @@
 
-NOTE: Simplifier still going after 4 iterations; bailing out.
-
 
 ================================================================================
 STG syntax:
-nrlit_s25b =
-     PrelNum.:%{-5l,p-}{i}! [PrelNum.integer_2{-8e,p-} PrelNum.integer_1{-8d,p-}];
-lit_a19u =
+$g0_g0 =
+     PrelNum.:%{-5l,p-}{i}! [PrelNum.integer_2{-8e,w-} PrelNum.integer_1{-8d,w-}];
+$g1_a15t =
     (False, True, False, False, True) [] \u []
 	case
-	    PrelNum.$d14{-rtM,p-} ::{PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,p-}}
+	    PrelNum.$d14{-rs6,p-} ::{PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,W-}}
 	of {
-	    -- lvs: []; rhs lvs: []; uniq: c2b9
-	  PrelTup.(,,,){-64,p-}{i} tpl_s1V1 tpl_s1V2 tpl_s1V3 tpl_s1V0 ->
-	      tpl_s1V0
-		  nrlit_s25b;
+	    -- lvs: []; rhs lvs: []; uniq: c1QY
+	  PrelTup.(,,,){-64,w-}{i} $x0_s1En $x1_s1Eo $x2_s1Ep $x3_s1Em ->
+	      $x3_s1Em $g0_g0;
 	};
-nrlit_s25c =
-     PrelNum.:%{-5l,p-}{i}! [PrelNum.integer_1{-8d,p-} PrelNum.integer_1{-8d,p-}];
-lit_a19w =
+$g2_g2 =
+     PrelNum.:%{-5l,p-}{i}! [PrelNum.integer_1{-8d,w-} PrelNum.integer_1{-8d,w-}];
+$g3_a15r =
     (False, True, False, False, True) [] \u []
 	case
-	    PrelNum.$d23{-rtW,p-} ::{PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,p-}}
+	    PrelNum.$d23{-rsg,p-} ::{PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,W-}}
 	of {
-	    -- lvs: []; rhs lvs: []; uniq: c2ba
-	  PrelTup.(,,,){-64,p-}{i} tpl_s1Vt tpl_s1Vu tpl_s1Vv tpl_s1Vs ->
-	      tpl_s1Vs
-		  nrlit_s25c;
-	};
-s_s1MF =
-     [] \r [ds_s1VJ]
-	case ds_s1VJ ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
-	    -- lvs: [ds_s1VJ]; rhs lvs: []; uniq: c2bb
-	  STBase.S#{-5D,p-}{i} ds_s1Wa ->
-	      case
-		  _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1Wa] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
-	      of {
-		  -- lvs: [ds_s1Wa]; rhs lvs: []; uniq: c2bc
-		STBase.StateAndInt#{-5v,p-}{i} ds_s1Wk ds_s1W9 ->
-		    let {
-		      ds_s1WA =
-			   PrelBase.I#{-5b,p-}{i}! [ds_s1W9]; } in
-		    let {
-		      ds_s1Wz =
-			   STBase.S#{-5D,p-}{i}! [ds_s1Wk];
-		    } in 
-		      PrelTup.(,){-62,p-}{i}! [ds_s1WA ds_s1Wz];
-	      };
+	    -- lvs: []; rhs lvs: []; uniq: c1QZ
+	  PrelTup.(,,,){-64,w-}{i} $x0_s1EP $x1_s1EQ $x2_s1ER $x3_s1EO ->
+	      $x3_s1EO $g2_g2;
 	};
-s_s1Xu =
-     [] \r [ds_s1WI]
-	case ds_s1WI ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
-	    -- lvs: [ds_s1WI]; rhs lvs: []; uniq: c2bd
-	  STBase.S#{-5D,p-}{i} ds_s1X9 ->
+a{-r1,x-} =
+     [] \r [$x0_s1F9]
+	case $x0_s1F9 ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of {
+	    -- lvs: [$x0_s1F9]; rhs lvs: []; uniq: c1R0
+	  STBase.S#{-5D,w-}{i} $x1_s1FA ->
 	      case
-		  _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1X9] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+		  _ccall_ a [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]# [$x1_s1FA] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}
 	      of {
-		  -- lvs: [ds_s1X9]; rhs lvs: []; uniq: c2be
-		STBase.StateAndInt#{-5v,p-}{i} ds_s1Xj ds_s1X8 ->
-		    let {
-		      ds_s1XP =
-			   PrelBase.I#{-5b,p-}{i}! [ds_s1X8]; } in
-		    let {
-		      ds_s1XO =
-			   STBase.S#{-5D,p-}{i}! [ds_s1Xj];
-		    } in 
-		      PrelTup.(,){-62,p-}{i}! [ds_s1XP ds_s1XO];
+		  -- lvs: [$x1_s1FA]; rhs lvs: []; uniq: c1R1
+		STBase.StateAndInt#{-5v,w-}{i} $x2_s1FK $x3_s1Fz ->
+		    let { $x4_s1Gc =  PrelBase.I#{-5b,w-}{i}! [$x3_s1Fz]; } in
+		    let { $x5_s1Gb =  STBase.S#{-5D,w-}{i}! [$x2_s1FK];
+		    } in  PrelTup.(,){-62,w-}{i}! [$x4_s1Gc $x5_s1Gb];
 	      };
 	};
-a{-r1,x-} =
-     [] \u []
-	s_s1Xu;
 b{-r3,x-} =
-     [] \r [x_s1XY]
+     [] \r [$x0_s1Gl]
 	let {
-	  stg_c2ac =
-	      (False, True, False, False, True) [x_s1XY] \r [ds_s1XN]
+	  stg_c1Qp =
+	      (False, True, False, False, True) [$x0_s1Gl] \r [$x1_s1Ga]
 		  case
-		      ds_s1XN{-lvs:x_s1XY-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		      $x1_s1Ga{-lvs:$x0_s1Gl-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		  of {
-		      -- lvs: [ds_s1XN x_s1XY]; rhs lvs: [x_s1XY]; uniq: c2bf
-		    STBase.S#{-5D,p-}{i} ds_s1XZ ->
-			case x_s1XY{-lvs:ds_s1XZ-} ::PrelBase.Int{-3g,p-} of {
-			    -- lvs: [x_s1XY ds_s1XZ]; rhs lvs: [ds_s1XZ]; uniq: c2bg
-			  PrelBase.I#{-5b,p-}{i} ds_s1Yp ->
+		      -- lvs: [$x1_s1Ga $x0_s1Gl]; rhs lvs: [$x0_s1Gl]; uniq: c1R2
+		    STBase.S#{-5D,w-}{i} $x2_s1Gm ->
+			case $x0_s1Gl{-lvs:$x2_s1Gm-} ::PrelBase.Int{-3g,W-} of {
+			    -- lvs: [$x0_s1Gl $x2_s1Gm]; rhs lvs: [$x2_s1Gm]; uniq: c1R3
+			  PrelBase.I#{-5b,w-}{i} $x3_s1GM ->
 			      case
-				  _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]# [ds_s1XZ ds_s1Yp] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+				  _ccall_ b [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.Int#{-3f,W-}]# [$x2_s1Gm $x3_s1GM] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}
 			      of {
-				  -- lvs: [ds_s1XZ ds_s1Yp]; rhs lvs: []; uniq: c2bh
-				STBase.StateAndInt#{-5v,p-}{i} ds_s1YA ds_s1Yq ->
-				    let {
-				      ds_s1Za =
-					   PrelBase.I#{-5b,p-}{i}! [ds_s1Yq]; } in
-				    let {
-				      ds_s1Z9 =
-					   STBase.S#{-5D,p-}{i}! [ds_s1YA];
-				    } in 
-				      PrelTup.(,){-62,p-}{i}! [ds_s1Za ds_s1Z9];
+				  -- lvs: [$x2_s1Gm $x3_s1GM]; rhs lvs: []; uniq: c1R4
+				STBase.StateAndInt#{-5v,w-}{i} $x4_s1GX $x5_s1GN ->
+				    let { $x6_s1Hx =  PrelBase.I#{-5b,w-}{i}! [$x5_s1GN]; } in
+				    let { $x7_s1Hw =  STBase.S#{-5D,w-}{i}! [$x4_s1GX];
+				    } in  PrelTup.(,){-62,w-}{i}! [$x6_s1Hx $x7_s1Hw];
 			      };
 			};
 		  };
-	} in 
-	  stg_c2ac;
+	} in  stg_c1Qp;
 c{-r5,x-} =
-     [] \r [x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN]
+     [] \r [$x0_s1HG $x1_s1HQ $x2_s1I0 $x3_s1Ia]
 	let {
-	  stg_c29C =
-	      (False, True, False, False, True) [x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN] \r [ds_s1Z8]
+	  stg_c1PP =
+	      (False, True, False, False, True) [$x0_s1HG $x1_s1HQ $x2_s1I0 $x3_s1Ia] \r [$x4_s1Hv]
 		  case
-		      ds_s1Z8{-lvs:x1_s1Zj, x2_s1Zt, x3_s1ZD, x4_s1ZN-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		      $x4_s1Hv{-lvs:$x0_s1HG, $x1_s1HQ, $x2_s1I0, $x3_s1Ia-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		  of {
-		      -- lvs: [ds_s1Z8 x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN]; rhs lvs: [x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN]; uniq: c2bi
-		    STBase.S#{-5D,p-}{i} ds_s1Zk ->
+		      -- lvs: [$x4_s1Hv $x0_s1HG $x1_s1HQ $x2_s1I0 $x3_s1Ia]; rhs lvs: [$x0_s1HG $x1_s1HQ $x2_s1I0 $x3_s1Ia]; uniq: c1R5
+		    STBase.S#{-5D,w-}{i} $x5_s1HH ->
 			case
-			    x1_s1Zj{-lvs:ds_s1Zk, x2_s1Zt, x3_s1ZD, x4_s1ZN-} ::PrelBase.Int{-3g,p-}
+			    $x0_s1HG{-lvs:$x5_s1HH, $x1_s1HQ, $x2_s1I0, $x3_s1Ia-} ::PrelBase.Int{-3g,W-}
 			of {
-			    -- lvs: [x1_s1Zj ds_s1Zk x2_s1Zt x3_s1ZD x4_s1ZN]; rhs lvs: [ds_s1Zk x2_s1Zt x3_s1ZD x4_s1ZN]; uniq: c2bj
-			  PrelBase.I#{-5b,p-}{i} ds_s1Zu ->
+			    -- lvs: [$x0_s1HG $x5_s1HH $x1_s1HQ $x2_s1I0 $x3_s1Ia]; rhs lvs: [$x5_s1HH $x1_s1HQ $x2_s1I0 $x3_s1Ia]; uniq: c1R6
+			  PrelBase.I#{-5b,w-}{i} $x6_s1HR ->
 			      case
-				  x2_s1Zt{-lvs:ds_s1Zk, ds_s1Zu, x3_s1ZD, x4_s1ZN-} ::PrelBase.Char{-38,p-}
+				  $x1_s1HQ{-lvs:$x5_s1HH, $x6_s1HR, $x2_s1I0, $x3_s1Ia-} ::PrelBase.Char{-38,W-}
 			      of {
-				  -- lvs: [ds_s1Zk x2_s1Zt ds_s1Zu x3_s1ZD x4_s1ZN]; rhs lvs: [ds_s1Zk ds_s1Zu x3_s1ZD x4_s1ZN]; uniq: c2bk
-				PrelBase.C#{-54,p-}{i} ds_s1ZE ->
+				  -- lvs: [$x5_s1HH $x1_s1HQ $x6_s1HR $x2_s1I0 $x3_s1Ia]; rhs lvs: [$x5_s1HH $x6_s1HR $x2_s1I0 $x3_s1Ia]; uniq: c1R7
+				PrelBase.C#{-54,w-}{i} $x7_s1I1 ->
 				    case
-					x3_s1ZD{-lvs:ds_s1Zk, ds_s1Zu, ds_s1ZE, x4_s1ZN-} ::PrelBase.Float{-3c,p-}
+					$x2_s1I0{-lvs:$x5_s1HH, $x6_s1HR, $x7_s1I1, $x3_s1Ia-} ::PrelBase.Float{-3c,W-}
 				    of {
-					-- lvs: [ds_s1Zk ds_s1Zu x3_s1ZD ds_s1ZE x4_s1ZN]; rhs lvs: [ds_s1Zk ds_s1Zu ds_s1ZE x4_s1ZN]; uniq: c2bl
-				      PrelBase.F#{-59,p-}{i} ds_s1ZO ->
+					-- lvs: [$x5_s1HH $x6_s1HR $x2_s1I0 $x7_s1I1 $x3_s1Ia]; rhs lvs: [$x5_s1HH $x6_s1HR $x7_s1I1 $x3_s1Ia]; uniq: c1R8
+				      PrelBase.F#{-59,w-}{i} $x8_s1Ib ->
 					  case
-					      x4_s1ZN{-lvs:ds_s1Zk, ds_s1Zu, ds_s1ZE, ds_s1ZO-} ::PrelBase.Double{-3a,p-}
+					      $x3_s1Ia{-lvs:$x5_s1HH, $x6_s1HR, $x7_s1I1, $x8_s1Ib-} ::PrelBase.Double{-3a,W-}
 					  of {
-					      -- lvs: [ds_s1Zk ds_s1Zu ds_s1ZE x4_s1ZN ds_s1ZO]; rhs lvs: [ds_s1Zk ds_s1Zu ds_s1ZE ds_s1ZO]; uniq: c2bm
-					    PrelBase.D#{-56,p-}{i} ds_s20e ->
+					      -- lvs: [$x5_s1HH $x6_s1HR $x7_s1I1 $x3_s1Ia $x8_s1Ib]; rhs lvs: [$x5_s1HH $x6_s1HR $x7_s1I1 $x8_s1Ib]; uniq: c1R9
+					    PrelBase.D#{-56,w-}{i} $x9_s1IB ->
 						case
-						    _ccall_ c [(STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-} GHC.Char#{-37,p-} GHC.Float#{-3b,p-} GHC.Double#{-39,p-}]# [ds_s1Zk ds_s1Zu ds_s1ZE ds_s1ZO ds_s20e] ::STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}
+						    _ccall_ c [(STBase.StateAndFloat#{-3C,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.Int#{-3f,W-} GHC.Char#{-37,W-} GHC.Float#{-3b,W-} GHC.Double#{-39,W-}]# [$x5_s1HH $x6_s1HR $x7_s1I1 $x8_s1Ib $x9_s1IB] ::STBase.StateAndFloat#{-3C,W-} GHC.RealWorld{-3s,W-}
 						of {
-						    -- lvs: [ds_s1Zk ds_s1Zu ds_s1ZE ds_s1ZO ds_s20e]; rhs lvs: []; uniq: c2bn
-						  STBase.StateAndFloat#{-5u,p-}{i} ds_s20p ds_s20f ->
+						    -- lvs: [$x5_s1HH $x6_s1HR $x7_s1I1 $x8_s1Ib $x9_s1IB]; rhs lvs: []; uniq: c1Ra
+						  STBase.StateAndFloat#{-5u,w-}{i} $xa_s1IM $xb_s1IC ->
 						      let {
-							ds_s217 =
-							     PrelBase.F#{-59,p-}{i}! [ds_s20f]; } in
+							$xc_s1Jy =
+							     PrelBase.F#{-59,w-}{i}! [$xb_s1IC]; } in
 						      let {
-							ds_s216 =
-							     STBase.S#{-5D,p-}{i}! [ds_s20p];
+							$xd_s1Jx =
+							     STBase.S#{-5D,w-}{i}! [$xa_s1IM];
 						      } in 
-							PrelTup.(,){-62,p-}{i}! [ds_s217 ds_s216];
+							PrelTup.(,){-62,w-}{i}! [$xc_s1Jy $xd_s1Jx];
 						};
 					  };
 				    };
 			      };
 			};
 		  };
-	} in 
-	  stg_c29C;
+	} in  stg_c1PP;
 d{-r7,x-} =
      [] \u []
 	let {
-	  ds_s258 =
-	       [] \r [x_s21g]
-		  let { s_s22a =  [x_s21g] \r [ds_s215]
+	  $xk_s1Ma =
+	       [] \r [$x0_s1JH]
+		  let { $x8_s1KM =  [$x0_s1JH] \r [$x1_s1Jw]
 			  case
-			      ds_s215{-lvs:x_s21g-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+			      $x1_s1Jw{-lvs:$x0_s1JH-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 			  of {
-			      -- lvs: [ds_s215 x_s21g]; rhs lvs: [x_s21g]; uniq: c2bo
-			    STBase.S#{-5D,p-}{i} ds_s21h ->
-				case x_s21g{-lvs:ds_s21h-} ::PrelBase.Int{-3g,p-} of {
-				    -- lvs: [x_s21g ds_s21h]; rhs lvs: [ds_s21h]; uniq: c2bp
-				  PrelBase.I#{-5b,p-}{i} ds_s21H ->
+			      -- lvs: [$x1_s1Jw $x0_s1JH]; rhs lvs: [$x0_s1JH]; uniq: c1Rb
+			    STBase.S#{-5D,w-}{i} $x2_s1JI ->
+				case $x0_s1JH{-lvs:$x2_s1JI-} ::PrelBase.Int{-3g,W-} of {
+				    -- lvs: [$x0_s1JH $x2_s1JI]; rhs lvs: [$x2_s1JI]; uniq: c1Rc
+				  PrelBase.I#{-5b,w-}{i} $x3_s1K8 ->
 				      case
-					  _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]# [ds_s21h ds_s21H] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+					  _ccall_ b [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.Int#{-3f,W-}]# [$x2_s1JI $x3_s1K8] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}
 				      of {
-					  -- lvs: [ds_s21h ds_s21H]; rhs lvs: []; uniq: c2bq
-					STBase.StateAndInt#{-5v,p-}{i} ds_s21S ds_s21I ->
+					  -- lvs: [$x2_s1JI $x3_s1K8]; rhs lvs: []; uniq: c1Rd
+					STBase.StateAndInt#{-5v,w-}{i} $x4_s1Kj $x5_s1K9 ->
 					    let {
-					      ds_s22c =
-						   PrelBase.I#{-5b,p-}{i}! [ds_s21I]; } in
-					    let {
-					      ds_s22b =
-						   STBase.S#{-5D,p-}{i}! [ds_s21S];
-					    } in 
-					      PrelTup.(,){-62,p-}{i}! [ds_s22c ds_s22b];
-				      };
-				};
-			  } } in
-		  let { s_s23h =  [x_s21g] \r [ds_s22k]
-			  case
-			      ds_s22k{-lvs:x_s21g-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
-			  of {
-			      -- lvs: [x_s21g ds_s22k]; rhs lvs: [x_s21g]; uniq: c2br
-			    STBase.S#{-5D,p-}{i} ds_s22t ->
-				case x_s21g{-lvs:ds_s22t-} ::PrelBase.Int{-3g,p-} of {
-				    -- lvs: [x_s21g ds_s22t]; rhs lvs: [ds_s22t]; uniq: c2bs
-				  PrelBase.I#{-5b,p-}{i} ds_s22T ->
-				      case
-					  _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]# [ds_s22t ds_s22T] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
-				      of {
-					  -- lvs: [ds_s22t ds_s22T]; rhs lvs: []; uniq: c2bt
-					STBase.StateAndInt#{-5v,p-}{i} ds_s234 ds_s22U ->
-					    let {
-					      ds_s23A =
-						   PrelBase.I#{-5b,p-}{i}! [ds_s22U]; } in
-					    let {
-					      ds_s23z =
-						   STBase.S#{-5D,p-}{i}! [ds_s234];
-					    } in 
-					      PrelTup.(,){-62,p-}{i}! [ds_s23A ds_s23z];
+					      $x6_s1KL =  PrelBase.I#{-5b,w-}{i}! [$x5_s1K9]; } in
+					    let { $x7_s1KK =  STBase.S#{-5D,w-}{i}! [$x4_s1Kj];
+					    } in  PrelTup.(,){-62,w-}{i}! [$x6_s1KL $x7_s1KK];
 				      };
 				};
 			  } } in
 		  let {
-		    ds_s24V =
-			 [] \r [y_s23K]
+		    $xj_s1M6 =
+			 [] \r [$x9_s1KV]
 			    let {
-			      stg_c28E =
-				  (False, True, False, False, True) [y_s23K] \r [ds_s23y]
+			      stg_c1OR =
+				  (False, True, False, False, True) [$x9_s1KV] \r [$xa_s1KJ]
 				      case
-					  ds_s23y{-lvs:y_s23K-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+					  $xa_s1KJ{-lvs:$x9_s1KV-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 				      of {
-					  -- lvs: [ds_s23y y_s23K]; rhs lvs: [y_s23K]; uniq: c2bu
-					STBase.S#{-5D,p-}{i} ds_s23L ->
-					    case y_s23K{-lvs:ds_s23L-} ::PrelBase.Int{-3g,p-} of {
-						-- lvs: [y_s23K ds_s23L]; rhs lvs: [ds_s23L]; uniq: c2bv
-					      PrelBase.I#{-5b,p-}{i} ds_s23U ->
+					  -- lvs: [$xa_s1KJ $x9_s1KV]; rhs lvs: [$x9_s1KV]; uniq: c1Re
+					STBase.S#{-5D,w-}{i} $xb_s1KW ->
+					    case
+						$x9_s1KV{-lvs:$xb_s1KW-} ::PrelBase.Int{-3g,W-}
+					    of {
+						-- lvs: [$x9_s1KV $xb_s1KW]; rhs lvs: [$xb_s1KW]; uniq: c1Rf
+					      PrelBase.I#{-5b,w-}{i} $xc_s1L5 ->
 						  case
-						      lit_a19w{-lvs:ds_s23L, ds_s23U-} ::PrelBase.Float{-3c,p-}
+						      $g3_a15r{-lvs:$xb_s1KW, $xc_s1L5-} ::PrelBase.Float{-3c,W-}
 						  of {
-						      -- lvs: [ds_s23L ds_s23U]; rhs lvs: [ds_s23L ds_s23U]; uniq: c2bw
-						    PrelBase.F#{-59,p-}{i} ds_s243 ->
+						      -- lvs: [$xb_s1KW $xc_s1L5]; rhs lvs: [$xb_s1KW $xc_s1L5]; uniq: c1Rg
+						    PrelBase.F#{-59,w-}{i} $xd_s1Le ->
 							case
-							    lit_a19u{-lvs:ds_s23L, ds_s23U, ds_s243-} ::PrelBase.Double{-3a,p-}
+							    $g1_a15t{-lvs:$xb_s1KW, $xc_s1L5, $xd_s1Le-} ::PrelBase.Double{-3a,W-}
 							of {
-							    -- lvs: [ds_s23L ds_s23U ds_s243]; rhs lvs: [ds_s23L ds_s23U ds_s243]; uniq: c2bx
-							  PrelBase.D#{-56,p-}{i} ds_s24t ->
+							    -- lvs: [$xb_s1KW $xc_s1L5 $xd_s1Le]; rhs lvs: [$xb_s1KW $xc_s1L5 $xd_s1Le]; uniq: c1Rh
+							  PrelBase.D#{-56,w-}{i} $xe_s1LE ->
 							      case
-								  _ccall_ c [(STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-} GHC.Char#{-37,p-} GHC.Float#{-3b,p-} GHC.Double#{-39,p-}]# [ds_s23L ds_s23U 'f' ds_s243 ds_s24t] ::STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}
+								  _ccall_ c [(STBase.StateAndFloat#{-3C,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.Int#{-3f,W-} GHC.Char#{-37,W-} GHC.Float#{-3b,W-} GHC.Double#{-39,W-}]# [$xb_s1KW $xc_s1L5 'f' $xd_s1Le $xe_s1LE] ::STBase.StateAndFloat#{-3C,W-} GHC.RealWorld{-3s,W-}
 							      of {
-								  -- lvs: [ds_s23L ds_s23U ds_s243 ds_s24t]; rhs lvs: []; uniq: c2by
-								STBase.StateAndFloat#{-5u,p-}{i} ds_s24E ds_s24u ->
+								  -- lvs: [$xb_s1KW $xc_s1L5 $xd_s1Le $xe_s1LE]; rhs lvs: []; uniq: c1Ri
+								STBase.StateAndFloat#{-5u,w-}{i} $xf_s1LP $xg_s1LF ->
 								    let {
-								      ds_s24U =
-									   PrelBase.F#{-59,p-}{i}! [ds_s24u]; } in
+								      $xh_s1M5 =
+									   PrelBase.F#{-59,w-}{i}! [$xg_s1LF]; } in
 								    let {
-								      ds_s24T =
-									   STBase.S#{-5D,p-}{i}! [ds_s24E];
+								      $xi_s1M4 =
+									   STBase.S#{-5D,w-}{i}! [$xf_s1LP];
 								    } in 
-								      PrelTup.(,){-62,p-}{i}! [ds_s24U ds_s24T];
+								      PrelTup.(,){-62,w-}{i}! [$xh_s1M5 $xi_s1M4];
 							      };
 							};
 						  };
 					    };
 				      };
-			    } in 
-			      stg_c28E;
-		  } in 
-		    STBase.thenPrimIO{-r4w,p-}
-			s_s23h ds_s24V;
-	} in 
-	  STBase.thenPrimIO{-r4w,p-}
-	      s_s1Xu ds_s258;
+			    } in  stg_c1OR;
+		  } in  STBase.thenPrimIO{-r4t,p-} $x8_s1KM $xj_s1M6;
+	} in  STBase.thenPrimIO{-r4t,p-} a{-r1,x-} $xk_s1Ma;
 
 
 ================================================================================
 Flat Abstract C:
 ED_(PrelNum_integerZu2_closure);
 ED_(PrelNum_integerZu1_closure);
-SET_STATIC_HDR(s25b_closure,PrelNum_ZcZ37_static_info,0,static ,ED_RO_)
+SET_STATIC_HDR(g0_closure,PrelNum_ZcZ37_static_info,0,static ,ED_RO_)
   , (W_)PrelNum_integerZu2_closure, (W_)PrelNum_integerZu1_closure
 };
-IFN_(ret_c2b9) {
-ID_(s25b_closure);
+IFN_(ret_c1QY) {
+ID_(g0_closure);
 	FB_
-	SpA[-1]=s25b_closure;
+	SpA[-1]=g0_closure;
 	RetReg=StdUpdRetVecReg;
 	R1=R6;
 	SpA=SpA-1;
@@ -280,10 +209,9 @@ ID_(s25b_closure);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2b9,ret_c2b9)
-STATIC_ITBL(a19u_info,a19u_entry,StdErrorCode,1,-1,(STATIC_VHS+
-						    2),0,static const,IF_,0,0,0);
-IFN_(a19u_entry) {
+UNVECTBL(static,vtbl_c1QY,ret_c1QY)
+STATIC_ITBL(a15t_info,a15t_entry,StdErrorCode,1,-1,(STATIC_VHS+2),0,static const,IF_,0,0,0);
+IFN_(a15t_entry) {
 ED_(PrelNum_Z36d14_closure);
 	FB_
 	STK_CHK(1,1,5,0,0,0,1);
@@ -291,7 +219,7 @@ ED_(PrelNum_Z36d14_closure);
 	SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
 	UPD_CAF(R1.p,Hp-(BH_HS+1));
 	PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
-	RetReg=(StgRetAddr)UNVEC(ret_c2b9,vtbl_c2b9);
+	RetReg=(StgRetAddr)UNVEC(ret_c1QY,vtbl_c1QY);
 	R1.p=PrelNum_Z36d14_closure;
 	SpB=SpB+5;
 	ENT_VIA_NODE();
@@ -299,17 +227,17 @@ ED_(PrelNum_Z36d14_closure);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SET_STATIC_HDR(a19u_closure,a19u_info,0,static ,ID_RO_)
+SET_STATIC_HDR(a15t_closure,a15t_info,0,static ,ID_RO_)
   , (W_)0, (W_)0
 };
 ED_(PrelNum_integerZu1_closure);
-SET_STATIC_HDR(s25c_closure,PrelNum_ZcZ37_static_info,0,static ,ED_RO_)
+SET_STATIC_HDR(g2_closure,PrelNum_ZcZ37_static_info,0,static ,ED_RO_)
   , (W_)PrelNum_integerZu1_closure, (W_)PrelNum_integerZu1_closure
 };
-IFN_(ret_c2ba) {
-ID_(s25c_closure);
+IFN_(ret_c1QZ) {
+ID_(g2_closure);
 	FB_
-	SpA[-1]=s25c_closure;
+	SpA[-1]=g2_closure;
 	RetReg=StdUpdRetVecReg;
 	R1=R6;
 	SpA=SpA-1;
@@ -319,10 +247,9 @@ ID_(s25c_closure);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2ba,ret_c2ba)
-STATIC_ITBL(a19w_info,a19w_entry,StdErrorCode,1,-1,(STATIC_VHS+
-						    2),0,static const,IF_,0,0,0);
-IFN_(a19w_entry) {
+UNVECTBL(static,vtbl_c1QZ,ret_c1QZ)
+STATIC_ITBL(a15r_info,a15r_entry,StdErrorCode,1,-1,(STATIC_VHS+2),0,static const,IF_,0,0,0);
+IFN_(a15r_entry) {
 ED_(PrelNum_Z36d23_closure);
 	FB_
 	STK_CHK(1,1,5,0,0,0,1);
@@ -330,7 +257,7 @@ ED_(PrelNum_Z36d23_closure);
 	SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
 	UPD_CAF(R1.p,Hp-(BH_HS+1));
 	PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
-	RetReg=(StgRetAddr)UNVEC(ret_c2ba,vtbl_c2ba);
+	RetReg=(StgRetAddr)UNVEC(ret_c1QZ,vtbl_c1QZ);
 	R1.p=PrelNum_Z36d23_closure;
 	SpB=SpB+5;
 	ENT_VIA_NODE();
@@ -338,80 +265,14 @@ ED_(PrelNum_Z36d23_closure);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SET_STATIC_HDR(a19w_closure,a19w_info,0,static ,ID_RO_)
+SET_STATIC_HDR(a15r_closure,a15r_info,0,static ,ID_RO_)
   , (W_)0, (W_)0
 };
-IFN_(ret_c2bb) {
-ED_RO_(PrelBase_IZh_con_info);
-ED_(STBase_SZh_static_closure);
-ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1W9;
-	FB_
-	HEAP_CHK(0,(_FHS+1),0);
-	{
-	I_ _ccall_result;
-	CALLER_SAVE_Base
-	CALLER_SAVE_SpA
-	CALLER_SAVE_SuA
-	CALLER_SAVE_SpB
-	CALLER_SAVE_SuB
-	CALLER_SAVE_Ret
-	CALLER_SAVE_Hp
-	CALLER_SAVE_HpLim
-	_ccall_result = (a());
-	CALLER_RESTORE_Base
-	CALLER_RESTORE_SpA
-	CALLER_RESTORE_SuA
-	CALLER_RESTORE_SpB
-	CALLER_RESTORE_SuB
-	CALLER_RESTORE_Ret
-	CALLER_RESTORE_Hp
-	CALLER_RESTORE_HpLim
-	CALLER_RESTORE_StdUpdRetVec
-	CALLER_RESTORE_StkStub
-	s1W9=_ccall_result;
-	}
-	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1W9);
-	R4.p=STBase_SZh_static_closure;
-	R3.p=Hp-_FHS;
-	SpB=SpB-1;
-	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,21,22,0);
-	JMP_(DIRECT((StgRetAddr)(SpB[1])));
-	FE_
-}
-UNVECTBL(static,vtbl_c2bb,ret_c2bb)
-STATIC_ITBL(s1MF_info,s1MF_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
-IFN_(s1MF_entry) {
-ID_(s1MF_closure);
-IF_(s1MF_fast1);
-	FB_
-	ARGS_CHK_A_LOAD_NODE(1,s1MF_closure);
-	R1.p=*SpA;
-	SpA=SpA+1;
-	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s1MF_fast1);
-	FE_
-}
-IFN_(s1MF_fast1) {
-	FB_
-	STK_CHK(1,0,1,0,0,0,0);
-	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2bb,vtbl_c2bb);
-	SpB=SpB+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,1,1,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
-	FE_
-}
-SET_STATIC_HDR(s1MF_closure,s1MF_info,0,static ,ID_RO_)
-};
-IFN_(ret_c2bd) {
+IFN_(ret_c1R0) {
 ED_RO_(PrelBase_IZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1X8;
+I_ s1Fz_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
@@ -435,10 +296,10 @@ I_ s1X8;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s1X8=_ccall_result;
+	s1Fz_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1X8);
+	*Hp=(W_)(s1Fz_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
@@ -447,56 +308,37 @@ I_ s1X8;
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bd,ret_c2bd)
-STATIC_ITBL(s1Xu_info,s1Xu_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
-IFN_(s1Xu_entry) {
-ID_(s1Xu_closure);
-IF_(s1Xu_fast1);
+UNVECTBL(static,vtbl_c1R0,ret_c1R0)
+STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_a_entry) {
+ED_(Test_a_closure);
+EF_(Test_a_fast1);
 	FB_
-	ARGS_CHK_A_LOAD_NODE(1,s1Xu_closure);
+	ARGS_CHK_A_LOAD_NODE(1,Test_a_closure);
 	R1.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s1Xu_fast1);
+	JMP_(Test_a_fast1);
 	FE_
 }
-IFN_(s1Xu_fast1) {
+FN_(Test_a_fast1) {
 	FB_
 	STK_CHK(1,0,1,0,0,0,0);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2bd,vtbl_c2bd);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R0,vtbl_c1R0);
 	SpB=SpB+1;
 	ENT_VIA_NODE();
 	GRAN_EXEC(3,1,1,1,0);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SET_STATIC_HDR(s1Xu_closure,s1Xu_info,0,static ,ID_RO_)
-};
-STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,(STATIC_VHS+
-							2),0,const,EF_,0,0,0);
-FN_(Test_a_entry) {
-IF_(s1Xu_entry);
-	FB_
-	STK_CHK(1,0,4,0,0,0,1);
-	HEAP_CHK(1,(BH_HS+2),1);
-	SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
-	UPD_CAF(R1.p,Hp-(BH_HS+1));
-	PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
-	RetReg=StdUpdRetVecReg;
-	SpB=SpB+4;
-	GRAN_EXEC(16,2,1,8,0);
-	JMP_(s1Xu_entry);
-	FE_
-}
 SET_STATIC_HDR(Test_a_closure,Test_a_info,0,,ED_RO_)
-  , (W_)0, (W_)0
 };
-IFN_(ret_c2bg) {
+IFN_(ret_c1R3) {
 ED_RO_(PrelBase_IZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1Yq;
+I_ s1GN_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
@@ -521,10 +363,10 @@ I_ s1Yq;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s1Yq=_ccall_result;
+	s1GN_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1Yq);
+	*Hp=(W_)(s1GN_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
@@ -533,10 +375,10 @@ I_ s1Yq;
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bg,ret_c2bg)
-IFN_(ret_c2bf) {
+UNVECTBL(static,vtbl_c1R3,ret_c1R3)
+IFN_(ret_c1R2) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bg,vtbl_c2bg);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R3,vtbl_c1R3);
 	R1.p=*SpA;
 	SpA=SpA+1;
 	ENT_VIA_NODE();
@@ -544,23 +386,23 @@ IFN_(ret_c2bf) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bf,ret_c2bf)
-SPEC_N_ITBL(c2ac_info,c2ac_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
-IFN_(c2ac_entry) {
-IF_(c2ac_fast1);
+UNVECTBL(static,vtbl_c1R2,ret_c1R2)
+SPEC_N_ITBL(c1Qp_info,c1Qp_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c1Qp_entry) {
+IF_(c1Qp_fast1);
 	FB_
 	ARGS_CHK_A(1);
 	R2.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(c2ac_fast1);
+	JMP_(c1Qp_fast1);
 	FE_
 }
-IFN_(c2ac_fast1) {
+IFN_(c1Qp_fast1) {
 	FB_
 	STK_CHK(3,1,1,0,0,0,1);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2bf,vtbl_c2bf);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R2,vtbl_c1R2);
 	SpA[-1]=(P_)(R1.p[_FHS]);
 	R1=R2;
 	SpA=SpA-1;
@@ -583,24 +425,24 @@ EF_(Test_b_fast1);
 	FE_
 }
 FN_(Test_b_fast1) {
-ID_RO_(c2ac_info);
-IF_(c2ac_entry);
+ID_RO_(c1Qp_info);
+IF_(c1Qp_entry);
 	FB_
 	HEAP_CHK(1,(_FHS+1),0);
-	SET_SPEC_HDR(Hp-_FHS,c2ac_info,0,1,1);
+	SET_SPEC_HDR(Hp-_FHS,c1Qp_info,0,1,1);
 	*Hp=(W_)(R1.p);
 	R1.p=Hp-_FHS;
 	GRAN_EXEC(5,2,0,2,0);
-	JMP_(c2ac_entry);
+	JMP_(c1Qp_entry);
 	FE_
 }
 SET_STATIC_HDR(Test_b_closure,Test_b_info,0,,ED_RO_)
 };
-IFN_(ret_c2bm) {
+IFN_(ret_c1R9) {
 ED_RO_(PrelBase_FZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-StgFloat s20f;
+StgFloat s1IC_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
@@ -628,10 +470,10 @@ StgFloat s20f;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s20f=_ccall_result;
+	s1IC_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_FZh_con_info,0,1,0);
-	ASSIGN_FLT(Hp,s20f);
+	ASSIGN_FLT(Hp,s1IC_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-4;
@@ -640,10 +482,10 @@ StgFloat s20f;
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bm,ret_c2bm)
-IFN_(ret_c2bl) {
+UNVECTBL(static,vtbl_c1R9,ret_c1R9)
+IFN_(ret_c1R8) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bm,vtbl_c2bm);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R9,vtbl_c1R9);
 	R1.p=*SpA;
 	ASSIGN_FLT(SpB+1,FltReg1);
 	SpA=SpA+4;
@@ -653,10 +495,10 @@ IFN_(ret_c2bl) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bl,ret_c2bl)
-IFN_(ret_c2bk) {
+UNVECTBL(static,vtbl_c1R8,ret_c1R8)
+IFN_(ret_c1R7) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bl,vtbl_c2bl);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R8,vtbl_c1R8);
 	R1.p=SpA[1];
 	SpB[1]=(W_)(R3.c);
 	SpA[1]=StkStubReg;
@@ -666,10 +508,10 @@ IFN_(ret_c2bk) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bk,ret_c2bk)
-IFN_(ret_c2bj) {
+UNVECTBL(static,vtbl_c1R7,ret_c1R7)
+IFN_(ret_c1R6) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bk,vtbl_c2bk);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R7,vtbl_c1R7);
 	R1.p=SpA[2];
 	SpB[1]=(W_)(R3.i);
 	SpA[2]=StkStubReg;
@@ -679,10 +521,10 @@ IFN_(ret_c2bj) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bj,ret_c2bj)
-IFN_(ret_c2bi) {
+UNVECTBL(static,vtbl_c1R6,ret_c1R6)
+IFN_(ret_c1R5) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bj,vtbl_c2bj);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R6,vtbl_c1R6);
 	R1.p=SpA[3];
 	SpA[3]=StkStubReg;
 	ENT_VIA_NODE();
@@ -690,23 +532,23 @@ IFN_(ret_c2bi) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bi,ret_c2bi)
-SPEC_N_ITBL(c29C_info,c29C_entry,StdErrorCode,1,-1,4,4,static const,IF_,0,0,0);
-IFN_(c29C_entry) {
-IF_(c29C_fast1);
+UNVECTBL(static,vtbl_c1R5,ret_c1R5)
+SPEC_N_ITBL(c1PP_info,c1PP_entry,StdErrorCode,1,-1,4,4,static const,IF_,0,0,0);
+IFN_(c1PP_entry) {
+IF_(c1PP_fast1);
 	FB_
 	ARGS_CHK_A(1);
 	R2.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(c29C_fast1);
+	JMP_(c1PP_fast1);
 	FE_
 }
-IFN_(c29C_fast1) {
+IFN_(c1PP_fast1) {
 	FB_
 	STK_CHK(3,4,4,0,0,0,1);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2bi,vtbl_c2bi);
+	RetReg=(StgRetAddr)UNVEC(ret_c1R5,vtbl_c1R5);
 	SpA[-4]=(P_)(R1.p[(_FHS+3)]);
 	SpA[-3]=(P_)(R1.p[(_FHS+2)]);
 	SpA[-2]=(P_)(R1.p[(_FHS+1)]);
@@ -735,105 +577,27 @@ EF_(Test_c_fast4);
 	FE_
 }
 FN_(Test_c_fast4) {
-ID_RO_(c29C_info);
-IF_(c29C_entry);
+ID_RO_(c1PP_info);
+IF_(c1PP_entry);
 	FB_
 	HEAP_CHK(15,(_FHS+4),0);
-	SET_SPEC_HDR(Hp-(_FHS+3),c29C_info,0,4,4);
+	SET_SPEC_HDR(Hp-(_FHS+3),c1PP_info,0,4,4);
 	Hp[-3]=(W_)(R1.p);
 	Hp[-2]=(W_)(R2.p);
 	Hp[-1]=(W_)(R3.p);
 	*Hp=(W_)(R4.p);
 	R1.p=Hp-(_FHS+3);
 	GRAN_EXEC(5,2,0,5,0);
-	JMP_(c29C_entry);
+	JMP_(c1PP_entry);
 	FE_
 }
 SET_STATIC_HDR(Test_c_closure,Test_c_info,0,,ED_RO_)
 };
-IFN_(ret_c2bp) {
-ED_RO_(PrelBase_IZh_con_info);
-ED_(STBase_SZh_static_closure);
-ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s21I;
-	FB_
-	HEAP_CHK(0,(_FHS+1),0);
-	{
-	I_ _ccall_result;
-	I_ _ccall_arg1=R3.i;
-	CALLER_SAVE_Base
-	CALLER_SAVE_SpA
-	CALLER_SAVE_SuA
-	CALLER_SAVE_SpB
-	CALLER_SAVE_SuB
-	CALLER_SAVE_Ret
-	CALLER_SAVE_Hp
-	CALLER_SAVE_HpLim
-	_ccall_result = (b((_ccall_arg1)));
-	CALLER_RESTORE_Base
-	CALLER_RESTORE_SpA
-	CALLER_RESTORE_SuA
-	CALLER_RESTORE_SpB
-	CALLER_RESTORE_SuB
-	CALLER_RESTORE_Ret
-	CALLER_RESTORE_Hp
-	CALLER_RESTORE_HpLim
-	CALLER_RESTORE_StdUpdRetVec
-	CALLER_RESTORE_StkStub
-	s21I=_ccall_result;
-	}
-	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s21I);
-	R4.p=STBase_SZh_static_closure;
-	R3.p=Hp-_FHS;
-	SpB=SpB-1;
-	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,22,22,0);
-	JMP_(DIRECT((StgRetAddr)(SpB[1])));
-	FE_
-}
-UNVECTBL(static,vtbl_c2bp,ret_c2bp)
-IFN_(ret_c2bo) {
-	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bp,vtbl_c2bp);
-	R1.p=*SpA;
-	SpA=SpA+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,2,1,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
-	FE_
-}
-UNVECTBL(static,vtbl_c2bo,ret_c2bo)
-SPEC_N_ITBL(s22a_info,s22a_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
-IFN_(s22a_entry) {
-IF_(s22a_fast1);
-	FB_
-	ARGS_CHK_A(1);
-	R2.p=*SpA;
-	SpA=SpA+1;
-	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s22a_fast1);
-	FE_
-}
-IFN_(s22a_fast1) {
-	FB_
-	STK_CHK(3,1,1,0,0,0,1);
-	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2bo,vtbl_c2bo);
-	SpA[-1]=(P_)(R1.p[_FHS]);
-	R1=R2;
-	SpA=SpA-1;
-	SpB=SpB+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(5,1,2,2,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
-	FE_
-}
-IFN_(ret_c2bs) {
+IFN_(ret_c1Rc) {
 ED_RO_(PrelBase_IZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s22U;
+I_ s1K9_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
@@ -858,10 +622,10 @@ I_ s22U;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s22U=_ccall_result;
+	s1K9_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s22U);
+	*Hp=(W_)(s1K9_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
@@ -870,10 +634,10 @@ I_ s22U;
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bs,ret_c2bs)
-IFN_(ret_c2br) {
+UNVECTBL(static,vtbl_c1Rc,ret_c1Rc)
+IFN_(ret_c1Rb) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bs,vtbl_c2bs);
+	RetReg=(StgRetAddr)UNVEC(ret_c1Rc,vtbl_c1Rc);
 	R1.p=*SpA;
 	SpA=SpA+1;
 	ENT_VIA_NODE();
@@ -881,23 +645,23 @@ IFN_(ret_c2br) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2br,ret_c2br)
-SPEC_N_ITBL(s23h_info,s23h_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
-IFN_(s23h_entry) {
-IF_(s23h_fast1);
+UNVECTBL(static,vtbl_c1Rb,ret_c1Rb)
+SPEC_N_ITBL(s1KM_info,s1KM_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(s1KM_entry) {
+IF_(s1KM_fast1);
 	FB_
 	ARGS_CHK_A(1);
 	R2.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s23h_fast1);
+	JMP_(s1KM_fast1);
 	FE_
 }
-IFN_(s23h_fast1) {
+IFN_(s1KM_fast1) {
 	FB_
 	STK_CHK(3,1,1,0,0,0,1);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2br,vtbl_c2br);
+	RetReg=(StgRetAddr)UNVEC(ret_c1Rb,vtbl_c1Rb);
 	SpA[-1]=(P_)(R1.p[_FHS]);
 	R1=R2;
 	SpA=SpA-1;
@@ -907,11 +671,11 @@ IFN_(s23h_fast1) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-IFN_(ret_c2bx) {
+IFN_(ret_c1Rh) {
 ED_RO_(PrelBase_FZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-StgFloat s24u;
+StgFloat s1LF_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
@@ -939,10 +703,10 @@ StgFloat s24u;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s24u=_ccall_result;
+	s1LF_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_FZh_con_info,0,1,0);
-	ASSIGN_FLT(Hp,s24u);
+	ASSIGN_FLT(Hp,s1LF_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-3;
@@ -951,12 +715,12 @@ StgFloat s24u;
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bx,ret_c2bx)
-IFN_(ret_c2bw) {
-ID_(a19u_closure);
+UNVECTBL(static,vtbl_c1Rh,ret_c1Rh)
+IFN_(ret_c1Rg) {
+ID_(a15t_closure);
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bx,vtbl_c2bx);
-	R1.p=a19u_closure;
+	RetReg=(StgRetAddr)UNVEC(ret_c1Rh,vtbl_c1Rh);
+	R1.p=a15t_closure;
 	ASSIGN_FLT(SpB+1,FltReg1);
 	SpB=SpB+1;
 	ENT_VIA_NODE();
@@ -964,12 +728,12 @@ ID_(a19u_closure);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bw,ret_c2bw)
-IFN_(ret_c2bv) {
-ID_(a19w_closure);
+UNVECTBL(static,vtbl_c1Rg,ret_c1Rg)
+IFN_(ret_c1Rf) {
+ID_(a15r_closure);
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bw,vtbl_c2bw);
-	R1.p=a19w_closure;
+	RetReg=(StgRetAddr)UNVEC(ret_c1Rg,vtbl_c1Rg);
+	R1.p=a15r_closure;
 	SpB[1]=(W_)(R3.i);
 	SpB=SpB+1;
 	ENT_VIA_NODE();
@@ -977,10 +741,10 @@ ID_(a19w_closure);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bv,ret_c2bv)
-IFN_(ret_c2bu) {
+UNVECTBL(static,vtbl_c1Rf,ret_c1Rf)
+IFN_(ret_c1Re) {
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c2bv,vtbl_c2bv);
+	RetReg=(StgRetAddr)UNVEC(ret_c1Rf,vtbl_c1Rf);
 	R1.p=*SpA;
 	SpA=SpA+1;
 	ENT_VIA_NODE();
@@ -988,23 +752,23 @@ IFN_(ret_c2bu) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c2bu,ret_c2bu)
-SPEC_N_ITBL(c28E_info,c28E_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
-IFN_(c28E_entry) {
-IF_(c28E_fast1);
+UNVECTBL(static,vtbl_c1Re,ret_c1Re)
+SPEC_N_ITBL(c1OR_info,c1OR_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c1OR_entry) {
+IF_(c1OR_fast1);
 	FB_
 	ARGS_CHK_A(1);
 	R2.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(c28E_fast1);
+	JMP_(c1OR_fast1);
 	FE_
 }
-IFN_(c28E_fast1) {
+IFN_(c1OR_fast1) {
 	FB_
 	STK_CHK(3,1,3,0,0,0,1);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c2bu,vtbl_c2bu);
+	RetReg=(StgRetAddr)UNVEC(ret_c1Re,vtbl_c1Re);
 	SpA[-1]=(P_)(R1.p[_FHS]);
 	R1=R2;
 	SpA=SpA-1;
@@ -1014,67 +778,63 @@ IFN_(c28E_fast1) {
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SPEC_N_ITBL(s24V_info,s24V_entry,StdErrorCode,1,-1,1,0,static const,IF_,0,0,0);
-IFN_(s24V_entry) {
-IF_(s24V_fast1);
+SPEC_N_ITBL(s1M6_info,s1M6_entry,StdErrorCode,1,-1,1,0,static const,IF_,0,0,0);
+IFN_(s1M6_entry) {
+IF_(s1M6_fast1);
 	FB_
 	ARGS_CHK_A(1);
 	R2.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s24V_fast1);
+	JMP_(s1M6_fast1);
 	FE_
 }
-IFN_(s24V_fast1) {
-ID_RO_(c28E_info);
-IF_(c28E_entry);
+IFN_(s1M6_fast1) {
+ID_RO_(c1OR_info);
+IF_(c1OR_entry);
 	FB_
 	HEAP_CHK(3,(_FHS+1),1);
-	SET_SPEC_HDR(Hp-_FHS,c28E_info,0,1,1);
+	SET_SPEC_HDR(Hp-_FHS,c1OR_info,0,1,1);
 	*Hp=(W_)(R2.p);
 	R1.p=Hp-_FHS;
 	GRAN_EXEC(5,2,0,2,0);
-	JMP_(c28E_entry);
+	JMP_(c1OR_entry);
 	FE_
 }
-SPEC_N_ITBL(s258_info,s258_entry,StdErrorCode,1,-1,1,0,static const,IF_,0,0,0);
-IFN_(s258_entry) {
-IF_(s258_fast1);
+SPEC_N_ITBL(s1Ma_info,s1Ma_entry,StdErrorCode,1,-1,1,0,static const,IF_,0,0,0);
+IFN_(s1Ma_entry) {
+IF_(s1Ma_fast1);
 	FB_
 	ARGS_CHK_A(1);
 	R2.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s258_fast1);
+	JMP_(s1Ma_fast1);
 	FE_
 }
-IFN_(s258_fast1) {
-ID_RO_(s22a_info);
-ID_RO_(s23h_info);
-ID_RO_(s24V_info);
+IFN_(s1Ma_fast1) {
+ID_RO_(s1KM_info);
+ID_RO_(s1M6_info);
 ED_(STBase_thenPrimIO_closure);
 	FB_
 	STK_CHK(3,2,0,0,0,0,1);
-	HEAP_CHK(3,((_FHS*3)+3),1);
-	SET_SPEC_HDR(Hp-((_FHS*3)+2),s22a_info,0,1,1);
-	Hp[-((_FHS*2)+2)]=(W_)(R2.p);
-	SET_SPEC_HDR(Hp-((_FHS*2)+1),s23h_info,0,1,1);
+	HEAP_CHK(3,((_FHS*2)+2),1);
+	SET_SPEC_HDR(Hp-((_FHS*2)+1),s1KM_info,0,1,1);
 	Hp[-(_FHS+1)]=(W_)(R2.p);
-	SET_SPEC_HDR(Hp-_FHS,s24V_info,0,1,0);
+	SET_SPEC_HDR(Hp-_FHS,s1M6_info,0,1,0);
 	SpA[-1]=Hp-_FHS;
 	SpA[-2]=Hp-((_FHS*2)+1);
 	R1.p=STBase_thenPrimIO_closure;
 	SpA=SpA-2;
 	ENT_VIA_NODE();
-	GRAN_EXEC(11,2,3,7,0);
+	GRAN_EXEC(9,2,3,5,0);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,(STATIC_VHS+
-							2),0,const,EF_,0,0,0);
+STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,(STATIC_VHS+2),0,const,EF_,0,0,0);
 FN_(Test_d_entry) {
-ID_RO_(s258_info);
-ID_(s1Xu_closure);
+ID_RO_(s1Ma_info);
+ED_(Test_a_closure);
 ED_(STBase_thenPrimIO_closure);
 	FB_
 	STK_CHK(1,2,4,0,0,0,1);
@@ -1082,9 +842,9 @@ ED_(STBase_thenPrimIO_closure);
 	SET_BH_HDR(Hp-(BH_HS+_FHS+2),BH_UPD_info,0,(BH_VHS+2),0);
 	UPD_CAF(R1.p,Hp-(BH_HS+_FHS+2));
 	PUSH_STD_UPD_FRAME(Hp-(BH_HS+_FHS+2),0,0);
-	SET_SPEC_HDR(Hp-_FHS,s258_info,0,1,0);
+	SET_SPEC_HDR(Hp-_FHS,s1Ma_info,0,1,0);
 	SpA[-1]=Hp-_FHS;
-	SpA[-2]=s1Xu_closure;
+	SpA[-2]=Test_a_closure;
 	RetReg=StdUpdRetVecReg;
 	R1.p=STBase_thenPrimIO_closure;
 	SpA=SpA-2;
diff --git a/ghc/tests/ccall/should_compile/cc006.stderr b/ghc/tests/ccall/should_compile/cc006.stderr
index df765d7667cf4d8bfcc196e2557b0a92e6027fee..8717e5c82396e369b00eb7654b2c97a1712b40fa 100644
--- a/ghc/tests/ccall/should_compile/cc006.stderr
+++ b/ghc/tests/ccall/should_compile/cc006.stderr
@@ -1,173 +1,102 @@
 
-NOTE: Simplifier still going after 4 iterations; bailing out.
-
 
 ================================================================================
 STG syntax:
-d{-r5y,x-} =
-     [] \r [x_s1vw]
+a{-r5u,x-} =
+     [] \r [$x0_s1iK]
+	case $x0_s1iK ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of {
+	    -- lvs: [$x0_s1iK]; rhs lvs: []; uniq: c1pz
+	  STBase.S#{-5D,w-}{i} $x1_s1jb ->
+	      case
+		  _ccall_ a [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]# [$x1_s1jb] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}
+	      of {
+		  -- lvs: [$x1_s1jb]; rhs lvs: []; uniq: c1pA
+		STBase.StateAndInt#{-5v,w-}{i} $x2_s1jl $x3_s1ja ->
+		    let { $x4_s1jL =  PrelBase.I#{-5b,w-}{i}! [$x3_s1ja]; } in
+		    let { $x5_s1jK =  STBase.S#{-5D,w-}{i}! [$x2_s1jl];
+		    } in  PrelTup.(,){-62,w-}{i}! [$x4_s1jL $x5_s1jK];
+	      };
+	};
+b{-r5v,x-} =
+     [] \r [$x0_s1jJ]
+	case $x0_s1jJ ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of {
+	    -- lvs: [$x0_s1jJ]; rhs lvs: []; uniq: c1pB
+	  STBase.S#{-5D,w-}{i} $x1_s1kc ->
+	      case
+		  _ccall_ b [(Foreign.StateAndStablePtr#{-3J,W-} GHC.RealWorld{-3s,W-} PrelBase.Int{-3g,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]# [$x1_s1kc] ::Foreign.StateAndStablePtr#{-3J,W-} GHC.RealWorld{-3s,W-} PrelBase.Int{-3g,W-}
+	      of {
+		  -- lvs: [$x1_s1kc]; rhs lvs: []; uniq: c1pC
+		Foreign.StateAndStablePtr#{-5B,w-}{i} $x2_s1km $x3_s1kb ->
+		    let { $x4_s1kO =  Foreign.StablePtr{-5o,w-}{i}! [$x3_s1kb]; } in
+		    let { $x5_s1kN =  STBase.S#{-5D,w-}{i}! [$x2_s1km];
+		    } in  PrelTup.(,){-62,w-}{i}! [$x4_s1kO $x5_s1kN];
+	      };
+	};
+c{-r5w,x-} =
+     [] \r [$x0_s1kX]
 	let {
-	  stg_c1Fh =
-	      (False, True, False, False, True) [x_s1vw] \r [ds_s1vn]
+	  stg_c1oM =
+	      (False, True, False, False, True) [$x0_s1kX] \r [$x1_s1kM]
 		  case
-		      ds_s1vn{-lvs:x_s1vw-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		      $x1_s1kM{-lvs:$x0_s1kX-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		  of {
-		      -- lvs: [ds_s1vn x_s1vw]; rhs lvs: [x_s1vw]; uniq: c1Fi
-		    STBase.S#{-5D,p-}{i} ds_s1vx ->
-			case
-			    x_s1vw{-lvs:ds_s1vx-} ::Foreign.StablePtr{-3w,p-} PrelBase.Int{-3g,p-}
-			of {
-			    -- lvs: [x_s1vw ds_s1vx]; rhs lvs: [ds_s1vx]; uniq: c1Fj
-			  Foreign.StablePtr{-5o,p-}{i} ds_s1vX ->
+		      -- lvs: [$x1_s1kM $x0_s1kX]; rhs lvs: [$x0_s1kX]; uniq: c1pD
+		    STBase.S#{-5D,w-}{i} $x2_s1kY ->
+			case $x0_s1kX{-lvs:$x2_s1kY-} ::Foreign.ForeignObj{-3l,W-} of {
+			    -- lvs: [$x0_s1kX $x2_s1kY]; rhs lvs: [$x2_s1kY]; uniq: c1pE
+			  Foreign.ForeignObj{-5f,w-}{i} $x3_s1lo ->
 			      case
-				  _ccall_ d [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) (GHC.StablePtr#{-3v,p-} PrelBase.Int{-3g,p-})]# [ds_s1vx ds_s1vX] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+				  _ccall_ c [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.ForeignObj#{-3k,W-}]# [$x2_s1kY $x3_s1lo] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}
 			      of {
-				  -- lvs: [ds_s1vx ds_s1vX]; rhs lvs: []; uniq: c1Fk
-				STBase.StateAndInt#{-5v,p-}{i} ds_s1w8 ds_s1vY ->
-				    let {
-				      ds_s1wC =
-					   PrelBase.I#{-5b,p-}{i}! [ds_s1vY]; } in
-				    let {
-				      ds_s1wB =
-					   STBase.S#{-5D,p-}{i}! [ds_s1w8];
-				    } in 
-				      PrelTup.(,){-62,p-}{i}! [ds_s1wC ds_s1wB];
+				  -- lvs: [$x2_s1kY $x3_s1lo]; rhs lvs: []; uniq: c1pF
+				STBase.StateAndInt#{-5v,w-}{i} $x4_s1lz $x5_s1lp ->
+				    let { $x6_s1m3 =  PrelBase.I#{-5b,w-}{i}! [$x5_s1lp]; } in
+				    let { $x7_s1m2 =  STBase.S#{-5D,w-}{i}! [$x4_s1lz];
+				    } in  PrelTup.(,){-62,w-}{i}! [$x6_s1m3 $x7_s1m2];
 			      };
 			};
 		  };
-	} in 
-	  stg_c1Fh;
-c{-r5x,x-} =
-     [] \r [x_s1wL]
+	} in  stg_c1oM;
+d{-r5x,x-} =
+     [] \r [$x0_s1mc]
 	let {
-	  stg_c1EH =
-	      (False, True, False, False, True) [x_s1wL] \r [ds_s1wA]
+	  stg_c1oc =
+	      (False, True, False, False, True) [$x0_s1mc] \r [$x1_s1m1]
 		  case
-		      ds_s1wA{-lvs:x_s1wL-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+		      $x1_s1m1{-lvs:$x0_s1mc-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-}
 		  of {
-		      -- lvs: [ds_s1wA x_s1wL]; rhs lvs: [x_s1wL]; uniq: c1Fl
-		    STBase.S#{-5D,p-}{i} ds_s1wM ->
-			case x_s1wL{-lvs:ds_s1wM-} ::Foreign.ForeignObj{-3l,p-} of {
-			    -- lvs: [x_s1wL ds_s1wM]; rhs lvs: [ds_s1wM]; uniq: c1Fm
-			  Foreign.ForeignObj{-5f,p-}{i} ds_s1xc ->
+		      -- lvs: [$x1_s1m1 $x0_s1mc]; rhs lvs: [$x0_s1mc]; uniq: c1pG
+		    STBase.S#{-5D,w-}{i} $x2_s1md ->
+			case
+			    $x0_s1mc{-lvs:$x2_s1md-} ::Foreign.StablePtr{-3w,W-} PrelBase.Int{-3g,W-}
+			of {
+			    -- lvs: [$x0_s1mc $x2_s1md]; rhs lvs: [$x2_s1md]; uniq: c1pH
+			  Foreign.StablePtr{-5o,w-}{i} $x3_s1mD ->
 			      case
-				  _ccall_ c [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.ForeignObj#{-3k,p-}]# [ds_s1wM ds_s1xc] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+				  _ccall_ d [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) (GHC.StablePtr#{-3v,W-} PrelBase.Int{-3g,W-})]# [$x2_s1md $x3_s1mD] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}
 			      of {
-				  -- lvs: [ds_s1wM ds_s1xc]; rhs lvs: []; uniq: c1Fn
-				STBase.StateAndInt#{-5v,p-}{i} ds_s1xn ds_s1xd ->
-				    let {
-				      ds_s1xL =
-					   PrelBase.I#{-5b,p-}{i}! [ds_s1xd]; } in
-				    let {
-				      ds_s1xK =
-					   STBase.S#{-5D,p-}{i}! [ds_s1xn];
-				    } in 
-				      PrelTup.(,){-62,p-}{i}! [ds_s1xL ds_s1xK];
+				  -- lvs: [$x2_s1md $x3_s1mD]; rhs lvs: []; uniq: c1pI
+				STBase.StateAndInt#{-5v,w-}{i} $x4_s1mO $x5_s1mE ->
+				    let { $x6_s1n5 =  PrelBase.I#{-5b,w-}{i}! [$x5_s1mE]; } in
+				    let { $x7_s1n6 =  STBase.S#{-5D,w-}{i}! [$x4_s1mO];
+				    } in  PrelTup.(,){-62,w-}{i}! [$x6_s1n5 $x7_s1n6];
 			      };
 			};
 		  };
-	} in 
-	  stg_c1EH;
-s_s1sE =
-     [] \r [ds_s1xJ]
-	case ds_s1xJ ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
-	    -- lvs: [ds_s1xJ]; rhs lvs: []; uniq: c1Fo
-	  STBase.S#{-5D,p-}{i} ds_s1yc ->
-	      case
-		  _ccall_ b [(Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1yc] ::Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}
-	      of {
-		  -- lvs: [ds_s1yc]; rhs lvs: []; uniq: c1Fp
-		Foreign.StateAndStablePtr#{-5B,p-}{i} ds_s1ym ds_s1yb ->
-		    let {
-		      ds_s1yC =
-			   Foreign.StablePtr{-5o,p-}{i}! [ds_s1yb]; } in
-		    let {
-		      ds_s1yB =
-			   STBase.S#{-5D,p-}{i}! [ds_s1ym];
-		    } in 
-		      PrelTup.(,){-62,p-}{i}! [ds_s1yC ds_s1yB];
-	      };
-	};
-s_s1zw =
-    (False, True, False, False, True) [] \r [ds_s1yK]
-	case ds_s1yK ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
-	    -- lvs: [ds_s1yK]; rhs lvs: []; uniq: c1Fq
-	  STBase.S#{-5D,p-}{i} ds_s1zb ->
-	      case
-		  _ccall_ b [(Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1zb] ::Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}
-	      of {
-		  -- lvs: [ds_s1zb]; rhs lvs: []; uniq: c1Fr
-		Foreign.StateAndStablePtr#{-5B,p-}{i} ds_s1zl ds_s1za ->
-		    let {
-		      ds_s1zL =
-			   Foreign.StablePtr{-5o,p-}{i}! [ds_s1za]; } in
-		    let {
-		      ds_s1zK =
-			   STBase.S#{-5D,p-}{i}! [ds_s1zl];
-		    } in 
-		      PrelTup.(,){-62,p-}{i}! [ds_s1zL ds_s1zK];
-	      };
-	};
-b{-r5w,x-} =
-     [] \u []
-	s_s1zw;
-s_s1uE =
-     [] \r [ds_s1zJ]
-	case ds_s1zJ ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
-	    -- lvs: [ds_s1zJ]; rhs lvs: []; uniq: c1Fs
-	  STBase.S#{-5D,p-}{i} ds_s1Ac ->
-	      case
-		  _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1Ac] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
-	      of {
-		  -- lvs: [ds_s1Ac]; rhs lvs: []; uniq: c1Ft
-		STBase.StateAndInt#{-5v,p-}{i} ds_s1Am ds_s1Ab ->
-		    let {
-		      ds_s1AC =
-			   PrelBase.I#{-5b,p-}{i}! [ds_s1Ab]; } in
-		    let {
-		      ds_s1AB =
-			   STBase.S#{-5D,p-}{i}! [ds_s1Am];
-		    } in 
-		      PrelTup.(,){-62,p-}{i}! [ds_s1AC ds_s1AB];
-	      };
-	};
-s_s1Bw =
-    (False, True, False, False, True) [] \r [ds_s1AK]
-	case ds_s1AK ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
-	    -- lvs: [ds_s1AK]; rhs lvs: []; uniq: c1Fu
-	  STBase.S#{-5D,p-}{i} ds_s1Bb ->
-	      case
-		  _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1Bb] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
-	      of {
-		  -- lvs: [ds_s1Bb]; rhs lvs: []; uniq: c1Fv
-		STBase.StateAndInt#{-5v,p-}{i} ds_s1Bl ds_s1Ba ->
-		    let {
-		      ds_s1BE =
-			   PrelBase.I#{-5b,p-}{i}! [ds_s1Ba]; } in
-		    let {
-		      ds_s1BF =
-			   STBase.S#{-5D,p-}{i}! [ds_s1Bl];
-		    } in 
-		      PrelTup.(,){-62,p-}{i}! [ds_s1BE ds_s1BF];
-	      };
-	};
-a{-r5v,x-} =
-     [] \u []
-	s_s1Bw;
+	} in  stg_c1oc;
 
 
 ================================================================================
 Flat Abstract C:
-IFN_(ret_c1Fj) {
+IFN_(ret_c1pz) {
 ED_RO_(PrelBase_IZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1vY;
+I_ s1ja_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
 	I_ _ccall_result;
-	StgStablePtr _ccall_arg1=R3.i;
 	CALLER_SAVE_Base
 	CALLER_SAVE_SpA
 	CALLER_SAVE_SuA
@@ -176,111 +105,7 @@ I_ s1vY;
 	CALLER_SAVE_Ret
 	CALLER_SAVE_Hp
 	CALLER_SAVE_HpLim
-	_ccall_result = (d((_ccall_arg1)));
-	CALLER_RESTORE_Base
-	CALLER_RESTORE_SpA
-	CALLER_RESTORE_SuA
-	CALLER_RESTORE_SpB
-	CALLER_RESTORE_SuB
-	CALLER_RESTORE_Ret
-	CALLER_RESTORE_Hp
-	CALLER_RESTORE_HpLim
-	CALLER_RESTORE_StdUpdRetVec
-	CALLER_RESTORE_StkStub
-	s1vY=_ccall_result;
-	}
-	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1vY);
-	R4.p=STBase_SZh_static_closure;
-	R3.p=Hp-_FHS;
-	SpB=SpB-1;
-	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,22,22,0);
-	JMP_(DIRECT((StgRetAddr)(SpB[1])));
-	FE_
-}
-UNVECTBL(static,vtbl_c1Fj,ret_c1Fj)
-IFN_(ret_c1Fi) {
-	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fj,vtbl_c1Fj);
-	R1.p=*SpA;
-	SpA=SpA+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,2,1,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
-	FE_
-}
-UNVECTBL(static,vtbl_c1Fi,ret_c1Fi)
-SPEC_N_ITBL(c1Fh_info,c1Fh_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
-IFN_(c1Fh_entry) {
-IF_(c1Fh_fast1);
-	FB_
-	ARGS_CHK_A(1);
-	R2.p=*SpA;
-	SpA=SpA+1;
-	GRAN_EXEC(5,2,1,0,0);
-	JMP_(c1Fh_fast1);
-	FE_
-}
-IFN_(c1Fh_fast1) {
-	FB_
-	STK_CHK(3,1,1,0,0,0,1);
-	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fi,vtbl_c1Fi);
-	SpA[-1]=(P_)(R1.p[_FHS]);
-	R1=R2;
-	SpA=SpA-1;
-	SpB=SpB+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(5,1,2,2,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
-	FE_
-}
-STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
-FN_(Test_d_entry) {
-ED_(Test_d_closure);
-EF_(Test_d_fast1);
-	FB_
-	ARGS_CHK_A_LOAD_NODE(1,Test_d_closure);
-	R1.p=*SpA;
-	SpA=SpA+1;
-	GRAN_EXEC(5,2,1,0,0);
-	JMP_(Test_d_fast1);
-	FE_
-}
-FN_(Test_d_fast1) {
-ID_RO_(c1Fh_info);
-IF_(c1Fh_entry);
-	FB_
-	HEAP_CHK(1,(_FHS+1),0);
-	SET_SPEC_HDR(Hp-_FHS,c1Fh_info,0,1,1);
-	*Hp=(W_)(R1.p);
-	R1.p=Hp-_FHS;
-	GRAN_EXEC(5,2,0,2,0);
-	JMP_(c1Fh_entry);
-	FE_
-}
-SET_STATIC_HDR(Test_d_closure,Test_d_info,0,,ED_RO_)
-};
-IFN_(ret_c1Fm) {
-ED_RO_(PrelBase_IZh_con_info);
-ED_(STBase_SZh_static_closure);
-ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1xd;
-	FB_
-	HEAP_CHK(4,(_FHS+1),0);
-	{
-	I_ _ccall_result;
-	StgForeignObj _ccall_arg1=ForeignObj_CLOSURE_DATA(R3.p);
-	CALLER_SAVE_Base
-	CALLER_SAVE_SpA
-	CALLER_SAVE_SuA
-	CALLER_SAVE_SpB
-	CALLER_SAVE_SuB
-	CALLER_SAVE_Ret
-	CALLER_SAVE_Hp
-	CALLER_SAVE_HpLim
-	_ccall_result = (c((_ccall_arg1)));
+	_ccall_result = (a());
 	CALLER_RESTORE_Base
 	CALLER_RESTORE_SpA
 	CALLER_RESTORE_SuA
@@ -291,86 +116,49 @@ I_ s1xd;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s1xd=_ccall_result;
+	s1ja_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1xd);
+	*Hp=(W_)(s1ja_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
 	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,22,22,0);
+	GRAN_EXEC(10,2,21,22,0);
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c1Fm,ret_c1Fm)
-IFN_(ret_c1Fl) {
+UNVECTBL(static,vtbl_c1pz,ret_c1pz)
+STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_a_entry) {
+ED_(Test_a_closure);
+EF_(Test_a_fast1);
 	FB_
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fm,vtbl_c1Fm);
+	ARGS_CHK_A_LOAD_NODE(1,Test_a_closure);
 	R1.p=*SpA;
 	SpA=SpA+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,2,1,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
-	FE_
-}
-UNVECTBL(static,vtbl_c1Fl,ret_c1Fl)
-SPEC_N_ITBL(c1EH_info,c1EH_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
-IFN_(c1EH_entry) {
-IF_(c1EH_fast1);
-	FB_
-	ARGS_CHK_A(1);
-	R2.p=*SpA;
-	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(c1EH_fast1);
+	JMP_(Test_a_fast1);
 	FE_
 }
-IFN_(c1EH_fast1) {
+FN_(Test_a_fast1) {
 	FB_
-	STK_CHK(3,1,1,0,0,0,1);
+	STK_CHK(1,0,1,0,0,0,0);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fl,vtbl_c1Fl);
-	SpA[-1]=(P_)(R1.p[_FHS]);
-	R1=R2;
-	SpA=SpA-1;
+	RetReg=(StgRetAddr)UNVEC(ret_c1pz,vtbl_c1pz);
 	SpB=SpB+1;
 	ENT_VIA_NODE();
-	GRAN_EXEC(5,1,2,2,0);
+	GRAN_EXEC(3,1,1,1,0);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-STATIC_ITBL(Test_c_info,Test_c_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
-FN_(Test_c_entry) {
-ED_(Test_c_closure);
-EF_(Test_c_fast1);
-	FB_
-	ARGS_CHK_A_LOAD_NODE(1,Test_c_closure);
-	R1.p=*SpA;
-	SpA=SpA+1;
-	GRAN_EXEC(5,2,1,0,0);
-	JMP_(Test_c_fast1);
-	FE_
-}
-FN_(Test_c_fast1) {
-ID_RO_(c1EH_info);
-IF_(c1EH_entry);
-	FB_
-	HEAP_CHK(1,(_FHS+1),0);
-	SET_SPEC_HDR(Hp-_FHS,c1EH_info,0,1,1);
-	*Hp=(W_)(R1.p);
-	R1.p=Hp-_FHS;
-	GRAN_EXEC(5,2,0,2,0);
-	JMP_(c1EH_entry);
-	FE_
-}
-SET_STATIC_HDR(Test_c_closure,Test_c_info,0,,ED_RO_)
+SET_STATIC_HDR(Test_a_closure,Test_a_info,0,,ED_RO_)
 };
-IFN_(ret_c1Fo) {
+IFN_(ret_c1pB) {
 ED_RO_(Foreign_StablePtr_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-StgStablePtr s1yb;
+StgStablePtr s1kb_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
@@ -394,10 +182,10 @@ StgStablePtr s1yb;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s1yb=_ccall_result;
+	s1kb_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,Foreign_StablePtr_con_info,0,1,0);
-	*Hp=(W_)(s1yb);
+	*Hp=(W_)(s1kb_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
@@ -406,41 +194,42 @@ StgStablePtr s1yb;
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c1Fo,ret_c1Fo)
-STATIC_ITBL(s1sE_info,s1sE_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
-IFN_(s1sE_entry) {
-ID_(s1sE_closure);
-IF_(s1sE_fast1);
+UNVECTBL(static,vtbl_c1pB,ret_c1pB)
+STATIC_ITBL(Test_b_info,Test_b_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_b_entry) {
+ED_(Test_b_closure);
+EF_(Test_b_fast1);
 	FB_
-	ARGS_CHK_A_LOAD_NODE(1,s1sE_closure);
+	ARGS_CHK_A_LOAD_NODE(1,Test_b_closure);
 	R1.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s1sE_fast1);
+	JMP_(Test_b_fast1);
 	FE_
 }
-IFN_(s1sE_fast1) {
+FN_(Test_b_fast1) {
 	FB_
 	STK_CHK(1,0,1,0,0,0,0);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fo,vtbl_c1Fo);
+	RetReg=(StgRetAddr)UNVEC(ret_c1pB,vtbl_c1pB);
 	SpB=SpB+1;
 	ENT_VIA_NODE();
 	GRAN_EXEC(3,1,1,1,0);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SET_STATIC_HDR(s1sE_closure,s1sE_info,0,static ,ID_RO_)
+SET_STATIC_HDR(Test_b_closure,Test_b_info,0,,ED_RO_)
 };
-IFN_(ret_c1Fq) {
-ED_RO_(Foreign_StablePtr_con_info);
+IFN_(ret_c1pE) {
+ED_RO_(PrelBase_IZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-StgStablePtr s1za;
+I_ s1lp_;
 	FB_
-	HEAP_CHK(0,(_FHS+1),0);
+	HEAP_CHK(4,(_FHS+1),0);
 	{
-	StgStablePtr _ccall_result;
+	I_ _ccall_result;
+	StgForeignObj _ccall_arg1=ForeignObj_CLOSURE_DATA(R3.p);
 	CALLER_SAVE_Base
 	CALLER_SAVE_SpA
 	CALLER_SAVE_SuA
@@ -449,7 +238,7 @@ StgStablePtr s1za;
 	CALLER_SAVE_Ret
 	CALLER_SAVE_Hp
 	CALLER_SAVE_HpLim
-	_ccall_result = (b());
+	_ccall_result = (c((_ccall_arg1)));
 	CALLER_RESTORE_Base
 	CALLER_RESTORE_SpA
 	CALLER_RESTORE_SuA
@@ -460,138 +249,91 @@ StgStablePtr s1za;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s1za=_ccall_result;
+	s1lp_=_ccall_result;
 	}
-	SET_SPEC_HDR(Hp-_FHS,Foreign_StablePtr_con_info,0,1,0);
-	*Hp=(W_)(s1za);
+	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+	*Hp=(W_)(s1lp_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
 	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,21,22,0);
+	GRAN_EXEC(10,2,22,22,0);
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c1Fq,ret_c1Fq)
-STATIC_ITBL(s1zw_info,s1zw_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
-IFN_(s1zw_entry) {
-ID_(s1zw_closure);
-IF_(s1zw_fast1);
+UNVECTBL(static,vtbl_c1pE,ret_c1pE)
+IFN_(ret_c1pD) {
 	FB_
-	ARGS_CHK_A_LOAD_NODE(1,s1zw_closure);
+	RetReg=(StgRetAddr)UNVEC(ret_c1pE,vtbl_c1pE);
 	R1.p=*SpA;
 	SpA=SpA+1;
-	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s1zw_fast1);
-	FE_
-}
-IFN_(s1zw_fast1) {
-	FB_
-	STK_CHK(1,0,1,0,0,0,0);
-	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fq,vtbl_c1Fq);
-	SpB=SpB+1;
 	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,1,1,0);
+	GRAN_EXEC(3,1,2,1,0);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SET_STATIC_HDR(s1zw_closure,s1zw_info,0,static ,ID_RO_)
-};
-STATIC_ITBL(Test_b_info,Test_b_entry,StdErrorCode,1,-1,(STATIC_VHS+
-							2),0,const,EF_,0,0,0);
-FN_(Test_b_entry) {
-IF_(s1zw_entry);
+UNVECTBL(static,vtbl_c1pD,ret_c1pD)
+SPEC_N_ITBL(c1oM_info,c1oM_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c1oM_entry) {
+IF_(c1oM_fast1);
 	FB_
-	STK_CHK(1,0,4,0,0,0,1);
-	HEAP_CHK(1,(BH_HS+2),1);
-	SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
-	UPD_CAF(R1.p,Hp-(BH_HS+1));
-	PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
-	RetReg=StdUpdRetVecReg;
-	SpB=SpB+4;
-	GRAN_EXEC(16,2,1,8,0);
-	JMP_(s1zw_entry);
+	ARGS_CHK_A(1);
+	R2.p=*SpA;
+	SpA=SpA+1;
+	GRAN_EXEC(5,2,1,0,0);
+	JMP_(c1oM_fast1);
 	FE_
 }
-SET_STATIC_HDR(Test_b_closure,Test_b_info,0,,ED_RO_)
-  , (W_)0, (W_)0
-};
-IFN_(ret_c1Fs) {
-ED_RO_(PrelBase_IZh_con_info);
-ED_(STBase_SZh_static_closure);
-ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1Ab;
+IFN_(c1oM_fast1) {
 	FB_
-	HEAP_CHK(0,(_FHS+1),0);
-	{
-	I_ _ccall_result;
-	CALLER_SAVE_Base
-	CALLER_SAVE_SpA
-	CALLER_SAVE_SuA
-	CALLER_SAVE_SpB
-	CALLER_SAVE_SuB
-	CALLER_SAVE_Ret
-	CALLER_SAVE_Hp
-	CALLER_SAVE_HpLim
-	_ccall_result = (a());
-	CALLER_RESTORE_Base
-	CALLER_RESTORE_SpA
-	CALLER_RESTORE_SuA
-	CALLER_RESTORE_SpB
-	CALLER_RESTORE_SuB
-	CALLER_RESTORE_Ret
-	CALLER_RESTORE_Hp
-	CALLER_RESTORE_HpLim
-	CALLER_RESTORE_StdUpdRetVec
-	CALLER_RESTORE_StkStub
-	s1Ab=_ccall_result;
-	}
-	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1Ab);
-	R4.p=STBase_SZh_static_closure;
-	R3.p=Hp-_FHS;
-	SpB=SpB-1;
-	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,21,22,0);
-	JMP_(DIRECT((StgRetAddr)(SpB[1])));
+	STK_CHK(3,1,1,0,0,0,1);
+	SpB[1]=(W_)(RetReg);
+	RetReg=(StgRetAddr)UNVEC(ret_c1pD,vtbl_c1pD);
+	SpA[-1]=(P_)(R1.p[_FHS]);
+	R1=R2;
+	SpA=SpA-1;
+	SpB=SpB+1;
+	ENT_VIA_NODE();
+	GRAN_EXEC(5,1,2,2,0);
+	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-UNVECTBL(static,vtbl_c1Fs,ret_c1Fs)
-STATIC_ITBL(s1uE_info,s1uE_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
-IFN_(s1uE_entry) {
-ID_(s1uE_closure);
-IF_(s1uE_fast1);
+STATIC_ITBL(Test_c_info,Test_c_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_c_entry) {
+ED_(Test_c_closure);
+EF_(Test_c_fast1);
 	FB_
-	ARGS_CHK_A_LOAD_NODE(1,s1uE_closure);
+	ARGS_CHK_A_LOAD_NODE(1,Test_c_closure);
 	R1.p=*SpA;
 	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s1uE_fast1);
+	JMP_(Test_c_fast1);
 	FE_
 }
-IFN_(s1uE_fast1) {
+FN_(Test_c_fast1) {
+ID_RO_(c1oM_info);
+IF_(c1oM_entry);
 	FB_
-	STK_CHK(1,0,1,0,0,0,0);
-	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fs,vtbl_c1Fs);
-	SpB=SpB+1;
-	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,1,1,0);
-	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+	HEAP_CHK(1,(_FHS+1),0);
+	SET_SPEC_HDR(Hp-_FHS,c1oM_info,0,1,1);
+	*Hp=(W_)(R1.p);
+	R1.p=Hp-_FHS;
+	GRAN_EXEC(5,2,0,2,0);
+	JMP_(c1oM_entry);
 	FE_
 }
-SET_STATIC_HDR(s1uE_closure,s1uE_info,0,static ,ID_RO_)
+SET_STATIC_HDR(Test_c_closure,Test_c_info,0,,ED_RO_)
 };
-IFN_(ret_c1Fu) {
+IFN_(ret_c1pH) {
 ED_RO_(PrelBase_IZh_con_info);
 ED_(STBase_SZh_static_closure);
 ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
-I_ s1Ba;
+I_ s1mE_;
 	FB_
 	HEAP_CHK(0,(_FHS+1),0);
 	{
 	I_ _ccall_result;
+	StgStablePtr _ccall_arg1=R3.i;
 	CALLER_SAVE_Base
 	CALLER_SAVE_SpA
 	CALLER_SAVE_SuA
@@ -600,7 +342,7 @@ I_ s1Ba;
 	CALLER_SAVE_Ret
 	CALLER_SAVE_Hp
 	CALLER_SAVE_HpLim
-	_ccall_result = (a());
+	_ccall_result = (d((_ccall_arg1)));
 	CALLER_RESTORE_Base
 	CALLER_RESTORE_SpA
 	CALLER_RESTORE_SuA
@@ -611,61 +353,79 @@ I_ s1Ba;
 	CALLER_RESTORE_HpLim
 	CALLER_RESTORE_StdUpdRetVec
 	CALLER_RESTORE_StkStub
-	s1Ba=_ccall_result;
+	s1mE_=_ccall_result;
 	}
 	SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
-	*Hp=(W_)(s1Ba);
+	*Hp=(W_)(s1mE_);
 	R4.p=STBase_SZh_static_closure;
 	R3.p=Hp-_FHS;
 	SpB=SpB-1;
 	R2.d=PrelTup_Z40Z44Z41_inregs_info;
-	GRAN_EXEC(10,2,21,22,0);
+	GRAN_EXEC(10,2,22,22,0);
 	JMP_(DIRECT((StgRetAddr)(SpB[1])));
 	FE_
 }
-UNVECTBL(static,vtbl_c1Fu,ret_c1Fu)
-STATIC_ITBL(s1Bw_info,s1Bw_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
-IFN_(s1Bw_entry) {
-ID_(s1Bw_closure);
-IF_(s1Bw_fast1);
+UNVECTBL(static,vtbl_c1pH,ret_c1pH)
+IFN_(ret_c1pG) {
 	FB_
-	ARGS_CHK_A_LOAD_NODE(1,s1Bw_closure);
+	RetReg=(StgRetAddr)UNVEC(ret_c1pH,vtbl_c1pH);
 	R1.p=*SpA;
 	SpA=SpA+1;
+	ENT_VIA_NODE();
+	GRAN_EXEC(3,1,2,1,0);
+	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+	FE_
+}
+UNVECTBL(static,vtbl_c1pG,ret_c1pG)
+SPEC_N_ITBL(c1oc_info,c1oc_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c1oc_entry) {
+IF_(c1oc_fast1);
+	FB_
+	ARGS_CHK_A(1);
+	R2.p=*SpA;
+	SpA=SpA+1;
 	GRAN_EXEC(5,2,1,0,0);
-	JMP_(s1Bw_fast1);
+	JMP_(c1oc_fast1);
 	FE_
 }
-IFN_(s1Bw_fast1) {
+IFN_(c1oc_fast1) {
 	FB_
-	STK_CHK(1,0,1,0,0,0,0);
+	STK_CHK(3,1,1,0,0,0,1);
 	SpB[1]=(W_)(RetReg);
-	RetReg=(StgRetAddr)UNVEC(ret_c1Fu,vtbl_c1Fu);
+	RetReg=(StgRetAddr)UNVEC(ret_c1pG,vtbl_c1pG);
+	SpA[-1]=(P_)(R1.p[_FHS]);
+	R1=R2;
+	SpA=SpA-1;
 	SpB=SpB+1;
 	ENT_VIA_NODE();
-	GRAN_EXEC(3,1,1,1,0);
+	GRAN_EXEC(5,1,2,2,0);
 	JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
 	FE_
 }
-SET_STATIC_HDR(s1Bw_closure,s1Bw_info,0,static ,ID_RO_)
-};
-STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,(STATIC_VHS+
-							2),0,const,EF_,0,0,0);
-FN_(Test_a_entry) {
-IF_(s1Bw_entry);
+STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_d_entry) {
+ED_(Test_d_closure);
+EF_(Test_d_fast1);
 	FB_
-	STK_CHK(1,0,4,0,0,0,1);
-	HEAP_CHK(1,(BH_HS+2),1);
-	SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
-	UPD_CAF(R1.p,Hp-(BH_HS+1));
-	PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
-	RetReg=StdUpdRetVecReg;
-	SpB=SpB+4;
-	GRAN_EXEC(16,2,1,8,0);
-	JMP_(s1Bw_entry);
+	ARGS_CHK_A_LOAD_NODE(1,Test_d_closure);
+	R1.p=*SpA;
+	SpA=SpA+1;
+	GRAN_EXEC(5,2,1,0,0);
+	JMP_(Test_d_fast1);
 	FE_
 }
-SET_STATIC_HDR(Test_a_closure,Test_a_info,0,,ED_RO_)
-  , (W_)0, (W_)0
+FN_(Test_d_fast1) {
+ID_RO_(c1oc_info);
+IF_(c1oc_entry);
+	FB_
+	HEAP_CHK(1,(_FHS+1),0);
+	SET_SPEC_HDR(Hp-_FHS,c1oc_info,0,1,1);
+	*Hp=(W_)(R1.p);
+	R1.p=Hp-_FHS;
+	GRAN_EXEC(5,2,0,2,0);
+	JMP_(c1oc_entry);
+	FE_
+}
+SET_STATIC_HDR(Test_d_closure,Test_d_info,0,,ED_RO_)
 };
 ghc: module version changed to 1; reason: no old .hi file
diff --git a/ghc/tests/ccall/should_compile/cc007.hs b/ghc/tests/ccall/should_compile/cc007.hs
deleted file mode 100644
index 42d12608221b7e43a07c0ff8f2cca98bede7f422..0000000000000000000000000000000000000000
--- a/ghc/tests/ccall/should_compile/cc007.hs
+++ /dev/null
@@ -1,27 +0,0 @@
---!!! cc007 -- ccall with synonyms, polymorphic type variables and user type variables.
-module Test where
-
-import GlaExts
-
--- Since I messed up the handling of polymorphism originally, I'll
--- explicitly test code with UserSysTyVar (ie an explicit polymorphic
--- signature)
-
-foo = _ccall_ f	`thenADR` \ a -> returnPrimIO (a + 1)
- where 
-   thenADR :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
-   thenADR = thenPrimIO
-
--- and with a PolySysTyVar (ie no explicit signature)
-
-bar = _ccall_ f	`thenADR` \ a -> returnPrimIO (a + 1)
- where 
-   -- thenADR :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
-   thenADR = thenPrimIO
-
--- and with a type synonym
-
-type INT = Int
-barfu :: PrimIO INT
-barfu = _ccall_ b
-
diff --git a/ghc/tests/ccall/should_compile/cc007.stderr b/ghc/tests/ccall/should_compile/cc007.stderr
deleted file mode 100644
index a5da32ef18cc030a1083976a0d73d8f45c2e03fc..0000000000000000000000000000000000000000
--- a/ghc/tests/ccall/should_compile/cc007.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
- 
-cc007.hs:2: Cannot generalise these overloadings (in a _ccall_):
-		`Foreign.CReturnable t{-a12t-}'
- 
-cc007.hs:2: Cannot generalise these overloadings (in a _ccall_):
-		`Foreign.CReturnable t{-a13c-}'
-
-
-Compilation had errors
diff --git a/ghc/tests/ccall/should_fail/Makefile b/ghc/tests/ccall/should_fail/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0bcc375826ec7815d9f1e5e6cdbf8eefd879b755
--- /dev/null
+++ b/ghc/tests/ccall/should_fail/Makefile
@@ -0,0 +1,7 @@
+TOP = ../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_fail.mk
+
+HC_OPTS += -noC -fglasgow-exts
+
+include $(TOP)/mk/target.mk
diff --git a/ghc/tests/ccall/should_compile/cc002.hs b/ghc/tests/ccall/should_fail/cc002.hs
similarity index 100%
rename from ghc/tests/ccall/should_compile/cc002.hs
rename to ghc/tests/ccall/should_fail/cc002.hs
diff --git a/ghc/tests/ccall/should_fail/cc002.stderr b/ghc/tests/ccall/should_fail/cc002.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..d74a23c59ac07a5e1ebeabea7e57c8c82246fda8
--- /dev/null
+++ b/ghc/tests/ccall/should_fail/cc002.stderr
@@ -0,0 +1,7 @@
+ 
+cc002.hs:11: No instance for: `Foreign.CReturnable Foreign.ForeignObj'
+    arising from the result of the _ccall_ to a at cc002.hs:11
+    When checking signature(s) for: `a'
+
+
+Compilation had errors
diff --git a/ghc/tests/ccall/should_compile/cc004.hs b/ghc/tests/ccall/should_fail/cc004.hs
similarity index 100%
rename from ghc/tests/ccall/should_compile/cc004.hs
rename to ghc/tests/ccall/should_fail/cc004.hs
diff --git a/ghc/tests/ccall/should_compile/cc004.stderr b/ghc/tests/ccall/should_fail/cc004.stderr
similarity index 70%
rename from ghc/tests/ccall/should_compile/cc004.stderr
rename to ghc/tests/ccall/should_fail/cc004.stderr
index b8cd850f30bdc32ca9f3c744f3e9e27a7f4559b4..bb07155e768b6e390845193cb1ac0e5de7bc7ffb 100644
--- a/ghc/tests/ccall/should_compile/cc004.stderr
+++ b/ghc/tests/ccall/should_fail/cc004.stderr
@@ -1,9 +1,9 @@
  
 cc004.hs:2: Cannot generalise these overloadings (in a _ccall_):
-		`Foreign.CReturnable t{-a12p-}'
+		`Foreign.CReturnable taWQ'
  
 cc004.hs:2: Cannot generalise these overloadings (in a _ccall_):
-		`Foreign.CReturnable t{-a138-}'
+		`Foreign.CReturnable taXx'
 
 
 Compilation had errors
diff --git a/ghc/tests/codeGen/Makefile b/ghc/tests/codeGen/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..1d1e93004302efe3ac8c5ae47ed51fbabbcf01a7
--- /dev/null
+++ b/ghc/tests/codeGen/Makefile
@@ -0,0 +1,8 @@
+TOP = ..
+include $(TOP)/mk/boilerplate.mk
+
+SUBDIRS = should_compile
+
+include $(TOP)/mk/target.mk
+
+
diff --git a/ghc/tests/codeGen/cg018.stdout b/ghc/tests/codeGen/cg018.stdout
deleted file mode 100644
index 441d36bf3b7d8b3ee9b93a40b71a99eae0b09624..0000000000000000000000000000000000000000
--- a/ghc/tests/codeGen/cg018.stdout
+++ /dev/null
@@ -1 +0,0 @@
-0.4692
diff --git a/ghc/tests/codeGen/cg034.hs b/ghc/tests/codeGen/cg034.hs
deleted file mode 100644
index 2f01c9b85322d2873348f981c3ce69d2a0e0e43c..0000000000000000000000000000000000000000
--- a/ghc/tests/codeGen/cg034.hs
+++ /dev/null
@@ -1,162 +0,0 @@
-import Ratio -- 1.3
-
-main = putStr (
-   shows tinyFloat  ( '\n'
- : shows t_f	    ( '\n'
- : shows hugeFloat  ( '\n'
- : shows h_f	    ( '\n'
- : shows tinyDouble ( '\n'
- : shows t_d	    ( '\n'
- : shows hugeDouble ( '\n'
- : shows h_d	    ( '\n'
- : shows x_f	    ( '\n'
- : shows x_d	    ( '\n'
- : shows y_f	    ( '\n'
- : shows y_d	    ( "\n"
- )))))))))))))
-  where
-    t_f :: Float
-    t_d :: Double
-    h_f :: Float
-    h_d :: Double
-    x_f :: Float
-    x_d :: Double
-    y_f :: Float
-    y_d :: Double
-    t_f = fromRationalX (toRational tinyFloat)
-    t_d = fromRationalX (toRational tinyDouble)
-    h_f = fromRationalX (toRational hugeFloat)
-    h_d = fromRationalX (toRational hugeDouble)
-    x_f = fromRationalX (1.82173691287639817263897126389712638972163e-300 :: Rational)
-    x_d = fromRationalX (1.82173691287639817263897126389712638972163e-300 :: Rational)
-    y_f = 1.82173691287639817263897126389712638972163e-300
-    y_d = 1.82173691287639817263897126389712638972163e-300
-
---!! fromRational woes
-
-fromRationalX :: (RealFloat a) => Rational -> a
-fromRationalX r =
-	let 
-	    h = ceiling (huge `asTypeOf` x)
-	    b = toInteger (floatRadix x)
-	    x = fromRat 0 r
-	    fromRat e0 r' =
-		let d = denominator r'
-		    n = numerator r'
-	        in  if d > h then
-		       let e = integerLogBase b (d `div` h) + 1
-		       in  fromRat (e0-e) (n % (d `div` (b^e)))
-		    else if abs n > h then
-		       let e = integerLogBase b (abs n `div` h) + 1
-		       in  fromRat (e0+e) ((n `div` (b^e)) % d)
-		    else
-		       scaleFloat e0 (rationalToRealFloat {-fromRational-} r')
-	in  x
-
-{-
-fromRationalX r =
-  rationalToRealFloat r
-{- Hmmm...
-	let 
-	    h = ceiling (huge `asTypeOf` x)
-	    b = toInteger (floatRadix x)
-	    x = fromRat 0 r
-
-	    fromRat e0 r' =
-{--}		trace (shows e0 ('/' : shows r' ('/' : shows h "\n"))) (
-		let d = denominator r'
-		    n = numerator r'
-	        in  if d > h then
-		       let e = integerLogBase b (d `div` h) + 1
-		       in  fromRat (e0-e) (n % (d `div` (b^e)))
-		    else if abs n > h then
-		       let e = integerLogBase b (abs n `div` h) + 1
-		       in  fromRat (e0+e) ((n `div` (b^e)) % d)
-		    else
-		       scaleFloat e0 (rationalToRealFloat r')
-		       -- now that we know things are in-bounds,
-		       -- we use the "old" Prelude code.
-{--}		)
-	in  x
--}
--}
-
--- Compute the discrete log of i in base b.
--- Simplest way would be just divide i by b until it's smaller then b, but that would
--- be very slow!  We are just slightly more clever.
-integerLogBase :: Integer -> Integer -> Int
-integerLogBase b i =
-     if i < b then
-        0
-     else
-	-- Try squaring the base first to cut down the number of divisions.
-        let l = 2 * integerLogBase (b*b) i
-	    doDiv :: Integer -> Int -> Int
-	    doDiv i l = if i < b then l else doDiv (i `div` b) (l+1)
-	in  doDiv (i `div` (b^l)) l
-
-
-------------
-
--- Compute smallest and largest floating point values.
-tiny :: (RealFloat a) => a
-tiny =
-	let (l, _) = floatRange x
-	    x = encodeFloat 1 (l-1)
-	in  x
-
-huge :: (RealFloat a) => a
-huge =
-	let (_, u) = floatRange x
-	    d = floatDigits x
-	    x = encodeFloat (floatRadix x ^ d - 1) (u - d)
-	in  x
-
-tinyDouble = tiny :: Double
-tinyFloat  = tiny :: Float
-hugeDouble = huge :: Double
-hugeFloat  = huge :: Float
-
-{-
-[In response to a request by simonpj, Joe Fasel writes:]
-
-A quite reasonable request!  This code was added to the Prelude just
-before the 1.2 release, when Lennart, working with an early version
-of hbi, noticed that (read . show) was not the identity for
-floating-point numbers.	 (There was a one-bit error about half the time.)
-The original version of the conversion function was in fact simply
-a floating-point divide, as you suggest above.	The new version is,
-I grant you, somewhat denser.
-
-How's this?
-
---Joe
--}
-
-
-rationalToRealFloat :: (RealFloat a) => Rational -> a
-
-rationalToRealFloat x	=  x'
-	where x'    = f e
-
---		If the exponent of the nearest floating-point number to x 
---		is e, then the significand is the integer nearest xb^(-e),
---		where b is the floating-point radix.  We start with a good
---		guess for e, and if it is correct, the exponent of the
---		floating-point number we construct will again be e.  If
---		not, one more iteration is needed.
-
-	      f e   = if e' == e then y else f e'
-		      where y	   = encodeFloat (round (x * (1%b)^^e)) e
-			    (_,e') = decodeFloat y
-	      b	    = floatRadix x'
-
---		We obtain a trial exponent by doing a floating-point
---		division of x's numerator by its denominator.  The
---		result of this division may not itself be the ultimate
---		result, because of an accumulation of three rounding
---		errors.
-
-	      (s,e) = decodeFloat (fromInteger (numerator x) `asTypeOf` x'
-					/ fromInteger (denominator x))
-
diff --git a/ghc/tests/codeGen/cg035.stdout b/ghc/tests/codeGen/cg035.stdout
deleted file mode 100644
index a00e9a29ee1f2ee977e8407adfedfe5618bc5523..0000000000000000000000000000000000000000
--- a/ghc/tests/codeGen/cg035.stdout
+++ /dev/null
@@ -1 +0,0 @@
-0.9727648049862613
diff --git a/ghc/tests/codeGen/cg041.hs b/ghc/tests/codeGen/cg041.hs
deleted file mode 100644
index 09ae099d5cdad3a41ed5a993bb1708527bc84398..0000000000000000000000000000000000000000
--- a/ghc/tests/codeGen/cg041.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{- 
-Date: Thu, 15 May 1997 14:20:29 +0100 (BST)
-From: Alex Ferguson <abf@cs.ucc.ie>
-The following erroneous fragment erroneously compiles.
-
-And then promptly falls over in the assembler, of all places.
--}
-
-data Token
-     =  TokNewline
-     |  TokLiteral
-     |  TokCount
-     |  TokCheck
-     |  TokIs
-     |  TokDeref
-     |  TokFind
-     |  TokLiteral		-- Duplicated!
-     |  TokThe
-
-      deriving Show
-
-main = print TokCount
diff --git a/ghc/tests/codeGen/should_run/Makefile b/ghc/tests/codeGen/should_run/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8f072b03b4b78d20af46f6cf093d76a4a9791dea
--- /dev/null
+++ b/ghc/tests/codeGen/should_run/Makefile
@@ -0,0 +1,35 @@
+TOP = ../..
+include $(TOP)/mk/boilerplate.mk
+
+HS_SRCS = $(wildcard *.hs)
+BINS = $(patsubst %.o,%,$(HS_OBJS))
+RUNTESTS = $(patsubst %,%.run,$(BINS))
+
+SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
+HC_OPTS += -dcore-lint
+
+all :: $(BINS) $(RUNTESTS)
+
+%.run : %
+	$(RUNTEST) $< $(RUNTEST_OPTS)
+
+% : %.o
+	$(HC) $(HC_OPTS) $< -o $@
+
+cg012_HC_OPTS = -fglasgow-exts
+cg015_HC_OPTS = -fglasgow-exts
+cg018_HC_OPTS = -fglasgow-exts
+cg026_HC_OPTS = -fglasgow-exts
+cg029_HC_OPTS = -fglasgow-exts
+cg030_HC_OPTS = -fglasgow-exts
+cg031_HC_OPTS = -fglasgow-exts
+cg032_HC_OPTS = -fglasgow-exts
+cg033_HC_OPTS = -fglasgow-exts
+cg035_HC_OPTS = -fglasgow-exts
+cg042_HC_OPTS = -fglasgow-exts
+
+cg016_RUNTEST_OPTS = -x 1	# should override the -x 0 above.
+cg021_RUNTEST_OPTS = +RTS -K2m
+cg025_RUNTEST_OPTS = -x 1 cg025.hs
+
+include $(TOP)/mk/target.mk
diff --git a/ghc/tests/codeGen/cg001.hs b/ghc/tests/codeGen/should_run/cg001.hs
similarity index 100%
rename from ghc/tests/codeGen/cg001.hs
rename to ghc/tests/codeGen/should_run/cg001.hs
diff --git a/ghc/tests/codeGen/cg001.stdout b/ghc/tests/codeGen/should_run/cg001.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg001.stdout
rename to ghc/tests/codeGen/should_run/cg001.stdout
diff --git a/ghc/tests/codeGen/cg002.hs b/ghc/tests/codeGen/should_run/cg002.hs
similarity index 100%
rename from ghc/tests/codeGen/cg002.hs
rename to ghc/tests/codeGen/should_run/cg002.hs
diff --git a/ghc/tests/codeGen/cg002.stdout b/ghc/tests/codeGen/should_run/cg002.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg002.stdout
rename to ghc/tests/codeGen/should_run/cg002.stdout
diff --git a/ghc/tests/codeGen/cg003.hs b/ghc/tests/codeGen/should_run/cg003.hs
similarity index 100%
rename from ghc/tests/codeGen/cg003.hs
rename to ghc/tests/codeGen/should_run/cg003.hs
diff --git a/ghc/tests/codeGen/cg003.stdout b/ghc/tests/codeGen/should_run/cg003.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg003.stdout
rename to ghc/tests/codeGen/should_run/cg003.stdout
diff --git a/ghc/tests/codeGen/cg004.hs b/ghc/tests/codeGen/should_run/cg004.hs
similarity index 100%
rename from ghc/tests/codeGen/cg004.hs
rename to ghc/tests/codeGen/should_run/cg004.hs
diff --git a/ghc/tests/codeGen/cg004.stdout b/ghc/tests/codeGen/should_run/cg004.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg004.stdout
rename to ghc/tests/codeGen/should_run/cg004.stdout
diff --git a/ghc/tests/codeGen/cg005.hs b/ghc/tests/codeGen/should_run/cg005.hs
similarity index 100%
rename from ghc/tests/codeGen/cg005.hs
rename to ghc/tests/codeGen/should_run/cg005.hs
diff --git a/ghc/tests/codeGen/cg005.stdout b/ghc/tests/codeGen/should_run/cg005.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg005.stdout
rename to ghc/tests/codeGen/should_run/cg005.stdout
diff --git a/ghc/tests/codeGen/cg006.hs b/ghc/tests/codeGen/should_run/cg006.hs
similarity index 100%
rename from ghc/tests/codeGen/cg006.hs
rename to ghc/tests/codeGen/should_run/cg006.hs
diff --git a/ghc/tests/codeGen/cg006.stdout b/ghc/tests/codeGen/should_run/cg006.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg006.stdout
rename to ghc/tests/codeGen/should_run/cg006.stdout
diff --git a/ghc/tests/codeGen/cg007.hs b/ghc/tests/codeGen/should_run/cg007.hs
similarity index 100%
rename from ghc/tests/codeGen/cg007.hs
rename to ghc/tests/codeGen/should_run/cg007.hs
diff --git a/ghc/tests/codeGen/cg007.stdout b/ghc/tests/codeGen/should_run/cg007.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg007.stdout
rename to ghc/tests/codeGen/should_run/cg007.stdout
diff --git a/ghc/tests/codeGen/cg008.hs b/ghc/tests/codeGen/should_run/cg008.hs
similarity index 100%
rename from ghc/tests/codeGen/cg008.hs
rename to ghc/tests/codeGen/should_run/cg008.hs
diff --git a/ghc/tests/codeGen/cg008.stdout b/ghc/tests/codeGen/should_run/cg008.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg008.stdout
rename to ghc/tests/codeGen/should_run/cg008.stdout
diff --git a/ghc/tests/codeGen/cg009.hs b/ghc/tests/codeGen/should_run/cg009.hs
similarity index 100%
rename from ghc/tests/codeGen/cg009.hs
rename to ghc/tests/codeGen/should_run/cg009.hs
diff --git a/ghc/tests/codeGen/cg009.stdout b/ghc/tests/codeGen/should_run/cg009.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg009.stdout
rename to ghc/tests/codeGen/should_run/cg009.stdout
diff --git a/ghc/tests/codeGen/cg010.hs b/ghc/tests/codeGen/should_run/cg010.hs
similarity index 100%
rename from ghc/tests/codeGen/cg010.hs
rename to ghc/tests/codeGen/should_run/cg010.hs
diff --git a/ghc/tests/codeGen/cg010.stdout b/ghc/tests/codeGen/should_run/cg010.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg010.stdout
rename to ghc/tests/codeGen/should_run/cg010.stdout
diff --git a/ghc/tests/codeGen/cg011.hs b/ghc/tests/codeGen/should_run/cg011.hs
similarity index 100%
rename from ghc/tests/codeGen/cg011.hs
rename to ghc/tests/codeGen/should_run/cg011.hs
diff --git a/ghc/tests/codeGen/cg011.stdout b/ghc/tests/codeGen/should_run/cg011.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg011.stdout
rename to ghc/tests/codeGen/should_run/cg011.stdout
diff --git a/ghc/tests/codeGen/cg012.hs b/ghc/tests/codeGen/should_run/cg012.hs
similarity index 100%
rename from ghc/tests/codeGen/cg012.hs
rename to ghc/tests/codeGen/should_run/cg012.hs
diff --git a/ghc/tests/codeGen/cg012.stdout b/ghc/tests/codeGen/should_run/cg012.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg012.stdout
rename to ghc/tests/codeGen/should_run/cg012.stdout
diff --git a/ghc/tests/codeGen/cg013.hs b/ghc/tests/codeGen/should_run/cg013.hs
similarity index 100%
rename from ghc/tests/codeGen/cg013.hs
rename to ghc/tests/codeGen/should_run/cg013.hs
diff --git a/ghc/tests/codeGen/cg013.stdout b/ghc/tests/codeGen/should_run/cg013.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg013.stdout
rename to ghc/tests/codeGen/should_run/cg013.stdout
diff --git a/ghc/tests/codeGen/cg014.hs b/ghc/tests/codeGen/should_run/cg014.hs
similarity index 100%
rename from ghc/tests/codeGen/cg014.hs
rename to ghc/tests/codeGen/should_run/cg014.hs
diff --git a/ghc/tests/codeGen/cg014.stdout b/ghc/tests/codeGen/should_run/cg014.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg014.stdout
rename to ghc/tests/codeGen/should_run/cg014.stdout
diff --git a/ghc/tests/codeGen/cg015.hs b/ghc/tests/codeGen/should_run/cg015.hs
similarity index 100%
rename from ghc/tests/codeGen/cg015.hs
rename to ghc/tests/codeGen/should_run/cg015.hs
diff --git a/ghc/tests/codeGen/cg015.stdout b/ghc/tests/codeGen/should_run/cg015.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg015.stdout
rename to ghc/tests/codeGen/should_run/cg015.stdout
diff --git a/ghc/tests/codeGen/cg016.hs b/ghc/tests/codeGen/should_run/cg016.hs
similarity index 100%
rename from ghc/tests/codeGen/cg016.hs
rename to ghc/tests/codeGen/should_run/cg016.hs
diff --git a/ghc/tests/codeGen/should_run/cg016.stderr b/ghc/tests/codeGen/should_run/cg016.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..8a4e21146a4aa26bc1959cb916ca3984ab88565d
--- /dev/null
+++ b/ghc/tests/codeGen/should_run/cg016.stderr
@@ -0,0 +1,12 @@
+
+Fail: 1st call to error
+
+Fail: 2nd call to error
+
+Fail: 3rd call to error
+
+Fail: 4th call to error
+
+Fail: 5th call to error
+
+Fail: 6th call to error
\ No newline at end of file
diff --git a/ghc/tests/codeGen/cg016.stdout b/ghc/tests/codeGen/should_run/cg016.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg016.stdout
rename to ghc/tests/codeGen/should_run/cg016.stdout
diff --git a/ghc/tests/codeGen/cg017.hs b/ghc/tests/codeGen/should_run/cg017.hs
similarity index 100%
rename from ghc/tests/codeGen/cg017.hs
rename to ghc/tests/codeGen/should_run/cg017.hs
diff --git a/ghc/tests/codeGen/cg017.stdout b/ghc/tests/codeGen/should_run/cg017.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg017.stdout
rename to ghc/tests/codeGen/should_run/cg017.stdout
diff --git a/ghc/tests/codeGen/cg018.hs b/ghc/tests/codeGen/should_run/cg018.hs
similarity index 100%
rename from ghc/tests/codeGen/cg018.hs
rename to ghc/tests/codeGen/should_run/cg018.hs
diff --git a/ghc/tests/codeGen/should_run/cg018.stdout b/ghc/tests/codeGen/should_run/cg018.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..805ee3011251abe2ebd53cd7371b6dc82089abb1
--- /dev/null
+++ b/ghc/tests/codeGen/should_run/cg018.stdout
@@ -0,0 +1 @@
+0.46920002
diff --git a/ghc/tests/codeGen/cg019.hs b/ghc/tests/codeGen/should_run/cg019.hs
similarity index 100%
rename from ghc/tests/codeGen/cg019.hs
rename to ghc/tests/codeGen/should_run/cg019.hs
diff --git a/ghc/tests/codeGen/cg019.stdout b/ghc/tests/codeGen/should_run/cg019.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg019.stdout
rename to ghc/tests/codeGen/should_run/cg019.stdout
diff --git a/ghc/tests/codeGen/cg020.hs b/ghc/tests/codeGen/should_run/cg020.hs
similarity index 100%
rename from ghc/tests/codeGen/cg020.hs
rename to ghc/tests/codeGen/should_run/cg020.hs
diff --git a/ghc/tests/codeGen/cg020.stdout b/ghc/tests/codeGen/should_run/cg020.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg020.stdout
rename to ghc/tests/codeGen/should_run/cg020.stdout
diff --git a/ghc/tests/codeGen/cg021.hs b/ghc/tests/codeGen/should_run/cg021.hs
similarity index 100%
rename from ghc/tests/codeGen/cg021.hs
rename to ghc/tests/codeGen/should_run/cg021.hs
diff --git a/ghc/tests/codeGen/cg021.stdout b/ghc/tests/codeGen/should_run/cg021.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg021.stdout
rename to ghc/tests/codeGen/should_run/cg021.stdout
diff --git a/ghc/tests/codeGen/cg022.hs b/ghc/tests/codeGen/should_run/cg022.hs
similarity index 100%
rename from ghc/tests/codeGen/cg022.hs
rename to ghc/tests/codeGen/should_run/cg022.hs
diff --git a/ghc/tests/codeGen/cg022.stdout b/ghc/tests/codeGen/should_run/cg022.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg022.stdout
rename to ghc/tests/codeGen/should_run/cg022.stdout
diff --git a/ghc/tests/codeGen/cg023.stdout b/ghc/tests/codeGen/should_run/cg023.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg023.stdout
rename to ghc/tests/codeGen/should_run/cg023.stdout
diff --git a/ghc/tests/codeGen/cg024.hs b/ghc/tests/codeGen/should_run/cg024.hs
similarity index 100%
rename from ghc/tests/codeGen/cg024.hs
rename to ghc/tests/codeGen/should_run/cg024.hs
diff --git a/ghc/tests/codeGen/cg024.stdout b/ghc/tests/codeGen/should_run/cg024.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg024.stdout
rename to ghc/tests/codeGen/should_run/cg024.stdout
diff --git a/ghc/tests/codeGen/cg025.hs b/ghc/tests/codeGen/should_run/cg025.hs
similarity index 100%
rename from ghc/tests/codeGen/cg025.hs
rename to ghc/tests/codeGen/should_run/cg025.hs
diff --git a/ghc/tests/codeGen/cg025.stdout b/ghc/tests/codeGen/should_run/cg025.stderr
similarity index 56%
rename from ghc/tests/codeGen/cg025.stdout
rename to ghc/tests/codeGen/should_run/cg025.stderr
index 6b2a8207e0a4e4142292287c142ca371f32cc2df..37d409bd16b489f2f9c3deed167f6a4ed47697c1 100644
--- a/ghc/tests/codeGen/cg025.stdout
+++ b/ghc/tests/codeGen/should_run/cg025.stderr
@@ -1,3 +1,6 @@
+"cg025"
+["cg025.hs"]
+"/bin:/usr/bin:/users/ets/simonm/bin:/users/ets/simonm/bin/i386-unknown-freebsd2.2:/usr/local/bin:/usr/X11R6/bin:/usr/local/X11R6/bin:/local/fp/bin:/local/fp/bin/i386-unknown-freebsd2.2:/local/ets/go/i386-unknown-freebsd2.2:/local/fp/bin/i386-unknown-freebsd2.1.0:/local/ets/go/i386-unknown-freebsd2.1.0:/usr/local/teTeX/bin:/sbin:/usr/sbin"
 --!!! test various I/O Requests
 --
 --
@@ -19,3 +22,8 @@ main = do
     hPutStr  stderr file_cts
     trace "hello, trace" $
       catch (getEnv "__WURBLE__" >> return ()) (\ e -> error "hello, error\n")
+Trace On:
+hello, trace
+Trace Off.
+
+Fail: hello, error
diff --git a/ghc/tests/codeGen/cg038.stdout b/ghc/tests/codeGen/should_run/cg025.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg038.stdout
rename to ghc/tests/codeGen/should_run/cg025.stdout
diff --git a/ghc/tests/codeGen/cg026.hs b/ghc/tests/codeGen/should_run/cg026.hs
similarity index 100%
rename from ghc/tests/codeGen/cg026.hs
rename to ghc/tests/codeGen/should_run/cg026.hs
diff --git a/ghc/tests/codeGen/cg026.stdout b/ghc/tests/codeGen/should_run/cg026.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg026.stdout
rename to ghc/tests/codeGen/should_run/cg026.stdout
diff --git a/ghc/tests/codeGen/cg027.hs b/ghc/tests/codeGen/should_run/cg027.hs
similarity index 100%
rename from ghc/tests/codeGen/cg027.hs
rename to ghc/tests/codeGen/should_run/cg027.hs
diff --git a/ghc/tests/codeGen/cg027.stdout b/ghc/tests/codeGen/should_run/cg027.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg027.stdout
rename to ghc/tests/codeGen/should_run/cg027.stdout
diff --git a/ghc/tests/codeGen/cg028.hs b/ghc/tests/codeGen/should_run/cg028.hs
similarity index 100%
rename from ghc/tests/codeGen/cg028.hs
rename to ghc/tests/codeGen/should_run/cg028.hs
diff --git a/ghc/tests/codeGen/cg028.stdout b/ghc/tests/codeGen/should_run/cg028.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg028.stdout
rename to ghc/tests/codeGen/should_run/cg028.stdout
diff --git a/ghc/tests/codeGen/cg029.hs b/ghc/tests/codeGen/should_run/cg029.hs
similarity index 100%
rename from ghc/tests/codeGen/cg029.hs
rename to ghc/tests/codeGen/should_run/cg029.hs
diff --git a/ghc/tests/codeGen/cg029.stdout b/ghc/tests/codeGen/should_run/cg029.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg029.stdout
rename to ghc/tests/codeGen/should_run/cg029.stdout
diff --git a/ghc/tests/codeGen/cg030.hs b/ghc/tests/codeGen/should_run/cg030.hs
similarity index 100%
rename from ghc/tests/codeGen/cg030.hs
rename to ghc/tests/codeGen/should_run/cg030.hs
diff --git a/ghc/tests/codeGen/cg030.stdout b/ghc/tests/codeGen/should_run/cg030.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg030.stdout
rename to ghc/tests/codeGen/should_run/cg030.stdout
diff --git a/ghc/tests/codeGen/cg031.hs b/ghc/tests/codeGen/should_run/cg031.hs
similarity index 100%
rename from ghc/tests/codeGen/cg031.hs
rename to ghc/tests/codeGen/should_run/cg031.hs
diff --git a/ghc/tests/codeGen/cg031.stdout b/ghc/tests/codeGen/should_run/cg031.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg031.stdout
rename to ghc/tests/codeGen/should_run/cg031.stdout
diff --git a/ghc/tests/codeGen/cg032.hs b/ghc/tests/codeGen/should_run/cg032.hs
similarity index 100%
rename from ghc/tests/codeGen/cg032.hs
rename to ghc/tests/codeGen/should_run/cg032.hs
diff --git a/ghc/tests/codeGen/cg032.stdout b/ghc/tests/codeGen/should_run/cg032.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg032.stdout
rename to ghc/tests/codeGen/should_run/cg032.stdout
diff --git a/ghc/tests/codeGen/cg033.hs b/ghc/tests/codeGen/should_run/cg033.hs
similarity index 100%
rename from ghc/tests/codeGen/cg033.hs
rename to ghc/tests/codeGen/should_run/cg033.hs
diff --git a/ghc/tests/codeGen/cg033.stdout b/ghc/tests/codeGen/should_run/cg033.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg033.stdout
rename to ghc/tests/codeGen/should_run/cg033.stdout
diff --git a/ghc/tests/codeGen/cg034.stdout b/ghc/tests/codeGen/should_run/cg034.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg034.stdout
rename to ghc/tests/codeGen/should_run/cg034.stdout
diff --git a/ghc/tests/codeGen/cg035.hs b/ghc/tests/codeGen/should_run/cg035.hs
similarity index 90%
rename from ghc/tests/codeGen/cg035.hs
rename to ghc/tests/codeGen/should_run/cg035.hs
index 947dc95aabecda4b137f0a77fafbaf9acc0e7c33..6e6cbabb992d5ddff792d87c88c3189735897f72 100644
--- a/ghc/tests/codeGen/cg035.hs
+++ b/ghc/tests/codeGen/should_run/cg035.hs
@@ -1,8 +1,7 @@
 module Main (main) where
 
 --import PreludeGlaST
-import ST
-import STBase
+import GlaExts
 
 po :: Double -> Double
 po rd = 0.5 + 0.5 * erf ((rd / 1.04) / sqrt 2)
diff --git a/ghc/tests/codeGen/should_run/cg035.stdout b/ghc/tests/codeGen/should_run/cg035.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..e162ee43e61f1120f557fb7070c0e3bf3c262907
--- /dev/null
+++ b/ghc/tests/codeGen/should_run/cg035.stdout
@@ -0,0 +1 @@
+256.5
diff --git a/ghc/tests/codeGen/cg036.hs b/ghc/tests/codeGen/should_run/cg036.hs
similarity index 100%
rename from ghc/tests/codeGen/cg036.hs
rename to ghc/tests/codeGen/should_run/cg036.hs
diff --git a/ghc/tests/codeGen/cg036.stdout b/ghc/tests/codeGen/should_run/cg036.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg036.stdout
rename to ghc/tests/codeGen/should_run/cg036.stdout
diff --git a/ghc/tests/codeGen/cg037.hs b/ghc/tests/codeGen/should_run/cg037.hs
similarity index 100%
rename from ghc/tests/codeGen/cg037.hs
rename to ghc/tests/codeGen/should_run/cg037.hs
diff --git a/ghc/tests/codeGen/cg037.stdout b/ghc/tests/codeGen/should_run/cg037.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg037.stdout
rename to ghc/tests/codeGen/should_run/cg037.stdout
diff --git a/ghc/tests/codeGen/cg038.hs b/ghc/tests/codeGen/should_run/cg038.hs
similarity index 100%
rename from ghc/tests/codeGen/cg038.hs
rename to ghc/tests/codeGen/should_run/cg038.hs
diff --git a/ghc/tests/codeGen/cg042.stdout b/ghc/tests/codeGen/should_run/cg038.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg042.stdout
rename to ghc/tests/codeGen/should_run/cg038.stdout
diff --git a/ghc/tests/codeGen/cg039.hs b/ghc/tests/codeGen/should_run/cg039.hs
similarity index 100%
rename from ghc/tests/codeGen/cg039.hs
rename to ghc/tests/codeGen/should_run/cg039.hs
diff --git a/ghc/tests/codeGen/cg039.stdout b/ghc/tests/codeGen/should_run/cg039.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg039.stdout
rename to ghc/tests/codeGen/should_run/cg039.stdout
diff --git a/ghc/tests/codeGen/cg040.hs b/ghc/tests/codeGen/should_run/cg040.hs
similarity index 100%
rename from ghc/tests/codeGen/cg040.hs
rename to ghc/tests/codeGen/should_run/cg040.hs
diff --git a/ghc/tests/codeGen/cg040.stdout b/ghc/tests/codeGen/should_run/cg040.stdout
similarity index 100%
rename from ghc/tests/codeGen/cg040.stdout
rename to ghc/tests/codeGen/should_run/cg040.stdout
diff --git a/ghc/tests/codeGen/cg042.hs b/ghc/tests/codeGen/should_run/cg042.hs
similarity index 100%
rename from ghc/tests/codeGen/cg042.hs
rename to ghc/tests/codeGen/should_run/cg042.hs
diff --git a/ghc/tests/codeGen/should_run/cg042.stdout b/ghc/tests/codeGen/should_run/cg042.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..c06d217fbd99aee0fe18445de27f69abc4903f79
--- /dev/null
+++ b/ghc/tests/codeGen/should_run/cg042.stdout
@@ -0,0 +1 @@
+[131.94689145077132, 135.0884841043611, 138.23007675795088, 141.3716694115407, 144.51326206513048, 147.6548547187203, 150.79644737231007, 153.93804002589985, 157.07963267948966, 160.22122533307945, 163.36281798666926, 166.50441064025904, 169.64600329384882, 172.78759594743863, 175.92918860102841, 179.0707812546182, 182.212373908208, 185.3539665617978, 188.49555921538757, 191.63715186897738, 194.77874452256717, 197.92033717615698, 201.06192982974676, 204.20352248333654, 207.34511513692635, 210.48670779051614, 213.62830044410595, 216.76989309769573, 219.9114857512855, 223.05307840487532, 226.1946710584651, 229.3362637120549, 232.4778563656447, 235.61944901923448, 238.76104167282426, 241.90263432641407, 245.04422698000386, 248.18581963359367, 251.32741228718345, 254.46900494077323, 257.610597594363, 260.75219024795285, 263.89378290154264, 267.0353755551324, 270.1769682087222, 273.318560862312, 276.46015351590177, 279.6017461694916, 282.7433388230814, 285.88493147667117, 289.02652413026095, 292.16811678385073, 295.3097094374406, 298.45130209103036, 301.59289474462014, 304.7344873982099, 307.8760800517997, 311.01767270538954, 314.1592653589793, 317.3008580125691, 320.4424506661589, 323.5840433197487, 326.7256359733385, 329.8672286269283, 333.0088212805181, 336.15041393410786, 339.29200658769764, 342.4335992412874, 345.57519189487726, 348.71678454846705, 351.85837720205683, 354.9999698556466, 358.1415625092364, 361.28315516282623, 364.424747816416, 367.5663404700058, 370.7079331235956, 373.84952577718536, 376.99111843077515, 380.132711084365, 383.27430373795477, 386.41589639154455, 389.55748904513433, 392.6990816987241, 395.84067435231395, 398.98226700590374, 402.1238596594935, 405.2654523130833, 408.4070449666731, 411.5486376202629, 414.6902302738527, 417.8318229274425, 420.97341558103227, 424.11500823462205, 427.2566008882119, 430.3981935418017, 433.53978619539146, 436.68137884898124, 439.822971502571, 442.9645641561608, 446.10615680975064, 449.2477494633404, 452.3893421169302, 455.53093477052, 458.6725274241098, 461.8141200776996, 464.9557127312894, 468.0973053848792, 471.23889803846896, 474.38049069205874, 477.5220833456485, 480.66367599923836, 483.80526865282815, 486.94686130641793, 490.0884539600077, 493.2300466135975, 496.37163926718733, 499.5132319207771, 502.6548245743669, 505.7964172279567, 508.93800988154646, 512.0796025351362, 515.221195188726, 518.3627878423158, 521.5043804959057, 524.6459731494955, 527.7875658030853, 530.929158456675, 534.0707511102648, 537.2123437638546, 540.3539364174444, 543.4955290710342, 546.637121724624, 549.7787143782137, 552.9203070318035, 556.0618996853934, 559.2034923389832, 562.345084992573, 565.4866776461628, 568.6282702997526, 571.7698629533423, 574.9114556069321, 578.0530482605219, 581.1946409141117, 584.3362335677015, 587.4778262212914, 590.6194188748811, 593.7610115284709, 596.9026041820607, 600.0441968356505, 603.1857894892403, 606.3273821428301, 609.4689747964198, 612.6105674500096, 615.7521601035994, 618.8937527571892, 622.0353454107791, 625.1769380643689, 628.3185307179587, 631.4601233715484, 634.6017160251382, 637.743308678728, 640.8849013323178, 644.0264939859076, 647.1680866394973, 650.3096792930871, 653.451271946677, 656.5928646002668, 659.7344572538566, 662.8760499074464, 666.0176425610362, 669.1592352146259, 672.3008278682157, 675.4424205218055, 678.5840131753953, 681.7256058289851, 684.8671984825748, 688.0087911361647, 691.1503837897545, 694.2919764433443, 697.4335690969341, 700.5751617505239, 703.7167544041137, 706.8583470577034, 709.9999397112932, 713.141532364883, 716.2831250184728, 719.4247176720626, 722.5663103256525, 725.7079029792422, 728.849495632832, 731.9910882864218, 735.1326809400116, 738.2742735936014, 741.4158662471912, 744.557458900781, 747.6990515543707, 750.8406442079605, 753.9822368615503, 757.1238295151402, 760.26542216873, 763.4070148223198, 766.5486074759095, 769.6902001294993, 772.8317927830891, 775.9733854366789, 779.1149780902687, 782.2565707438584, 785.3981633974482, 788.5397560510381, 791.6813487046279, 794.8229413582177, 797.9645340118075, 801.1061266653973, 804.247719318987, 807.3893119725768, 810.5309046261666, 813.6724972797564, 816.8140899333462, 819.955682586936, 823.0972752405258, 826.2388678941156, 829.3804605477054, 832.5220532012952, 835.663645854885, 838.8052385084748, 841.9468311620645, 845.0884238156543, 848.2300164692441, 851.3716091228339, 854.5132017764238, 857.6547944300136, 860.7963870836033, 863.9379797371931, 867.0795723907829, 870.2211650443727, 873.3627576979625, 876.5043503515523, 879.645943005142, 882.7875356587318, 885.9291283123216, 889.0707209659115, 892.2123136195013, 895.3539062730911, 898.4954989266809, 901.6370915802706, 904.7786842338604, 907.9202768874502, 911.06186954104, 914.2034621946298, 917.3450548482195, 920.4866475018093, 923.6282401553992, 926.769832808989, 929.9114254625788, 933.0530181161686, 936.1946107697584, 939.3362034233481, 942.4777960769379, 945.6193887305277, 948.7609813841175, 951.9025740377073, 955.044166691297, 958.185759344887, 961.3273519984767, 964.4689446520665, 967.6105373056563, 970.7521299592461, 973.8937226128359, 977.0353152664256, 980.1769079200154, 983.3185005736052, 986.460093227195, 989.6016858807849, 992.7432785343747, 995.8848711879644, 999.0264638415542, 1002.168056495144, 1005.3096491487338, 1008.4512418023236, 1011.5928344559134, 1014.7344271095031, 1017.8760197630929, 1021.0176124166827, 1024.1592050702725, 1027.3007977238624, 1030.442390377452, 1033.583983031042, 1036.7255756846316, 1039.8671683382215, 1043.0087609918114, 1046.150353645401, 1049.291946298991, 1052.4335389525806, 1055.5751316061705, 1058.7167242597602, 1061.85831691335, 1064.9999095669398, 1068.1415022205297, 1071.2830948741193, 1074.4246875277092, 1077.5662801812991, 1080.7078728348888, 1083.8494654884787, 1086.9910581420684, 1090.1326507956583, 1093.274243449248, 1096.4158361028378, 1099.5574287564275, 1102.6990214100174, 1105.840614063607, 1108.982206717197, 1112.1237993707869, 1115.2653920243765, 1118.4069846779664, 1121.548577331556, 1124.690169985146, 1127.8317626387357, 1130.9733552923256, 1134.1149479459152, 1137.2565405995051, 1140.398133253095, 1143.5397259066847, 1146.6813185602746, 1149.8229112138642, 1152.9645038674541, 1156.1060965210438, 1159.2476891746337, 1162.3892818282234, 1165.5308744818133, 1168.672467135403, 1171.8140597889928, 1174.9556524425827, 1178.0972450961724, 1181.2388377497623, 1184.380430403352, 1187.5220230569419, 1190.6636157105315, 1193.8052083641214, 1196.946801017711, 1200.088393671301, 1203.2299863248907, 1206.3715789784806, 1209.5131716320705, 1212.6547642856601, 1215.79635693925, 1218.9379495928397, 1222.0795422464296, 1225.2211349000193, 1228.3627275536091, 1231.5043202071988, 1234.6459128607887, 1237.7875055143784, 1240.9290981679683, 1244.0706908215582, 1247.2122834751478, 1250.3538761287377, 1253.4954687823274, 1256.6370614359173, 1259.778654089507, 1262.9202467430969, 1266.0618393966865, 1269.2034320502764, 1272.345024703866, 1275.486617357456, 1278.628210011046, 1281.7698026646356, 1284.9113953182255, 1288.0529879718151, 1291.194580625405, 1294.3361732789947, 1297.4777659325846, 1300.6193585861743, 1303.7609512397642, 1306.902543893354]
diff --git a/ghc/tests/codeGen/cg043.hs b/ghc/tests/codeGen/should_run/cg043.hs
similarity index 100%
rename from ghc/tests/codeGen/cg043.hs
rename to ghc/tests/codeGen/should_run/cg043.hs
diff --git a/ghc/tests/deSugar/should_compile/Makefile b/ghc/tests/deSugar/should_compile/Makefile
index e1bca8d06311c484ffe13dd7ddb51a53c6b622b6..d99249d2ad3dd4acc13447d9fd0d46a08bc0838d 100644
--- a/ghc/tests/deSugar/should_compile/Makefile
+++ b/ghc/tests/deSugar/should_compile/Makefile
@@ -1,17 +1,10 @@
 TOP = ../../../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.hs)
+HC_OPTS += -noC -dcore-lint -ddump-ds
 
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
-HC_OPTS += -noC -dcore-lint
-
-rn017_HC_OPTS = -hi
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
-
-all :: $(HS_OBJS)
+ds035_HC_OPTS = -fglasgow-exts
 
 include $(TOP)/mk/target.mk
 
diff --git a/ghc/tests/deSugar/should_compile/ds-wildcard.stderr b/ghc/tests/deSugar/should_compile/ds-wildcard.stderr
index 07da86992bdd44ab05e3d9bf20dc299faa16b4a6..e65a5e186192e82a60fc8f14ae5f98b3dd256c1b 100644
--- a/ghc/tests/deSugar/should_compile/ds-wildcard.stderr
+++ b/ghc/tests/deSugar/should_compile/ds-wildcard.stderr
@@ -3,17 +3,14 @@
 ================================================================================
 Desugared:
 Rec {
-x{-r1,x-}  :: 
-    _forall_ [t{-amE-}] => t{-amE-}
+x{-r1,x-}  ::  _forall_ [tak4] => tak4
 {-# L #-}
 x{-r1,x-} =
-    _/\_ t{-amE-} ->
+    _/\_ tak4 ->
 	_letrec_ {
-	  x_amC  :: 
-	      t{-amE-}
+	  x_ak2  ::  tak4
 	  {-# L #-}
-	  x_amC =
-	      x_amC;
-	} in 
-	  x_amC
+	  x_ak2 =
+	      x_ak2;
+	} in  x_ak2
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds001.stderr b/ghc/tests/deSugar/should_compile/ds001.stderr
index cc347192c32e4d59e6191b49c24713755ac5e4af..853165be4f3c546c7e56383666525343cce33a31 100644
--- a/ghc/tests/deSugar/should_compile/ds001.stderr
+++ b/ghc/tests/deSugar/should_compile/ds001.stderr
@@ -3,111 +3,117 @@
 ================================================================================
 Desugared:
 Rec {
-c{-r3I,x-}  :: 
-    _forall_ [t{-ang-}] => t{-ang-}
+c{-r3B,x-}  ::  _forall_ [takz] => takz
 {-# L #-}
-c{-r3I,x-} =
-    _/\_ t{-ang-} ->
+c{-r3B,x-} =
+    _/\_ takz ->
 	_letrec_ {
-	  c_ane  :: 
-	      t{-ang-}
+	  c_akx  ::  takz
 	  {-# L #-}
-	  c_ane =
-	      c_ane;
-	} in 
-	  c_ane
-end Rec }
-h{-r3L,x-}  :: 
-    _forall_
-    [t{-anG-} t{-anC-} t{-anE-}]
-    =>
-    t{-anG-} -> t{-anC-} -> t{-anE-} -> t{-anC-}
+	  c_akx =
+	      c_akx;
+	} in  c_akx
+h{-r3E,x-}  ::  _forall_
+		[talc tal8 tala]
+		=>
+		talc -> tala -> tal8 -> tala
 {-# L #-}
-h{-r3L,x-} =
-    _/\_ t{-anG-} t{-anC-} t{-anE-} -> \ x_r3z  :: 
-					     t{-anG-}
-					 {-# L #-}
-					 x_r3z y_r3B  :: 
-						   t{-anC-}
-					       {-# L #-}
-					       y_r3B ->
-	let {
-	  f_r3D  :: 
-	      _forall_ [t{-any-} t{-anA-}] => t{-any-} -> t{-anA-} -> t{-any-}
+h{-r3E,x-} =
+    _/\_ talc tal8 tala ->
+	_letrec_ {
+	  h_akB  ::  talc -> tala -> tal8 -> tala
 	  {-# L #-}
-	  f_r3D =
-	      _/\_ t{-any-} t{-anA-} -> \ a_r3F  :: 
-					      t{-any-}
-					  {-# L #-}
-					  a_r3F b_r3H  :: 
-						    t{-anA-}
-						{-# L #-}
-						b_r3H ->
-		  a_r3F
-	} in 
-	  f_r3D
-	      _@_ t{-anC-} _@_ t{-anE-} y_r3B
-f{-r3O,x-}  :: 
-    _forall_ [t{-anO-}] => t{-anO-} -> t{-anO-}
+	  h_akB =
+	      \ x_r3u  ::  talc
+		{-# L #-}
+		x_r3u y_r3v  ::  tala
+		      {-# L #-}
+		      y_r3v ->
+		  let {
+		    f_r3x  ::  _forall_ [tal4 tal6] => tal6 -> tal4 -> tal6
+		    {-# L #-}
+		    f_r3x =
+			_/\_ tal4 tal6 -> \ a_r3z  ::  tal6
+					    {-# L #-}
+					    a_r3z b_r3A  ::  tal4
+						  {-# L #-}
+						  b_r3A ->
+			    a_r3z
+		  } in  f_r3x _@_ tal8 _@_ tala y_r3v;
+	} in  h_akB
+f{-r3H,x-}  ::  _forall_ [taln] => taln -> taln
 {-# L #-}
-f{-r3O,x-} =
-    _/\_ t{-anO-} -> \ x_r3j  :: 
-			   t{-anO-}
-		       {-# L #-}
-		       x_r3j ->
-	x_r3j
-g{-r3N,x-}  :: 
-    _forall_
-    [t{-anW-} t{-ao2-} t{-ao4-}]
-    =>
-    t{-ao2-} -> t{-ao4-} -> t{-anW-} -> t{-anW-}
+f{-r3H,x-} =
+    _/\_ taln ->
+	_letrec_ {
+	  f_ale  ::  taln -> taln
+	  {-# L #-}
+	  f_ale =
+	      \ x_r3j  ::  taln
+		{-# L #-}
+		x_r3j ->
+		  x_r3j;
+	} in  f_ale
+g{-r3G,x-}  ::  _forall_
+		[talK talM talI]
+		=>
+		talK -> talM -> talI -> talI
 {-# L #-}
-g{-r3N,x-} =
-    _/\_ t{-anW-} t{-ao2-} t{-ao4-} -> \ x_r3l  :: 
-					     t{-ao2-}
-					 {-# L #-}
-					 x_r3l y_r3n  :: 
-						   t{-ao4-}
-					       {-# L #-}
-					       y_r3n z_r3p  :: 
-							 t{-anW-}
-						     {-# L #-}
-						     z_r3p ->
-	f{-r3O,x-}
-	    _@_ t{-anW-} z_r3p
-j{-r3M,x-}  :: 
-    _forall_
-    [t{-aoe-} t{-aoh-} t{-aoj-} t{-aoo-}]
-    =>
-    t{-aoe-} -> t{-aoh-} -> t{-aoo-} -> t{-aoj-} -> t{-aoj-}
+g{-r3G,x-} =
+    _/\_ talK talM talI ->
+	_letrec_ {
+	  g_alp  ::  talK -> talM -> talI -> talI
+	  {-# L #-}
+	  g_alp =
+	      \ x_r3l  ::  talK
+		{-# L #-}
+		x_r3l y_r3m  ::  talM
+		      {-# L #-}
+		      y_r3m z_r3n  ::  talI
+			    {-# L #-}
+			    z_r3n ->
+		  f{-r3H,x-} _@_ talI z_r3n;
+	} in  g_alp
+j{-r3F,x-}  ::  _forall_
+		[tami tame tamf tamg]
+		=>
+		tamf -> tamg -> tami -> tame -> tame
 {-# L #-}
-j{-r3M,x-} =
-    _/\_ t{-aoe-} t{-aoh-} t{-aoj-} t{-aoo-} -> \ w_r3r  :: 
-						      t{-aoe-}
-						  {-# L #-}
-						  w_r3r x_r3t  :: 
-							    t{-aoh-}
-							{-# L #-}
-							x_r3t y_r3v  :: 
-								  t{-aoo-}
-							      {-# L #-}
-							      y_r3v z_r3x  :: 
-									t{-aoj-}
-								    {-# L #-}
-								    z_r3x ->
-	g{-r3N,x-}
-	    _@_ t{-aoj-} _@_ t{-aoe-} _@_ t{-aoh-} w_r3r x_r3t z_r3x
-b{-r3J,x-}  :: 
-    _forall_ [t{-aou-}] => t{-aou-} -> t{-aou-}
+j{-r3F,x-} =
+    _/\_ tami tame tamf tamg ->
+	_letrec_ {
+	  j_alO  ::  tamf -> tamg -> tami -> tame -> tame
+	  {-# L #-}
+	  j_alO =
+	      \ w_r3p  ::  tamf
+		{-# L #-}
+		w_r3p x_r3q  ::  tamg
+		      {-# L #-}
+		      x_r3q y_r3r  ::  tami
+			    {-# L #-}
+			    y_r3r z_r3s  ::  tame
+				  {-# L #-}
+				  z_r3s ->
+		  g{-r3G,x-} _@_ tamf _@_ tamg _@_ tame w_r3p x_r3q z_r3s;
+	} in  j_alO
+b{-r3C,x-}  ::  _forall_ [tamo] => tamo -> tamo
 {-# L #-}
-b{-r3J,x-} =
-    _/\_ t{-aou-} ->
-	f{-r3O,x-}
-	    _@_ t{-aou-}
-a{-r3K,x-}  :: 
-    _forall_ [t{-aoA-}] => t{-aoA-} -> t{-aoA-}
+b{-r3C,x-} =
+    _/\_ tamo ->
+	_letrec_ {
+	  b_amk  ::  tamo -> tamo
+	  {-# L #-}
+	  b_amk =
+	      f{-r3H,x-} _@_ tamo;
+	} in  b_amk
+a{-r3D,x-}  ::  _forall_ [tamu] => tamu -> tamu
 {-# L #-}
-a{-r3K,x-} =
-    _/\_ t{-aoA-} ->
-	b{-r3J,x-}
-	    _@_ t{-aoA-}
+a{-r3D,x-} =
+    _/\_ tamu ->
+	_letrec_ {
+	  a_amq  ::  tamu -> tamu
+	  {-# L #-}
+	  a_amq =
+	      b{-r3C,x-} _@_ tamu;
+	} in  a_amq
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds002.stderr b/ghc/tests/deSugar/should_compile/ds002.stderr
index 5e6aeeb46d19988a7a2ee0de31bd3b65521e4609..a2a91d06fe38ddb236829f4b7bb1a5d87fd7c384 100644
--- a/ghc/tests/deSugar/should_compile/ds002.stderr
+++ b/ghc/tests/deSugar/should_compile/ds002.stderr
@@ -1,74 +1,74 @@
+ds002.hs:13: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `g'
 ds002.hs:8: 
     Warning: Pattern match(es) completely overlapped
 	in the definition of function `f'
 ds002.hs:9: 
     Warning: Pattern match(es) completely overlapped
 	in the definition of function `f'
-ds002.hs:13: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `g'
 
 
 ================================================================================
 Desugared:
-f{-r3w,x-}  :: 
-    _forall_ [t{-an6-}] => t{-an6-} -> t{-an6-}
+Rec {
+f{-r3s,x-}  ::  _forall_ [takv] => takv -> takv
 {-# L #-}
-f{-r3w,x-} =
-    _/\_ t{-an6-} -> \ x_r3e  :: 
-			   t{-an6-}
-		       {-# L #-}
-		       x_r3e ->
-	x_r3e
-g{-r3v,x-}  :: 
-    _forall_
-    [t{-anr-} t{-anA-} t{-anC-}]
-    =>
-    t{-anA-} -> t{-anC-} -> t{-anr-} -> t{-anr-}
+f{-r3s,x-} =
+    _/\_ takv ->
+	_letrec_ {
+	  f_aki  ::  takv -> takv
+	  {-# L #-}
+	  f_aki =
+	      \ x_r3e  ::  takv
+		{-# L #-}
+		x_r3e ->
+		  x_r3e;
+	} in  f_aki
+g{-r3r,x-}  ::  _forall_
+		[tale talg talc]
+		=>
+		tale -> talg -> talc -> talc
 {-# L #-}
-g{-r3v,x-} =
-    _/\_ t{-anr-} t{-anA-} t{-anC-} -> \ x_r3k  :: 
-					     t{-anA-}
-					 {-# L #-}
-					 x_r3k y_r3m  :: 
-						   t{-anC-}
-					       {-# L #-}
-					       y_r3m z_r3o  :: 
-							 t{-anr-}
-						     {-# L #-}
-						     z_r3o ->
-	let {
-	  fail_drB  :: 
-	      t{-anr-}
+g{-r3r,x-} =
+    _/\_ tale talg talc ->
+	_letrec_ {
+	  g_akx  ::  tale -> talg -> talc -> talc
 	  {-# L #-}
-	  fail_drB =
-	      GHCerr.patError{-8r,p-}
-		  _@_ t{-anr-} _string_ "ds002.hs:11|function `g'" } in
-	let { fail_drG  :: 
-		  t{-anr-}
-	      {-# L #-}
-	      fail_drG =
-	  let {
-	    z_r3u  :: 
-		t{-anr-}
-	    {-# L #-}
-	    z_r3u =
-		z_r3o } in
-	  let {
-	    y_r3s  :: 
-		t{-anC-}
-	    {-# L #-}
-	    y_r3s =
-		y_r3m } in
-	  let {
-	    x_r3q  :: 
-		t{-anA-}
-	    {-# L #-}
-	    x_r3q =
-		x_r3k
-	  } in 
-	    f{-r3w,x-}
-		_@_ t{-anr-} z_r3u
-	} in
-	f{-r3w,x-}
-	    _@_ t{-anr-} z_r3o
+	  g_akx =
+	      \ x_r3k  ::  tale
+		{-# L #-}
+		x_r3k y_r3l  ::  talg
+		      {-# L #-}
+		      y_r3l z_r3m  ::  talc
+			    {-# L #-}
+			    z_r3m ->
+		  let {
+		    fail_dpC  ::  talc
+		    {-# L #-}
+		    fail_dpC =
+			GHCerr.patError{-8r,w-}
+			    _@_ talc _string_ "ds002.hs:11|function `g'" } in
+		  let { fail_dpH  ::  talc
+			{-# L #-}
+			fail_dpH =
+		    let {
+		      z_r3q  ::  talc
+		      {-# L #-}
+		      z_r3q =
+			  z_r3m } in
+		    let {
+		      y_r3p  ::  talg
+		      {-# L #-}
+		      y_r3p =
+			  y_r3l } in
+		    let {
+		      x_r3o  ::  tale
+		      {-# L #-}
+		      x_r3o =
+			  x_r3k
+		    } in  f{-r3s,x-} _@_ talc z_r3q
+		  } in
+		  f{-r3s,x-} _@_ talc z_r3m;
+	} in  g_akx
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds003.stderr b/ghc/tests/deSugar/should_compile/ds003.stderr
index a5f1cb9b9cc42511a71e4d358a68b330d1a8450f..7c06692e9840052872e7b33eaeb1880e42bc0f37 100644
--- a/ghc/tests/deSugar/should_compile/ds003.stderr
+++ b/ghc/tests/deSugar/should_compile/ds003.stderr
@@ -2,63 +2,57 @@
 
 ================================================================================
 Desugared:
-f{-r3C,x-}  :: 
-    _forall_
-    [t{-aBt-} t{-aBF-} t{-aBI-} t{-aBS-}]
-    =>
-    [t{-aBt-}]
-    -> (t{-aBF-}, t{-aBI-})
-    -> PrelBase.Bool{-34,p-}
-    -> [t{-aBS-}]
+Rec {
+f{-r3v,x-}  ::  _forall_
+		[tayV taz7 taza tazl]
+		=>
+		[tayV] -> (taz7, taza) -> PrelBase.Bool{-34,W-} -> [tazl]
 {-# L #-}
-f{-r3C,x-} =
-    _/\_ t{-aBt-} t{-aBF-} t{-aBI-} t{-aBS-} -> \ ds_dGi  :: 
-						      [t{-aBt-}]
-						  {-# L #-}
-						  ds_dGi y_r3e  :: 
-							     (t{-aBF-}, t{-aBI-})
-							 {-# L #-}
-							 y_r3e ds_dGj  :: 
-								   PrelBase.Bool{-34,p-}
-							       {-# L #-}
-							       ds_dGj ->
-	let {
-	  fail_dGE  :: 
-	      [t{-aBS-}]
+f{-r3v,x-} =
+    _/\_ tayV taz7 taza tazl ->
+	_letrec_ {
+	  f_ayi  ::  [tayV]
+		     -> (taz7, taza)
+		     -> PrelBase.Bool{-34,W-}
+		     -> [tazl]
 	  {-# L #-}
-	  fail_dGE =
-	      case y_r3e of { PrelTup.(,){-62,p-}{i} y_r3k ys_r3l  ->
-	      let {
-		z_r3n  :: 
-		    PrelBase.Bool{-34,p-}
+	  f_ayi =
+	      \ ds_dDX  ::  [tayV]
 		{-# L #-}
-		z_r3n =
-		    ds_dGj } in
-	      let {
-		a_r3j  :: 
-		    (t{-aBF-}, t{-aBI-})
-		{-# L #-}
-		a_r3j =
-		    y_r3e } in
-	      let {
-		x_r3h  :: 
-		    [t{-aBt-}]
-		{-# L #-}
-		x_r3h =
-		    ds_dGi
-	      } in 
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ t{-aBS-};}
-	} in 
-	  case ds_dGi of {
-	    PrelBase.:{-55,p-}{i} ds_dGM ds_dGL ->
-		fail_dGE;
-	    PrelBase.[]{-5i,p-}{i} ->
-		case ds_dGj of {
-		  PrelBase.False{-58,p-}{i} ->
-		      fail_dGE;
-		  PrelBase.True{-5E,p-}{i} ->
-		      PrelBase.[]{-5i,p-}{i}
-			  _@_ t{-aBS-};
-		};
-	  }
+		ds_dDX y_r3d  ::  (taz7, taza)
+		       {-# L #-}
+		       y_r3d ds_dDY  ::  PrelBase.Bool{-34,W-}
+			     {-# L #-}
+			     ds_dDY ->
+		  let {
+		    fail_dEj  ::  [tazl]
+		    {-# L #-}
+		    fail_dEj =
+			case y_r3d of { PrelTup.(,){-62,w-}{i} y_r3h ys_r3i  ->
+			let {
+			  z_r3j  ::  PrelBase.Bool{-34,W-}
+			  {-# L #-}
+			  z_r3j =
+			      ds_dDY } in
+			let {
+			  a_r3g  ::  (taz7, taza)
+			  {-# L #-}
+			  a_r3g =
+			      y_r3d } in
+			let {
+			  x_r3f  ::  [tayV]
+			  {-# L #-}
+			  x_r3f =
+			      ds_dDX
+			} in  PrelBase.[]{-5i,w-}{i} _@_ tazl;}
+		  } in 
+		    case ds_dDX of {
+		      PrelBase.:{-55,w-}{i} ds_dEq ds_dEr -> fail_dEj;
+		      PrelBase.[]{-5i,w-}{i} ->
+			  case ds_dDY of {
+			    PrelBase.False{-58,w-}{i} -> fail_dEj;
+			    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ tazl;
+			  };
+		    };
+	} in  f_ayi
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds004.stderr b/ghc/tests/deSugar/should_compile/ds004.stderr
index 342da36882f07e4e9487e99b6aeee713d10406d7..3f3a8fa30d812e8e521fdcf4505876f06ade7e03 100644
--- a/ghc/tests/deSugar/should_compile/ds004.stderr
+++ b/ghc/tests/deSugar/should_compile/ds004.stderr
@@ -6,101 +6,73 @@ ds004.hs:6:
 ================================================================================
 Desugared:
 Rec {
-nodups{-r3j,x-}  :: 
-    _forall_
-    [t{-aGj-}]
-    =>
-    {PrelBase.Eq{-23,p-} t{-aGj-}} -> [t{-aGj-}] -> [t{-aGj-}]
+nodups{-r3j,x-}  ::  _forall_
+		     [taBn]
+		     =>
+		     {PrelBase.Eq{-23,p-} taBn} -> [taBn] -> [taBn]
 {-# L #-}
 nodups{-r3j,x-} =
-    _/\_ t{-aGj-} -> \ d.Eq_aGz  :: 
-			   {PrelBase.Eq{-23,p-} t{-aGj-}}
-		       {-# L #-}
-		       d.Eq_aGz ->
+    _/\_ taBn -> \ d.Eq_aBp  ::  {PrelBase.Eq{-23,p-} taBn}
+		   {-# L #-}
+		   d.Eq_aBp ->
 	_letrec_ {
-	  ==_aJI  :: 
-	      t{-aGj-} -> t{-aGj-} -> PrelBase.Bool{-34,p-}
+	  ==_aEE  ::  taBn -> taBn -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  ==_aJI =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-aGj-} d.Eq_aGz;
-	  nodups_aG4  :: 
-	      [t{-aGj-}] -> [t{-aGj-}]
+	  ==_aEE =
+	      PrelBase.=={-8Y,p-} _@_ taBn d.Eq_aBp;
+	  nodups_aAN  ::  [taBn] -> [taBn]
 	  {-# L #-}
-	  nodups_aG4 =
-	      \ ds_dK8  :: 
-		    [t{-aGj-}]
+	  nodups_aAN =
+	      \ ds_dF4  ::  [taBn]
 		{-# L #-}
-		ds_dK8 ->
+		ds_dF4 ->
 		  let {
-		    fail_dK9  :: 
-			[t{-aGj-}]
+		    fail_dF5  ::  [taBn]
 		    {-# L #-}
-		    fail_dK9 =
-			GHCerr.patError{-8r,p-}
-			    _@_ [t{-aGj-}] _string_ "ds004.hs:6|function `nodups'"
+		    fail_dF5 =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taBn] _string_ "ds004.hs:6|function `nodups'"
 		  } in 
-		    case ds_dK8 of {
-		      PrelBase.[]{-5i,p-}{i} ->
-			  PrelBase.[]{-5i,p-}{i}
-			      _@_ t{-aGj-};
-		      PrelBase.:{-55,p-}{i} x_r3e ds_dKq ->
-			  case ds_dKq of {
-			    PrelBase.[]{-5i,p-}{i} ->
+		    case ds_dF4 of {
+		      PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taBn;
+		      PrelBase.:{-55,w-}{i} x_r3e ds_dFm ->
+			  case ds_dFm of {
+			    PrelBase.[]{-5i,w-}{i} ->
 				let {
-				  ds_dKG  :: 
-				      [t{-aGj-}]
+				  ds_dFC  ::  [taBn]
 				  {-# L #-}
-				  ds_dKG =
-				      PrelBase.[]{-5i,p-}{i}
-					  {_@_ t{-aGj-}}
-				} in 
-				  PrelBase.:{-55,p-}{i}
-				      {_@_ t{-aGj-} x_r3e ds_dKG};
-			    PrelBase.:{-55,p-}{i} x_r3h xs_r3i ->
+				  ds_dFC =
+				      PrelBase.[]{-5i,w-}{i} {_@_ taBn}
+				} in  PrelBase.:{-55,w-}{i} {_@_ taBn x_r3e ds_dFC};
+			    PrelBase.:{-55,w-}{i} x_r3h xs_r3i ->
 				let {
-				  y_r3g  :: 
-				      t{-aGj-}
+				  y_r3g  ::  taBn
 				  {-# L #-}
 				  y_r3g =
 				      x_r3e
 				} in 
-				  case
-				      ==_aJI
-					  y_r3g x_r3h
-				  of {
-				    PrelBase.True{-5E,p-}{i} ->
+				  case ==_aEE y_r3g x_r3h of {
+				    PrelBase.True{-5E,w-}{i} ->
 					let {
-					  ds_dLd  :: 
-					      [t{-aGj-}]
+					  ds_dG9  ::  [taBn]
 					  {-# L #-}
-					  ds_dLd =
-					      PrelBase.:{-55,p-}{i}
-						  _@_ t{-aGj-} x_r3h xs_r3i
-					} in 
-					  nodups_aG4
-					      ds_dLd;
-				    PrelBase.False{-58,p-}{i} ->
-					let { ds_dLF  :: 
-						  [t{-aGj-}]
+					  ds_dG9 =
+					      PrelBase.:{-55,w-}{i} _@_ taBn x_r3h xs_r3i
+					} in  nodups_aAN ds_dG9;
+				    PrelBase.False{-58,w-}{i} ->
+					let { ds_dGB  ::  [taBn]
 					      {-# L #-}
-					      ds_dLF =
+					      ds_dGB =
 					  let {
-					    ds_dLN  :: 
-						[t{-aGj-}]
+					    ds_dGJ  ::  [taBn]
 					    {-# L #-}
-					    ds_dLN =
-						PrelBase.:{-55,p-}{i}
-						    _@_ t{-aGj-} x_r3h xs_r3i
-					  } in 
-					    nodups_aG4
-						ds_dLN
+					    ds_dGJ =
+						PrelBase.:{-55,w-}{i} _@_ taBn x_r3h xs_r3i
+					  } in  nodups_aAN ds_dGJ
 					} in
-					PrelBase.:{-55,p-}{i}
-					    _@_ t{-aGj-} y_r3g ds_dLF;
+					PrelBase.:{-55,w-}{i} _@_ taBn y_r3g ds_dGB;
 				  };
 			  };
 		    };
-	} in 
-	  nodups_aG4
+	} in  nodups_aAN
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds005.stderr b/ghc/tests/deSugar/should_compile/ds005.stderr
index 75f16dbf0e1f33fd3d270978feb2b84e698ff4ac..6b6de794a9160c291e1eee4c92be89d73b15dff1 100644
--- a/ghc/tests/deSugar/should_compile/ds005.stderr
+++ b/ghc/tests/deSugar/should_compile/ds005.stderr
@@ -6,200 +6,146 @@ ds005.hs:13:
 ================================================================================
 Desugared:
 Rec {
-mappairs'{-r3O,x-}  :: 
-    _forall_
-    [t{-anl-} t{-anv-} t{-anx-}]
-    =>
-    (t{-anl-} -> t{-anv-} -> t{-anx-})
-    -> [t{-anl-}]
-    -> [t{-anv-}]
-    -> [t{-anx-}]
+mappairs'{-r3C,x-}  ::  _forall_
+			[tal0 tal6 tala]
+			=>
+			(tal0 -> tal6 -> tala) -> [tal0] -> [tal6] -> [tala]
 {-# L #-}
-mappairs'{-r3O,x-} =
-    _/\_ t{-anl-} t{-anv-} t{-anx-} ->
+mappairs'{-r3C,x-} =
+    _/\_ tal0 tal6 tala ->
 	_letrec_ {
-	  mappairs'_anf  :: 
-	      (t{-anl-} -> t{-anv-} -> t{-anx-})
-	      -> [t{-anl-}]
-	      -> [t{-anv-}]
-	      -> [t{-anx-}]
+	  mappairs'_akt  ::  (tal0 -> tal6 -> tala)
+			     -> [tal0]
+			     -> [tal6]
+			     -> [tala]
 	  {-# L #-}
-	  mappairs'_anf =
-	      \ f_r3x  :: 
-		    t{-anl-} -> t{-anv-} -> t{-anx-}
+	  mappairs'_akt =
+	      \ f_r3r  ::  tal0 -> tal6 -> tala
 		{-# L #-}
-		f_r3x ds_duS  :: 
-			  [t{-anl-}]
+		f_r3r ds_dsz  ::  [tal0]
 		      {-# L #-}
-		      ds_duS ys_r3A  :: 
-				 [t{-anv-}]
+		      ds_dsz ys_r3s  ::  [tal6]
 			     {-# L #-}
-			     ys_r3A ->
+			     ys_r3s ->
 		  let {
-		    fail_duT  :: 
-			[t{-anx-}]
+		    fail_dsE  ::  [tala]
 		    {-# L #-}
-		    fail_duT =
-			GHCerr.patError{-8r,p-}
-			    _@_ [t{-anx-}] _string_ "ds005.hs:13|function `mappairs''" } in
-		  let { fail_dwj  :: 
-			    [t{-anx-}]
+		    fail_dsE =
+			GHCerr.patError{-8r,w-}
+			    _@_ [tala] _string_ "ds005.hs:13|function `mappairs''" } in
+		  let { fail_du4  ::  [tala]
 			{-# L #-}
-			fail_dwj =
+			fail_du4 =
 		    let {
-		      fail_dvV  :: 
-			  [t{-anx-}]
+		      fail_dtG  ::  [tala]
 		      {-# L #-}
-		      fail_dvV =
-			  case ds_duS of {
-			    PrelBase.[]{-5i,p-}{i} ->
-				fail_duT;
-			    PrelBase.:{-55,p-}{i} x_r3J xs_r3K ->
-				case ys_r3A of {
-				  PrelBase.[]{-5i,p-}{i} ->
-				      fail_duT;
-				  PrelBase.:{-55,p-}{i} y_r3M ys_r3N ->
+		      fail_dtG =
+			  case ds_dsz of {
+			    PrelBase.[]{-5i,w-}{i} -> fail_dsE;
+			    PrelBase.:{-55,w-}{i} x_r3y xs_r3z ->
+				case ys_r3s of {
+				  PrelBase.[]{-5i,w-}{i} -> fail_dsE;
+				  PrelBase.:{-55,w-}{i} y_r3A ys_r3B ->
 				      let {
-					f_r3H  :: 
-					    t{-anl-} -> t{-anv-} -> t{-anx-}
+					f_r3x  ::  tal0 -> tal6 -> tala
 					{-# L #-}
-					f_r3H =
-					    f_r3x } in
+					f_r3x =
+					    f_r3r } in
 				      let {
-					ds_dvr  :: 
-					    t{-anx-}
+					ds_dtc  ::  tala
 					{-# L #-}
-					ds_dvr =
-					    f_r3H
-						x_r3J y_r3M } in
+					ds_dtc =
+					    f_r3x x_r3y y_r3A } in
 				      let {
-					ds_dvv  :: 
-					    [t{-anx-}]
+					ds_dtg  ::  [tala]
 					{-# L #-}
-					ds_dvv =
-					    mappairs'_anf
-						f_r3H xs_r3K ys_r3N
-				      } in 
-					PrelBase.:{-55,p-}{i}
-					    _@_ t{-anx-} ds_dvr ds_dvv;
+					ds_dtg =
+					    mappairs'_akt f_r3x xs_r3z ys_r3B
+				      } in  PrelBase.:{-55,w-}{i} _@_ tala ds_dtc ds_dtg;
 				};
 			  }
 		    } in 
-		      case ys_r3A of {
-			PrelBase.:{-55,p-}{i} ds_dw3 ds_dw2 ->
-			    fail_dvV;
-			PrelBase.[]{-5i,p-}{i} ->
+		      case ys_r3s of {
+			PrelBase.:{-55,w-}{i} ds_dtN ds_dtO -> fail_dtG;
+			PrelBase.[]{-5i,w-}{i} ->
 			    let {
-			      x_r3E  :: 
-				  [t{-anl-}]
+			      x_r3v  ::  [tal0]
 			      {-# L #-}
-			      x_r3E =
-				  ds_duS } in
+			      x_r3v =
+				  ds_dsz } in
 			    let {
-			      f_r3C  :: 
-				  t{-anl-} -> t{-anv-} -> t{-anx-}
+			      f_r3u  ::  tal0 -> tal6 -> tala
 			      {-# L #-}
-			      f_r3C =
-				  f_r3x
-			    } in 
-			      PrelBase.[]{-5i,p-}{i}
-				  _@_ t{-anx-};
+			      f_r3u =
+				  f_r3r
+			    } in  PrelBase.[]{-5i,w-}{i} _@_ tala;
 		      }
 		  } in
-		  case ds_duS of {
-		    PrelBase.:{-55,p-}{i} ds_dwr ds_dwq ->
-			fail_dwj;
-		    PrelBase.[]{-5i,p-}{i} ->
-			PrelBase.[]{-5i,p-}{i}
-			    _@_ t{-anx-};
+		  case ds_dsz of {
+		    PrelBase.:{-55,w-}{i} ds_dub ds_duc -> fail_du4;
+		    PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ tala;
 		  };
-	} in 
-	  mappairs'_anf
-end Rec }
-Rec {
-mappairs{-r3P,x-}  :: 
-    _forall_
-    [t{-aoc-} t{-aoh-} t{-aoj-}]
-    =>
-    (t{-aoc-} -> t{-aoh-} -> t{-aoj-})
-    -> [t{-aoc-}]
-    -> [t{-aoh-}]
-    -> [t{-aoj-}]
+	} in  mappairs'_akt
+mappairs{-r3D,x-}  ::  _forall_
+		       [talU tam0 tam4]
+		       =>
+		       (talU -> tam0 -> tam4) -> [talU] -> [tam0] -> [tam4]
 {-# L #-}
-mappairs{-r3P,x-} =
-    _/\_ t{-aoc-} t{-aoh-} t{-aoj-} ->
+mappairs{-r3D,x-} =
+    _/\_ talU tam0 tam4 ->
 	_letrec_ {
-	  mappairs_anX  :: 
-	      (t{-aoc-} -> t{-aoh-} -> t{-aoj-})
-	      -> [t{-aoc-}]
-	      -> [t{-aoh-}]
-	      -> [t{-aoj-}]
+	  mappairs_alj  ::  (talU -> tam0 -> tam4)
+			    -> [talU]
+			    -> [tam0]
+			    -> [tam4]
 	  {-# L #-}
-	  mappairs_anX =
-	      \ f_r3e  :: 
-		    t{-aoc-} -> t{-aoh-} -> t{-aoj-}
+	  mappairs_alj =
+	      \ f_r3e  ::  talU -> tam0 -> tam4
 		{-# L #-}
-		f_r3e ds_dx4  :: 
-			  [t{-aoc-}]
+		f_r3e ds_duF  ::  [talU]
 		      {-# L #-}
-		      ds_dx4 ys_r3h  :: 
-				 [t{-aoh-}]
+		      ds_duF ys_r3f  ::  [tam0]
 			     {-# L #-}
-			     ys_r3h ->
-		  case ds_dx4 of {
-		    PrelBase.[]{-5i,p-}{i} ->
-			PrelBase.[]{-5i,p-}{i}
-			    _@_ t{-aoj-};
-		    PrelBase.:{-55,p-}{i} x_r3l xs_r3m ->
-			case ys_r3h of {
-			  PrelBase.[]{-5i,p-}{i} ->
+			     ys_r3f ->
+		  case ds_duF of {
+		    PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ tam4;
+		    PrelBase.:{-55,w-}{i} x_r3i xs_r3j ->
+			case ys_r3f of {
+			  PrelBase.[]{-5i,w-}{i} ->
 			      let {
-				f_r3j  :: 
-				    t{-aoc-} -> t{-aoh-} -> t{-aoj-}
+				f_r3h  ::  talU -> tam0 -> tam4
 				{-# L #-}
-				f_r3j =
+				f_r3h =
 				    f_r3e
-			      } in 
-				PrelBase.[]{-5i,p-}{i}
-				    _@_ t{-aoj-};
-			  PrelBase.:{-55,p-}{i} y_r3u ys_r3v ->
+			      } in  PrelBase.[]{-5i,w-}{i} _@_ tam4;
+			  PrelBase.:{-55,w-}{i} y_r3o ys_r3p ->
 			      let {
-				xs_r3s  :: 
-				    [t{-aoc-}]
+				xs_r3n  ::  [talU]
 				{-# L #-}
-				xs_r3s =
-				    xs_r3m } in
+				xs_r3n =
+				    xs_r3j } in
 			      let {
-				x_r3r  :: 
-				    t{-aoc-}
+				x_r3m  ::  talU
 				{-# L #-}
-				x_r3r =
-				    x_r3l } in
+				x_r3m =
+				    x_r3i } in
 			      let {
-				f_r3p  :: 
-				    t{-aoc-} -> t{-aoh-} -> t{-aoj-}
+				f_r3l  ::  talU -> tam0 -> tam4
 				{-# L #-}
-				f_r3p =
+				f_r3l =
 				    f_r3e } in
 			      let {
-				ds_dxR  :: 
-				    t{-aoj-}
+				ds_dvs  ::  tam4
 				{-# L #-}
-				ds_dxR =
-				    f_r3p
-					x_r3r y_r3u } in
+				ds_dvs =
+				    f_r3l x_r3m y_r3o } in
 			      let {
-				ds_dxV  :: 
-				    [t{-aoj-}]
+				ds_dvw  ::  [tam4]
 				{-# L #-}
-				ds_dxV =
-				    mappairs_anX
-					f_r3p xs_r3s ys_r3v
-			      } in 
-				PrelBase.:{-55,p-}{i}
-				    _@_ t{-aoj-} ds_dxR ds_dxV;
+				ds_dvw =
+				    mappairs_alj f_r3l xs_r3n ys_r3p
+			      } in  PrelBase.:{-55,w-}{i} _@_ tam4 ds_dvs ds_dvw;
 			};
 		  };
-	} in 
-	  mappairs_anX
+	} in  mappairs_alj
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds006.stderr b/ghc/tests/deSugar/should_compile/ds006.stderr
index c6358f3470951c47867353dbc3153380c027a58e..588a5ddfefd7f261691c3ea6739acca49e255add 100644
--- a/ghc/tests/deSugar/should_compile/ds006.stderr
+++ b/ghc/tests/deSugar/should_compile/ds006.stderr
@@ -3,53 +3,26 @@
 ================================================================================
 Desugared:
 Rec {
-d.Num_aHu  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
+v_aBI  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-d.Num_aHu =
-    PrelBase.$d3{-rb1,p-}
-+_aJy  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
+v_aBI =
+    +_aDM v_aBI lit_aDN
+v{-r1,x-}  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-+_aJy =
-    PrelBase.+{-ras,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aHu
-d.Num_aHy  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Num_aHy =
-    d.Num_aHu
-fromInt_aJG  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_aJG =
-    PrelBase.fromInt{-8R,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aHy
-lit_aJF  :: 
-    PrelBase.Int{-3g,p-}
+v{-r1,x-} =
+    v_aBI
+d.Num_aC2  ::  {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,W-}}
 {-# L #-}
-lit_aJF =
-    let {
-      ds_dKi  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_dKi =
-	  PrelBase.I#{-5b,p-}{i}
-	      1
-    } in 
-      fromInt_aJG
-	  ds_dKi
-v_aHa  :: 
-    PrelBase.Int{-3g,p-}
+d.Num_aC2 =
+    PrelBase.$d4{-rao,p-}
++_aDM  ::  PrelBase.Int{-3g,W-}
+	   -> PrelBase.Int{-3g,W-}
+	   -> PrelBase.Int{-3g,W-}
 {-# L #-}
-v_aHa =
-    +_aJy
-	v_aHa lit_aJF
-v{-r1,x-}  :: 
-    PrelBase.Int{-3g,p-}
++_aDM =
+    PrelBase.+{-r9E,p-} _@_ PrelBase.Int{-3g,W-} d.Num_aC2
+lit_aDN  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-v{-r1,x-} =
-    v_aHa
+lit_aDN =
+    PrelBase.I#{-5b,w-}{i} 1
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds007.stderr b/ghc/tests/deSugar/should_compile/ds007.stderr
index 32cef47c4530c85d75ff5cdf8935a8b34af2d570..016812a25c2195b40c3d3633afeb17cf74c4553f 100644
--- a/ghc/tests/deSugar/should_compile/ds007.stderr
+++ b/ghc/tests/deSugar/should_compile/ds007.stderr
@@ -2,27 +2,25 @@
 
 ================================================================================
 Desugared:
-w{-r3f,x-}  :: 
-    _forall_ [t{-amV-}] => [t{-amV-}]
+Rec {
+w{-r3f,x-}  ::  _forall_ [takl] => [takl]
 {-# L #-}
 w{-r3f,x-} =
-    _/\_ t{-amV-} ->
-	let {
-	  y_r3e  :: 
-	      _forall_ [t{-amM-}] => [t{-amM-}]
+    _/\_ takl ->
+	_letrec_ {
+	  w_ak8  ::  [takl]
 	  {-# L #-}
-	  y_r3e =
-	      _/\_ t{-amM-} ->
-		  PrelBase.[]{-5i,p-}{i}
-		      _@_ t{-amM-} } in
-	let {
-	  a_r3d  :: 
-	      _forall_ [t{-amT-}] => [t{-amT-}]
-	  {-# L #-}
-	  a_r3d =
-	      _/\_ t{-amT-} ->
-		  y_r3e
-		      _@_ t{-amT-}
-	} in 
-	  a_r3d
-	      _@_ t{-amV-}
+	  w_ak8 =
+	      let {
+		y_r3e  ::  _forall_ [takc] => [takc]
+		{-# L #-}
+		y_r3e =
+		    _/\_ takc -> PrelBase.[]{-5i,w-}{i} _@_ takc } in
+	      let {
+		a_r3d  ::  _forall_ [takj] => [takj]
+		{-# L #-}
+		a_r3d =
+		    _/\_ takj -> y_r3e _@_ takj
+	      } in  a_r3d _@_ takl;
+	} in  w_ak8
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds008.stderr b/ghc/tests/deSugar/should_compile/ds008.stderr
index 7ca5532d3b7c4f964e34f7539038a309571976df..efe8c705282f81ed665ab8f7a7525cf38710b760 100644
--- a/ghc/tests/deSugar/should_compile/ds008.stderr
+++ b/ghc/tests/deSugar/should_compile/ds008.stderr
@@ -3,114 +3,93 @@
 ================================================================================
 Desugared:
 Rec {
-d.Num_aY4  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
+f{-r3i,x-}  ::  _forall_ [taRU taRS] => taRU -> [taRS]
 {-# L #-}
-d.Num_aY4 =
-    PrelBase.$d3{-rbb,p-}
-fromInt_a117  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_a117 =
-    PrelBase.fromInt{-8R,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aY4
-lit_a11e  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a11e =
-    let {
-      ds_d11D  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d11D =
-	  PrelBase.I#{-5b,p-}{i}
-	      1
-    } in 
-      fromInt_a117
-	  ds_d11D
-f{-r3m,x-}  :: 
-    _forall_ [t{-aXj-} t{-aXh-}] => t{-aXj-} -> [t{-aXh-}]
-{-# L #-}
-f{-r3m,x-} =
-    _/\_ t{-aXj-} t{-aXh-} -> \ x_r3f  :: 
-				    t{-aXj-}
-				{-# L #-}
-				x_r3f ->
-	PrelBase.[]{-5i,p-}{i}
-	    _@_ t{-aXh-}
-g{-r3l,x-}  :: 
-    _forall_
-    [t{-aXD-} t{-aXv-} t{-aXx-} t{-aXz-} t{-aXB-}]
-    =>
-    t{-aXD-} -> ([t{-aXv-}], [t{-aXx-}], [t{-aXz-}], [t{-aXB-}])
-{-# L #-}
-g{-r3l,x-} =
-    _/\_ t{-aXD-} t{-aXv-} t{-aXx-} t{-aXz-} t{-aXB-} -> \ x_r3h  :: 
-							       t{-aXD-}
-							   {-# L #-}
-							   x_r3h ->
-	let { ds_d12o  :: 
-		  [t{-aXv-}]
-	      {-# L #-}
-	      ds_d12o =
-	  let {
-	    ds_d12M  :: 
-		[GHC.Void{-3T,p-}]
-	    {-# L #-}
-	    ds_d12M =
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ GHC.Void{-3T,p-}
-	  } in 
-	    f{-r3m,x-}
-		_@_ [GHC.Void{-3T,p-}] _@_ t{-aXv-} ds_d12M
-	} in
-	let {
-	  ds_d12s  :: 
-	      [t{-aXx-}]
+f{-r3i,x-} =
+    _/\_ taRU taRS ->
+	_letrec_ {
+	  f_aRJ  ::  taRU -> [taRS]
 	  {-# L #-}
-	  ds_d12s =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aXx-} } in
-	let {
-	  ds_d12w  :: 
-	      [t{-aXz-}]
+	  f_aRJ =
+	      \ x_r3f  ::  taRU
+		{-# L #-}
+		x_r3f ->
+		  PrelBase.[]{-5i,w-}{i} _@_ taRS;
+	} in  f_aRJ
+g{-r3m,x-}  ::  _forall_
+		[taSp taSe taSj taSl taSn]
+		=>
+		taSp -> ([taSe], [taSj], [taSl], [taSn])
+{-# L #-}
+g{-r3m,x-} =
+    _/\_ taSp taSe taSj taSl taSn ->
+	_letrec_ {
+	  g_aRW  ::  taSp -> ([taSe], [taSj], [taSl], [taSn])
 	  {-# L #-}
-	  ds_d12w =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aXz-} } in
-	let {
-	  ds_d12A  :: 
-	      [t{-aXB-}]
+	  g_aRW =
+	      \ x_r3h  ::  taSp
+		{-# L #-}
+		x_r3h ->
+		  let { ds_dWB  ::  [taSe]
+			{-# L #-}
+			ds_dWB =
+		    let {
+		      ds_dWZ  ::  [GHC.Void{-3T,W-}]
+		      {-# L #-}
+		      ds_dWZ =
+			  PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-}
+		    } in  f{-r3i,x-} _@_ [GHC.Void{-3T,W-}] _@_ taSe ds_dWZ
+		  } in
+		  let {
+		    ds_dWF  ::  [taSj]
+		    {-# L #-}
+		    ds_dWF =
+			PrelBase.[]{-5i,w-}{i} _@_ taSj } in
+		  let {
+		    ds_dWJ  ::  [taSl]
+		    {-# L #-}
+		    ds_dWJ =
+			PrelBase.[]{-5i,w-}{i} _@_ taSl } in
+		  let {
+		    ds_dWN  ::  [taSn]
+		    {-# L #-}
+		    ds_dWN =
+			PrelBase.[]{-5i,w-}{i} _@_ taSn
+		  } in 
+		    PrelTup.(,,,){-64,w-}{i}
+			{_@_ [taSe]
+			 _@_ [taSj]
+			 _@_ [taSl]
+			 _@_ [taSn]
+			 ds_dWB
+			 ds_dWF
+			 ds_dWJ
+			 ds_dWN};
+	} in  g_aRW
+h{-r3l,x-}  ::  _forall_
+		[taSM taSB taSD taSF taSH]
+		=>
+		taSM -> ([taSB], [taSD], [taSF], [taSH])
+{-# L #-}
+h{-r3l,x-} =
+    _/\_ taSM taSB taSD taSF taSH ->
+	_letrec_ {
+	  h_aSr  ::  taSM -> ([taSB], [taSD], [taSF], [taSH])
 	  {-# L #-}
-	  ds_d12A =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aXB-}
-	} in 
-	  PrelTup.(,,,){-64,p-}{i}
-	      {_@_ [t{-aXv-}]
-	       _@_ [t{-aXx-}]
-	       _@_ [t{-aXz-}]
-	       _@_ [t{-aXB-}]
-	       ds_d12o
-	       ds_d12s
-	       ds_d12w
-	       ds_d12A}
-h{-r3k,x-}  :: 
-    _forall_
-    [t{-aY0-} t{-aXS-} t{-aXT-} t{-aXU-} t{-aXV-}]
-    =>
-    t{-aY0-} -> ([t{-aXS-}], [t{-aXT-}], [t{-aXU-}], [t{-aXV-}])
+	  h_aSr =
+	      \ x_r3k  ::  taSM
+		{-# L #-}
+		x_r3k ->
+		  g{-r3m,x-}
+		      _@_ PrelBase.Int{-3g,W-}
+		      _@_ taSB
+		      _@_ taSD
+		      _@_ taSF
+		      _@_ taSH
+		      lit_aVP;
+	} in  h_aSr
+lit_aVP  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-h{-r3k,x-} =
-    _/\_ t{-aY0-} t{-aXS-} t{-aXT-} t{-aXU-} t{-aXV-} -> \ x_r3j  :: 
-							       t{-aY0-}
-							   {-# L #-}
-							   x_r3j ->
-	g{-r3l,x-}
-	    _@_ PrelBase.Int{-3g,p-}
-	    _@_ t{-aXS-}
-	    _@_ t{-aXT-}
-	    _@_ t{-aXU-}
-	    _@_ t{-aXV-}
-	    lit_a11e
+lit_aVP =
+    PrelBase.I#{-5b,w-}{i} 1
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds009.stderr b/ghc/tests/deSugar/should_compile/ds009.stderr
index 22fcc6fd5af857356810432bb849aea84151f16b..7e9749f84d87d0e44b9aed33e48e1b299bb886d1 100644
--- a/ghc/tests/deSugar/should_compile/ds009.stderr
+++ b/ghc/tests/deSugar/should_compile/ds009.stderr
@@ -2,480 +2,349 @@
 
 ================================================================================
 Desugared:
-j{-r3R,x-}  :: 
-    _forall_
-    [t{-aXD-} t{-aXG-} t{-aXJ-} t{-aXM-} a{-aXO-}]
-    =>
-    {PrelBase.Monad{-28,p-} a{-aXO-}}
-    -> a{-aXO-} (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
-    -> a{-aXO-} (t{-aXD-}, t{-aXG-})
+Rec {
+j{-r3O,x-}  ::  _forall_
+		[taS7 taSa aaSb taSf taSh]
+		=>
+		{PrelBase.Monad{-28,p-} aaSb}
+		-> aaSb (taSf, taSh, taS7, taSa)
+		-> aaSb (taSf, taSh)
 {-# L #-}
-j{-r3R,x-} =
-    _/\_ t{-aXD-} t{-aXG-} t{-aXJ-} t{-aXM-} a{-aXO-} -> \ d.Monad_aXY  :: 
-							       {PrelBase.Monad{-28,p-} a{-aXO-}}
-							   {-# L #-}
-							   d.Monad_aXY ->
-	let {
-	  >>=_a1c0  :: 
-	      _forall_
-	      [rjI{-a107-} rjJ{-a106-}]
-	      =>
-	      a{-aXO-} rjI{-a107-}
-	      -> (rjI{-a107-} -> a{-aXO-} rjJ{-a106-})
-	      -> a{-aXO-} rjJ{-a106-}
+j{-r3O,x-} =
+    _/\_ taS7 taSa aaSb taSf taSh -> \ d.Monad_aSr  ::  {PrelBase.Monad{-28,p-} aaSb}
+				       {-# L #-}
+				       d.Monad_aSr ->
+	_letrec_ {
+	  >>=_a17B  ::  _forall_
+			[taVi taVh]
+			=>
+			aaSb taVi -> (taVi -> aaSb taVh) -> aaSb taVh
 	  {-# L #-}
-	  >>=_a1c0 =
-	      PrelBase.>>={-811,p-}
-		  _@_ a{-aXO-} d.Monad_aXY } in
-	let {
-	  d.Monad_aY0  :: 
-	      {PrelBase.Monad{-28,p-} a{-aXO-}}
+	  >>=_a17B =
+	      PrelBase.>>={-811,p-} _@_ aaSb d.Monad_aSr;
+	  d.Monad_aSt  ::  {PrelBase.Monad{-28,p-} aaSb}
 	  {-# L #-}
-	  d.Monad_aY0 =
-	      d.Monad_aXY } in
-	let {
-	  return_a1bZ  :: 
-	      _forall_ [rjQ{-a108-}] => rjQ{-a108-} -> a{-aXO-} rjQ{-a108-}
+	  d.Monad_aSt =
+	      d.Monad_aSr;
+	  return_a17I  ::  _forall_ [taVj] => taVj -> aaSb taVj
 	  {-# L #-}
-	  return_a1bZ =
-	      PrelBase.return{-816,p-}
-		  _@_ a{-aXO-} d.Monad_aY0
-	} in 
-	  \ xs_r3L  :: 
-		a{-aXO-} (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
-	    {-# L #-}
-	    xs_r3L ->
-	      let {
-		ds_d1cw  :: 
-		    (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
-		    -> a{-aXO-} (t{-aXD-}, t{-aXG-})
+	  return_a17I =
+	      PrelBase.return{-816,p-} _@_ aaSb d.Monad_aSt;
+	  j_aRN  ::  aaSb (taSf, taSh, taS7, taSa) -> aaSb (taSf, taSh)
+	  {-# L #-}
+	  j_aRN =
+	      \ xs_r3I  ::  aaSb (taSf, taSh, taS7, taSa)
 		{-# L #-}
-		ds_d1cw =
-		    \ ds_d1cC  :: 
-			  (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
-		      {-# L #-}
-		      ds_d1cC ->
-			case
-			    ds_d1cC
-			of {
-			PrelTup.(,,,){-64,p-}{i} a_r3N b_r3O c_r3P d_r3Q  ->
-			let {
-			  ds_d1cQ  :: 
-			      (t{-aXD-}, t{-aXG-})
+		xs_r3I ->
+		  let {
+		    ds_d18A  ::  (taSf, taSh, taS7, taSa) -> aaSb (taSf, taSh)
+		    {-# L #-}
+		    ds_d18A =
+			\ ds_d18G  ::  (taSf, taSh, taS7, taSa)
 			  {-# L #-}
-			  ds_d1cQ =
-			      PrelTup.(,){-62,p-}{i}
-				  {_@_ t{-aXD-} _@_ t{-aXG-} a_r3N b_r3O}
-			} in 
-			  return_a1bZ
-			      _@_ (t{-aXD-}, t{-aXG-}) ds_d1cQ;}
-	      } in 
-		>>=_a1c0
-		    _@_ (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
-		    _@_ (t{-aXD-}, t{-aXG-})
-		    xs_r3L
-		    ds_d1cw
-i{-r3S,x-}  :: 
-    _forall_
-    [a{-aYh-} t{-aYm-} t{-aYo-}]
-    =>
-    {PrelBase.Eq{-23,p-} t{-aYm-}}
-    -> {PrelBase.Eq{-23,p-} t{-aYo-}}
-    -> {PrelBase.MonadZero{-29,p-} a{-aYh-}}
-    -> a{-aYh-} ([t{-aYm-}], [t{-aYo-}])
-    -> a{-aYh-} [t{-aYm-}]
+			  ds_d18G ->
+			    case
+				ds_d18G
+			    of {
+			    PrelTup.(,,,){-64,w-}{i} a_r3K b_r3L c_r3M d_r3N  ->
+			    let {
+			      ds_d18U  ::  (taSf, taSh)
+			      {-# L #-}
+			      ds_d18U =
+				  PrelTup.(,){-62,w-}{i} {_@_ taSf _@_ taSh a_r3K b_r3L}
+			    } in  return_a17I _@_ (taSf, taSh) ds_d18U;}
+		  } in 
+		    >>=_a17B
+			_@_ (taSf, taSh, taS7, taSa) _@_ (taSf, taSh) xs_r3I ds_d18A;
+	} in  j_aRN
+i{-r3P,x-}  ::  _forall_
+		[aaSN taSX taSZ]
+		=>
+		{PrelBase.Eq{-23,p-} taSX}
+		-> {PrelBase.Eq{-23,p-} taSZ}
+		-> {PrelBase.MonadZero{-29,p-} aaSN}
+		-> aaSN ([taSX], [taSZ])
+		-> aaSN [taSX]
 {-# L #-}
-i{-r3S,x-} =
-    _/\_ a{-aYh-} t{-aYm-} t{-aYo-} -> \ d.Eq_aYC  :: 
-					     {PrelBase.Eq{-23,p-} t{-aYm-}}
-					 {-# L #-}
-					 d.Eq_aYC d.Eq_aYF  :: 
-						      {PrelBase.Eq{-23,p-} t{-aYo-}}
-						  {-# L #-}
-						  d.Eq_aYF d.MonadZero_aYL  :: 
-							       {PrelBase.MonadZero{-29,p-} a{-aYh-}}
-							   {-# L #-}
-							   d.MonadZero_aYL ->
-	let {
-	  d.Monad_aYH  :: 
-	      {PrelBase.Monad{-28,p-} a{-aYh-}}
+i{-r3P,x-} =
+    _/\_ aaSN taSX taSZ -> \ d.Eq_aTf  ::  {PrelBase.Eq{-23,p-} taSX}
+			     {-# L #-}
+			     d.Eq_aTf d.Eq_aTi  ::  {PrelBase.Eq{-23,p-} taSZ}
+				      {-# L #-}
+				      d.Eq_aTi d.MonadZero_aTo  ::  {PrelBase.MonadZero{-29,p-} aaSN}
+					       {-# L #-}
+					       d.MonadZero_aTo ->
+	_letrec_ {
+	  d.Monad_aTk  ::  {PrelBase.Monad{-28,p-} aaSN}
+	  {-# L #-}
+	  d.Monad_aTk =
+	      PrelBase.scsel_MonadZeroPrelBaseMonad{-a19C,p-}
+		  _@_ aaSN d.MonadZero_aTo;
+	  d.Eq_aTd  ::  {PrelBase.Eq{-23,p-} [taSX]}
 	  {-# L #-}
-	  d.Monad_aYH =
-	      PrelBase.scsel_MonadZeroPrelBaseMonad{-a1dR,p-}
-		  _@_ a{-aYh-} d.MonadZero_aYL } in
-	let {
-	  d.Eq_aYA  :: 
-	      {PrelBase.Eq{-23,p-} [t{-aYm-}]}
+	  d.Eq_aTd =
+	      PrelBase.$d28{-rpK,p-} _@_ taSX d.Eq_aTf;
+	  d.Eq_aTg  ::  {PrelBase.Eq{-23,p-} [taSZ]}
 	  {-# L #-}
-	  d.Eq_aYA =
-	      PrelBase.$d27{-rqA,p-}
-		  _@_ t{-aYm-} d.Eq_aYC } in
-	let {
-	  d.Eq_aYD  :: 
-	      {PrelBase.Eq{-23,p-} [t{-aYo-}]}
+	  d.Eq_aTg =
+	      PrelBase.$d28{-rpK,p-} _@_ taSZ d.Eq_aTi;
+	  d.Eq_aTb  ::  {PrelBase.Eq{-23,p-} ([taSX], [taSZ])}
 	  {-# L #-}
-	  d.Eq_aYD =
-	      PrelBase.$d27{-rqA,p-}
-		  _@_ t{-aYo-} d.Eq_aYF } in
-	let {
-	  d.Eq_aYy  :: 
-	      {PrelBase.Eq{-23,p-} ([t{-aYm-}], [t{-aYo-}])}
+	  d.Eq_aTb =
+	      PrelTup.$d9{-rpg,p-} _@_ [taSX] _@_ [taSZ] d.Eq_aTd d.Eq_aTg;
+	  ==_a19w  ::  ([taSX], [taSZ])
+		       -> ([taSX], [taSZ])
+		       -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  d.Eq_aYy =
-	      PrelTup.$d9{-rq7,p-}
-		  _@_ [t{-aYm-}] _@_ [t{-aYo-}] d.Eq_aYA d.Eq_aYD } in
-	let {
-	  ==_a1dH  :: 
-	      ([t{-aYm-}], [t{-aYo-}])
-	      -> ([t{-aYm-}], [t{-aYo-}])
-	      -> PrelBase.Bool{-34,p-}
+	  ==_a19w =
+	      PrelBase.=={-8Y,p-} _@_ ([taSX], [taSZ]) d.Eq_aTb;
+	  >>=_a19x  ::  _forall_
+			[taVl taVk]
+			=>
+			aaSN taVl -> (taVl -> aaSN taVk) -> aaSN taVk
 	  {-# L #-}
-	  ==_a1dH =
-	      PrelBase.=={-8Y,p-}
-		  _@_ ([t{-aYm-}], [t{-aYo-}]) d.Eq_aYy } in
-	let {
-	  >>=_a1dG  :: 
-	      _forall_
-	      [rjI{-a10a-} rjJ{-a109-}]
-	      =>
-	      a{-aYh-} rjI{-a10a-}
-	      -> (rjI{-a10a-} -> a{-aYh-} rjJ{-a109-})
-	      -> a{-aYh-} rjJ{-a109-}
+	  >>=_a19x =
+	      PrelBase.>>={-811,p-} _@_ aaSN d.Monad_aTk;
+	  d.Monad_aTm  ::  {PrelBase.Monad{-28,p-} aaSN}
 	  {-# L #-}
-	  >>=_a1dG =
-	      PrelBase.>>={-811,p-}
-		  _@_ a{-aYh-} d.Monad_aYH } in
-	let {
-	  d.Monad_aYJ  :: 
-	      {PrelBase.Monad{-28,p-} a{-aYh-}}
+	  d.Monad_aTm =
+	      d.Monad_aTk;
+	  return_a19y  ::  _forall_ [taVm] => taVm -> aaSN taVm
 	  {-# L #-}
-	  d.Monad_aYJ =
-	      d.Monad_aYH } in
-	let {
-	  return_a1dF  :: 
-	      _forall_ [rjQ{-a10b-}] => rjQ{-a10b-} -> a{-aYh-} rjQ{-a10b-}
+	  return_a19y =
+	      PrelBase.return{-816,p-} _@_ aaSN d.Monad_aTm;
+	  zero_a19z  ::  _forall_ [taVn] => aaSN taVn
 	  {-# L #-}
-	  return_a1dF =
-	      PrelBase.return{-816,p-}
-		  _@_ a{-aYh-} d.Monad_aYJ } in
-	let {
-	  zero_a1dE  :: 
-	      _forall_ [rjD{-a10c-}] => a{-aYh-} rjD{-a10c-}
+	  zero_a19z =
+	      PrelBase.zero{-810,p-} _@_ aaSN d.MonadZero_aTo;
+	  i_aSv  ::  aaSN ([taSX], [taSZ]) -> aaSN [taSX]
 	  {-# L #-}
-	  zero_a1dE =
-	      PrelBase.zero{-810,p-}
-		  _@_ a{-aYh-} d.MonadZero_aYL
-	} in 
-	  \ xs_r3F  :: 
-		a{-aYh-} ([t{-aYm-}], [t{-aYo-}])
-	    {-# L #-}
-	    xs_r3F ->
-	      let {
-		ds_d1f5  :: 
-		    ([t{-aYm-}], [t{-aYo-}]) -> a{-aYh-} [t{-aYm-}]
+	  i_aSv =
+	      \ xs_r3C  ::  aaSN ([taSX], [taSZ])
 		{-# L #-}
-		ds_d1f5 =
-		    \ all_r3H  :: 
-			  ([t{-aYm-}], [t{-aYo-}])
-		      {-# L #-}
-		      all_r3H ->
-			case all_r3H of { PrelTup.(,){-62,p-}{i} x_r3I y_r3J  ->
-			case
-			    let { ds_d1fr  :: 
-				      ([t{-aYm-}], [t{-aYo-}])
-				  {-# L #-}
-				  ds_d1fr =
-			      let {
-				ds_d1fE  :: 
-				    [t{-aYm-}]
-				{-# L #-}
-				ds_d1fE =
-				    PrelBase.[]{-5i,p-}{i}
-					_@_ t{-aYm-} } in
-			      let {
-				ds_d1fI  :: 
-				    [t{-aYo-}]
-				{-# L #-}
-				ds_d1fI =
-				    PrelBase.[]{-5i,p-}{i}
-					_@_ t{-aYo-}
-			      } in 
-				PrelTup.(,){-62,p-}{i}
-				    {_@_ [t{-aYm-}] _@_ [t{-aYo-}] ds_d1fE ds_d1fI}
-			    } in
-			    ==_a1dH
-				all_r3H ds_d1fr
-			of {
-			  PrelBase.True{-5E,p-}{i} ->
-			      return_a1dF
-				  _@_ [t{-aYm-}] x_r3I;
-			  PrelBase.False{-58,p-}{i} ->
-			      zero_a1dE
-				  _@_ [t{-aYm-}];
-			};}
-	      } in 
-		>>=_a1dG
-		    _@_ ([t{-aYm-}], [t{-aYo-}]) _@_ [t{-aYm-}] xs_r3F ds_d1f5
-h{-r3T,x-}  :: 
-    _forall_
-    [a{-aYU-} t{-aYZ-}]
-    =>
-    {PrelBase.MonadZero{-29,p-} a{-aYU-}}
-    -> a{-aYU-} t{-aYZ-}
-    -> a{-aYU-} t{-aYZ-}
-    -> a{-aYU-} [t{-aYZ-}]
+		xs_r3C ->
+		  let {
+		    ds_d1br  ::  ([taSX], [taSZ]) -> aaSN [taSX]
+		    {-# L #-}
+		    ds_d1br =
+			\ all_r3E  ::  ([taSX], [taSZ])
+			  {-# L #-}
+			  all_r3E ->
+			    case all_r3E of { PrelTup.(,){-62,w-}{i} x_r3F y_r3G  ->
+			    case
+				let { ds_d1bN  ::  ([taSX], [taSZ])
+				      {-# L #-}
+				      ds_d1bN =
+				  let {
+				    ds_d1c0  ::  [taSX]
+				    {-# L #-}
+				    ds_d1c0 =
+					PrelBase.[]{-5i,w-}{i} _@_ taSX } in
+				  let {
+				    ds_d1c4  ::  [taSZ]
+				    {-# L #-}
+				    ds_d1c4 =
+					PrelBase.[]{-5i,w-}{i} _@_ taSZ
+				  } in 
+				    PrelTup.(,){-62,w-}{i} {_@_ [taSX] _@_ [taSZ] ds_d1c0 ds_d1c4}
+				} in
+				==_a19w all_r3E ds_d1bN
+			    of {
+			      PrelBase.True{-5E,w-}{i} -> return_a19y _@_ [taSX] x_r3F;
+			      PrelBase.False{-58,w-}{i} -> zero_a19z _@_ [taSX];
+			    };}
+		  } in  >>=_a19x _@_ ([taSX], [taSZ]) _@_ [taSX] xs_r3C ds_d1br;
+	} in  i_aSv
+h{-r3Q,x-}  ::  _forall_
+		[aaTE taTN]
+		=>
+		{PrelBase.MonadZero{-29,p-} aaTE}
+		-> aaTE taTN
+		-> aaTE taTN
+		-> aaTE [taTN]
 {-# L #-}
-h{-r3T,x-} =
-    _/\_ a{-aYU-} t{-aYZ-} -> \ d.MonadZero_aZd  :: 
-				    {PrelBase.MonadZero{-29,p-} a{-aYU-}}
-				{-# L #-}
-				d.MonadZero_aZd ->
-	let {
-	  d.Monad_aZ9  :: 
-	      {PrelBase.Monad{-28,p-} a{-aYU-}}
+h{-r3Q,x-} =
+    _/\_ aaTE taTN -> \ d.MonadZero_aU1  ::  {PrelBase.MonadZero{-29,p-} aaTE}
+			{-# L #-}
+			d.MonadZero_aU1 ->
+	_letrec_ {
+	  d.Monad_aTX  ::  {PrelBase.Monad{-28,p-} aaTE}
+	  {-# L #-}
+	  d.Monad_aTX =
+	      PrelBase.scsel_MonadZeroPrelBaseMonad{-a19C,p-}
+		  _@_ aaTE d.MonadZero_aU1;
+	  >>=_a1cX  ::  _forall_
+			[taVp taVo]
+			=>
+			aaTE taVp -> (taVp -> aaTE taVo) -> aaTE taVo
 	  {-# L #-}
-	  d.Monad_aZ9 =
-	      PrelBase.scsel_MonadZeroPrelBaseMonad{-a1dR,p-}
-		  _@_ a{-aYU-} d.MonadZero_aZd } in
-	let {
-	  >>=_a1gH  :: 
-	      _forall_
-	      [rjI{-a10e-} rjJ{-a10d-}]
-	      =>
-	      a{-aYU-} rjI{-a10e-}
-	      -> (rjI{-a10e-} -> a{-aYU-} rjJ{-a10d-})
-	      -> a{-aYU-} rjJ{-a10d-}
+	  >>=_a1cX =
+	      PrelBase.>>={-811,p-} _@_ aaTE d.Monad_aTX;
+	  d.Monad_aTZ  ::  {PrelBase.Monad{-28,p-} aaTE}
 	  {-# L #-}
-	  >>=_a1gH =
-	      PrelBase.>>={-811,p-}
-		  _@_ a{-aYU-} d.Monad_aZ9 } in
-	let {
-	  d.Monad_aZb  :: 
-	      {PrelBase.Monad{-28,p-} a{-aYU-}}
+	  d.Monad_aTZ =
+	      d.Monad_aTX;
+	  return_a1cY  ::  _forall_ [taVq] => taVq -> aaTE taVq
 	  {-# L #-}
-	  d.Monad_aZb =
-	      d.Monad_aZ9 } in
-	let {
-	  return_a1gG  :: 
-	      _forall_ [rjQ{-a10f-}] => rjQ{-a10f-} -> a{-aYU-} rjQ{-a10f-}
+	  return_a1cY =
+	      PrelBase.return{-816,p-} _@_ aaTE d.Monad_aTZ;
+	  zero_a1cZ  ::  _forall_ [taVr] => aaTE taVr
 	  {-# L #-}
-	  return_a1gG =
-	      PrelBase.return{-816,p-}
-		  _@_ a{-aYU-} d.Monad_aZb } in
-	let {
-	  zero_a1gF  :: 
-	      _forall_ [rjD{-a10g-}] => a{-aYU-} rjD{-a10g-}
+	  zero_a1cZ =
+	      PrelBase.zero{-810,p-} _@_ aaTE d.MonadZero_aU1;
+	  h_aTr  ::  aaTE taTN -> aaTE taTN -> aaTE [taTN]
 	  {-# L #-}
-	  zero_a1gF =
-	      PrelBase.zero{-810,p-}
-		  _@_ a{-aYU-} d.MonadZero_aZd
-	} in 
-	  \ xs_r3x  :: 
-		a{-aYU-} t{-aYZ-}
-	    {-# L #-}
-	    xs_r3x ys_r3z  :: 
-		       a{-aYU-} t{-aYZ-}
-		   {-# L #-}
-		   ys_r3z ->
-	      let {
-		ds_d1hu  :: 
-		    t{-aYZ-} -> a{-aYU-} [t{-aYZ-}]
+	  h_aTr =
+	      \ xs_r3v  ::  aaTE taTN
 		{-# L #-}
-		ds_d1hu =
-		    \ x_r3B  :: 
-			  t{-aYZ-}
-		      {-# L #-}
-		      x_r3B ->
-			let {
-			  ds_d1hK  :: 
-			      t{-aYZ-} -> a{-aYU-} [t{-aYZ-}]
+		xs_r3v ys_r3w  ::  aaTE taTN
+		       {-# L #-}
+		       ys_r3w ->
+		  let {
+		    ds_d1e0  ::  taTN -> aaTE [taTN]
+		    {-# L #-}
+		    ds_d1e0 =
+			\ x_r3y  ::  taTN
 			  {-# L #-}
-			  ds_d1hK =
-			      \ y_r3D  :: 
-				    t{-aYZ-}
-				{-# L #-}
-				y_r3D ->
-				  zero_a1gF
-				      _@_ [t{-aYZ-}]
-			} in 
-			  >>=_a1gH
-			      _@_ t{-aYZ-} _@_ [t{-aYZ-}] ys_r3z ds_d1hK
-	      } in 
-		>>=_a1gH
-		    _@_ t{-aYZ-} _@_ [t{-aYZ-}] xs_r3x ds_d1hu
-g{-r3U,x-}  :: 
-    _forall_
-    [a{-aZn-} t{-aZp-} t{-aZs-} t{-aZv-}]
-    =>
-    {PrelBase.MonadZero{-29,p-} a{-aZn-}}
-    -> a{-aZn-} t{-aZp-}
-    -> a{-aZn-} t{-aZs-}
-    -> a{-aZn-} t{-aZv-}
-    -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+			  x_r3y ->
+			    let {
+			      ds_d1eg  ::  taTN -> aaTE [taTN]
+			      {-# L #-}
+			      ds_d1eg =
+				  \ y_r3A  ::  taTN
+				    {-# L #-}
+				    y_r3A ->
+				      zero_a1cZ _@_ [taTN]
+			    } in  >>=_a1cX _@_ taTN _@_ [taTN] ys_r3w ds_d1eg
+		  } in  >>=_a1cX _@_ taTN _@_ [taTN] xs_r3v ds_d1e0;
+	} in  h_aTr
+g{-r3R,x-}  ::  _forall_
+		[aaUm taUx taUz taUB]
+		=>
+		{PrelBase.MonadZero{-29,p-} aaUm}
+		-> aaUm taUx
+		-> aaUm taUz
+		-> aaUm taUB
+		-> aaUm (taUx, taUz, taUB)
 {-# L #-}
-g{-r3U,x-} =
-    _/\_ a{-aZn-} t{-aZp-} t{-aZs-} t{-aZv-} -> \ d.MonadZero_aZJ  :: 
-						      {PrelBase.MonadZero{-29,p-} a{-aZn-}}
-						  {-# L #-}
-						  d.MonadZero_aZJ ->
-	let {
-	  d.Monad_aZF  :: 
-	      {PrelBase.Monad{-28,p-} a{-aZn-}}
+g{-r3R,x-} =
+    _/\_ aaUm taUx taUz taUB -> \ d.MonadZero_aUP  ::  {PrelBase.MonadZero{-29,p-} aaUm}
+				  {-# L #-}
+				  d.MonadZero_aUP ->
+	_letrec_ {
+	  d.Monad_aUL  ::  {PrelBase.Monad{-28,p-} aaUm}
 	  {-# L #-}
-	  d.Monad_aZF =
-	      PrelBase.scsel_MonadZeroPrelBaseMonad{-a1dR,p-}
-		  _@_ a{-aZn-} d.MonadZero_aZJ } in
-	let {
-	  >>=_a1im  :: 
-	      _forall_
-	      [rjI{-a10i-} rjJ{-a10h-}]
-	      =>
-	      a{-aZn-} rjI{-a10i-}
-	      -> (rjI{-a10i-} -> a{-aZn-} rjJ{-a10h-})
-	      -> a{-aZn-} rjJ{-a10h-}
+	  d.Monad_aUL =
+	      PrelBase.scsel_MonadZeroPrelBaseMonad{-a19C,p-}
+		  _@_ aaUm d.MonadZero_aUP;
+	  >>=_a1eM  ::  _forall_
+			[taVt taVs]
+			=>
+			aaUm taVt -> (taVt -> aaUm taVs) -> aaUm taVs
 	  {-# L #-}
-	  >>=_a1im =
-	      PrelBase.>>={-811,p-}
-		  _@_ a{-aZn-} d.Monad_aZF } in
-	let {
-	  d.Monad_aZH  :: 
-	      {PrelBase.Monad{-28,p-} a{-aZn-}}
+	  >>=_a1eM =
+	      PrelBase.>>={-811,p-} _@_ aaUm d.Monad_aUL;
+	  d.Monad_aUN  ::  {PrelBase.Monad{-28,p-} aaUm}
 	  {-# L #-}
-	  d.Monad_aZH =
-	      d.Monad_aZF } in
-	let {
-	  return_a1il  :: 
-	      _forall_ [rjQ{-a10j-}] => rjQ{-a10j-} -> a{-aZn-} rjQ{-a10j-}
+	  d.Monad_aUN =
+	      d.Monad_aUL;
+	  return_a1eN  ::  _forall_ [taVu] => taVu -> aaUm taVu
 	  {-# L #-}
-	  return_a1il =
-	      PrelBase.return{-816,p-}
-		  _@_ a{-aZn-} d.Monad_aZH } in
-	let {
-	  zero_a1ik  :: 
-	      _forall_ [rjD{-a10k-}] => a{-aZn-} rjD{-a10k-}
+	  return_a1eN =
+	      PrelBase.return{-816,p-} _@_ aaUm d.Monad_aUN;
+	  zero_a1eO  ::  _forall_ [taVv] => aaUm taVv
 	  {-# L #-}
-	  zero_a1ik =
-	      PrelBase.zero{-810,p-}
-		  _@_ a{-aZn-} d.MonadZero_aZJ
-	} in 
-	  \ xs_r3l  :: 
-		a{-aZn-} t{-aZp-}
-	    {-# L #-}
-	    xs_r3l ys_r3n  :: 
-		       a{-aZn-} t{-aZs-}
-		   {-# L #-}
-		   ys_r3n zs_r3p  :: 
-			      a{-aZn-} t{-aZv-}
-			  {-# L #-}
-			  zs_r3p ->
-	      let {
-		ds_d1ja  :: 
-		    t{-aZp-} -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+	  zero_a1eO =
+	      PrelBase.zero{-810,p-} _@_ aaUm d.MonadZero_aUP;
+	  g_aU4  ::  aaUm taUx
+		     -> aaUm taUz
+		     -> aaUm taUB
+		     -> aaUm (taUx, taUz, taUB)
+	  {-# L #-}
+	  g_aU4 =
+	      \ xs_r3l  ::  aaUm taUx
 		{-# L #-}
-		ds_d1ja =
-		    \ x_r3r  :: 
-			  t{-aZp-}
-		      {-# L #-}
-		      x_r3r ->
-			let {
-			  ds_d1jq  :: 
-			      t{-aZs-} -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+		xs_r3l ys_r3m  ::  aaUm taUz
+		       {-# L #-}
+		       ys_r3m zs_r3n  ::  aaUm taUB
+			      {-# L #-}
+			      zs_r3n ->
+		  let {
+		    ds_d1fQ  ::  taUx -> aaUm (taUx, taUz, taUB)
+		    {-# L #-}
+		    ds_d1fQ =
+			\ x_r3p  ::  taUx
 			  {-# L #-}
-			  ds_d1jq =
-			      \ y_r3t  :: 
-				    t{-aZs-}
-				{-# L #-}
-				y_r3t ->
-				  let {
-				    ds_d1jG  :: 
-					t{-aZv-} -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+			  x_r3p ->
+			    let {
+			      ds_d1g6  ::  taUz -> aaUm (taUx, taUz, taUB)
+			      {-# L #-}
+			      ds_d1g6 =
+				  \ y_r3r  ::  taUz
 				    {-# L #-}
-				    ds_d1jG =
-					\ z_r3v  :: 
-					      t{-aZv-}
-					  {-# L #-}
-					  z_r3v ->
-					    let {
-					      ds_d1jR  :: 
-						  (t{-aZp-}, t{-aZs-}, t{-aZv-})
+				    y_r3r ->
+				      let {
+					ds_d1gm  ::  taUB -> aaUm (taUx, taUz, taUB)
+					{-# L #-}
+					ds_d1gm =
+					    \ z_r3t  ::  taUB
 					      {-# L #-}
-					      ds_d1jR =
-						  PrelTup.(,,){-63,p-}{i}
-						      {_@_ t{-aZp-}
-						       _@_ t{-aZs-}
-						       _@_ t{-aZv-}
-						       x_r3r
-						       y_r3t
-						       z_r3v}
-					    } in 
-					      return_a1il
-						  _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-}) ds_d1jR
-				  } in 
-				    >>=_a1im
-					_@_ t{-aZv-}
-					_@_ (t{-aZp-}, t{-aZs-}, t{-aZv-})
-					zs_r3p
-					ds_d1jG
-			} in 
-			  >>=_a1im
-			      _@_ t{-aZs-} _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-}) ys_r3n ds_d1jq
-	      } in 
-		>>=_a1im
-		    _@_ t{-aZp-} _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-}) xs_r3l ds_d1ja
-f{-r3V,x-}  :: 
-    _forall_
-    [a{-aZR-} t{-aZT-}]
-    =>
-    {PrelBase.Monad{-28,p-} a{-aZR-}}
-    -> a{-aZR-} t{-aZT-}
-    -> a{-aZR-} t{-aZT-}
+					      z_r3t ->
+						let {
+						  ds_d1gx  ::  (taUx, taUz, taUB)
+						  {-# L #-}
+						  ds_d1gx =
+						      PrelTup.(,,){-63,w-}{i}
+							  {_@_ taUx
+							   _@_ taUz
+							   _@_ taUB
+							   x_r3p
+							   y_r3r
+							   z_r3t}
+						} in  return_a1eN _@_ (taUx, taUz, taUB) ds_d1gx
+				      } in  >>=_a1eM _@_ taUB _@_ (taUx, taUz, taUB) zs_r3n ds_d1gm
+			    } in  >>=_a1eM _@_ taUz _@_ (taUx, taUz, taUB) ys_r3m ds_d1g6
+		  } in  >>=_a1eM _@_ taUx _@_ (taUx, taUz, taUB) xs_r3l ds_d1fQ;
+	} in  g_aU4
+f{-r3S,x-}  ::  _forall_
+		[aaV0 taV2]
+		=>
+		{PrelBase.Monad{-28,p-} aaV0} -> aaV0 taV2 -> aaV0 taV2
 {-# L #-}
-f{-r3V,x-} =
-    _/\_ a{-aZR-} t{-aZT-} -> \ d.Monad_a103  :: 
-				    {PrelBase.Monad{-28,p-} a{-aZR-}}
-				{-# L #-}
-				d.Monad_a103 ->
-	let {
-	  >>=_a1ky  :: 
-	      _forall_
-	      [rjI{-a10m-} rjJ{-a10l-}]
-	      =>
-	      a{-aZR-} rjI{-a10m-}
-	      -> (rjI{-a10m-} -> a{-aZR-} rjJ{-a10l-})
-	      -> a{-aZR-} rjJ{-a10l-}
+f{-r3S,x-} =
+    _/\_ aaV0 taV2 -> \ d.Monad_aVe  ::  {PrelBase.Monad{-28,p-} aaV0}
+			{-# L #-}
+			d.Monad_aVe ->
+	_letrec_ {
+	  >>=_a1h7  ::  _forall_
+			[taVx taVw]
+			=>
+			aaV0 taVx -> (taVx -> aaV0 taVw) -> aaV0 taVw
 	  {-# L #-}
-	  >>=_a1ky =
-	      PrelBase.>>={-811,p-}
-		  _@_ a{-aZR-} d.Monad_a103 } in
-	let {
-	  d.Monad_a105  :: 
-	      {PrelBase.Monad{-28,p-} a{-aZR-}}
+	  >>=_a1h7 =
+	      PrelBase.>>={-811,p-} _@_ aaV0 d.Monad_aVe;
+	  d.Monad_aVg  ::  {PrelBase.Monad{-28,p-} aaV0}
 	  {-# L #-}
-	  d.Monad_a105 =
-	      d.Monad_a103 } in
-	let {
-	  return_a1kx  :: 
-	      _forall_ [rjQ{-a10n-}] => rjQ{-a10n-} -> a{-aZR-} rjQ{-a10n-}
+	  d.Monad_aVg =
+	      d.Monad_aVe;
+	  return_a1he  ::  _forall_ [taVy] => taVy -> aaV0 taVy
 	  {-# L #-}
-	  return_a1kx =
-	      PrelBase.return{-816,p-}
-		  _@_ a{-aZR-} d.Monad_a105
-	} in 
-	  \ xs_r3h  :: 
-		a{-aZR-} t{-aZT-}
-	    {-# L #-}
-	    xs_r3h ->
-	      let {
-		ds_d1l4  :: 
-		    t{-aZT-} -> a{-aZR-} t{-aZT-}
+	  return_a1he =
+	      PrelBase.return{-816,p-} _@_ aaV0 d.Monad_aVg;
+	  f_aUS  ::  aaV0 taV2 -> aaV0 taV2
+	  {-# L #-}
+	  f_aUS =
+	      \ xs_r3h  ::  aaV0 taV2
 		{-# L #-}
-		ds_d1l4 =
-		    \ x_r3j  :: 
-			  t{-aZT-}
-		      {-# L #-}
-		      x_r3j ->
-			return_a1kx
-			    _@_ t{-aZT-} x_r3j
-	      } in 
-		>>=_a1ky
-		    _@_ t{-aZT-} _@_ t{-aZT-} xs_r3h ds_d1l4
+		xs_r3h ->
+		  let {
+		    ds_d1hQ  ::  taV2 -> aaV0 taV2
+		    {-# L #-}
+		    ds_d1hQ =
+			\ x_r3j  ::  taV2
+			  {-# L #-}
+			  x_r3j ->
+			    return_a1he _@_ taV2 x_r3j
+		  } in  >>=_a1h7 _@_ taV2 _@_ taV2 xs_r3h ds_d1hQ;
+	} in  f_aUS
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds010.stderr b/ghc/tests/deSugar/should_compile/ds010.stderr
index 35eedef2adfd21b2e9f7283a7377c332e8ae3a37..cf2d93140824a3108b93b31909b4a4156592600b 100644
--- a/ghc/tests/deSugar/should_compile/ds010.stderr
+++ b/ghc/tests/deSugar/should_compile/ds010.stderr
@@ -3,271 +3,208 @@
 ================================================================================
 Desugared:
 Rec {
-d.Monad_aWF  :: 
-    {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,p-}}
+z_aQq  ::  [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 {-# L #-}
-d.Monad_aWF =
-    PrelBase.$d24{-rq8,p-}
->>=_a11I  :: 
-    _forall_
-    [rjI{-aWJ-} rjJ{-aWK-}]
-    =>
-    [rjI{-aWJ-}] -> (rjI{-aWJ-} -> [rjJ{-aWK-}]) -> [rjJ{-aWK-}]
-{-# L #-}
->>=_a11I =
-    PrelBase.>>={-811,p-}
-	_@_ PrelBase.[]{-3j,p-} d.Monad_aWF
-d.Monad_aWI  :: 
-    {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,p-}}
-{-# L #-}
-d.Monad_aWI =
-    d.Monad_aWF
-return_a11P  :: 
-    _forall_ [rjQ{-aWL-}] => rjQ{-aWL-} -> [rjQ{-aWL-}]
-{-# L #-}
-return_a11P =
-    PrelBase.return{-816,p-}
-	_@_ PrelBase.[]{-3j,p-} d.Monad_aWI
-z_aW0  :: 
-    [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
-{-# L #-}
-z_aW0 =
+z_aQq =
     _letrec_ {
-      ds_d12r  :: 
-	  [PrelBase.Char{-38,p-}]
-	  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+      ds_dWs  ::  [PrelBase.Char{-38,W-}]
+		  -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
       {-# L #-}
-      ds_d12r =
-	  \ ds_d12w  :: 
-		[PrelBase.Char{-38,p-}]
+      ds_dWs =
+	  \ ds_dWx  ::  [PrelBase.Char{-38,W-}]
 	    {-# L #-}
-	    ds_d12w ->
-	      case ds_d12w of {
-		PrelBase.[]{-5i,p-}{i} ->
-		    PrelBase.[]{-5i,p-}{i}
-			{_@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})};
-		PrelBase.:{-55,p-}{i} ds_d12I ds_d12R ->
+	    ds_dWx ->
+	      case ds_dWx of {
+		PrelBase.[]{-5i,w-}{i} ->
+		    PrelBase.[]{-5i,w-}{i}
+			{_@_ (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})};
+		PrelBase.:{-55,w-}{i} ds_dX5 ds_dXe ->
 		    let {
-		      a_r3d  :: 
-			  PrelBase.Char{-38,p-}
+		      a_r3d  ::  PrelBase.Char{-38,W-}
 		      {-# L #-}
 		      a_r3d =
-			  ds_d12I } in
+			  ds_dX5 } in
 		    _letrec_ {
-		      ds_d12X  :: 
-			  [PrelBase.Char{-38,p-}]
-			  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+		      ds_dXk  ::  [PrelBase.Char{-38,W-}]
+				  -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 		      {-# L #-}
-		      ds_d12X =
-			  \ ds_d132  :: 
-				[PrelBase.Char{-38,p-}]
+		      ds_dXk =
+			  \ ds_dXp  ::  [PrelBase.Char{-38,W-}]
 			    {-# L #-}
-			    ds_d132 ->
-			      case ds_d132 of {
-				PrelBase.[]{-5i,p-}{i} ->
-				    ds_d12r
-					ds_d12R;
-				PrelBase.:{-55,p-}{i} ds_d13h ds_d13q ->
+			    ds_dXp ->
+			      case ds_dXp of {
+				PrelBase.[]{-5i,w-}{i} -> ds_dWs ds_dXe;
+				PrelBase.:{-55,w-}{i} ds_dXE ds_dXN ->
 				    let {
-				      b_r3f  :: 
-					  PrelBase.Char{-38,p-}
+				      b_r3f  ::  PrelBase.Char{-38,W-}
 				      {-# L #-}
 				      b_r3f =
-					  ds_d13h } in
+					  ds_dXE } in
 				    _letrec_ {
-				      ds_d13w  :: 
-					  [PrelBase.Char{-38,p-}]
-					  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+				      ds_dXT  ::  [PrelBase.Char{-38,W-}]
+						  -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 				      {-# L #-}
-				      ds_d13w =
-					  \ ds_d13B  :: 
-						[PrelBase.Char{-38,p-}]
+				      ds_dXT =
+					  \ ds_dXY  ::  [PrelBase.Char{-38,W-}]
 					    {-# L #-}
-					    ds_d13B ->
-					      case ds_d13B of {
-						PrelBase.[]{-5i,p-}{i} ->
-						    ds_d12X
-							ds_d13q;
-						PrelBase.:{-55,p-}{i} ds_d13Q ds_d13Z ->
+					    ds_dXY ->
+					      case ds_dXY of {
+						PrelBase.[]{-5i,w-}{i} -> ds_dXk ds_dXN;
+						PrelBase.:{-55,w-}{i} ds_dYd ds_dYm ->
 						    let {
-						      c_r3h  :: 
-							  PrelBase.Char{-38,p-}
+						      c_r3h  ::  PrelBase.Char{-38,W-}
 						      {-# L #-}
 						      c_r3h =
-							  ds_d13Q } in
+							  ds_dYd } in
 						    _letrec_ {
-						      ds_d145  :: 
-							  [PrelBase.Char{-38,p-}]
-							  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+						      ds_dYs  ::  [PrelBase.Char{-38,W-}]
+								  -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 						      {-# L #-}
-						      ds_d145 =
-							  \ ds_d14a  :: 
-								[PrelBase.Char{-38,p-}]
+						      ds_dYs =
+							  \ ds_dYx  ::  [PrelBase.Char{-38,W-}]
 							    {-# L #-}
-							    ds_d14a ->
-							      case ds_d14a of {
-								PrelBase.[]{-5i,p-}{i} ->
-								    ds_d13w
-									ds_d13Z;
-								PrelBase.:{-55,p-}{i} ds_d14p ds_d14y ->
+							    ds_dYx ->
+							      case ds_dYx of {
+								PrelBase.[]{-5i,w-}{i} ->
+								    ds_dXT ds_dYm;
+								PrelBase.:{-55,w-}{i} ds_dYM ds_dYV ->
 								    let {
-								      d_r3j  :: 
-									  PrelBase.Char{-38,p-}
+								      d_r3j  ::  PrelBase.Char{-38,W-}
 								      {-# L #-}
 								      d_r3j =
-									  ds_d14p } in
+									  ds_dYM } in
 								    _letrec_ {
-								      ds_d14E  :: 
-									  [PrelBase.Char{-38,p-}]
-									  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+								      ds_dZ1  ::  [PrelBase.Char{-38,W-}]
+										  -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 								      {-# L #-}
-								      ds_d14E =
-									  \ ds_d14J  :: 
-										[PrelBase.Char{-38,p-}]
+								      ds_dZ1 =
+									  \ ds_dZ6  ::  [PrelBase.Char{-38,W-}]
 									    {-# L #-}
-									    ds_d14J ->
-									      case ds_d14J of {
-										PrelBase.[]{-5i,p-}{i} ->
-										    ds_d145
-											ds_d14y;
-										PrelBase.:{-55,p-}{i} ds_d14Y ds_d157 ->
+									    ds_dZ6 ->
+									      case ds_dZ6 of {
+										PrelBase.[]{-5i,w-}{i} ->
+										    ds_dYs ds_dYV;
+										PrelBase.:{-55,w-}{i} ds_dZl ds_dZu ->
 										    let {
-										      e_r3l  :: 
-											  PrelBase.Char{-38,p-}
+										      e_r3l  ::  PrelBase.Char{-38,W-}
 										      {-# L #-}
 										      e_r3l =
-											  ds_d14Y } in
+											  ds_dZl } in
 										    _letrec_ {
-										      ds_d15d  :: 
-											  [PrelBase.Char{-38,p-}]
-											  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+										      ds_dZA  ::  [PrelBase.Char{-38,W-}]
+												  -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 										      {-# L #-}
-										      ds_d15d =
-											  \ ds_d15i  :: 
-												[PrelBase.Char{-38,p-}]
+										      ds_dZA =
+											  \ ds_dZF  ::  [PrelBase.Char{-38,W-}]
 											    {-# L #-}
-											    ds_d15i ->
+											    ds_dZF ->
 											      case
-												  ds_d15i
+												  ds_dZF
 											      of {
-												PrelBase.[]{-5i,p-}{i} ->
-												    ds_d14E
-													ds_d157;
-												PrelBase.:{-55,p-}{i} ds_d15x ds_d15G ->
+												PrelBase.[]{-5i,w-}{i} ->
+												    ds_dZ1
+													ds_dZu;
+												PrelBase.:{-55,w-}{i} ds_dZU ds_d103 ->
 												    let {
-												      f_r3n  :: 
-													  PrelBase.Char{-38,p-}
+												      f_r3n  ::  PrelBase.Char{-38,W-}
 												      {-# L #-}
 												      f_r3n =
-													  ds_d15x } in
+													  ds_dZU } in
 												    _letrec_ {
-												      ds_d15M  :: 
-													  [PrelBase.Char{-38,p-}]
-													  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+												      ds_d109  ::  [PrelBase.Char{-38,W-}]
+														   -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 												      {-# L #-}
-												      ds_d15M =
-													  \ ds_d15R  :: 
-														[PrelBase.Char{-38,p-}]
+												      ds_d109 =
+													  \ ds_d10e  ::  [PrelBase.Char{-38,W-}]
 													    {-# L #-}
-													    ds_d15R ->
+													    ds_d10e ->
 													      case
-														  ds_d15R
+														  ds_d10e
 													      of {
-														PrelBase.[]{-5i,p-}{i} ->
-														    ds_d15d
-															ds_d15G;
-														PrelBase.:{-55,p-}{i} ds_d166 ds_d16f ->
+														PrelBase.[]{-5i,w-}{i} ->
+														    ds_dZA
+															ds_d103;
+														PrelBase.:{-55,w-}{i} ds_d10t ds_d10C ->
 														    let {
-														      g_r3p  :: 
-															  PrelBase.Char{-38,p-}
+														      g_r3p  ::  PrelBase.Char{-38,W-}
 														      {-# L #-}
 														      g_r3p =
-															  ds_d166 } in
+															  ds_d10t } in
 														    _letrec_ {
-														      ds_d16l  :: 
-															  [PrelBase.Char{-38,p-}]
-															  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+														      ds_d10I  ::  [PrelBase.Char{-38,W-}]
+																   -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 														      {-# L #-}
-														      ds_d16l =
-															  \ ds_d16q  :: 
-																[PrelBase.Char{-38,p-}]
+														      ds_d10I =
+															  \ ds_d10N  ::  [PrelBase.Char{-38,W-}]
 															    {-# L #-}
-															    ds_d16q ->
+															    ds_d10N ->
 															      case
-																  ds_d16q
+																  ds_d10N
 															      of {
-																PrelBase.[]{-5i,p-}{i} ->
-																    ds_d15M
-																	ds_d16f;
-																PrelBase.:{-55,p-}{i} ds_d16F ds_d16O ->
+																PrelBase.[]{-5i,w-}{i} ->
+																    ds_d109
+																	ds_d10C;
+																PrelBase.:{-55,w-}{i} ds_d112 ds_d11b ->
 																    let {
-																      h_r3r  :: 
-																	  PrelBase.Char{-38,p-}
+																      h_r3r  ::  PrelBase.Char{-38,W-}
 																      {-# L #-}
 																      h_r3r =
-																	  ds_d16F } in
+																	  ds_d112 } in
 																    _letrec_ {
-																      ds_d16U  :: 
-																	  [PrelBase.Char{-38,p-}]
-																	  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+																      ds_d11h  ::  [PrelBase.Char{-38,W-}]
+																		   -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 																      {-# L #-}
-																      ds_d16U =
-																	  \ ds_d16Z  :: 
-																		[PrelBase.Char{-38,p-}]
+																      ds_d11h =
+																	  \ ds_d11m  ::  [PrelBase.Char{-38,W-}]
 																	    {-# L #-}
-																	    ds_d16Z ->
+																	    ds_d11m ->
 																	      case
-																		  ds_d16Z
+																		  ds_d11m
 																	      of {
-																		PrelBase.[]{-5i,p-}{i} ->
-																		    ds_d16l
-																			ds_d16O;
-																		PrelBase.:{-55,p-}{i} ds_d17e ds_d17n ->
+																		PrelBase.[]{-5i,w-}{i} ->
+																		    ds_d10I
+																			ds_d11b;
+																		PrelBase.:{-55,w-}{i} ds_d11B ds_d11K ->
 																		    let {
-																		      i_r3t  :: 
-																			  PrelBase.Char{-38,p-}
+																		      i_r3t  ::  PrelBase.Char{-38,W-}
 																		      {-# L #-}
 																		      i_r3t =
-																			  ds_d17e } in
+																			  ds_d11B } in
 																		    _letrec_ {
-																		      ds_d17t  :: 
-																			  [PrelBase.Char{-38,p-}]
-																			  -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+																		      ds_d11Q  ::  [PrelBase.Char{-38,W-}]
+																				   -> [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 																		      {-# L #-}
-																		      ds_d17t =
-																			  \ ds_d17y  :: 
-																				[PrelBase.Char{-38,p-}]
+																		      ds_d11Q =
+																			  \ ds_d11V  ::  [PrelBase.Char{-38,W-}]
 																			    {-# L #-}
-																			    ds_d17y ->
+																			    ds_d11V ->
 																			      case
-																				  ds_d17y
+																				  ds_d11V
 																			      of {
-																				PrelBase.[]{-5i,p-}{i} ->
-																				    ds_d16U
-																					ds_d17n;
-																				PrelBase.:{-55,p-}{i} ds_d17N ds_d186 ->
+																				PrelBase.[]{-5i,w-}{i} ->
+																				    ds_d11h
+																					ds_d11K;
+																				PrelBase.:{-55,w-}{i} ds_d12a ds_d12t ->
 																				    let {
-																				      j_r3v  :: 
-																					  PrelBase.Char{-38,p-}
+																				      j_r3v  ::  PrelBase.Char{-38,W-}
 																				      {-# L #-}
 																				      j_r3v =
-																					  ds_d17N } in
+																					  ds_d12a } in
 																				    let {
-																				      ds_d17Z  :: 
-																					  (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
+																				      ds_d12m  ::  (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
 																				      {-# L #-}
-																				      ds_d17Z =
-																					  PrelTup.(,,,,,,,,,){-6a,p-}{i}
-																					      {_@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
-																					       _@_ PrelBase.Char{-38,p-}
+																				      ds_d12m =
+																					  PrelTup.(,,,,,,,,,){-6a,w-}{i}
+																					      {_@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
+																					       _@_ PrelBase.Char{-38,W-}
 																					       a_r3d
 																					       b_r3f
 																					       c_r3h
@@ -279,60 +216,67 @@ z_aW0 =
 																					       i_r3t
 																					       j_r3v} } in
 																				    let {
-																				      ds_d183  :: 
-																					  [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+																				      ds_d12q  ::  [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 																				      {-# L #-}
-																				      ds_d183 =
-																					  ds_d17t
-																					      ds_d186
+																				      ds_d12q =
+																					  ds_d11Q
+																					      ds_d12t
 																				    } in 
-																				      PrelBase.:{-55,p-}{i}
-																					  {_@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
-																					   ds_d17Z
-																					   ds_d183};
+																				      PrelBase.:{-55,w-}{i}
+																					  {_@_ (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
+																					   ds_d12m
+																					   ds_d12q};
 																			      };
 																		    } in 
-																		      ds_d17t
+																		      ds_d11Q
 																			  _string_ "12";
 																	      };
 																    } in 
-																      ds_d16U
+																      ds_d11h
 																	  _string_ "12";
 															      };
 														    } in 
-														      ds_d16l
+														      ds_d10I
 															  _string_ "12";
 													      };
 												    } in 
-												      ds_d15M
+												      ds_d109
 													  _string_ "12";
 											      };
 										    } in 
-										      ds_d15d
+										      ds_dZA
 											  _string_ "12";
 									      };
-								    } in 
-								      ds_d14E
-									  _string_ "12";
+								    } in  ds_dZ1 _string_ "12";
 							      };
-						    } in 
-						      ds_d145
-							  _string_ "12";
+						    } in  ds_dYs _string_ "12";
 					      };
-				    } in 
-				      ds_d13w
-					  _string_ "12";
+				    } in  ds_dXT _string_ "12";
 			      };
-		    } in 
-		      ds_d12X
-			  _string_ "12";
+		    } in  ds_dXk _string_ "12";
 	      };
-    } in 
-      ds_d12r
-	  _string_ "12"
-z{-r3w,x-}  :: 
-    [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+    } in  ds_dWs _string_ "12"
+z{-r3w,x-}  ::  [(PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})]
 {-# L #-}
 z{-r3w,x-} =
-    z_aW0
+    z_aQq
+d.Monad_aRh  ::  {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.Monad_aRh =
+    PrelBase.$d25{-rpl,p-}
+>>=_aWK  ::  _forall_
+	     [taRl taRm]
+	     =>
+	     [taRl] -> (taRl -> [taRm]) -> [taRm]
+{-# L #-}
+>>=_aWK =
+    PrelBase.>>={-811,p-} _@_ PrelBase.[]{-3j,W-} d.Monad_aRh
+d.Monad_aRk  ::  {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.Monad_aRk =
+    d.Monad_aRh
+return_aWT  ::  _forall_ [taRn] => taRn -> [taRn]
+{-# L #-}
+return_aWT =
+    PrelBase.return{-816,p-} _@_ PrelBase.[]{-3j,W-} d.Monad_aRk
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds011.stderr b/ghc/tests/deSugar/should_compile/ds011.stderr
index 65853337c0859623bccc48a1a6a10bccc1e31aae..86842d2b83c520346ea271b8350e15f67a84b475 100644
--- a/ghc/tests/deSugar/should_compile/ds011.stderr
+++ b/ghc/tests/deSugar/should_compile/ds011.stderr
@@ -2,69 +2,71 @@
 
 ================================================================================
 Desugared:
-i{-r4,x-}  :: 
-    _forall_ [t{-amO-}] => t{-amO-}
+Rec {
+i{-r4,x-}  ::  _forall_ [take] => take
 {-# L #-}
 i{-r4,x-} =
-    _/\_ t{-amO-} ->
-	IOBase.error{-87,p-}
-	    _@_ t{-amO-} _string_ "foo"
-h{-r5,x-}  :: 
-    _forall_ [t{-amW-}] => t{-amW-}
+    _/\_ take ->
+	_letrec_ {
+	  i_ak8  ::  take
+	  {-# L #-}
+	  i_ak8 =
+	      IOBase.error{-87,w-} _@_ take _string_ "foo";
+	} in  i_ak8
+h{-r5,x-}  ::  _forall_ [takm] => takm
 {-# L #-}
 h{-r5,x-} =
-    _/\_ t{-amW-} ->
-	let { ds_dpe  :: 
-		  [PrelBase.Char{-38,p-}]
-	      {-# L #-}
-	      ds_dpe =
-	  let {
-	    ds_dpp  :: 
-		PrelBase.Char{-38,p-}
-	    {-# L #-}
-	    ds_dpp =
-		PrelBase.C#{-54,p-}{i}
-		    {'"'} } in
-	  let {
-	    ds_dpt  :: 
-		[PrelBase.Char{-38,p-}]
-	    {-# L #-}
-	    ds_dpt =
-		PrelBase.[]{-5i,p-}{i}
-		    {_@_ PrelBase.Char{-38,p-}}
-	  } in 
-	    PrelBase.:{-55,p-}{i}
-		{_@_ PrelBase.Char{-38,p-} ds_dpp ds_dpt}
-	} in
-	IOBase.error{-87,p-}
-	    _@_ t{-amW-} ds_dpe
-g{-r6,x-}  :: 
-    _forall_ [t{-an4-}] => t{-an4-}
+    _/\_ takm ->
+	_letrec_ {
+	  h_akg  ::  takm
+	  {-# L #-}
+	  h_akg =
+	      let { ds_dn6  ::  [PrelBase.Char{-38,W-}]
+		    {-# L #-}
+		    ds_dn6 =
+		let {
+		  ds_dnh  ::  PrelBase.Char{-38,W-}
+		  {-# L #-}
+		  ds_dnh =
+		      PrelBase.C#{-54,w-}{i} {'"'} } in
+		let {
+		  ds_dnl  ::  [PrelBase.Char{-38,W-}]
+		  {-# L #-}
+		  ds_dnl =
+		      PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+		} in 
+		  PrelBase.:{-55,w-}{i} {_@_ PrelBase.Char{-38,W-} ds_dnh ds_dnl}
+	      } in
+	      IOBase.error{-87,w-} _@_ takm ds_dn6;
+	} in  h_akg
+g{-r6,x-}  ::  _forall_ [taku] => taku
 {-# L #-}
 g{-r6,x-} =
-    _/\_ t{-an4-} ->
-	let {
-	  ds_dpW  :: 
-	      [PrelBase.Char{-38,p-}]
+    _/\_ taku ->
+	_letrec_ {
+	  g_ako  ::  taku
 	  {-# L #-}
-	  ds_dpW =
-	      PrelBase.[]{-5i,p-}{i}
-		  {_@_ PrelBase.Char{-38,p-}}
-	} in 
-	  IOBase.error{-87,p-}
-	      _@_ t{-an4-} ds_dpW
-f{-r7,x-}  :: 
-    _forall_ [t{-and-}] => t{-and-}
+	  g_ako =
+	      let {
+		ds_dnO  ::  [PrelBase.Char{-38,W-}]
+		{-# L #-}
+		ds_dnO =
+		    PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+	      } in  IOBase.error{-87,w-} _@_ taku ds_dnO;
+	} in  g_ako
+f{-r7,x-}  ::  _forall_ [takD] => takD
 {-# L #-}
 f{-r7,x-} =
-    _/\_ t{-and-} ->
-	let {
-	  ds_dqm  :: 
-	      [PrelBase.Char{-38,p-}]
+    _/\_ takD ->
+	_letrec_ {
+	  f_akw  ::  takD
 	  {-# L #-}
-	  ds_dqm =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ PrelBase.Char{-38,p-}
-	} in 
-	  IOBase.error{-87,p-}
-	      _@_ t{-and-} ds_dqm
+	  f_akw =
+	      let {
+		ds_doe  ::  [PrelBase.Char{-38,W-}]
+		{-# L #-}
+		ds_doe =
+		    PrelBase.[]{-5i,w-}{i} _@_ PrelBase.Char{-38,W-}
+	      } in  IOBase.error{-87,w-} _@_ takD ds_doe;
+	} in  f_akw
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds012.stderr b/ghc/tests/deSugar/should_compile/ds012.stderr
index a562b3d49a754edaf1f4524713e71fcf71ebc61f..9d54b35118e2f1a268fdf83f09a77a6fba14ff0f 100644
--- a/ghc/tests/deSugar/should_compile/ds012.stderr
+++ b/ghc/tests/deSugar/should_compile/ds012.stderr
@@ -2,298 +2,210 @@
 
 ================================================================================
 Desugared:
-h{-r3l,x-}  :: 
-    _forall_
-    [t{-aHu-} t{-aHz-}]
-    =>
-    {PrelBase.Num{-2c,p-} t{-aHu-}} -> t{-aHz-} -> t{-aHu-}
+Rec {
+h{-r3l,x-}  ::  _forall_
+		[taC6 taC1]
+		=>
+		{PrelBase.Num{-2c,p-} taC1} -> taC6 -> taC1
 {-# L #-}
 h{-r3l,x-} =
-    _/\_ t{-aHu-} t{-aHz-} -> \ d.Num_aHB  :: 
-				    {PrelBase.Num{-2c,p-} t{-aHu-}}
-				{-# L #-}
-				d.Num_aHB ->
-	let {
-	  +_aP0  :: 
-	      t{-aHu-} -> t{-aHu-} -> t{-aHu-}
-	  {-# L #-}
-	  +_aP0 =
-	      PrelBase.+{-r3k,p-}
-		  _@_ t{-aHu-} d.Num_aHB } in
-	let {
-	  d.Num_aHE  :: 
-	      {PrelBase.Num{-2c,p-} t{-aHu-}}
+    _/\_ taC6 taC1 -> \ d.Num_aC8  ::  {PrelBase.Num{-2c,p-} taC1}
+			{-# L #-}
+			d.Num_aC8 ->
+	_letrec_ {
+	  +_aJx  ::  taC1 -> taC1 -> taC1
+	  {-# L #-}
+	  +_aJx =
+	      PrelBase.+{-r3k,p-} _@_ taC1 d.Num_aC8;
+	  d.Num_aCb  ::  {PrelBase.Num{-2c,p-} taC1}
+	  {-# L #-}
+	  d.Num_aCb =
+	      d.Num_aC8;
+	  fromInteger_aJE  ::  PrelBase.Integer{-3h,W-} -> taC1
+	  {-# L #-}
+	  fromInteger_aJE =
+	      PrelBase.fromInteger{-8S,p-} _@_ taC1 d.Num_aCb;
+	  lit_aJF  ::  taC1
+	  {-# L #-}
+	  lit_aJF =
+	      fromInteger_aJE
+		  _integer_  111111111111111111111111111111111111111111111111111111111111;
+	  fromInteger_aJG  ::  PrelBase.Integer{-3h,W-} -> taC1
+	  {-# L #-}
+	  fromInteger_aJG =
+	      fromInteger_aJE;
+	  lit_aJH  ::  taC1
+	  {-# L #-}
+	  lit_aJH =
+	      fromInteger_aJG
+		  _integer_  222222222222222222222222222222222222222222222222222222222222;
+	  h_aBS  ::  taC6 -> taC1
+	  {-# L #-}
+	  h_aBS =
+	      \ x_r3j  ::  taC6
+		{-# L #-}
+		x_r3j ->
+		  +_aJx lit_aJF lit_aJH;
+	} in  h_aBS
+f{-r3n,x-}  ::  _forall_
+		[taCE taCz]
+		=>
+		{PrelBase.Num{-2c,p-} taCz} -> taCE -> taCz
+{-# L #-}
+f{-r3n,x-} =
+    _/\_ taCE taCz -> \ d.Num_aCG  ::  {PrelBase.Num{-2c,p-} taCz}
+			{-# L #-}
+			d.Num_aCG ->
+	_letrec_ {
+	  +_aFs  ::  taCz -> taCz -> taCz
 	  {-# L #-}
-	  d.Num_aHE =
-	      d.Num_aHB } in
-	let {
-	  fromInteger_aOZ  :: 
-	      PrelBase.Integer{-3h,p-} -> t{-aHu-}
+	  +_aFs =
+	      PrelBase.+{-r3k,p-} _@_ taCz d.Num_aCG;
+	  d.Num_aCI  ::  {PrelBase.Num{-2c,p-} taCz}
 	  {-# L #-}
-	  fromInteger_aOZ =
-	      PrelBase.fromInteger{-8S,p-}
-		  _@_ t{-aHu-} d.Num_aHE } in
-	let {
-	  lit_aOY  :: 
-	      t{-aHu-}
+	  d.Num_aCI =
+	      d.Num_aCG;
+	  -_aFr  ::  taCz -> taCz -> taCz
 	  {-# L #-}
-	  lit_aOY =
-	      fromInteger_aOZ
-		  _integer_  111111111111111111111111111111111111111111111111111111111111 } in
-	let {
-	  fromInteger_aOX  :: 
-	      PrelBase.Integer{-3h,p-} -> t{-aHu-}
+	  -_aFr =
+	      PrelBase.-{-817,p-} _@_ taCz d.Num_aCI;
+	  +_aFt  ::  taCz -> taCz -> taCz
 	  {-# L #-}
-	  fromInteger_aOX =
-	      fromInteger_aOZ } in
-	let {
-	  lit_aOW  :: 
-	      t{-aHu-}
+	  +_aFt =
+	      +_aFs;
+	  d.Num_aCL  ::  {PrelBase.Num{-2c,p-} taCz}
 	  {-# L #-}
-	  lit_aOW =
-	      fromInteger_aOX
-		  _integer_  222222222222222222222222222222222222222222222222222222222222
-	} in 
-	  \ x_r3j  :: 
-		t{-aHz-}
-	    {-# L #-}
-	    x_r3j ->
-	      +_aP0
-		  lit_aOY lit_aOW
-f{-r3n,x-}  :: 
-    _forall_
-    [t{-aI9-} t{-aIe-}]
-    =>
-    {PrelBase.Num{-2c,p-} t{-aI9-}} -> t{-aIe-} -> t{-aI9-}
-{-# L #-}
-f{-r3n,x-} =
-    _/\_ t{-aI9-} t{-aIe-} -> \ d.Num_aIg  :: 
-				    {PrelBase.Num{-2c,p-} t{-aI9-}}
-				{-# L #-}
-				d.Num_aIg ->
-	let {
-	  +_aNl  :: 
-	      t{-aI9-} -> t{-aI9-} -> t{-aI9-}
+	  d.Num_aCL =
+	      d.Num_aCG;
+	  fromInt_aFu  ::  PrelBase.Int{-3g,W-} -> taCz
 	  {-# L #-}
-	  +_aNl =
-	      PrelBase.+{-r3k,p-}
-		  _@_ t{-aI9-} d.Num_aIg } in
-	let {
-	  d.Num_aIi  :: 
-	      {PrelBase.Num{-2c,p-} t{-aI9-}}
+	  fromInt_aFu =
+	      PrelBase.fromInt{-8R,p-} _@_ taCz d.Num_aCL;
+	  lit_aFv  ::  taCz
 	  {-# L #-}
-	  d.Num_aIi =
-	      d.Num_aIg } in
-	let {
-	  -_aNk  :: 
-	      t{-aI9-} -> t{-aI9-} -> t{-aI9-}
-	  {-# L #-}
-	  -_aNk =
-	      PrelBase.-{-817,p-}
-		  _@_ t{-aI9-} d.Num_aIi } in
-	let {
-	  +_aN8  :: 
-	      t{-aI9-} -> t{-aI9-} -> t{-aI9-}
+	  lit_aFv =
+	      let {
+		ds_dMB  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dMB =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_aFu ds_dMB;
+	  fromInt_aFw  ::  PrelBase.Int{-3g,W-} -> taCz
 	  {-# L #-}
-	  +_aN8 =
-	      +_aNl } in
-	let {
-	  d.Num_aIl  :: 
-	      {PrelBase.Num{-2c,p-} t{-aI9-}}
+	  fromInt_aFw =
+	      fromInt_aFu;
+	  lit_aFx  ::  taCz
 	  {-# L #-}
-	  d.Num_aIl =
-	      d.Num_aIg } in
-	let {
-	  fromInt_aNj  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aI9-}
+	  lit_aFx =
+	      let {
+		ds_dMQ  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dMQ =
+		    PrelBase.I#{-5b,w-}{i} 2
+	      } in  fromInt_aFw ds_dMQ;
+	  fromInt_aFy  ::  PrelBase.Int{-3g,W-} -> taCz
 	  {-# L #-}
-	  fromInt_aNj =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-aI9-} d.Num_aIl } in
-	let { lit_aNi  :: 
-		  t{-aI9-}
-	      {-# L #-}
-	      lit_aNi =
-	  let {
-	    ds_dQX  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_dQX =
-		PrelBase.I#{-5b,p-}{i}
-		    1
-	  } in 
-	    fromInt_aNj
-		ds_dQX
-	} in
-	let {
-	  fromInt_aNh  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aI9-}
+	  fromInt_aFy =
+	      fromInt_aFu;
+	  lit_aFz  ::  taCz
 	  {-# L #-}
-	  fromInt_aNh =
-	      fromInt_aNj } in
-	let { lit_aNg  :: 
-		  t{-aI9-}
-	      {-# L #-}
-	      lit_aNg =
-	  let {
-	    ds_dRc  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_dRc =
-		PrelBase.I#{-5b,p-}{i}
-		    2
-	  } in 
-	    fromInt_aNh
-		ds_dRc
-	} in
-	let {
-	  fromInt_aNf  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aI9-}
+	  lit_aFz =
+	      let {
+		ds_dN5  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dN5 =
+		    PrelBase.I#{-5b,w-}{i} 3
+	      } in  fromInt_aFy ds_dN5;
+	  d.Num_aCP  ::  {PrelBase.Num{-2c,p-} taCz}
 	  {-# L #-}
-	  fromInt_aNf =
-	      fromInt_aNj } in
-	let { lit_aNe  :: 
-		  t{-aI9-}
-	      {-# L #-}
-	      lit_aNe =
-	  let {
-	    ds_dRr  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_dRr =
-		PrelBase.I#{-5b,p-}{i}
-		    3
-	  } in 
-	    fromInt_aNf
-		ds_dRr
-	} in
-	let {
-	  d.Num_aIp  :: 
-	      {PrelBase.Num{-2c,p-} t{-aI9-}}
+	  d.Num_aCP =
+	      d.Num_aCG;
+	  *_aFA  ::  taCz -> taCz -> taCz
 	  {-# L #-}
-	  d.Num_aIp =
-	      d.Num_aIg } in
-	let {
-	  *_aNd  :: 
-	      t{-aI9-} -> t{-aI9-} -> t{-aI9-}
+	  *_aFA =
+	      PrelBase.*{-rfn,p-} _@_ taCz d.Num_aCP;
+	  fromInt_aFB  ::  PrelBase.Int{-3g,W-} -> taCz
 	  {-# L #-}
-	  *_aNd =
-	      PrelBase.*{-rcJ,p-}
-		  _@_ t{-aI9-} d.Num_aIp } in
-	let {
-	  fromInt_aNc  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aI9-}
+	  fromInt_aFB =
+	      fromInt_aFu;
+	  lit_aFC  ::  taCz
 	  {-# L #-}
-	  fromInt_aNc =
-	      fromInt_aNj } in
-	let { lit_aNb  :: 
-		  t{-aI9-}
-	      {-# L #-}
-	      lit_aNb =
-	  let {
-	    ds_dRP  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_dRP =
-		PrelBase.I#{-5b,p-}{i}
-		    4
-	  } in 
-	    fromInt_aNc
-		ds_dRP
-	} in
-	let {
-	  fromInt_aNa  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aI9-}
+	  lit_aFC =
+	      let {
+		ds_dNt  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dNt =
+		    PrelBase.I#{-5b,w-}{i} 4
+	      } in  fromInt_aFB ds_dNt;
+	  fromInt_aFD  ::  PrelBase.Int{-3g,W-} -> taCz
 	  {-# L #-}
-	  fromInt_aNa =
-	      fromInt_aNj } in
-	let { lit_aN9  :: 
-		  t{-aI9-}
-	      {-# L #-}
-	      lit_aN9 =
-	  let {
-	    ds_dS4  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_dS4 =
-		PrelBase.I#{-5b,p-}{i}
-		    5
-	  } in 
-	    fromInt_aNa
-		ds_dS4
-	} in
-	\ x_r3f  :: 
-	      t{-aIe-}
+	  fromInt_aFD =
+	      fromInt_aFu;
+	  lit_aFE  ::  taCz
 	  {-# L #-}
-	  x_r3f ->
-	    let { ds_dSk  :: 
-		      t{-aI9-}
-		  {-# L #-}
-		  ds_dSk =
+	  lit_aFE =
 	      let {
-		ds_dSw  :: 
-		    t{-aI9-}
+		ds_dNI  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dNI =
+		    PrelBase.I#{-5b,w-}{i} 5
+	      } in  fromInt_aFD ds_dNI;
+	  f_aCe  ::  taCE -> taCz
+	  {-# L #-}
+	  f_aCe =
+	      \ x_r3f  ::  taCE
 		{-# L #-}
-		ds_dSw =
-		    +_aN8
-			lit_aNi lit_aNg
-	      } in 
-		-_aNk
-		    ds_dSw lit_aNe
-	    } in
-	    let {
-	      ds_dSo  :: 
-		  t{-aI9-}
-	      {-# L #-}
-	      ds_dSo =
-		  *_aNd
-		      lit_aNb lit_aN9
-	    } in 
-	      +_aNl
-		  ds_dSk ds_dSo
-g{-r3m,x-}  :: 
-    _forall_
-    [t{-aID-}]
-    =>
-    {PrelBase.Num{-2c,p-} t{-aID-}} -> t{-aID-} -> t{-aID-}
+		x_r3f ->
+		  let { ds_dNZ  ::  taCz
+			{-# L #-}
+			ds_dNZ =
+		    let {
+		      ds_dOb  ::  taCz
+		      {-# L #-}
+		      ds_dOb =
+			  +_aFt lit_aFv lit_aFx
+		    } in  -_aFr ds_dOb lit_aFz
+		  } in
+		  let {
+		    ds_dO3  ::  taCz
+		    {-# L #-}
+		    ds_dO3 =
+			*_aFA lit_aFC lit_aFE
+		  } in  +_aFs ds_dNZ ds_dO3;
+	} in  f_aCe
+g{-r3m,x-}  ::  _forall_
+		[taD7]
+		=>
+		{PrelBase.Num{-2c,p-} taD7} -> taD7 -> taD7
 {-# L #-}
 g{-r3m,x-} =
-    _/\_ t{-aID-} -> \ d.Num_aIH  :: 
-			   {PrelBase.Num{-2c,p-} t{-aID-}}
-		       {-# L #-}
-		       d.Num_aIH ->
-	let {
-	  +_aTf  :: 
-	      t{-aID-} -> t{-aID-} -> t{-aID-}
-	  {-# L #-}
-	  +_aTf =
-	      PrelBase.+{-r3k,p-}
-		  _@_ t{-aID-} d.Num_aIH } in
-	let {
-	  d.Num_aIJ  :: 
-	      {PrelBase.Num{-2c,p-} t{-aID-}}
-	  {-# L #-}
-	  d.Num_aIJ =
-	      d.Num_aIH } in
-	let {
-	  f_aTe  :: 
-	      t{-aID-} -> t{-aID-}
-	  {-# L #-}
-	  f_aTe =
-	      f{-r3n,x-}
-		  _@_ t{-aID-} _@_ t{-aID-} d.Num_aIJ
-	} in 
-	  \ x_r3h  :: 
-		t{-aID-}
-	    {-# L #-}
-	    x_r3h ->
-	      let {
-		ds_dTJ  :: 
-		    t{-aID-}
+    _/\_ taD7 -> \ d.Num_aDa  ::  {PrelBase.Num{-2c,p-} taD7}
+		   {-# L #-}
+		   d.Num_aDa ->
+	_letrec_ {
+	  +_aON  ::  taD7 -> taD7 -> taD7
+	  {-# L #-}
+	  +_aON =
+	      PrelBase.+{-r3k,p-} _@_ taD7 d.Num_aDa;
+	  d.Num_aDc  ::  {PrelBase.Num{-2c,p-} taD7}
+	  {-# L #-}
+	  d.Num_aDc =
+	      d.Num_aDa;
+	  f_aOU  ::  taD7 -> taD7
+	  {-# L #-}
+	  f_aOU =
+	      f{-r3n,x-} _@_ taD7 _@_ taD7 d.Num_aDc;
+	  g_aCT  ::  taD7 -> taD7
+	  {-# L #-}
+	  g_aCT =
+	      \ x_r3h  ::  taD7
 		{-# L #-}
-		ds_dTJ =
-		    f_aTe
-			x_r3h
-	      } in 
-		+_aTf
-		    x_r3h ds_dTJ
+		x_r3h ->
+		  let {
+		    ds_dPu  ::  taD7
+		    {-# L #-}
+		    ds_dPu =
+			f_aOU x_r3h
+		  } in  +_aON x_r3h ds_dPu;
+	} in  g_aCT
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds013.stderr b/ghc/tests/deSugar/should_compile/ds013.stderr
index 6238e970b18a77cc33dfa37c09644a216b5282d0..9240f59fed60704bcb8f6995e0a0896f1dff4fdc 100644
--- a/ghc/tests/deSugar/should_compile/ds013.stderr
+++ b/ghc/tests/deSugar/should_compile/ds013.stderr
@@ -3,373 +3,291 @@
 ================================================================================
 Desugared:
 Rec {
-d.Num_a12Q  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Double{-3a,p-}}
-{-# L #-}
-d.Num_a12Q =
-    PrelNum.$d16{-rrq,p-}
-+_a19S  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
-+_a19S =
-    PrelBase.+{-rcF,p-}
-	_@_ PrelBase.Double{-3a,p-} d.Num_a12Q
-d.Num_a12T  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Double{-3a,p-}}
-{-# L #-}
-d.Num_a12T =
-    d.Num_a12Q
--_a19R  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
--_a19R =
-    PrelBase.-{-817,p-}
-	_@_ PrelBase.Double{-3a,p-} d.Num_a12T
-d.Fractional_a12W  :: 
-    {PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,p-}}
-{-# L #-}
-d.Fractional_a12W =
-    PrelNum.$d14{-rro,p-}
-fromRational_a19Q  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
-{-# L #-}
-fromRational_a19Q =
-    PrelNum.fromRational{-8T,p-}
-	_@_ PrelBase.Double{-3a,p-} d.Fractional_a12W
-lit_a19P  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19P =
-    fromRational_a19Q
-	_rational_  3 2
-fromRational_a19O  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
-{-# L #-}
-fromRational_a19O =
-    fromRational_a19Q
-lit_a19N  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19N =
-    fromRational_a19O
-	_rational_  2 1
-fromRational_a19M  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
-{-# L #-}
-fromRational_a19M =
-    fromRational_a19Q
-lit_a19L  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19L =
-    fromRational_a19M
-	_rational_  62831853 20000000
-d.Num_a131  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Double{-3a,p-}}
-{-# L #-}
-d.Num_a131 =
-    d.Num_a12Q
-*_a19K  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
-*_a19K =
-    PrelBase.*{-rU,p-}
-	_@_ PrelBase.Double{-3a,p-} d.Num_a131
-fromRational_a19J  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
-{-# L #-}
-fromRational_a19J =
-    fromRational_a19Q
-lit_a19I  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19I =
-    fromRational_a19J
-	_rational_  21 5
-fromRational_a19H  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
-{-# L #-}
-fromRational_a19H =
-    fromRational_a19Q
-lit_a19G  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19G =
-    fromRational_a19H
-	_rational_  5111111111111111111111111111 1000000000000000000000000000
-d.Num_a135  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Num_a135 =
-    PrelNum.$d25{-rrA,p-}
-+_a19F  :: 
-    PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-{-# L #-}
-+_a19F =
-    PrelBase.+{-rcF,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Num_a135
-d.Num_a138  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Num_a138 =
-    d.Num_a135
--_a19E  :: 
-    PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-{-# L #-}
--_a19E =
-    PrelBase.-{-817,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Num_a138
-d.Fractional_a13b  :: 
-    {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Fractional_a13b =
-    PrelNum.$d23{-rry,p-}
-fromRational_a19D  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a19D =
-    PrelNum.fromRational{-8T,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Fractional_a13b
-lit_a19C  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a19C =
-    fromRational_a19D
-	_rational_  3 2
-fromRational_a19B  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a19B =
-    fromRational_a19D
-lit_a19A  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a19A =
-    fromRational_a19B
-	_rational_  2 1
-fromRational_a19z  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a19z =
-    fromRational_a19D
-lit_a19y  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a19y =
-    fromRational_a19z
-	_rational_  62831853 20000000
-d.Num_a13g  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Num_a13g =
-    d.Num_a135
-*_a19x  :: 
-    PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-{-# L #-}
-*_a19x =
-    PrelBase.*{-rU,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Num_a13g
-fromRational_a19w  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a19w =
-    fromRational_a19D
-lit_a19v  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a19v =
-    fromRational_a19w
-	_rational_  21 5
-fromRational_a19u  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a19u =
-    fromRational_a19D
-lit_a19r  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a19r =
-    fromRational_a19u
-	_rational_  5111111111111111111111111111 1000000000000000000000000000
-+_a19q  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
-+_a19q =
-    +_a19S
--_a19p  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
--_a19p =
-    -_a19R
-lit_a19o  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19o =
-    lit_a19P
-lit_a19n  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19n =
-    lit_a19N
-lit_a19m  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19m =
-    lit_a19L
-*_a19l  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
-*_a19l =
-    *_a19K
-lit_a19k  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19k =
-    lit_a19I
-lit_a19j  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-lit_a19j =
-    lit_a19G
-+_a19i  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
-+_a19i =
-    +_a19q
-h_a106  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-h_a106 =
-    let { ds_d1hq  :: 
-	      PrelBase.Double{-3a,p-}
++_a14Y  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
++_a14Y =
+    +_a13j
+h_aUa  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+h_aUa =
+    let { ds_d18Q  ::  PrelBase.Double{-3a,W-}
 	  {-# L #-}
-	  ds_d1hq =
+	  ds_d18Q =
       let {
-	ds_d1hC  :: 
-	    PrelBase.Double{-3a,p-}
+	ds_d192  ::  PrelBase.Double{-3a,W-}
 	{-# L #-}
-	ds_d1hC =
-	    +_a19i
-		lit_a19o lit_a19n
-      } in 
-	-_a19p
-	    ds_d1hC lit_a19m
+	ds_d192 =
+	    +_a14Y lit_a13l lit_a13m
+      } in  -_a13k ds_d192 lit_a13n
     } in
     let {
-      ds_d1hu  :: 
-	  PrelBase.Double{-3a,p-}
+      ds_d18U  ::  PrelBase.Double{-3a,W-}
       {-# L #-}
-      ds_d1hu =
-	  *_a19l
-	      lit_a19k lit_a19j
-    } in 
-      +_a19q
-	  ds_d1hq ds_d1hu
-h{-r4,x-}  :: 
-    PrelBase.Double{-3a,p-}
+      ds_d18U =
+	  *_a13o lit_a13p lit_a13q
+    } in  +_a13j ds_d18Q ds_d18U
+h{-r4,x-}  ::  PrelBase.Double{-3a,W-}
 {-# L #-}
 h{-r4,x-} =
-    h_a106
-+_a1aJ  :: 
-    PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-{-# L #-}
-+_a1aJ =
-    +_a19F
-g_a10L  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-g_a10L =
-    let { ds_d1ib  :: 
-	      PrelBase.Float{-3c,p-}
+    h_aUa
++_a148  ::  PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+{-# L #-}
++_a148 =
+    +_a134
+g_aUB  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+g_aUB =
+    let { ds_d19B  ::  PrelBase.Float{-3c,W-}
 	  {-# L #-}
-	  ds_d1ib =
+	  ds_d19B =
       let {
-	ds_d1in  :: 
-	    PrelBase.Float{-3c,p-}
+	ds_d19N  ::  PrelBase.Float{-3c,W-}
 	{-# L #-}
-	ds_d1in =
-	    +_a1aJ
-		lit_a19C lit_a19A
-      } in 
-	-_a19E
-	    ds_d1in lit_a19y
+	ds_d19N =
+	    +_a148 lit_a137 lit_a139
+      } in  -_a135 ds_d19N lit_a13b
     } in
     let {
-      ds_d1if  :: 
-	  PrelBase.Float{-3c,p-}
+      ds_d19F  ::  PrelBase.Float{-3c,W-}
       {-# L #-}
-      ds_d1if =
-	  *_a19x
-	      lit_a19v lit_a19r
-    } in 
-      +_a19F
-	  ds_d1ib ds_d1if
-g{-r2,x-}  :: 
-    PrelBase.Float{-3c,p-}
+      ds_d19F =
+	  *_a13c lit_a13f lit_a13i
+    } in  +_a134 ds_d19B ds_d19F
+g{-r2,x-}  ::  PrelBase.Float{-3c,W-}
 {-# L #-}
 g{-r2,x-} =
-    g_a10L
-+_a1bs  :: 
-    PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-    -> PrelBase.Double{-3a,p-}
-{-# L #-}
-+_a1bs =
-    +_a19S
-f_a11q  :: 
-    PrelBase.Double{-3a,p-}
-{-# L #-}
-f_a11q =
-    let { ds_d1iW  :: 
-	      PrelBase.Double{-3a,p-}
+    g_aUB
++_a12R  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
++_a12R =
+    +_a12S
+f_aV2  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+f_aV2 =
+    let { ds_d1am  ::  PrelBase.Double{-3a,W-}
 	  {-# L #-}
-	  ds_d1iW =
+	  ds_d1am =
       let {
-	ds_d1j8  :: 
-	    PrelBase.Double{-3a,p-}
+	ds_d1ay  ::  PrelBase.Double{-3a,W-}
 	{-# L #-}
-	ds_d1j8 =
-	    +_a1bs
-		lit_a19P lit_a19N
-      } in 
-	-_a19R
-	    ds_d1j8 lit_a19L
+	ds_d1ay =
+	    +_a12R lit_a12U lit_a12W
+      } in  -_a12Q ds_d1ay lit_a12Y
     } in
     let {
-      ds_d1j0  :: 
-	  PrelBase.Double{-3a,p-}
+      ds_d1aq  ::  PrelBase.Double{-3a,W-}
       {-# L #-}
-      ds_d1j0 =
-	  *_a19K
-	      lit_a19I lit_a19G
-    } in 
-      +_a19S
-	  ds_d1iW ds_d1j0
-f{-r5,x-}  :: 
-    PrelBase.Double{-3a,p-}
+      ds_d1aq =
+	  *_a12Z lit_a131 lit_a133
+    } in  +_a12S ds_d1am ds_d1aq
+f{-r5,x-}  ::  PrelBase.Double{-3a,W-}
 {-# L #-}
 f{-r5,x-} =
-    f_a11q
+    f_aV2
+d.Num_aWi  ::  {PrelBase.Num{-2c,p-} PrelBase.Double{-3a,W-}}
+{-# L #-}
+d.Num_aWi =
+    PrelNum.$d16{-rnW,p-}
++_a12S  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
++_a12S =
+    PrelBase.+{-rfj,p-} _@_ PrelBase.Double{-3a,W-} d.Num_aWi
+d.Num_aWl  ::  {PrelBase.Num{-2c,p-} PrelBase.Double{-3a,W-}}
+{-# L #-}
+d.Num_aWl =
+    d.Num_aWi
+-_a12Q  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
+-_a12Q =
+    PrelBase.-{-817,p-} _@_ PrelBase.Double{-3a,W-} d.Num_aWl
+d.Fractional_aWo  ::  {PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,W-}}
+{-# L #-}
+d.Fractional_aWo =
+    PrelNum.$d14{-rnU,p-}
+fromRational_a12T  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Double{-3a,W-}
+{-# L #-}
+fromRational_a12T =
+    PrelNum.fromRational{-8T,p-}
+	_@_ PrelBase.Double{-3a,W-} d.Fractional_aWo
+lit_a12U  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a12U =
+    fromRational_a12T _rational_  3 2
+fromRational_a12V  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Double{-3a,W-}
+{-# L #-}
+fromRational_a12V =
+    fromRational_a12T
+lit_a12W  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a12W =
+    fromRational_a12V _rational_  2 1
+fromRational_a12X  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Double{-3a,W-}
+{-# L #-}
+fromRational_a12X =
+    fromRational_a12T
+lit_a12Y  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a12Y =
+    fromRational_a12X _rational_  62831853 20000000
+d.Num_aWt  ::  {PrelBase.Num{-2c,p-} PrelBase.Double{-3a,W-}}
+{-# L #-}
+d.Num_aWt =
+    d.Num_aWi
+*_a12Z  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
+*_a12Z =
+    PrelBase.*{-rX,p-} _@_ PrelBase.Double{-3a,W-} d.Num_aWt
+fromRational_a130  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Double{-3a,W-}
+{-# L #-}
+fromRational_a130 =
+    fromRational_a12T
+lit_a131  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a131 =
+    fromRational_a130 _rational_  21 5
+fromRational_a132  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Double{-3a,W-}
+{-# L #-}
+fromRational_a132 =
+    fromRational_a12T
+lit_a133  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a133 =
+    fromRational_a132
+	_rational_  5111111111111111111111111111 1000000000000000000000000000
+d.Num_aWx  ::  {PrelBase.Num{-2c,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Num_aWx =
+    PrelNum.$d25{-ro6,p-}
++_a134  ::  PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+{-# L #-}
++_a134 =
+    PrelBase.+{-rfj,p-} _@_ PrelBase.Float{-3c,W-} d.Num_aWx
+d.Num_aWA  ::  {PrelBase.Num{-2c,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Num_aWA =
+    d.Num_aWx
+-_a135  ::  PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+{-# L #-}
+-_a135 =
+    PrelBase.-{-817,p-} _@_ PrelBase.Float{-3c,W-} d.Num_aWA
+d.Fractional_aWD  ::  {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Fractional_aWD =
+    PrelNum.$d23{-ro4,p-}
+fromRational_a136  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a136 =
+    PrelNum.fromRational{-8T,p-}
+	_@_ PrelBase.Float{-3c,W-} d.Fractional_aWD
+lit_a137  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a137 =
+    fromRational_a136 _rational_  3 2
+fromRational_a138  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a138 =
+    fromRational_a136
+lit_a139  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a139 =
+    fromRational_a138 _rational_  2 1
+fromRational_a13a  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a13a =
+    fromRational_a136
+lit_a13b  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a13b =
+    fromRational_a13a _rational_  62831853 20000000
+d.Num_aWI  ::  {PrelBase.Num{-2c,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Num_aWI =
+    d.Num_aWx
+*_a13c  ::  PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+	    -> PrelBase.Float{-3c,W-}
+{-# L #-}
+*_a13c =
+    PrelBase.*{-rX,p-} _@_ PrelBase.Float{-3c,W-} d.Num_aWI
+fromRational_a13e  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a13e =
+    fromRational_a136
+lit_a13f  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a13f =
+    fromRational_a13e _rational_  21 5
+fromRational_a13h  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a13h =
+    fromRational_a136
+lit_a13i  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a13i =
+    fromRational_a13h
+	_rational_  5111111111111111111111111111 1000000000000000000000000000
++_a13j  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
++_a13j =
+    +_a12S
+-_a13k  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
+-_a13k =
+    -_a12Q
+lit_a13l  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a13l =
+    lit_a12U
+lit_a13m  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a13m =
+    lit_a12W
+lit_a13n  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a13n =
+    lit_a12Y
+*_a13o  ::  PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+	    -> PrelBase.Double{-3a,W-}
+{-# L #-}
+*_a13o =
+    *_a12Z
+lit_a13p  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a13p =
+    lit_a131
+lit_a13q  ::  PrelBase.Double{-3a,W-}
+{-# L #-}
+lit_a13q =
+    lit_a133
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds014.stderr b/ghc/tests/deSugar/should_compile/ds014.stderr
index 724fd2c3290690b8522fa5c207cc0385d85a63af..bd866849386ec13b3ea7a4956c6cc6b8f0e08727 100644
Binary files a/ghc/tests/deSugar/should_compile/ds014.stderr and b/ghc/tests/deSugar/should_compile/ds014.stderr differ
diff --git a/ghc/tests/deSugar/should_compile/ds015.stderr b/ghc/tests/deSugar/should_compile/ds015.stderr
index c389126f303babee2d4e21e399eda40843f332c0..f173af1bca0f84bceb80ee2f6a3edd57e865d791 100644
--- a/ghc/tests/deSugar/should_compile/ds015.stderr
+++ b/ghc/tests/deSugar/should_compile/ds015.stderr
@@ -1,87 +1,88 @@
 ds015.hs:9: 
     Warning: Possibly incomplete patterns
-	in a lambda abstraction:
-	    `(x PrelBase.: xs) -> ...'
+	in a lambda abstraction: `(x PrelBase.: xs) -> ...'
 
 
 ================================================================================
 Desugared:
-h{-r3z,x-}  :: 
-    _forall_ [t{-an8-} t{-anf-}] => [t{-an8-}] -> t{-anf-} -> t{-an8-}
+Rec {
+h{-r3w,x-}  ::  _forall_ [takN takG] => [takG] -> takN -> takG
 {-# L #-}
-h{-r3z,x-} =
-    _/\_ t{-an8-} t{-anf-} -> \ x_r3t  :: 
-				    [t{-an8-}]
-				{-# L #-}
-				x_r3t y_r3v  :: 
-					  t{-anf-}
-				      {-# L #-}
-				      y_r3v ->
-	(\ ds_drl  :: 
-	       [t{-an8-}]
-	   {-# L #-}
-	   ds_drl ->
-	     let {
-	       fail_drm  :: 
-		   t{-an8-}
-	       {-# L #-}
-	       fail_drm =
-		   GHCerr.patError{-8r,p-}
-		       _@_ t{-an8-} _string_ "ds015.hs:9|lambda"
-	     } in 
-	       case ds_drl of {
-		 PrelBase.[]{-5i,p-}{i} ->
-		     fail_drm;
-		 PrelBase.:{-55,p-}{i} x_r3x xs_r3y ->
-		     x_r3x;
-	       })
-	    x_r3t
-g{-r3A,x-}  :: 
-    _forall_
-    [t{-any-} t{-anA-} t{-anC-}]
-    =>
-    ((t{-any-} -> t{-any-}) -> t{-anA-}) -> t{-anC-} -> t{-anA-}
+h{-r3w,x-} =
+    _/\_ takN takG ->
+	_letrec_ {
+	  h_ako  ::  [takG] -> takN -> takG
+	  {-# L #-}
+	  h_ako =
+	      \ x_r3r  ::  [takG]
+		{-# L #-}
+		x_r3r y_r3s  ::  takN
+		      {-# L #-}
+		      y_r3s ->
+		  (\ ds_dpA  ::  [takG]
+		     {-# L #-}
+		     ds_dpA ->
+		       let {
+			 fail_dpJ  ::  takG
+			 {-# L #-}
+			 fail_dpJ =
+			     GHCerr.patError{-8r,w-} _@_ takG _string_ "ds015.hs:9|lambda"
+		       } in 
+			 case ds_dpA of {
+			   PrelBase.[]{-5i,w-}{i} -> fail_dpJ;
+			   PrelBase.:{-55,w-}{i} x_r3u xs_r3v -> x_r3u;
+			 })
+		      x_r3r;
+	} in  h_ako
+g{-r3x,x-}  ::  _forall_
+		[talp talr talt]
+		=>
+		((talt -> talt) -> talr) -> talp -> talr
 {-# L #-}
-g{-r3A,x-} =
-    _/\_ t{-any-} t{-anA-} t{-anC-} -> \ x_r3j  :: 
-					     (t{-any-} -> t{-any-}) -> t{-anA-}
-					 {-# L #-}
-					 x_r3j y_r3l  :: 
-						   t{-anC-}
-					       {-# L #-}
-					       y_r3l ->
-	let {
-	  ds_drT  :: 
-	      t{-any-} -> t{-any-}
+g{-r3x,x-} =
+    _/\_ talp talr talt ->
+	_letrec_ {
+	  g_akP  ::  ((talt -> talt) -> talr) -> talp -> talr
 	  {-# L #-}
-	  ds_drT =
-	      \ x_r3r  :: 
-		    t{-any-}
+	  g_akP =
+	      \ x_r3j  ::  (talt -> talt) -> talr
 		{-# L #-}
-		x_r3r ->
-		  x_r3r
-	} in 
-	  (\ x_r3n  :: 
-		 t{-any-} -> t{-any-}
-	     {-# L #-}
-	     x_r3n y_r3p  :: 
-		       (t{-any-} -> t{-any-}) -> t{-anA-}
-		   {-# L #-}
-		   y_r3p ->
-	       y_r3p
-		   x_r3n)
-	      ds_drT x_r3j
-f{-r3B,x-}  :: 
-    _forall_ [t{-anM-}] => t{-anM-} -> t{-anM-}
+		x_r3j y_r3k  ::  talp
+		      {-# L #-}
+		      y_r3k ->
+		  (let {
+		     ds_dql  ::  talt -> talt
+		     {-# L #-}
+		     ds_dql =
+			 \ x_r3p  ::  talt
+			   {-# L #-}
+			   x_r3p ->
+			     x_r3p
+		   } in 
+		     (\ x_r3m  ::  talt -> talt
+			{-# L #-}
+			x_r3m y_r3n  ::  (talt -> talt) -> talr
+			      {-# L #-}
+			      y_r3n ->
+			  y_r3n x_r3m)
+			 ds_dql)
+		      x_r3j;
+	} in  g_akP
+f{-r3y,x-}  ::  _forall_ [talL] => talL -> talL
 {-# L #-}
-f{-r3B,x-} =
-    _/\_ t{-anM-} -> \ x_r3f  :: 
-			   t{-anM-}
-		       {-# L #-}
-		       x_r3f ->
-	(\ x_r3h  :: 
-	       t{-anM-}
-	   {-# L #-}
-	   x_r3h ->
-	     x_r3h)
-	    x_r3f
+f{-r3y,x-} =
+    _/\_ talL ->
+	_letrec_ {
+	  f_alv  ::  talL -> talL
+	  {-# L #-}
+	  f_alv =
+	      \ x_r3f  ::  talL
+		{-# L #-}
+		x_r3f ->
+		  (\ x_r3h  ::  talL
+		     {-# L #-}
+		     x_r3h ->
+		       x_r3h)
+		      x_r3f;
+	} in  f_alv
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds016.stderr b/ghc/tests/deSugar/should_compile/ds016.stderr
index 7cddfe4c4a4ecbdeb9882ac913f20bfe8c21a9bb..114d751bf61d8c54170cda8f0434c20c0a138769 100644
--- a/ghc/tests/deSugar/should_compile/ds016.stderr
+++ b/ghc/tests/deSugar/should_compile/ds016.stderr
@@ -3,200 +3,146 @@
 ================================================================================
 Desugared:
 Rec {
-d.MonadPlus_aXs  :: 
-    {PrelBase.MonadPlus{-2a,p-} PrelBase.[]{-3j,p-}}
+f{-r3r,x-}  ::  _forall_
+		[taRl taRH taRP]
+		=>
+		[taRP] -> taRH -> [taRl] -> [taRl]
 {-# L #-}
-d.MonadPlus_aXs =
-    PrelBase.$d22{-rp7,p-}
-++_aYK  :: 
-    _forall_
-    [rjy{-aWo-}]
-    =>
-    [rjy{-aWo-}] -> [rjy{-aWo-}] -> [rjy{-aWo-}]
-{-# L #-}
-++_aYK =
-    PrelBase.++{-roG,p-}
-	_@_ PrelBase.[]{-3j,p-} d.MonadPlus_aXs
-f{-r3t,x-}  :: 
-    _forall_
-    [rjy{-aWN-} t{-aWT-} t{-aXo-}]
-    =>
-    [rjy{-aWN-}] -> t{-aXo-} -> [t{-aWT-}] -> [t{-aWT-}]
-{-# L #-}
-f{-r3t,x-} =
-    _/\_ rjy{-aWN-} t{-aWT-} t{-aXo-} ->
-	let {
-	  ++_aYM  :: 
-	      _forall_
-	      [rjy{-aWw-}]
-	      =>
-	      [rjy{-aWw-}] -> [rjy{-aWw-}] -> [rjy{-aWw-}]
+f{-r3r,x-} =
+    _/\_ taRl taRH taRP ->
+	_letrec_ {
+	  ++_aTa  ::  _forall_ [taQZ] => [taQZ] -> [taQZ] -> [taQZ]
 	  {-# L #-}
-	  ++_aYM =
-	      ++_aYK } in
-	let {
-	  ++_aYL  :: 
-	      _forall_
-	      [rjy{-aWD-}]
-	      =>
-	      [rjy{-aWD-}] -> [rjy{-aWD-}] -> [rjy{-aWD-}]
+	  ++_aTa =
+	      ++_aTb;
+	  ++_aT9  ::  _forall_ [taR6] => [taR6] -> [taR6] -> [taR6]
 	  {-# L #-}
-	  ++_aYL =
-	      ++_aYK } in
-	let {
-	  ++_aYJ  :: 
-	      _forall_
-	      [rjy{-aWK-}]
-	      =>
-	      [rjy{-aWK-}] -> [rjy{-aWK-}] -> [rjy{-aWK-}]
+	  ++_aT9 =
+	      ++_aTb;
+	  ++_aTc  ::  _forall_ [taRd] => [taRd] -> [taRd] -> [taRd]
 	  {-# L #-}
-	  ++_aYJ =
-	      ++_aYK
-	} in 
-	  \ x_r3d  :: 
-		[rjy{-aWN-}]
-	    {-# L #-}
-	    x_r3d y_r3f  :: 
-		      t{-aXo-}
-		  {-# L #-}
-		  y_r3f z_r3h  :: 
-			    [t{-aWT-}]
-			{-# L #-}
-			z_r3h ->
-	      let { ds_d13I  :: 
-			[rjy{-aWN-}]
-		    {-# L #-}
-		    ds_d13I =
-		let { ds_d131  :: 
-			  [rjy{-aWN-}]
+	  ++_aTc =
+	      ++_aTb;
+	  f_aQw  ::  [taRP] -> taRH -> [taRl] -> [taRl]
+	  {-# L #-}
+	  f_aQw =
+	      \ x_r3d  ::  [taRP]
+		{-# L #-}
+		x_r3d y_r3e  ::  taRH
 		      {-# L #-}
-		      ds_d131 =
-		  let { ds_d13e  :: 
-			    [rjy{-aWN-}]
+		      y_r3e z_r3f  ::  [taRl]
+			    {-# L #-}
+			    z_r3f ->
+		  let { ds_dYt  ::  [taRP]
 			{-# L #-}
-			ds_d13e =
-		    let {
-		      ds_d13r  :: 
-			  [rjy{-aWN-}]
-		      {-# L #-}
-		      ds_d13r =
-			  ++_aYJ
-			      _@_ rjy{-aWN-} x_r3d x_r3d
-		    } in 
-		      ++_aYL
-			  _@_ rjy{-aWN-} x_r3d ds_d13r
-		  } in
-		  ++_aYM
-		      _@_ rjy{-aWN-} x_r3d ds_d13e
-		} in
-		++_aYK
-		    _@_ rjy{-aWN-} x_r3d ds_d131
-	      } in
-	      case ds_d13I of {
-		PrelBase.[]{-5i,p-}{i} ->
-		    PrelBase.[]{-5i,p-}{i}
-			_@_ t{-aWT-};
-		PrelBase.:{-55,p-}{i} a_r3k ds_d140 ->
-		    let { fail_d14E  :: 
-			      [t{-aWT-}]
+			ds_dYt =
+		    let { ds_dXM  ::  [taRP]
 			  {-# L #-}
-			  fail_d14E =
-		      let {
-			bs_r3s  :: 
-			    [rjy{-aWN-}]
-			{-# L #-}
-			bs_r3s =
-			    ds_d140 } in
-		      let {
-			a_r3r  :: 
-			    rjy{-aWN-}
-			{-# L #-}
-			a_r3r =
-			    a_r3k } in
-		      let { ds_d14d  :: 
-				[PrelBase.Char{-38,p-}]
+			  ds_dXM =
+		      let { ds_dXZ  ::  [taRP]
 			    {-# L #-}
-			    ds_d14d =
+			    ds_dXZ =
 			let {
-			  ds_d14q  :: 
-			      PrelBase.Char{-38,p-}
+			  ds_dYc  ::  [taRP]
 			  {-# L #-}
-			  ds_d14q =
-			      PrelBase.C#{-54,p-}{i}
-				  {'4'} } in
-			let {
-			  ds_d14u  :: 
-			      [PrelBase.Char{-38,p-}]
-			  {-# L #-}
-			  ds_d14u =
-			      PrelBase.[]{-5i,p-}{i}
-				  {_@_ PrelBase.Char{-38,p-}}
-			} in 
-			  PrelBase.:{-55,p-}{i}
-			      {_@_ PrelBase.Char{-38,p-} ds_d14q ds_d14u}
+			  ds_dYc =
+			      ++_aTc _@_ taRP x_r3d x_r3d
+			} in  ++_aT9 _@_ taRP x_r3d ds_dYc
 		      } in
-		      IOBase.error{-87,p-}
-			  _@_ [t{-aWT-}] ds_d14d
+		      ++_aTa _@_ taRP x_r3d ds_dXZ
 		    } in
-		    case ds_d140 of {
-		      PrelBase.[]{-5i,p-}{i} ->
-			  let { ds_d14S  :: 
-				    [PrelBase.Char{-38,p-}]
+		    ++_aTb _@_ taRP x_r3d ds_dXM
+		  } in
+		  case ds_dYt of {
+		    PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taRl;
+		    PrelBase.:{-55,w-}{i} a_r3i ds_dYL ->
+			let { fail_dZp  ::  [taRl]
+			      {-# L #-}
+			      fail_dZp =
+			  let {
+			    bs_r3q  ::  [taRP]
+			    {-# L #-}
+			    bs_r3q =
+				ds_dYL } in
+			  let {
+			    a_r3p  ::  taRP
+			    {-# L #-}
+			    a_r3p =
+				a_r3i } in
+			  let { ds_dYY  ::  [PrelBase.Char{-38,W-}]
 				{-# L #-}
-				ds_d14S =
+				ds_dYY =
 			    let {
-			      ds_d153  :: 
-				  PrelBase.Char{-38,p-}
+			      ds_dZb  ::  PrelBase.Char{-38,W-}
 			      {-# L #-}
-			      ds_d153 =
-				  PrelBase.C#{-54,p-}{i}
-				      {'2'} } in
+			      ds_dZb =
+				  PrelBase.C#{-54,w-}{i} {'4'} } in
 			    let {
-			      ds_d157  :: 
-				  [PrelBase.Char{-38,p-}]
+			      ds_dZf  ::  [PrelBase.Char{-38,W-}]
 			      {-# L #-}
-			      ds_d157 =
-				  PrelBase.[]{-5i,p-}{i}
-				      {_@_ PrelBase.Char{-38,p-}}
+			      ds_dZf =
+				  PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
 			    } in 
-			      PrelBase.:{-55,p-}{i}
-				  {_@_ PrelBase.Char{-38,p-} ds_d153 ds_d157}
+			      PrelBase.:{-55,w-}{i} {_@_ PrelBase.Char{-38,W-} ds_dZb ds_dZf}
 			  } in
-			  IOBase.error{-87,p-}
-			      _@_ [t{-aWT-}] ds_d14S;
-		      PrelBase.:{-55,p-}{i} b_r3n ds_d15m ->
-			  case ds_d15m of {
-			    PrelBase.[]{-5i,p-}{i} ->
-				fail_d14E;
-			    PrelBase.:{-55,p-}{i} c_r3o ds_d15z ->
-				case ds_d15z of {
-				  PrelBase.:{-55,p-}{i} ds_d15H ds_d15G ->
-				      fail_d14E;
-				  PrelBase.[]{-5i,p-}{i} ->
-				      let {
-					a_r3m  :: 
-					    rjy{-aWN-}
-					{-# L #-}
-					a_r3m =
-					    a_r3k } in
-				      let {
-					ds_d15Q  :: 
-					    (t{-aXo-}, [t{-aWT-}], t{-aXo-}, [t{-aWT-}])
-					{-# L #-}
-					ds_d15Q =
-					    PrelTup.(,,,){-64,p-}{i}
-						{_@_ t{-aXo-}
-						 _@_ [t{-aWT-}]
-						 _@_ t{-aXo-}
-						 _@_ [t{-aWT-}]
-						 y_r3f
-						 z_r3h
-						 y_r3f
-						 z_r3h}
-				      } in 
-					z_r3h;
-				};
-			  };
-		    };
-	      }
+			  IOBase.error{-87,w-} _@_ [taRl] ds_dYY
+			} in
+			case ds_dYL of {
+			  PrelBase.[]{-5i,w-}{i} ->
+			      let { ds_dZD  ::  [PrelBase.Char{-38,W-}]
+				    {-# L #-}
+				    ds_dZD =
+				let {
+				  ds_dZO  ::  PrelBase.Char{-38,W-}
+				  {-# L #-}
+				  ds_dZO =
+				      PrelBase.C#{-54,w-}{i} {'2'} } in
+				let {
+				  ds_dZS  ::  [PrelBase.Char{-38,W-}]
+				  {-# L #-}
+				  ds_dZS =
+				      PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+				} in 
+				  PrelBase.:{-55,w-}{i} {_@_ PrelBase.Char{-38,W-} ds_dZO ds_dZS}
+			      } in
+			      IOBase.error{-87,w-} _@_ [taRl] ds_dZD;
+			  PrelBase.:{-55,w-}{i} b_r3l ds_d107 ->
+			      case ds_d107 of {
+				PrelBase.[]{-5i,w-}{i} -> fail_dZp;
+				PrelBase.:{-55,w-}{i} c_r3m ds_d10k ->
+				    case ds_d10k of {
+				      PrelBase.:{-55,w-}{i} ds_d10r ds_d10s -> fail_dZp;
+				      PrelBase.[]{-5i,w-}{i} ->
+					  let {
+					    a_r3k  ::  taRP
+					    {-# L #-}
+					    a_r3k =
+						a_r3i } in
+					  let {
+					    ds_d10B  ::  (taRH, [taRl], taRH, [taRl])
+					    {-# L #-}
+					    ds_d10B =
+						PrelTup.(,,,){-64,w-}{i}
+						    {_@_ taRH
+						     _@_ [taRl]
+						     _@_ taRH
+						     _@_ [taRl]
+						     y_r3e
+						     z_r3f
+						     y_r3e
+						     z_r3f}
+					  } in  z_r3f;
+				    };
+			      };
+			};
+		  };
+	} in  f_aQw
+d.MonadPlus_aRX  ::  {PrelBase.MonadPlus{-2a,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.MonadPlus_aRX =
+    PrelBase.$d23{-roi,p-}
+++_aTb  ::  _forall_ [taQR] => [taQR] -> [taQR] -> [taQR]
+{-# L #-}
+++_aTb =
+    PrelBase.++{-rnQ,p-} _@_ PrelBase.[]{-3j,W-} d.MonadPlus_aRX
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds017.stderr b/ghc/tests/deSugar/should_compile/ds017.stderr
index bbeb820b9c275119c1dc17cc4f8a69cde9c20807..e4096df395f4990472f451c93dd52a5da3dd1ef0 100644
--- a/ghc/tests/deSugar/should_compile/ds017.stderr
+++ b/ghc/tests/deSugar/should_compile/ds017.stderr
@@ -2,81 +2,65 @@
 
 ================================================================================
 Desugared:
-f{-r3p,x-}  :: 
-    _forall_
-    [t{-aBq-} t{-aBs-} t{-aBd-}]
-    =>
-    t{-aBd-}
-    -> ((t{-aBq-}, t{-aBq-}) -> t{-aBs-})
-    -> t{-aBq-}
-    -> (t{-aBs-}, [t{-aBd-}])
+Rec {
+f{-r3n,x-}  ::  _forall_
+		[tayF tayW taz2]
+		=>
+		tayW -> ((tayF, tayF) -> taz2) -> tayF -> (taz2, [tayW])
 {-# L #-}
-f{-r3p,x-} =
-    _/\_ t{-aBq-} t{-aBs-} t{-aBd-} -> \ x_r3d  :: 
-					     t{-aBd-}
-					 {-# L #-}
-					 x_r3d y_r3f  :: 
-						   (t{-aBq-}, t{-aBq-}) -> t{-aBs-}
-					       {-# L #-}
-					       y_r3f z_r3h  :: 
-							 t{-aBq-}
-						     {-# L #-}
-						     z_r3h ->
-	let { c_aAS  :: 
-		  t{-aBs-}
-	      {-# L #-}
-	      c_aAS =
-	  let {
-	    ds_dEz  :: 
-		(t{-aBq-}, t{-aBq-})
-	    {-# L #-}
-	    ds_dEz =
-		PrelTup.(,){-62,p-}{i}
-		    {_@_ t{-aBq-} _@_ t{-aBq-} z_r3h z_r3h}
-	  } in 
-	    y_r3f
-		ds_dEz
-	} in
-	let {
-	  c_r3l  :: 
-	      t{-aBs-}
+f{-r3n,x-} =
+    _/\_ tayF tayW taz2 ->
+	_letrec_ {
+	  f_aya  ::  tayW -> ((tayF, tayF) -> taz2) -> tayF -> (taz2, [tayW])
 	  {-# L #-}
-	  c_r3l =
-	      c_aAS } in
-	let { a_aB8  :: 
-		  [t{-aBd-}]
-	      {-# L #-}
-	      a_aB8 =
-	  let {
-	    ds_dF5  :: 
-		[t{-aBd-}]
-	    {-# L #-}
-	    ds_dF5 =
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ t{-aBd-}
-	  } in 
-	    PrelBase.:{-55,p-}{i}
-		_@_ t{-aBd-} x_r3d ds_dF5
-	} in
-	let {
-	  a_r3j  :: 
-	      [t{-aBd-}]
-	  {-# L #-}
-	  a_r3j =
-	      a_aB8 } in
-	let {
-	  b_aBg  :: 
-	      [t{-aBd-}]
-	  {-# L #-}
-	  b_aBg =
-	      PrelBase.:{-55,p-}{i}
-		  _@_ t{-aBd-} x_r3d a_r3j } in
-	let {
-	  b_r3k  :: 
-	      [t{-aBd-}]
-	  {-# L #-}
-	  b_r3k =
-	      b_aBg
-	} in 
-	  PrelTup.(,){-62,p-}{i}
-	      {_@_ t{-aBs-} _@_ [t{-aBd-}] c_r3l b_r3k}
+	  f_aya =
+	      \ x_r3d  ::  tayW
+		{-# L #-}
+		x_r3d y_r3e  ::  (tayF, tayF) -> taz2
+		      {-# L #-}
+		      y_r3e z_r3f  ::  tayF
+			    {-# L #-}
+			    z_r3f ->
+		  let { c_ays  ::  taz2
+			{-# L #-}
+			c_ays =
+		    let {
+		      ds_dCV  ::  (tayF, tayF)
+		      {-# L #-}
+		      ds_dCV =
+			  PrelTup.(,){-62,w-}{i} {_@_ tayF _@_ tayF z_r3f z_r3f}
+		    } in  y_r3e ds_dCV
+		  } in
+		  let {
+		    c_r3j  ::  taz2
+		    {-# L #-}
+		    c_r3j =
+			c_ays } in
+		  let { a_ayK  ::  [tayW]
+			{-# L #-}
+			a_ayK =
+		    let {
+		      ds_dDr  ::  [tayW]
+		      {-# L #-}
+		      ds_dDr =
+			  PrelBase.[]{-5i,w-}{i} _@_ tayW
+		    } in  PrelBase.:{-55,w-}{i} _@_ tayW x_r3d ds_dDr
+		  } in
+		  let {
+		    a_r3h  ::  [tayW]
+		    {-# L #-}
+		    a_r3h =
+			a_ayK } in
+		  let {
+		    b_ayS  ::  [tayW]
+		    {-# L #-}
+		    b_ayS =
+			PrelBase.:{-55,w-}{i} _@_ tayW x_r3d a_r3h } in
+		  let {
+		    b_r3i  ::  [tayW]
+		    {-# L #-}
+		    b_r3i =
+			b_ayS
+		  } in  PrelTup.(,){-62,w-}{i} {_@_ taz2 _@_ [tayW] c_r3j b_r3i};
+	} in  f_aya
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds018.stderr b/ghc/tests/deSugar/should_compile/ds018.stderr
index c74c3bd6ccc43fdb96910000f71ce12fa649856b..2f21228e6de40717110358d40f78c05c14c2dd65 100644
--- a/ghc/tests/deSugar/should_compile/ds018.stderr
+++ b/ghc/tests/deSugar/should_compile/ds018.stderr
@@ -1,671 +1,675 @@
-ds018.hs:41: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `fb'
 ds018.hs:39: 
     Warning: Possibly incomplete patterns
 	in the definition of function `fa'
+ds018.hs:41: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `fb'
 
 
 ================================================================================
 Desugared:
-gb2_aCw  :: 
-    PrelBase.(){-40,p-} -> PrelBase.(){-40,p-}
+Rec {
+gb2_azP  ::  PrelBase.(){-40,W-} -> PrelBase.(){-40,W-}
 {-# L #-}
-gb2_aCw =
-    \ ds_d18I  :: 
-	  PrelBase.(){-40,p-}
+gb2_azP =
+    \ ds_d1bE  ::  PrelBase.(){-40,W-}
       {-# L #-}
-      ds_d18I ->
-	case ds_d18I of { PrelBase.(){-60,p-}{i}  ->
-	PrelBase.(){-60,p-}{i};}
-gb2{-r50,x-}  :: 
-    PrelBase.(){-40,p-} -> PrelBase.(){-40,p-}
+      ds_d1bE ->
+	case ds_d1bE of { PrelBase.(){-60,w-}{i}  ->
+	PrelBase.(){-60,w-}{i};}
+gb2{-r4T,x-}  ::  PrelBase.(){-40,W-} -> PrelBase.(){-40,W-}
 {-# L #-}
-gb2{-r50,x-} =
-    gb2_aCw
-gb{-r51,x-}  :: 
-    _forall_ [t{-aCG-}] => PrelBase.(){-40,p-} -> t{-aCG-} -> t{-aCG-}
+gb2{-r4T,x-} =
+    gb2_azP
+gb{-r4U,x-}  ::  _forall_
+		 [taA5]
+		 =>
+		 PrelBase.(){-40,W-} -> taA5 -> taA5
 {-# L #-}
-gb{-r51,x-} =
-    _/\_ t{-aCG-} -> \ ds_d19f  :: 
-			   PrelBase.(){-40,p-}
-		       {-# L #-}
-		       ds_d19f x_r4Z  :: 
-				   t{-aCG-}
-			       {-# L #-}
-			       x_r4Z ->
-	case ds_d19f of { PrelBase.(){-60,p-}{i}  -> x_r4Z;}
-ga{-r52,x-}  :: 
-    _forall_
-    [t{-aDB-} t{-aDE-} t{-aDH-} t{-aDK-} t{-aDN-} t{-aDQ-} t{-aDT-} t{-aDW-} t{-aDZ-} t{-aE2-} t{-aE5-} t{-aE8-} t{-aEb-} t{-aEe-} t{-aEh-} t{-aEk-} t{-aEn-} t{-aEq-} t{-aEt-} t{-aEw-} t{-aEz-} t{-aEC-} t{-aEF-} t{-aEI-} t{-aEL-} t{-aEO-} t{-aER-} t{-aEU-} t{-aEX-} t{-aF0-} t{-aF3-} t{-aF6-} t{-aF9-} t{-aFc-} t{-aFf-} t{-aFi-} t{-aFl-} t{-aFo-} t{-aFr-} t{-aFu-} t{-aFx-} t{-aFA-} t{-aFD-} t{-aFG-} t{-aFJ-} t{-aFM-} t{-aFP-} t{-aFS-} t{-aFV-} t{-aFY-} t{-aG1-} t{-aG4-}]
-    =>
-    (t{-aDB-}, t{-aDE-}, t{-aDH-}, t{-aDK-}, t{-aDN-}, t{-aDQ-}, t{-aDT-}, t{-aDW-}, t{-aDZ-}, t{-aE2-}, t{-aE5-}, t{-aE8-}, t{-aEb-}, t{-aEe-}, t{-aEh-}, t{-aEk-}, t{-aEn-}, t{-aEq-}, t{-aEt-}, t{-aEw-}, t{-aEz-}, t{-aEC-}, t{-aEF-}, t{-aEI-}, t{-aEL-}, t{-aEO-}, t{-aER-}, t{-aEU-}, t{-aEX-}, t{-aF0-}, t{-aF3-}, t{-aF6-}, t{-aF9-}, t{-aFc-}, t{-aFf-}, t{-aFi-}, t{-aFl-}, t{-aFo-}, t{-aFr-}, t{-aFu-}, t{-aFx-}, t{-aFA-}, t{-aFD-}, t{-aFG-}, t{-aFJ-}, t{-aFM-}, t{-aFP-}, t{-aFS-}, t{-aFV-}, t{-aFY-}, t{-aG1-}, t{-aG4-})
-    -> t{-aEI-}
+gb{-r4U,x-} =
+    _/\_ taA5 ->
+	_letrec_ {
+	  gb_azU  ::  PrelBase.(){-40,W-} -> taA5 -> taA5
+	  {-# L #-}
+	  gb_azU =
+	      \ ds_d1cC  ::  PrelBase.(){-40,W-}
+		{-# L #-}
+		ds_d1cC x_r4S  ::  taA5
+			{-# L #-}
+			x_r4S ->
+		  case ds_d1cC of { PrelBase.(){-60,w-}{i}  -> x_r4S;};
+	} in  gb_azU
+ga{-r4V,x-}  ::  _forall_
+		 [taB2 taB5 taB8 taBb taBe taBh taBk taBn taBq taBt taBw taBz taBC taBF taBI taBL taBO taBR taBU taBX taC0 taC3 taC6 taC9 taCc taCf taCi taCl taCo taCr taCu taCx taCA taCD taCG taCJ taCM taCP taCS taCV taCY taD1 taD4 taD7 taDa taDd taDg taDj taDm taDp taDs taDv]
+		 =>
+		 (taB2, taB5, taB8, taBb, taBe, taBh, taBk, taBn, taBq, taBt, taBw, taBz, taBC, taBF, taBI, taBL, taBO, taBR, taBU, taBX, taC0, taC3, taC6, taC9, taCc, taCf, taCi, taCl, taCo, taCr, taCu, taCx, taCA, taCD, taCG, taCJ, taCM, taCP, taCS, taCV, taCY, taD1, taD4, taD7, taDa, taDd, taDg, taDj, taDm, taDp, taDs, taDv)
+		 -> taC9
 {-# L #-}
-ga{-r52,x-} =
-    _/\_ t{-aDB-} t{-aDE-} t{-aDH-} t{-aDK-} t{-aDN-} t{-aDQ-} t{-aDT-} t{-aDW-} t{-aDZ-} t{-aE2-} t{-aE5-} t{-aE8-} t{-aEb-} t{-aEe-} t{-aEh-} t{-aEk-} t{-aEn-} t{-aEq-} t{-aEt-} t{-aEw-} t{-aEz-} t{-aEC-} t{-aEF-} t{-aEI-} t{-aEL-} t{-aEO-} t{-aER-} t{-aEU-} t{-aEX-} t{-aF0-} t{-aF3-} t{-aF6-} t{-aF9-} t{-aFc-} t{-aFf-} t{-aFi-} t{-aFl-} t{-aFo-} t{-aFr-} t{-aFu-} t{-aFx-} t{-aFA-} t{-aFD-} t{-aFG-} t{-aFJ-} t{-aFM-} t{-aFP-} t{-aFS-} t{-aFV-} t{-aFY-} t{-aG1-} t{-aG4-} -> \ ds_d1ar  :: 
-																																																												      (t{-aDB-}, t{-aDE-}, t{-aDH-}, t{-aDK-}, t{-aDN-}, t{-aDQ-}, t{-aDT-}, t{-aDW-}, t{-aDZ-}, t{-aE2-}, t{-aE5-}, t{-aE8-}, t{-aEb-}, t{-aEe-}, t{-aEh-}, t{-aEk-}, t{-aEn-}, t{-aEq-}, t{-aEt-}, t{-aEw-}, t{-aEz-}, t{-aEC-}, t{-aEF-}, t{-aEI-}, t{-aEL-}, t{-aEO-}, t{-aER-}, t{-aEU-}, t{-aEX-}, t{-aF0-}, t{-aF3-}, t{-aF6-}, t{-aF9-}, t{-aFc-}, t{-aFf-}, t{-aFi-}, t{-aFl-}, t{-aFo-}, t{-aFr-}, t{-aFu-}, t{-aFx-}, t{-aFA-}, t{-aFD-}, t{-aFG-}, t{-aFJ-}, t{-aFM-}, t{-aFP-}, t{-aFS-}, t{-aFV-}, t{-aFY-}, t{-aG1-}, t{-aG4-})
-																																																												  {-# L #-}
-																																																												  ds_d1ar ->
-	case
-	    ds_d1ar
-	of {
-	PrelTup.(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,){-6Q,p-}{i} a_r47 b_r48 c_r49 d_r4a e_r4b f_r4c g_r4d h_r4e i_r4f j_r4g k_r4h l_r4i m_r4j n_r4k o_r4l p_r4m q_r4n r_r4o s_r4p t_r4q u_r4r v_r4s w_r4t x_r4u y_r4v z_r4w aa_r4x ab_r4y ac_r4z ad_r4A ae_r4B af_r4C ag_r4D ah_r4E ai_r4F aj_r4G ak_r4H al_r4I am_r4J an_r4K ao_r4L ap_r4M aq_r4N ar_r4O as_r4P at_r4Q au_r4R av_r4S aw_r4T ax_r4U ay_r4V az_r4W  ->
-	x_r4u;}
-fb{-r53,x-}  :: 
-    _forall_ [t{-aGc-} t{-aGe-}] => [t{-aGc-}] -> [t{-aGe-}]
+ga{-r4V,x-} =
+    _/\_ taB2 taB5 taB8 taBb taBe taBh taBk taBn taBq taBt taBw taBz taBC taBF taBI taBL taBO taBR taBU taBX taC0 taC3 taC6 taC9 taCc taCf taCi taCl taCo taCr taCu taCx taCA taCD taCG taCJ taCM taCP taCS taCV taCY taD1 taD4 taD7 taDa taDd taDg taDj taDm taDp taDs taDv ->
+	_letrec_ {
+	  ga_aA7  ::  (taB2, taB5, taB8, taBb, taBe, taBh, taBk, taBn, taBq, taBt, taBw, taBz, taBC, taBF, taBI, taBL, taBO, taBR, taBU, taBX, taC0, taC3, taC6, taC9, taCc, taCf, taCi, taCl, taCo, taCr, taCu, taCx, taCA, taCD, taCG, taCJ, taCM, taCP, taCS, taCV, taCY, taD1, taD4, taD7, taDa, taDd, taDg, taDj, taDm, taDp, taDs, taDv)
+		      -> taC9
+	  {-# L #-}
+	  ga_aA7 =
+	      \ ds_d1dO  ::  (taB2, taB5, taB8, taBb, taBe, taBh, taBk, taBn, taBq, taBt, taBw, taBz, taBC, taBF, taBI, taBL, taBO, taBR, taBU, taBX, taC0, taC3, taC6, taC9, taCc, taCf, taCi, taCl, taCo, taCr, taCu, taCx, taCA, taCD, taCG, taCJ, taCM, taCP, taCS, taCV, taCY, taD1, taD4, taD7, taDa, taDd, taDg, taDj, taDm, taDp, taDs, taDv)
+		{-# L #-}
+		ds_d1dO ->
+		  case
+		      ds_d1dO
+		  of {
+		  PrelTup.(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,){-6Q,w-}{i} a_r41 b_r42 c_r43 d_r44 e_r45 f_r46 g_r47 h_r48 i_r49 j_r4a k_r4b l_r4c m_r4d n_r4e o_r4f p_r4g q_r4h r_r4i s_r4j t_r4k u_r4l v_r4m w_r4n x_r4o y_r4p z_r4q aa_r4r ab_r4s ac_r4t ad_r4u ae_r4v af_r4w ag_r4x ah_r4y ai_r4z aj_r4A ak_r4B al_r4C am_r4D an_r4E ao_r4F ap_r4G aq_r4H ar_r4I as_r4J at_r4K au_r4L av_r4M aw_r4N ax_r4O ay_r4P az_r4Q  ->
+		  x_r4o;};
+	} in  ga_aA7
+fb{-r4W,x-}  ::  _forall_ [taDG taDJ] => [taDG] -> [taDJ]
 {-# L #-}
-fb{-r53,x-} =
-    _/\_ t{-aGc-} t{-aGe-} -> \ ds_d1aY  :: 
-				    [t{-aGc-}]
-				{-# L #-}
-				ds_d1aY ->
-	let {
-	  fail_d1aZ  :: 
-	      [t{-aGe-}]
+fb{-r4W,x-} =
+    _/\_ taDG taDJ ->
+	_letrec_ {
+	  fb_aDA  ::  [taDG] -> [taDJ]
 	  {-# L #-}
-	  fail_d1aZ =
-	      GHCerr.patError{-8r,p-}
-		  _@_ [t{-aGe-}] _string_ "ds018.hs:41|function `fb'"
-	} in 
-	  case ds_d1aY of {
-	    PrelBase.:{-55,p-}{i} ds_d1b7 ds_d1b6 ->
-		fail_d1aZ;
-	    PrelBase.[]{-5i,p-}{i} ->
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ t{-aGe-};
-	  }
-fa{-r54,x-}  :: 
-    _forall_ [t{-aGJ-}] => [t{-aGJ-}] -> t{-aGJ-}
+	  fb_aDA =
+	      \ ds_d1el  ::  [taDG]
+		{-# L #-}
+		ds_d1el ->
+		  let {
+		    fail_d1em  ::  [taDJ]
+		    {-# L #-}
+		    fail_d1em =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taDJ] _string_ "ds018.hs:41|function `fb'"
+		  } in 
+		    case ds_d1el of {
+		      PrelBase.:{-55,w-}{i} ds_d1et ds_d1eu -> fail_d1em;
+		      PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taDJ;
+		    };
+	} in  fb_aDA
+fa{-r4X,x-}  ::  _forall_ [taEg] => [taEg] -> taEg
 {-# L #-}
-fa{-r54,x-} =
-    _/\_ t{-aGJ-} -> \ ds_d1bF  :: 
-			   [t{-aGJ-}]
-		       {-# L #-}
-		       ds_d1bF ->
-	let {
-	  fail_d1bG  :: 
-	      t{-aGJ-}
+fa{-r4X,x-} =
+    _/\_ taEg ->
+	_letrec_ {
+	  fa_aDL  ::  [taEg] -> taEg
 	  {-# L #-}
-	  fail_d1bG =
-	      GHCerr.patError{-8r,p-}
-		  _@_ t{-aGJ-} _string_ "ds018.hs:39|function `fa'"
-	} in 
-	  case ds_d1bF of {
-	    PrelBase.[]{-5i,p-}{i} ->
-		fail_d1bG;
-	    PrelBase.:{-55,p-}{i} a_r3F ds_d1bT ->
-		case ds_d1bT of {
-		  PrelBase.[]{-5i,p-}{i} ->
-		      fail_d1bG;
-		  PrelBase.:{-55,p-}{i} b_r3G ds_d1c6 ->
-		      case ds_d1c6 of {
-			PrelBase.[]{-5i,p-}{i} ->
-			    fail_d1bG;
-			PrelBase.:{-55,p-}{i} c_r3H ds_d1cj ->
-			    case ds_d1cj of {
-			      PrelBase.[]{-5i,p-}{i} ->
-				  fail_d1bG;
-			      PrelBase.:{-55,p-}{i} d_r3I ds_d1cw ->
-				  case ds_d1cw of {
-				    PrelBase.[]{-5i,p-}{i} ->
-					fail_d1bG;
-				    PrelBase.:{-55,p-}{i} e_r3J ds_d1cJ ->
-					case ds_d1cJ of {
-					  PrelBase.[]{-5i,p-}{i} ->
-					      fail_d1bG;
-					  PrelBase.:{-55,p-}{i} f_r3K ds_d1cW ->
-					      case ds_d1cW of {
-						PrelBase.[]{-5i,p-}{i} ->
-						    fail_d1bG;
-						PrelBase.:{-55,p-}{i} g_r3L ds_d1d9 ->
-						    case ds_d1d9 of {
-						      PrelBase.[]{-5i,p-}{i} ->
-							  fail_d1bG;
-						      PrelBase.:{-55,p-}{i} h_r3M ds_d1dm ->
-							  case ds_d1dm of {
-							    PrelBase.[]{-5i,p-}{i} ->
-								fail_d1bG;
-							    PrelBase.:{-55,p-}{i} i_r3N ds_d1dz ->
-								case ds_d1dz of {
-								  PrelBase.[]{-5i,p-}{i} ->
-								      fail_d1bG;
-								  PrelBase.:{-55,p-}{i} j_r3O ds_d1dM ->
-								      case ds_d1dM of {
-									PrelBase.[]{-5i,p-}{i} ->
-									    fail_d1bG;
-									PrelBase.:{-55,p-}{i} k_r3P ds_d1dZ ->
-									    case ds_d1dZ of {
-									      PrelBase.[]{-5i,p-}{i} ->
-										  fail_d1bG;
-									      PrelBase.:{-55,p-}{i} l_r3Q ds_d1ec ->
-										  case ds_d1ec of {
-										    PrelBase.[]{-5i,p-}{i} ->
-											fail_d1bG;
-										    PrelBase.:{-55,p-}{i} m_r3R ds_d1ep ->
-											case
-											    ds_d1ep
-											of {
-											  PrelBase.[]{-5i,p-}{i} ->
-											      fail_d1bG;
-											  PrelBase.:{-55,p-}{i} n_r3S ds_d1eC ->
-											      case
-												  ds_d1eC
-											      of {
-												PrelBase.[]{-5i,p-}{i} ->
-												    fail_d1bG;
-												PrelBase.:{-55,p-}{i} o_r3T ds_d1eP ->
-												    case
-													ds_d1eP
-												    of {
-												      PrelBase.[]{-5i,p-}{i} ->
-													  fail_d1bG;
-												      PrelBase.:{-55,p-}{i} p_r3U ds_d1f2 ->
-													  case
-													      ds_d1f2
-													  of {
-													    PrelBase.[]{-5i,p-}{i} ->
-														fail_d1bG;
-													    PrelBase.:{-55,p-}{i} q_r3V ds_d1ff ->
-														case
-														    ds_d1ff
-														of {
-														  PrelBase.[]{-5i,p-}{i} ->
-														      fail_d1bG;
-														  PrelBase.:{-55,p-}{i} r_r3W ds_d1fs ->
-														      case
-															  ds_d1fs
-														      of {
-															PrelBase.[]{-5i,p-}{i} ->
-															    fail_d1bG;
-															PrelBase.:{-55,p-}{i} s_r3X ds_d1fF ->
-															    case
-																ds_d1fF
-															    of {
-															      PrelBase.[]{-5i,p-}{i} ->
-																  fail_d1bG;
-															      PrelBase.:{-55,p-}{i} t_r3Y ds_d1fS ->
-																  case
-																      ds_d1fS
-																  of {
-																    PrelBase.[]{-5i,p-}{i} ->
-																	fail_d1bG;
-																    PrelBase.:{-55,p-}{i} u_r3Z ds_d1g5 ->
-																	case
-																	    ds_d1g5
-																	of {
-																	  PrelBase.[]{-5i,p-}{i} ->
-																	      fail_d1bG;
-																	  PrelBase.:{-55,p-}{i} v_r40 ds_d1gi ->
-																	      case
-																		  ds_d1gi
-																	      of {
-																		PrelBase.[]{-5i,p-}{i} ->
-																		    fail_d1bG;
-																		PrelBase.:{-55,p-}{i} w_r41 ds_d1gv ->
-																		    case
-																			ds_d1gv
-																		    of {
-																		      PrelBase.[]{-5i,p-}{i} ->
-																			  fail_d1bG;
-																		      PrelBase.:{-55,p-}{i} x_r42 ds_d1gI ->
-																			  case
-																			      ds_d1gI
-																			  of {
-																			    PrelBase.[]{-5i,p-}{i} ->
-																				fail_d1bG;
-																			    PrelBase.:{-55,p-}{i} y_r43 ds_d1gV ->
-																				case
-																				    ds_d1gV
-																				of {
-																				  PrelBase.[]{-5i,p-}{i} ->
-																				      fail_d1bG;
-																				  PrelBase.:{-55,p-}{i} z_r44 ds_d1h8 ->
-																				      case
-																					  ds_d1h8
-																				      of {
-																					PrelBase.:{-55,p-}{i} ds_d1hg ds_d1hf ->
-																					    fail_d1bG;
-																					PrelBase.[]{-5i,p-}{i} ->
-																					    x_r42;
-																				      };
-																				};
-																			  };
-																		    };
-																	      };
-																	};
-																  };
-															    };
-														      };
-														};
-													  };
-												    };
-											      };
-											};
-										  };
-									    };
-								      };
-								};
-							  };
-						    };
-					      };
-					};
-				  };
-			    };
-		      };
-		};
-	  }
-g{-r55,x-}  :: 
-    _forall_
-    [t{-aHm-} t{-aHo-} t{-aHq-}]
-    =>
-    t{-aHm-}
-    -> t{-aHo-}
-    -> t{-aHq-}
-    -> (t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-}, t{-aHm-}, t{-aHo-}, t{-aHq-})
+	  fa_aDL =
+	      \ ds_d1f2  ::  [taEg]
+		{-# L #-}
+		ds_d1f2 ->
+		  let {
+		    fail_d1f3  ::  taEg
+		    {-# L #-}
+		    fail_d1f3 =
+			GHCerr.patError{-8r,w-}
+			    _@_ taEg _string_ "ds018.hs:39|function `fa'"
+		  } in 
+		    case ds_d1f2 of {
+		      PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+		      PrelBase.:{-55,w-}{i} a_r3z ds_d1fg ->
+			  case ds_d1fg of {
+			    PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+			    PrelBase.:{-55,w-}{i} b_r3A ds_d1ft ->
+				case ds_d1ft of {
+				  PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+				  PrelBase.:{-55,w-}{i} c_r3B ds_d1fG ->
+				      case ds_d1fG of {
+					PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+					PrelBase.:{-55,w-}{i} d_r3C ds_d1fT ->
+					    case ds_d1fT of {
+					      PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+					      PrelBase.:{-55,w-}{i} e_r3D ds_d1g6 ->
+						  case ds_d1g6 of {
+						    PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+						    PrelBase.:{-55,w-}{i} f_r3E ds_d1gj ->
+							case ds_d1gj of {
+							  PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+							  PrelBase.:{-55,w-}{i} g_r3F ds_d1gw ->
+							      case ds_d1gw of {
+								PrelBase.[]{-5i,w-}{i} -> fail_d1f3;
+								PrelBase.:{-55,w-}{i} h_r3G ds_d1gJ ->
+								    case ds_d1gJ of {
+								      PrelBase.[]{-5i,w-}{i} ->
+									  fail_d1f3;
+								      PrelBase.:{-55,w-}{i} i_r3H ds_d1gW ->
+									  case ds_d1gW of {
+									    PrelBase.[]{-5i,w-}{i} ->
+										fail_d1f3;
+									    PrelBase.:{-55,w-}{i} j_r3I ds_d1h9 ->
+										case ds_d1h9 of {
+										  PrelBase.[]{-5i,w-}{i} ->
+										      fail_d1f3;
+										  PrelBase.:{-55,w-}{i} k_r3J ds_d1hm ->
+										      case
+											  ds_d1hm
+										      of {
+											PrelBase.[]{-5i,w-}{i} ->
+											    fail_d1f3;
+											PrelBase.:{-55,w-}{i} l_r3K ds_d1hz ->
+											    case
+												ds_d1hz
+											    of {
+											      PrelBase.[]{-5i,w-}{i} ->
+												  fail_d1f3;
+											      PrelBase.:{-55,w-}{i} m_r3L ds_d1hM ->
+												  case
+												      ds_d1hM
+												  of {
+												    PrelBase.[]{-5i,w-}{i} ->
+													fail_d1f3;
+												    PrelBase.:{-55,w-}{i} n_r3M ds_d1hZ ->
+													case
+													    ds_d1hZ
+													of {
+													  PrelBase.[]{-5i,w-}{i} ->
+													      fail_d1f3;
+													  PrelBase.:{-55,w-}{i} o_r3N ds_d1ic ->
+													      case
+														  ds_d1ic
+													      of {
+														PrelBase.[]{-5i,w-}{i} ->
+														    fail_d1f3;
+														PrelBase.:{-55,w-}{i} p_r3O ds_d1ip ->
+														    case
+															ds_d1ip
+														    of {
+														      PrelBase.[]{-5i,w-}{i} ->
+															  fail_d1f3;
+														      PrelBase.:{-55,w-}{i} q_r3P ds_d1iC ->
+															  case
+															      ds_d1iC
+															  of {
+															    PrelBase.[]{-5i,w-}{i} ->
+																fail_d1f3;
+															    PrelBase.:{-55,w-}{i} r_r3Q ds_d1iP ->
+																case
+																    ds_d1iP
+																of {
+																  PrelBase.[]{-5i,w-}{i} ->
+																      fail_d1f3;
+																  PrelBase.:{-55,w-}{i} s_r3R ds_d1j2 ->
+																      case
+																	  ds_d1j2
+																      of {
+																	PrelBase.[]{-5i,w-}{i} ->
+																	    fail_d1f3;
+																	PrelBase.:{-55,w-}{i} t_r3S ds_d1jf ->
+																	    case
+																		ds_d1jf
+																	    of {
+																	      PrelBase.[]{-5i,w-}{i} ->
+																		  fail_d1f3;
+																	      PrelBase.:{-55,w-}{i} u_r3T ds_d1js ->
+																		  case
+																		      ds_d1js
+																		  of {
+																		    PrelBase.[]{-5i,w-}{i} ->
+																			fail_d1f3;
+																		    PrelBase.:{-55,w-}{i} v_r3U ds_d1jF ->
+																			case
+																			    ds_d1jF
+																			of {
+																			  PrelBase.[]{-5i,w-}{i} ->
+																			      fail_d1f3;
+																			  PrelBase.:{-55,w-}{i} w_r3V ds_d1jS ->
+																			      case
+																				  ds_d1jS
+																			      of {
+																				PrelBase.[]{-5i,w-}{i} ->
+																				    fail_d1f3;
+																				PrelBase.:{-55,w-}{i} x_r3W ds_d1k5 ->
+																				    case
+																					ds_d1k5
+																				    of {
+																				      PrelBase.[]{-5i,w-}{i} ->
+																					  fail_d1f3;
+																				      PrelBase.:{-55,w-}{i} y_r3X ds_d1ki ->
+																					  case
+																					      ds_d1ki
+																					  of {
+																					    PrelBase.[]{-5i,w-}{i} ->
+																						fail_d1f3;
+																					    PrelBase.:{-55,w-}{i} z_r3Y ds_d1kv ->
+																						case
+																						    ds_d1kv
+																						of {
+																						  PrelBase.:{-55,w-}{i} ds_d1kC ds_d1kD ->
+																						      fail_d1f3;
+																						  PrelBase.[]{-5i,w-}{i} ->
+																						      x_r3W;
+																						};
+																					  };
+																				    };
+																			      };
+																			};
+																		  };
+																	    };
+																      };
+																};
+															  };
+														    };
+													      };
+													};
+												  };
+											    };
+										      };
+										};
+									  };
+								    };
+							      };
+							};
+						  };
+					    };
+				      };
+				};
+			  };
+		    };
+	} in  fa_aDL
+g{-r4Y,x-}  ::  _forall_
+		[taJN taJP taJR]
+		=>
+		taJN
+		-> taJP
+		-> taJR
+		-> (taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR)
 {-# L #-}
-g{-r55,x-} =
-    _/\_ t{-aHm-} t{-aHo-} t{-aHq-} -> \ x_r3z  :: 
-					     t{-aHm-}
-					 {-# L #-}
-					 x_r3z y_r3B  :: 
-						   t{-aHo-}
-					       {-# L #-}
-					       y_r3B z_r3D  :: 
-							 t{-aHq-}
-						     {-# L #-}
-						     z_r3D ->
-	PrelTup.(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,){-62q,p-}{i}
-	    {_@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     _@_ t{-aHm-}
-	     _@_ t{-aHo-}
-	     _@_ t{-aHq-}
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D
-	     x_r3z
-	     y_r3B
-	     z_r3D}
-g1{-r56,x-}  :: 
-    _forall_
-    [t{-aHA-} t{-aHC-}]
-    =>
-    t{-aHA-} -> t{-aHC-} -> PrelBase.(){-40,p-}
+g{-r4Y,x-} =
+    _/\_ taJN taJP taJR ->
+	_letrec_ {
+	  g_aEK  ::  taJN
+		     -> taJP
+		     -> taJR
+		     -> (taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR, taJN, taJP, taJR)
+	  {-# L #-}
+	  g_aEK =
+	      \ x_r3v  ::  taJN
+		{-# L #-}
+		x_r3v y_r3w  ::  taJP
+		      {-# L #-}
+		      y_r3w z_r3x  ::  taJR
+			    {-# L #-}
+			    z_r3x ->
+		  PrelTup.(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,){-62q,w-}{i}
+		      {_@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       _@_ taJN
+		       _@_ taJP
+		       _@_ taJR
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x
+		       x_r3v
+		       y_r3w
+		       z_r3x};
+	} in  g_aEK
+g1{-r4Z,x-}  ::  _forall_
+		 [taK6 taK8]
+		 =>
+		 taK6 -> taK8 -> PrelBase.(){-40,W-}
 {-# L #-}
-g1{-r56,x-} =
-    _/\_ t{-aHA-} t{-aHC-} -> \ x_r3v  :: 
-				    t{-aHA-}
-				{-# L #-}
-				x_r3v y_r3x  :: 
-					  t{-aHC-}
-				      {-# L #-}
-				      y_r3x ->
-	PrelBase.(){-60,p-}{i}
-f2{-r57,x-}  :: 
-    _forall_
-    [t{-aHO-} t{-aHQ-} t{-aHM-}]
-    =>
-    t{-aHO-} -> t{-aHQ-} -> [t{-aHM-}]
+g1{-r4Z,x-} =
+    _/\_ taK6 taK8 ->
+	_letrec_ {
+	  g1_aJT  ::  taK6 -> taK8 -> PrelBase.(){-40,W-}
+	  {-# L #-}
+	  g1_aJT =
+	      \ x_r3s  ::  taK6
+		{-# L #-}
+		x_r3s y_r3t  ::  taK8
+		      {-# L #-}
+		      y_r3t ->
+		  PrelBase.(){-60,w-}{i};
+	} in  g1_aJT
+f2{-r50,x-}  ::  _forall_
+		 [taKq taKs taKo]
+		 =>
+		 taKq -> taKs -> [taKo]
 {-# L #-}
-f2{-r57,x-} =
-    _/\_ t{-aHO-} t{-aHQ-} t{-aHM-} -> \ x_r3r  :: 
-					     t{-aHO-}
-					 {-# L #-}
-					 x_r3r y_r3t  :: 
-						   t{-aHQ-}
-					       {-# L #-}
-					       y_r3t ->
-	PrelBase.[]{-5i,p-}{i}
-	    _@_ t{-aHM-}
-f{-r58,x-}  :: 
-    _forall_
-    [t{-aI2-}]
-    =>
-    t{-aI2-} -> t{-aI2-} -> t{-aI2-} -> [t{-aI2-}]
+f2{-r50,x-} =
+    _/\_ taKq taKs taKo ->
+	_letrec_ {
+	  f2_aKa  ::  taKq -> taKs -> [taKo]
+	  {-# L #-}
+	  f2_aKa =
+	      \ x_r3p  ::  taKq
+		{-# L #-}
+		x_r3p y_r3q  ::  taKs
+		      {-# L #-}
+		      y_r3q ->
+		  PrelBase.[]{-5i,w-}{i} _@_ taKo;
+	} in  f2_aKa
+f{-r51,x-}  ::  _forall_ [taKN] => taKN -> taKN -> taKN -> [taKN]
 {-# L #-}
-f{-r58,x-} =
-    _/\_ t{-aI2-} -> \ x_r3l  :: 
-			   t{-aI2-}
-		       {-# L #-}
-		       x_r3l y_r3n  :: 
-				 t{-aI2-}
-			     {-# L #-}
-			     y_r3n z_r3p  :: 
-				       t{-aI2-}
-				   {-# L #-}
-				   z_r3p ->
-	let { ds_d1uJ  :: 
-		  [t{-aI2-}]
-	      {-# L #-}
-	      ds_d1uJ =
-	  let { ds_d1uV  :: 
-		    [t{-aI2-}]
+f{-r51,x-} =
+    _/\_ taKN ->
+	_letrec_ {
+	  f_aKu  ::  taKN -> taKN -> taKN -> [taKN]
+	  {-# L #-}
+	  f_aKu =
+	      \ x_r3l  ::  taKN
 		{-# L #-}
-		ds_d1uV =
-	    let { ds_d1v7  :: 
-		      [t{-aI2-}]
-		  {-# L #-}
-		  ds_d1v7 =
-	      let { ds_d1vj  :: 
-			[t{-aI2-}]
-		    {-# L #-}
-		    ds_d1vj =
-		let { ds_d1vv  :: 
-			  [t{-aI2-}]
+		x_r3l y_r3m  ::  taKN
 		      {-# L #-}
-		      ds_d1vv =
-		  let {
-		    ds_d1vH  :: 
-			[t{-aI2-}]
-		    {-# L #-}
-		    ds_d1vH =
-			PrelBase.[]{-5i,p-}{i}
-			    {_@_ t{-aI2-}}
-		  } in 
-		    PrelBase.:{-55,p-}{i}
-			{_@_ t{-aI2-} z_r3p ds_d1vH}
-		} in
-		PrelBase.:{-55,p-}{i}
-		    {_@_ t{-aI2-} y_r3n ds_d1vv}
-	      } in
-	      PrelBase.:{-55,p-}{i}
-		  {_@_ t{-aI2-} x_r3l ds_d1vj}
-	    } in
-	    PrelBase.:{-55,p-}{i}
-		{_@_ t{-aI2-} z_r3p ds_d1v7}
-	  } in
-	  PrelBase.:{-55,p-}{i}
-	      {_@_ t{-aI2-} y_r3n ds_d1uV}
-	} in
-	PrelBase.:{-55,p-}{i}
-	    {_@_ t{-aI2-} x_r3l ds_d1uJ}
+		      y_r3m z_r3n  ::  taKN
+			    {-# L #-}
+			    z_r3n ->
+		  let { ds_d1y6  ::  [taKN]
+			{-# L #-}
+			ds_d1y6 =
+		    let { ds_d1yi  ::  [taKN]
+			  {-# L #-}
+			  ds_d1yi =
+		      let { ds_d1yu  ::  [taKN]
+			    {-# L #-}
+			    ds_d1yu =
+			let { ds_d1yG  ::  [taKN]
+			      {-# L #-}
+			      ds_d1yG =
+			  let { ds_d1yS  ::  [taKN]
+				{-# L #-}
+				ds_d1yS =
+			    let {
+			      ds_d1z4  ::  [taKN]
+			      {-# L #-}
+			      ds_d1z4 =
+				  PrelBase.[]{-5i,w-}{i} {_@_ taKN}
+			    } in  PrelBase.:{-55,w-}{i} {_@_ taKN z_r3n ds_d1z4}
+			  } in
+			  PrelBase.:{-55,w-}{i} {_@_ taKN y_r3m ds_d1yS}
+			} in
+			PrelBase.:{-55,w-}{i} {_@_ taKN x_r3l ds_d1yG}
+		      } in
+		      PrelBase.:{-55,w-}{i} {_@_ taKN z_r3n ds_d1yu}
+		    } in
+		    PrelBase.:{-55,w-}{i} {_@_ taKN y_r3m ds_d1yi}
+		  } in
+		  PrelBase.:{-55,w-}{i} {_@_ taKN x_r3l ds_d1y6};
+	} in  f_aKu
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds019.stderr b/ghc/tests/deSugar/should_compile/ds019.stderr
index e064f37674f57b72626fec59ed3354e16d01e424..96f18d1949ce3cc54b80abdbbd059f75d94e31a3 100644
--- a/ghc/tests/deSugar/should_compile/ds019.stderr
+++ b/ghc/tests/deSugar/should_compile/ds019.stderr
@@ -8,26 +8,26 @@ ds019.hs:8:
 
 ================================================================================
 Desugared:
-f{-r3G,x-}  :: 
-    _forall_
-    [t{-aBG-} t{-aBJ-} t{-aBM-} t{-aBY-} t{-aC1-} t{-aC9-} t{-aC7-}]
-    =>
-    (t{-aBG-}, t{-aBJ-}, t{-aBM-})
-    -> (t{-aBY-}, t{-aC1-})
-    -> t{-aC9-}
-    -> [t{-aC7-}]
+Rec {
+f{-r3y,x-}  ::  _forall_
+		[tazA taz7 taza tazd tazq tazt tazy]
+		=>
+		(taz7, taza, tazd) -> (tazq, tazt) -> tazA -> [tazy]
 {-# L #-}
-f{-r3G,x-} =
-    _/\_ t{-aBG-} t{-aBJ-} t{-aBM-} t{-aBY-} t{-aC1-} t{-aC9-} t{-aC7-} -> \ ds_dGA  :: 
-										 (t{-aBG-}, t{-aBJ-}, t{-aBM-})
-									     {-# L #-}
-									     ds_dGA i_r3h  :: 
-											(t{-aBY-}, t{-aC1-})
-										    {-# L #-}
-										    i_r3h o_r3j  :: 
-											      t{-aC9-}
-											  {-# L #-}
-											  o_r3j ->
-	case ds_dGA of { PrelTup.(,,){-63,p-}{i} a_r3d b_r3e c_r3f  ->
-	PrelBase.[]{-5i,p-}{i}
-	    _@_ t{-aC7-};}
+f{-r3y,x-} =
+    _/\_ tazA taz7 taza tazd tazq tazt tazy ->
+	_letrec_ {
+	  f_ayl  ::  (taz7, taza, tazd) -> (tazq, tazt) -> tazA -> [tazy]
+	  {-# L #-}
+	  f_ayl =
+	      \ ds_dEd  ::  (taz7, taza, tazd)
+		{-# L #-}
+		ds_dEd i_r3g  ::  (tazq, tazt)
+		       {-# L #-}
+		       i_r3g o_r3h  ::  tazA
+			     {-# L #-}
+			     o_r3h ->
+		  case ds_dEd of { PrelTup.(,,){-63,w-}{i} a_r3d b_r3e c_r3f  ->
+		  PrelBase.[]{-5i,w-}{i} _@_ tazy;};
+	} in  f_ayl
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds020.stderr b/ghc/tests/deSugar/should_compile/ds020.stderr
index fc6973c44105835cd2124219249c4d4f74ef85a3..b2d5859c9ff8037f229cf0b2e0403acaadda8614 100644
--- a/ghc/tests/deSugar/should_compile/ds020.stderr
+++ b/ghc/tests/deSugar/should_compile/ds020.stderr
@@ -1,1969 +1,1461 @@
-ds020.hs:20: 
+ds020.hs:6: 
     Warning: Pattern match(es) completely overlapped
-	in the definition of function `f'
+	in the definition of function `a'
+ds020.hs:9: 
+    Warning: Pattern match(es) completely overlapped
+	in the definition of function `b'
 ds020.hs:16: 
     Warning: Pattern match(es) completely overlapped
 	in the definition of function `d'
 ds020.hs:17: 
     Warning: Pattern match(es) completely overlapped
 	in the definition of function `d'
-ds020.hs:9: 
-    Warning: Pattern match(es) completely overlapped
-	in the definition of function `b'
-ds020.hs:6: 
+ds020.hs:20: 
     Warning: Pattern match(es) completely overlapped
-	in the definition of function `a'
+	in the definition of function `f'
 
 
 ================================================================================
 Desugared:
 Rec {
-d.Eq_a1aR  :: 
-    {PrelBase.Eq{-23,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Eq_a1aR =
-    PrelBase.$d7{-rqT,p-}
-==_a1h7  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a1h7 =
-    PrelBase.=={-8Y,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Eq_a1aR
-d.Num_a1aV  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Num_a1aV =
-    PrelBase.$d3{-rqn,p-}
-fromInt_a1h6  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_a1h6 =
-    PrelBase.fromInt{-8R,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_a1aV
-lit_a1h5  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1h5 =
-    let {
-      ds_d1SI  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d1SI =
-	  PrelBase.I#{-5b,p-}{i}
-	      2
-    } in 
-      fromInt_a1h6
-	  ds_d1SI
-fromInt_a1h4  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_a1h4 =
-    fromInt_a1h6
-lit_a1h3  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1h3 =
-    let {
-      ds_d1SX  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d1SX =
-	  PrelBase.I#{-5b,p-}{i}
-	      4
-    } in 
-      fromInt_a1h4
-	  ds_d1SX
-fromInt_a1h2  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_a1h2 =
-    fromInt_a1h6
-lit_a1h1  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1h1 =
-    let {
-      ds_d1Tc  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d1Tc =
-	  PrelBase.I#{-5b,p-}{i}
-	      3
-    } in 
-      fromInt_a1h2
-	  ds_d1Tc
-d.Ord_a1b0  :: 
-    {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Ord_a1b0 =
-    PrelBase.$d6{-rqS,p-}
->_a1h0  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
->_a1h0 =
-    PrelBase.>{-rs3,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Ord_a1b0
-lit_a1gZ  :: 
-    PrelBase.Int{-3g,p-}
+==_a1Fg  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
 {-# L #-}
-lit_a1gZ =
-    lit_a1h1
-lit_a1gY  :: 
-    PrelBase.Int{-3g,p-}
+==_a1Fg =
+    ==_a1A2
+==_a1Fh  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
 {-# L #-}
-lit_a1gY =
-    lit_a1h3
-fromInt_a1gX  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+==_a1Fh =
+    ==_a1A2
+lit_a1Fi  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-fromInt_a1gX =
-    fromInt_a1h6
-lit_a1gW  :: 
-    PrelBase.Int{-3g,p-}
+lit_a1Fi =
+    lit_a1A4
+lit_a1Fj  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-lit_a1gW =
-    let {
-      ds_d1TC  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d1TC =
-	  PrelBase.I#{-5b,p-}{i}
-	      5
-    } in 
-      fromInt_a1gX
-	  ds_d1TC
-d.Ord_a1b4  :: 
-    {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Ord_a1b4 =
-    d.Ord_a1b0
-<=_a1gV  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-<=_a1gV =
-    PrelBase.<={-rs2,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Ord_a1b4
-lit_a1gU  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1gU =
-    lit_a1h5
-lit_a1gT  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1gT =
-    lit_a1h1
-==_a1gS  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a1gS =
-    ==_a1h7
-lit_a1gR  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1gR =
-    lit_a1h5
-lit_a1gQ  :: 
-    PrelBase.Int{-3g,p-}
+lit_a1Fj =
+    lit_a1A3
+ds_d1IS  ::  (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
 {-# L #-}
-lit_a1gQ =
-    lit_a1h3
-lit_a1gP  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1gP =
-    lit_a1h1
-==_a1hb  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a1hb =
-    ==_a1gS
-==_a1ha  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a1ha =
-    ==_a1gS
-lit_a1h9  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1h9 =
-    lit_a1gQ
-lit_a1h8  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1h8 =
-    lit_a1gR
-ds_d1Q9  :: 
-    (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
-{-# L #-}
-ds_d1Q9 =
-    let { ds_d1Zt  :: 
-	      (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})))
+ds_d1IS =
+    let { ds_d1RP  ::  (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})))
 	  {-# L #-}
-	  ds_d1Zt =
+	  ds_d1RP =
       let {
-	eq4_a12Q  :: 
-	    PrelBase.Bool{-34,p-}
+	eq4_aWR  ::  PrelBase.Bool{-34,W-}
 	{-# L #-}
-	eq4_a12Q =
-	    ==_a1ha
-		lit_a1h9 lit_a1h8 } in
+	eq4_aWR =
+	    ==_a1Fh lit_a1Fi lit_a1Fj } in
       let {
-	eq4_r4b  :: 
-	    PrelBase.Bool{-34,p-}
+	eq4_r49  ::  PrelBase.Bool{-34,W-}
 	{-# L #-}
-	eq4_r4b =
-	    eq4_a12Q } in
+	eq4_r49 =
+	    eq4_aWR } in
       let {
-	lit_a1Uy  :: 
-	    PrelBase.Int{-3g,p-}
+	lit_a1MU  ::  PrelBase.Int{-3g,W-}
 	{-# L #-}
-	lit_a1Uy =
-	    lit_a1gP } in
+	lit_a1MU =
+	    lit_a1A5 } in
       let {
-	eq3_a13e  :: 
-	    PrelBase.Bool{-34,p-}
+	eq3_aX5  ::  PrelBase.Bool{-34,W-}
 	{-# L #-}
-	eq3_a13e =
-	    ==_a1hb
-		lit_a1gP lit_a1Uy } in
+	eq3_aX5 =
+	    ==_a1Fg lit_a1A5 lit_a1MU } in
       let {
-	eq3_r4a  :: 
-	    PrelBase.Bool{-34,p-}
+	eq3_r48  ::  PrelBase.Bool{-34,W-}
 	{-# L #-}
-	eq3_r4a =
-	    eq3_a13e } in
+	eq3_r48 =
+	    eq3_aX5 } in
       let {
-	eq2_a13A  :: 
-	    PrelBase.Bool{-34,p-}
+	eq2_aXj  ::  PrelBase.Bool{-34,W-}
 	{-# L #-}
-	eq2_a13A =
-	    ==_a1gS
-		lit_a1gR lit_a1gQ } in
+	eq2_aXj =
+	    ==_a1A2 lit_a1A3 lit_a1A4 } in
       let {
-	eq2_r49  :: 
-	    PrelBase.Bool{-34,p-}
+	eq2_r47  ::  PrelBase.Bool{-34,W-}
 	{-# L #-}
-	eq2_r49 =
-	    eq2_a13A
+	eq2_r47 =
+	    eq2_aXj
       } in 
-	case eq2_r49 of {
-	  PrelBase.True{-5E,p-}{i} ->
+	case eq2_r47 of {
+	  PrelBase.True{-5E,w-}{i} ->
 	      let {
-		ds_d1Va  :: 
-		    PrelBase.Char{-38,p-}
+		ds_d1Nw  ::  PrelBase.Char{-38,W-}
 		{-# L #-}
-		ds_d1Va =
-		    PrelBase.C#{-54,p-}{i}
-			{'a'} } in
-	      let { ds_d1Ve  :: 
-			(PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
+		ds_d1Nw =
+		    PrelBase.C#{-54,w-}{i} {'a'} } in
+	      let { ds_d1NA  ::  (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
 		    {-# L #-}
-		    ds_d1Ve =
+		    ds_d1NA =
 		let {
-		  ds_d1Vu  :: 
-		      PrelBase.Char{-38,p-}
+		  ds_d1NQ  ::  PrelBase.Char{-38,W-}
 		  {-# L #-}
-		  ds_d1Vu =
-		      PrelBase.C#{-54,p-}{i}
-			  {'a'} } in
-		let { ds_d1Vy  :: 
-			  (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
+		  ds_d1NQ =
+		      PrelBase.C#{-54,w-}{i} {'a'} } in
+		let { ds_d1NU  ::  (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
 		      {-# L #-}
-		      ds_d1Vy =
+		      ds_d1NU =
 		  let {
-		    ds_d1VO  :: 
-			PrelBase.Char{-38,p-}
+		    ds_d1Oa  ::  PrelBase.Char{-38,W-}
 		    {-# L #-}
-		    ds_d1VO =
-			PrelBase.C#{-54,p-}{i}
-			    {'a'} } in
+		    ds_d1Oa =
+			PrelBase.C#{-54,w-}{i} {'a'} } in
 		  let {
-		    ds_d1VS  :: 
-			PrelBase.Char{-38,p-}
+		    ds_d1Oe  ::  PrelBase.Char{-38,W-}
 		    {-# L #-}
-		    ds_d1VS =
-			PrelBase.C#{-54,p-}{i}
-			    {'a'}
+		    ds_d1Oe =
+			PrelBase.C#{-54,w-}{i} {'a'}
 		  } in 
-		    PrelTup.(,){-62,p-}{i}
-			{_@_ PrelBase.Char{-38,p-}
-			 _@_ PrelBase.Char{-38,p-}
-			 ds_d1VO
-			 ds_d1VS}
+		    PrelTup.(,){-62,w-}{i}
+			{_@_ PrelBase.Char{-38,W-}
+			 _@_ PrelBase.Char{-38,W-}
+			 ds_d1Oa
+			 ds_d1Oe}
 		} in
-		PrelTup.(,){-62,p-}{i}
-		    {_@_ PrelBase.Char{-38,p-}
-		     _@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
-		     ds_d1Vu
-		     ds_d1Vy}
+		PrelTup.(,){-62,w-}{i}
+		    {_@_ PrelBase.Char{-38,W-}
+		     _@_ (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
+		     ds_d1NQ
+		     ds_d1NU}
 	      } in
-	      PrelTup.(,){-62,p-}{i}
-		  {_@_ PrelBase.Char{-38,p-}
-		   _@_ (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
-		   ds_d1Va
-		   ds_d1Ve};
-	  PrelBase.False{-58,p-}{i} ->
-	      case eq3_r4a of {
-		PrelBase.True{-5E,p-}{i} ->
+	      PrelTup.(,){-62,w-}{i}
+		  {_@_ PrelBase.Char{-38,W-}
+		   _@_ (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
+		   ds_d1Nw
+		   ds_d1NA};
+	  PrelBase.False{-58,w-}{i} ->
+	      case eq3_r48 of {
+		PrelBase.True{-5E,w-}{i} ->
 		    let {
-		      ds_d1Wm  :: 
-			  PrelBase.Char{-38,p-}
+		      ds_d1OI  ::  PrelBase.Char{-38,W-}
 		      {-# L #-}
-		      ds_d1Wm =
-			  PrelBase.C#{-54,p-}{i}
-			      {'b'} } in
-		    let { ds_d1Wq  :: 
-			      (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
+		      ds_d1OI =
+			  PrelBase.C#{-54,w-}{i} {'b'} } in
+		    let { ds_d1OM  ::  (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
 			  {-# L #-}
-			  ds_d1Wq =
+			  ds_d1OM =
 		      let {
-			ds_d1WG  :: 
-			    PrelBase.Char{-38,p-}
+			ds_d1P2  ::  PrelBase.Char{-38,W-}
 			{-# L #-}
-			ds_d1WG =
-			    PrelBase.C#{-54,p-}{i}
-				{'b'} } in
-		      let { ds_d1WK  :: 
-				(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
+			ds_d1P2 =
+			    PrelBase.C#{-54,w-}{i} {'b'} } in
+		      let { ds_d1P6  ::  (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
 			    {-# L #-}
-			    ds_d1WK =
+			    ds_d1P6 =
 			let {
-			  ds_d1X0  :: 
-			      PrelBase.Char{-38,p-}
+			  ds_d1Pm  ::  PrelBase.Char{-38,W-}
 			  {-# L #-}
-			  ds_d1X0 =
-			      PrelBase.C#{-54,p-}{i}
-				  {'b'} } in
+			  ds_d1Pm =
+			      PrelBase.C#{-54,w-}{i} {'b'} } in
 			let {
-			  ds_d1X4  :: 
-			      PrelBase.Char{-38,p-}
+			  ds_d1Pq  ::  PrelBase.Char{-38,W-}
 			  {-# L #-}
-			  ds_d1X4 =
-			      PrelBase.C#{-54,p-}{i}
-				  {'b'}
+			  ds_d1Pq =
+			      PrelBase.C#{-54,w-}{i} {'b'}
 			} in 
-			  PrelTup.(,){-62,p-}{i}
-			      {_@_ PrelBase.Char{-38,p-}
-			       _@_ PrelBase.Char{-38,p-}
-			       ds_d1X0
-			       ds_d1X4}
+			  PrelTup.(,){-62,w-}{i}
+			      {_@_ PrelBase.Char{-38,W-}
+			       _@_ PrelBase.Char{-38,W-}
+			       ds_d1Pm
+			       ds_d1Pq}
 		      } in
-		      PrelTup.(,){-62,p-}{i}
-			  {_@_ PrelBase.Char{-38,p-}
-			   _@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
-			   ds_d1WG
-			   ds_d1WK}
+		      PrelTup.(,){-62,w-}{i}
+			  {_@_ PrelBase.Char{-38,W-}
+			   _@_ (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
+			   ds_d1P2
+			   ds_d1P6}
 		    } in
-		    PrelTup.(,){-62,p-}{i}
-			{_@_ PrelBase.Char{-38,p-}
-			 _@_ (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
-			 ds_d1Wm
-			 ds_d1Wq};
-		PrelBase.False{-58,p-}{i} ->
-		    case eq4_r4b of {
-		      PrelBase.True{-5E,p-}{i} ->
+		    PrelTup.(,){-62,w-}{i}
+			{_@_ PrelBase.Char{-38,W-}
+			 _@_ (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
+			 ds_d1OI
+			 ds_d1OM};
+		PrelBase.False{-58,w-}{i} ->
+		    case eq4_r49 of {
+		      PrelBase.True{-5E,w-}{i} ->
 			  let {
-			    ds_d1Xy  :: 
-				PrelBase.Char{-38,p-}
+			    ds_d1PU  ::  PrelBase.Char{-38,W-}
 			    {-# L #-}
-			    ds_d1Xy =
-				PrelBase.C#{-54,p-}{i}
-				    {'c'} } in
-			  let { ds_d1XC  :: 
-				    (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
+			    ds_d1PU =
+				PrelBase.C#{-54,w-}{i} {'c'} } in
+			  let { ds_d1PY  ::  (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
 				{-# L #-}
-				ds_d1XC =
+				ds_d1PY =
 			    let {
-			      ds_d1XS  :: 
-				  PrelBase.Char{-38,p-}
+			      ds_d1Qe  ::  PrelBase.Char{-38,W-}
 			      {-# L #-}
-			      ds_d1XS =
-				  PrelBase.C#{-54,p-}{i}
-				      {'c'} } in
-			    let { ds_d1XW  :: 
-				      (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
+			      ds_d1Qe =
+				  PrelBase.C#{-54,w-}{i} {'c'} } in
+			    let { ds_d1Qi  ::  (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
 				  {-# L #-}
-				  ds_d1XW =
+				  ds_d1Qi =
 			      let {
-				ds_d1Yc  :: 
-				    PrelBase.Char{-38,p-}
+				ds_d1Qy  ::  PrelBase.Char{-38,W-}
 				{-# L #-}
-				ds_d1Yc =
-				    PrelBase.C#{-54,p-}{i}
-					{'c'} } in
+				ds_d1Qy =
+				    PrelBase.C#{-54,w-}{i} {'c'} } in
 			      let {
-				ds_d1Yg  :: 
-				    PrelBase.Char{-38,p-}
+				ds_d1QC  ::  PrelBase.Char{-38,W-}
 				{-# L #-}
-				ds_d1Yg =
-				    PrelBase.C#{-54,p-}{i}
-					{'c'}
+				ds_d1QC =
+				    PrelBase.C#{-54,w-}{i} {'c'}
 			      } in 
-				PrelTup.(,){-62,p-}{i}
-				    {_@_ PrelBase.Char{-38,p-}
-				     _@_ PrelBase.Char{-38,p-}
-				     ds_d1Yc
-				     ds_d1Yg}
+				PrelTup.(,){-62,w-}{i}
+				    {_@_ PrelBase.Char{-38,W-}
+				     _@_ PrelBase.Char{-38,W-}
+				     ds_d1Qy
+				     ds_d1QC}
 			    } in
-			    PrelTup.(,){-62,p-}{i}
-				{_@_ PrelBase.Char{-38,p-}
-				 _@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
-				 ds_d1XS
-				 ds_d1XW}
+			    PrelTup.(,){-62,w-}{i}
+				{_@_ PrelBase.Char{-38,W-}
+				 _@_ (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
+				 ds_d1Qe
+				 ds_d1Qi}
 			  } in
-			  PrelTup.(,){-62,p-}{i}
-			      {_@_ PrelBase.Char{-38,p-}
-			       _@_ (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
-			       ds_d1Xy
-			       ds_d1XC};
-		      PrelBase.False{-58,p-}{i} ->
+			  PrelTup.(,){-62,w-}{i}
+			      {_@_ PrelBase.Char{-38,W-}
+			       _@_ (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
+			       ds_d1PU
+			       ds_d1PY};
+		      PrelBase.False{-58,w-}{i} ->
 			  let {
-			    ds_d1YC  :: 
-				PrelBase.Char{-38,p-}
+			    ds_d1QY  ::  PrelBase.Char{-38,W-}
 			    {-# L #-}
-			    ds_d1YC =
-				PrelBase.C#{-54,p-}{i}
-				    {'d'} } in
-			  let { ds_d1YG  :: 
-				    (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
+			    ds_d1QY =
+				PrelBase.C#{-54,w-}{i} {'d'} } in
+			  let { ds_d1R2  ::  (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
 				{-# L #-}
-				ds_d1YG =
+				ds_d1R2 =
 			    let {
-			      ds_d1YW  :: 
-				  PrelBase.Char{-38,p-}
+			      ds_d1Ri  ::  PrelBase.Char{-38,W-}
 			      {-# L #-}
-			      ds_d1YW =
-				  PrelBase.C#{-54,p-}{i}
-				      {'d'} } in
-			    let { ds_d1Z0  :: 
-				      (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
+			      ds_d1Ri =
+				  PrelBase.C#{-54,w-}{i} {'d'} } in
+			    let { ds_d1Rm  ::  (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
 				  {-# L #-}
-				  ds_d1Z0 =
+				  ds_d1Rm =
 			      let {
-				ds_d1Zg  :: 
-				    PrelBase.Char{-38,p-}
+				ds_d1RC  ::  PrelBase.Char{-38,W-}
 				{-# L #-}
-				ds_d1Zg =
-				    PrelBase.C#{-54,p-}{i}
-					{'d'} } in
+				ds_d1RC =
+				    PrelBase.C#{-54,w-}{i} {'d'} } in
 			      let {
-				ds_d1Zk  :: 
-				    PrelBase.Char{-38,p-}
+				ds_d1RG  ::  PrelBase.Char{-38,W-}
 				{-# L #-}
-				ds_d1Zk =
-				    PrelBase.C#{-54,p-}{i}
-					{'d'}
+				ds_d1RG =
+				    PrelBase.C#{-54,w-}{i} {'d'}
 			      } in 
-				PrelTup.(,){-62,p-}{i}
-				    {_@_ PrelBase.Char{-38,p-}
-				     _@_ PrelBase.Char{-38,p-}
-				     ds_d1Zg
-				     ds_d1Zk}
+				PrelTup.(,){-62,w-}{i}
+				    {_@_ PrelBase.Char{-38,W-}
+				     _@_ PrelBase.Char{-38,W-}
+				     ds_d1RC
+				     ds_d1RG}
 			    } in
-			    PrelTup.(,){-62,p-}{i}
-				{_@_ PrelBase.Char{-38,p-}
-				 _@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
-				 ds_d1YW
-				 ds_d1Z0}
+			    PrelTup.(,){-62,w-}{i}
+				{_@_ PrelBase.Char{-38,W-}
+				 _@_ (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-})
+				 ds_d1Ri
+				 ds_d1Rm}
 			  } in
-			  PrelTup.(,){-62,p-}{i}
-			      {_@_ PrelBase.Char{-38,p-}
-			       _@_ (PrelBase.Char{-38,p-}, (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}))
-			       ds_d1YC
-			       ds_d1YG};
+			  PrelTup.(,){-62,w-}{i}
+			      {_@_ PrelBase.Char{-38,W-}
+			       _@_ (PrelBase.Char{-38,W-}, (PrelBase.Char{-38,W-}, PrelBase.Char{-38,W-}))
+			       ds_d1QY
+			       ds_d1R2};
 		    };
 	      };
 	}
     } in
-    case ds_d1Zt of { PrelTup.(,){-62,p-}{i} x4_a12r ds_d1ZC  ->
-    case ds_d1ZC of { PrelTup.(,){-62,p-}{i} y4_a12s ds_d1ZL  ->
-    case ds_d1ZL of { PrelTup.(,){-62,p-}{i} z4_a12t a4_a12u  ->
-    PrelTup.(,,,){-64,p-}{i}
-	{_@_ PrelBase.Char{-38,p-}
-	 _@_ PrelBase.Char{-38,p-}
-	 _@_ PrelBase.Char{-38,p-}
-	 _@_ PrelBase.Char{-38,p-}
-	 x4_a12r
-	 y4_a12s
-	 z4_a12t
-	 a4_a12u};};};}
-x4_a12r  :: 
-    PrelBase.Char{-38,p-}
+    case ds_d1RP of { PrelTup.(,){-62,w-}{i} x4_aWs ds_d1RY  ->
+    case ds_d1RY of { PrelTup.(,){-62,w-}{i} y4_aWt ds_d1S7  ->
+    case ds_d1S7 of { PrelTup.(,){-62,w-}{i} z4_aWu a4_aWv  ->
+    PrelTup.(,,,){-64,w-}{i}
+	{_@_ PrelBase.Char{-38,W-}
+	 _@_ PrelBase.Char{-38,W-}
+	 _@_ PrelBase.Char{-38,W-}
+	 _@_ PrelBase.Char{-38,W-}
+	 x4_aWs
+	 y4_aWt
+	 z4_aWu
+	 a4_aWv};};};}
+x4_aWs  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-x4_a12r =
+x4_aWs =
     case
-	ds_d1Q9
+	ds_d1IS
     of {
-    PrelTup.(,,,){-64,p-}{i} x4_a12r y4_a12s z4_a12t a4_a12u  ->
-    x4_a12r;}
-y4_a12s  :: 
-    PrelBase.Char{-38,p-}
+    PrelTup.(,,,){-64,w-}{i} x4_aWs y4_aWt z4_aWu a4_aWv  ->
+    x4_aWs;}
+y4_aWt  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-y4_a12s =
+y4_aWt =
     case
-	ds_d1Q9
+	ds_d1IS
     of {
-    PrelTup.(,,,){-64,p-}{i} x4_a12r y4_a12s z4_a12t a4_a12u  ->
-    y4_a12s;}
-z4_a12t  :: 
-    PrelBase.Char{-38,p-}
+    PrelTup.(,,,){-64,w-}{i} x4_aWs y4_aWt z4_aWu a4_aWv  ->
+    y4_aWt;}
+z4_aWu  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-z4_a12t =
+z4_aWu =
     case
-	ds_d1Q9
+	ds_d1IS
     of {
-    PrelTup.(,,,){-64,p-}{i} x4_a12r y4_a12s z4_a12t a4_a12u  ->
-    z4_a12t;}
-a4_a12u  :: 
-    PrelBase.Char{-38,p-}
+    PrelTup.(,,,){-64,w-}{i} x4_aWs y4_aWt z4_aWu a4_aWv  ->
+    z4_aWu;}
+a4_aWv  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-a4_a12u =
+a4_aWv =
     case
-	ds_d1Q9
+	ds_d1IS
     of {
-    PrelTup.(,,,){-64,p-}{i} x4_a12r y4_a12s z4_a12t a4_a12u  ->
-    a4_a12u;}
-x4{-r4f,x-}  :: 
-    PrelBase.Char{-38,p-}
+    PrelTup.(,,,){-64,w-}{i} x4_aWs y4_aWt z4_aWu a4_aWv  ->
+    a4_aWv;}
+x4{-r4d,x-}  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-x4{-r4f,x-} =
-    x4_a12r
-y4{-r4e,x-}  :: 
-    PrelBase.Char{-38,p-}
+x4{-r4d,x-} =
+    x4_aWs
+y4{-r4c,x-}  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-y4{-r4e,x-} =
-    y4_a12s
-z4{-r4d,x-}  :: 
-    PrelBase.Char{-38,p-}
+y4{-r4c,x-} =
+    y4_aWt
+z4{-r4b,x-}  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-z4{-r4d,x-} =
-    z4_a12t
-a4{-r4c,x-}  :: 
-    PrelBase.Char{-38,p-}
+z4{-r4b,x-} =
+    z4_aWu
+a4{-r4a,x-}  ::  PrelBase.Char{-38,W-}
 {-# L #-}
-a4{-r4c,x-} =
-    a4_a12u
-lit_a1QK  :: 
-    PrelBase.Int{-3g,p-}
+a4{-r4a,x-} =
+    a4_aWv
+lit_a1Jt  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-lit_a1QK =
-    lit_a1gZ
-ds_d1QP  :: 
-    (PrelBase.Int{-3g,p-}, PrelBase.Int{-3g,p-})
+lit_a1Jt =
+    lit_a1zW
+ds_d1Jy  ::  (PrelBase.Int{-3g,W-}, PrelBase.Int{-3g,W-})
 {-# L #-}
-ds_d1QP =
-    case
-	>_a1h0
-	    x3_a148 lit_a1gZ
-    of {
-      PrelBase.True{-5E,p-}{i} ->
-	  PrelTup.(,){-62,p-}{i}
-	      {_@_ PrelBase.Int{-3g,p-}
-	       _@_ PrelBase.Int{-3g,p-}
-	       lit_a1gY
-	       lit_a1gW};
-      PrelBase.False{-58,p-}{i} ->
-	  case
-	      <=_a1gV
-		  x3_a148 lit_a1QK
-	  of {
-	    PrelBase.True{-5E,p-}{i} ->
-		PrelTup.(,){-62,p-}{i}
-		    {_@_ PrelBase.Int{-3g,p-}
-		     _@_ PrelBase.Int{-3g,p-}
-		     lit_a1gU
-		     lit_a1gT};
-	    PrelBase.False{-58,p-}{i} ->
-		GHCerr.nonExhaustiveGuardsError{-8l,p-}
-		    _@_ (PrelBase.Int{-3g,p-}, PrelBase.Int{-3g,p-})
+ds_d1Jy =
+    case >_a1zV x3_aYi lit_a1zW of {
+      PrelBase.True{-5E,w-}{i} ->
+	  PrelTup.(,){-62,w-}{i}
+	      {_@_ PrelBase.Int{-3g,W-}
+	       _@_ PrelBase.Int{-3g,W-}
+	       lit_a1zX
+	       lit_a1zY};
+      PrelBase.False{-58,w-}{i} ->
+	  case <=_a1zZ x3_aYi lit_a1Jt of {
+	    PrelBase.True{-5E,w-}{i} ->
+		PrelTup.(,){-62,w-}{i}
+		    {_@_ PrelBase.Int{-3g,W-}
+		     _@_ PrelBase.Int{-3g,W-}
+		     lit_a1A0
+		     lit_a1A1};
+	    PrelBase.False{-58,w-}{i} ->
+		GHCerr.nonExhaustiveGuardsError{-8l,w-}
+		    _@_ (PrelBase.Int{-3g,W-}, PrelBase.Int{-3g,W-})
 		    _string_ "ds020.hs:42|";
 	  };
     }
-x3_a148  :: 
-    PrelBase.Int{-3g,p-}
+x3_aYi  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-x3_a148 =
-    case ds_d1QP of { PrelTup.(,){-62,p-}{i} x3_a148 y3_a149  ->
-    x3_a148;}
-y3_a149  :: 
-    PrelBase.Int{-3g,p-}
+x3_aYi =
+    case ds_d1Jy of { PrelTup.(,){-62,w-}{i} x3_aYi y3_aYj  -> x3_aYi;}
+y3_aYj  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-y3_a149 =
-    case ds_d1QP of { PrelTup.(,){-62,p-}{i} x3_a148 y3_a149  ->
-    y3_a149;}
-x3{-r4h,x-}  :: 
-    PrelBase.Int{-3g,p-}
+y3_aYj =
+    case ds_d1Jy of { PrelTup.(,){-62,w-}{i} x3_aYi y3_aYj  -> y3_aYj;}
+x3{-r4f,x-}  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-x3{-r4h,x-} =
-    x3_a148
-y3{-r4g,x-}  :: 
-    PrelBase.Int{-3g,p-}
+x3{-r4f,x-} =
+    x3_aYi
+y3{-r4e,x-}  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-y3{-r4g,x-} =
-    y3_a149
-ds_d1Ra  :: 
-    _forall_ [t{-a16h-}] => (t{-a16h-}, t{-a16h-}, [t{-a16h-}])
+y3{-r4e,x-} =
+    y3_aYj
+ds_d1JT  ::  _forall_ [taZa] => (taZa, taZa, [taZa])
 {-# L #-}
-ds_d1Ra =
-    _/\_ t{-a16h-} ->
+ds_d1JT =
+    _/\_ taZa ->
 	_letrec_ {
-	  ==_a1mv  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1mv =
-	      ==_a1h7;
-	  ==_a1mu  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1mu =
-	      ==_a1h7;
-	  lit_a1mt  :: 
-	      PrelBase.Int{-3g,p-}
-	  {-# L #-}
-	  lit_a1mt =
-	      lit_a1h3;
-	  lit_a1ms  :: 
-	      PrelBase.Int{-3g,p-}
-	  {-# L #-}
-	  lit_a1ms =
-	      lit_a1h5;
-	  ds_d22I  :: 
-	      (t{-a16h-}, t{-a16h-}, [t{-a16h-}])
-	  {-# L #-}
-	  ds_d22I =
-	      let { ds_d257  :: 
-			[t{-a16h-}]
+	  ==_a1zQ  ::  PrelBase.Int{-3g,W-}
+		       -> PrelBase.Int{-3g,W-}
+		       -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1zQ =
+	      ==_a1zR;
+	  ==_a1A6  ::  PrelBase.Int{-3g,W-}
+		       -> PrelBase.Int{-3g,W-}
+		       -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1A6 =
+	      ==_a1zR;
+	  lit_a1A7  ::  PrelBase.Int{-3g,W-}
+	  {-# L #-}
+	  lit_a1A7 =
+	      lit_a1zT;
+	  lit_a1A8  ::  PrelBase.Int{-3g,W-}
+	  {-# L #-}
+	  lit_a1A8 =
+	      lit_a1zS;
+	  ds_d1V4  ::  (taZa, taZa, [taZa])
+	  {-# L #-}
+	  ds_d1V4 =
+	      let { ds_d1Xt  ::  [taZa]
 		    {-# L #-}
-		    ds_d257 =
+		    ds_d1Xt =
 		let {
-		  eq4_a158  :: 
-		      PrelBase.Bool{-34,p-}
+		  eq4_aZg  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  eq4_a158 =
-		      ==_a1mu
-			  lit_a1mt lit_a1ms } in
+		  eq4_aZg =
+		      ==_a1A6 lit_a1A7 lit_a1A8 } in
 		let {
-		  eq4_r41  :: 
-		      PrelBase.Bool{-34,p-}
+		  eq4_r3Y  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  eq4_r41 =
-		      eq4_a158 } in
+		  eq4_r3Y =
+		      eq4_aZg } in
 		let {
-		  lit_a23v  :: 
-		      PrelBase.Int{-3g,p-}
+		  lit_a1VR  ::  PrelBase.Int{-3g,W-}
 		  {-# L #-}
-		  lit_a23v =
-		      lit_a1h1 } in
+		  lit_a1VR =
+		      lit_a1zU } in
 		let {
-		  eq3_a15w  :: 
-		      PrelBase.Bool{-34,p-}
+		  eq3_aZu  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  eq3_a15w =
-		      ==_a1mv
-			  lit_a1h1 lit_a23v } in
+		  eq3_aZu =
+		      ==_a1zQ lit_a1zU lit_a1VR } in
 		let {
-		  eq3_r40  :: 
-		      PrelBase.Bool{-34,p-}
+		  eq3_r3X  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  eq3_r40 =
-		      eq3_a15w } in
+		  eq3_r3X =
+		      eq3_aZu } in
 		let {
-		  eq2_a15S  :: 
-		      PrelBase.Bool{-34,p-}
+		  eq2_aZI  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  eq2_a15S =
-		      ==_a1h7
-			  lit_a1h5 lit_a1h3 } in
+		  eq2_aZI =
+		      ==_a1zR lit_a1zS lit_a1zT } in
 		let {
-		  eq2_r3Z  :: 
-		      PrelBase.Bool{-34,p-}
+		  eq2_r3W  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  eq2_r3Z =
-		      eq2_a15S
+		  eq2_r3W =
+		      eq2_aZI
 		} in 
-		  case eq2_r3Z of {
-		    PrelBase.True{-5E,p-}{i} ->
-			PrelBase.[]{-5i,p-}{i}
-			    _@_ t{-a16h-};
-		    PrelBase.False{-58,p-}{i} ->
-			case eq3_r40 of {
-			  PrelBase.True{-5E,p-}{i} ->
+		  case eq2_r3W of {
+		    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taZa;
+		    PrelBase.False{-58,w-}{i} ->
+			case eq3_r3X of {
+			  PrelBase.True{-5E,w-}{i} ->
 			      let {
-				ds_d24m  :: 
-				    [t{-a16h-}]
+				ds_d1WI  ::  [taZa]
 				{-# L #-}
-				ds_d24m =
-				    PrelBase.[]{-5i,p-}{i}
-					{_@_ t{-a16h-}}
-			      } in 
-				PrelBase.:{-55,p-}{i}
-				    {_@_ t{-a16h-} x2_a14U ds_d24m};
-			  PrelBase.False{-58,p-}{i} ->
-			      case eq4_r41 of {
-				PrelBase.True{-5E,p-}{i} ->
+				ds_d1WI =
+				    PrelBase.[]{-5i,w-}{i} {_@_ taZa}
+			      } in  PrelBase.:{-55,w-}{i} {_@_ taZa x2_aZ2 ds_d1WI};
+			  PrelBase.False{-58,w-}{i} ->
+			      case eq4_r3Y of {
+				PrelBase.True{-5E,w-}{i} ->
 				    let {
-				      ds_d24M  :: 
-					  [t{-a16h-}]
+				      ds_d1X8  ::  [taZa]
 				      {-# L #-}
-				      ds_d24M =
-					  PrelBase.[]{-5i,p-}{i}
-					      {_@_ t{-a16h-}}
-				    } in 
-				      PrelBase.:{-55,p-}{i}
-					  {_@_ t{-a16h-} x2_a14U ds_d24M};
-				PrelBase.False{-58,p-}{i} ->
-				    PrelBase.[]{-5i,p-}{i}
-					_@_ t{-a16h-};
+				      ds_d1X8 =
+					  PrelBase.[]{-5i,w-}{i} {_@_ taZa}
+				    } in  PrelBase.:{-55,w-}{i} {_@_ taZa x2_aZ2 ds_d1X8};
+				PrelBase.False{-58,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taZa;
 			      };
 			};
 		  }
 	      } in
 	      let {
-		fail_d258  :: 
-		    (t{-a16h-}, t{-a16h-}, [t{-a16h-}])
+		fail_d1Xu  ::  (taZa, taZa, [taZa])
 		{-# L #-}
-		fail_d258 =
-		    GHCerr.irrefutPatError{-8g,p-}
-			_@_ (t{-a16h-}, t{-a16h-}, [t{-a16h-}])
+		fail_d1Xu =
+		    GHCerr.irrefutPatError{-8g,w-}
+			_@_ (taZa, taZa, [taZa])
 			_string_ "ds020.hs:39|(x2 PrelBase.: (xs2 PrelBase.: ys2))"
 	      } in 
-		case ds_d257 of {
-		  PrelBase.[]{-5i,p-}{i} ->
-		      fail_d258;
-		  PrelBase.:{-55,p-}{i} x2_a14U ds_d25l ->
-		      case ds_d25l of {
-			PrelBase.[]{-5i,p-}{i} ->
-			    fail_d258;
-			PrelBase.:{-55,p-}{i} xs2_a14V ys2_a14W ->
-			    PrelTup.(,,){-63,p-}{i}
-				{_@_ t{-a16h-}
-				 _@_ t{-a16h-}
-				 _@_ [t{-a16h-}]
-				 x2_a14U
-				 xs2_a14V
-				 ys2_a14W};
+		case ds_d1Xt of {
+		  PrelBase.[]{-5i,w-}{i} -> fail_d1Xu;
+		  PrelBase.:{-55,w-}{i} x2_aZ2 ds_d1XH ->
+		      case ds_d1XH of {
+			PrelBase.[]{-5i,w-}{i} -> fail_d1Xu;
+			PrelBase.:{-55,w-}{i} xs2_aZ3 ys2_aZ4 ->
+			    PrelTup.(,,){-63,w-}{i}
+				{_@_ taZa _@_ taZa _@_ [taZa] x2_aZ2 xs2_aZ3 ys2_aZ4};
 		      };
 		};
-	  x2_a14U  :: 
-	      t{-a16h-}
+	  x2_aZ2  ::  taZa
 	  {-# L #-}
-	  x2_a14U =
+	  x2_aZ2 =
 	      case
-		  ds_d22I
+		  ds_d1V4
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x2_a14U xs2_a14V ys2_a14W  ->
-	      x2_a14U;};
-	  xs2_a14V  :: 
-	      t{-a16h-}
+	      PrelTup.(,,){-63,w-}{i} x2_aZ2 xs2_aZ3 ys2_aZ4  ->
+	      x2_aZ2;};
+	  xs2_aZ3  ::  taZa
 	  {-# L #-}
-	  xs2_a14V =
+	  xs2_aZ3 =
 	      case
-		  ds_d22I
+		  ds_d1V4
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x2_a14U xs2_a14V ys2_a14W  ->
-	      xs2_a14V;};
-	  ys2_a14W  :: 
-	      [t{-a16h-}]
+	      PrelTup.(,,){-63,w-}{i} x2_aZ2 xs2_aZ3 ys2_aZ4  ->
+	      xs2_aZ3;};
+	  ys2_aZ4  ::  [taZa]
 	  {-# L #-}
-	  ys2_a14W =
+	  ys2_aZ4 =
 	      case
-		  ds_d22I
+		  ds_d1V4
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x2_a14U xs2_a14V ys2_a14W  ->
-	      ys2_a14W;};
+	      PrelTup.(,,){-63,w-}{i} x2_aZ2 xs2_aZ3 ys2_aZ4  ->
+	      ys2_aZ4;};
 	} in 
-	  PrelTup.(,,){-63,p-}{i}
-	      {_@_ t{-a16h-}
-	       _@_ t{-a16h-}
-	       _@_ [t{-a16h-}]
-	       x2_a14U
-	       xs2_a14V
-	       ys2_a14W}
-x2{-r4k,x-}  :: 
-    _forall_ [t{-a16h-}] => t{-a16h-}
+	  PrelTup.(,,){-63,w-}{i}
+	      {_@_ taZa _@_ taZa _@_ [taZa] x2_aZ2 xs2_aZ3 ys2_aZ4}
+x2{-r3Z,x-}  ::  _forall_ [taZa] => taZa
 {-# L #-}
-x2{-r4k,x-} =
-    _/\_ t{-a16h-} ->
+x2{-r3Z,x-} =
+    _/\_ taZa ->
 	case
-	    ds_d1Ra
-		_@_ t{-a16h-}
+	    ds_d1JT _@_ taZa
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d26G ds_d26I ds_d26H  ->
-	ds_d26G;}
-xs2{-r4j,x-}  :: 
-    _forall_ [t{-a16h-}] => t{-a16h-}
+	PrelTup.(,,){-63,w-}{i} ds_d1Z2 ds_d1Z3 ds_d1Z4  ->
+	ds_d1Z2;}
+xs2{-r4h,x-}  ::  _forall_ [taZa] => taZa
 {-# L #-}
-xs2{-r4j,x-} =
-    _/\_ t{-a16h-} ->
+xs2{-r4h,x-} =
+    _/\_ taZa ->
 	case
-	    ds_d1Ra
-		_@_ t{-a16h-}
+	    ds_d1JT _@_ taZa
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d26Z ds_d26X ds_d26Y  ->
-	ds_d26X;}
-ys2{-r4i,x-}  :: 
-    _forall_ [t{-a16h-}] => [t{-a16h-}]
+	PrelTup.(,,){-63,w-}{i} ds_d1Zk ds_d1Zj ds_d1Zl  ->
+	ds_d1Zj;}
+ys2{-r4g,x-}  ::  _forall_ [taZa] => [taZa]
 {-# L #-}
-ys2{-r4i,x-} =
-    _/\_ t{-a16h-} ->
+ys2{-r4g,x-} =
+    _/\_ taZa ->
 	case
-	    ds_d1Ra
-		_@_ t{-a16h-}
+	    ds_d1JT _@_ taZa
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d27g ds_d27f ds_d27e  ->
-	ds_d27e;}
-ds_d1Rr  :: 
-    _forall_ [t{-a16I-}] => (t{-a16I-}, t{-a16I-}, [t{-a16I-}])
+	PrelTup.(,,){-63,w-}{i} ds_d1ZB ds_d1ZC ds_d1ZA  ->
+	ds_d1ZA;}
+ds_d1Ka  ::  _forall_ [ta10j] => (ta10j, ta10j, [ta10j])
 {-# L #-}
-ds_d1Rr =
-    _/\_ t{-a16I-} ->
-	let { ds_d28P  :: 
-		  (t{-a16I-}, t{-a16I-}, [t{-a16I-}])
-	      {-# L #-}
-	      ds_d28P =
-	  let {
-	    ds_d27Z  :: 
-		[t{-a16I-}]
-	    {-# L #-}
-	    ds_d27Z =
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ t{-a16I-} } in
-	  let {
-	    fail_d280  :: 
-		(t{-a16I-}, t{-a16I-}, [t{-a16I-}])
-	    {-# L #-}
-	    fail_d280 =
-		GHCerr.irrefutPatError{-8g,p-}
-		    _@_ (t{-a16I-}, t{-a16I-}, [t{-a16I-}])
-		    _string_ "ds020.hs:30|(~x PrelBase.: (~xs PrelBase.: ~ys))"
-	  } in 
-	    case ds_d27Z of {
-	      PrelBase.[]{-5i,p-}{i} ->
-		  fail_d280;
-	      PrelBase.:{-55,p-}{i} x_a16u ds_d28d ->
-		  case ds_d28d of {
-		    PrelBase.[]{-5i,p-}{i} ->
-			fail_d280;
-		    PrelBase.:{-55,p-}{i} xs_a16v ys_a16w ->
-			let {
-			  ys_a16w  :: 
-			      [t{-a16I-}]
-			  {-# L #-}
-			  ys_a16w =
-			      ys_a16w } in
-			let {
-			  xs_a16v  :: 
-			      t{-a16I-}
-			  {-# L #-}
-			  xs_a16v =
-			      xs_a16v } in
-			let {
-			  x_a16u  :: 
-			      t{-a16I-}
-			  {-# L #-}
-			  x_a16u =
-			      x_a16u
-			} in 
-			  PrelTup.(,,){-63,p-}{i}
-			      {_@_ t{-a16I-}
-			       _@_ t{-a16I-}
-			       _@_ [t{-a16I-}]
-			       x_a16u
-			       xs_a16v
-			       ys_a16w};
-		  };
-	    }
-	} in
-	let {
-	  x_a16u  :: 
-	      t{-a16I-}
+ds_d1Ka =
+    _/\_ ta10j ->
+	_letrec_ {
+	  ds_d1ZO  ::  (ta10j, ta10j, [ta10j])
+	  {-# L #-}
+	  ds_d1ZO =
+	      let {
+		ds_d208  ::  [ta10j]
+		{-# L #-}
+		ds_d208 =
+		    PrelBase.[]{-5i,w-}{i} _@_ ta10j } in
+	      let {
+		fail_d20l  ::  (ta10j, ta10j, [ta10j])
+		{-# L #-}
+		fail_d20l =
+		    GHCerr.irrefutPatError{-8g,w-}
+			_@_ (ta10j, ta10j, [ta10j])
+			_string_ "ds020.hs:30|(~x PrelBase.: (~xs PrelBase.: ~ys))"
+	      } in 
+		case ds_d208 of {
+		  PrelBase.[]{-5i,w-}{i} -> fail_d20l;
+		  PrelBase.:{-55,w-}{i} x_a10c ds_d20y ->
+		      case ds_d20y of {
+			PrelBase.[]{-5i,w-}{i} -> fail_d20l;
+			PrelBase.:{-55,w-}{i} xs_a10d ys_a10e ->
+			    let {
+			      ys_a10e  ::  [ta10j]
+			      {-# L #-}
+			      ys_a10e =
+				  ys_a10e } in
+			    let {
+			      xs_a10d  ::  ta10j
+			      {-# L #-}
+			      xs_a10d =
+				  xs_a10d } in
+			    let {
+			      x_a10c  ::  ta10j
+			      {-# L #-}
+			      x_a10c =
+				  x_a10c
+			    } in 
+			      PrelTup.(,,){-63,w-}{i}
+				  {_@_ ta10j _@_ ta10j _@_ [ta10j] x_a10c xs_a10d ys_a10e};
+		      };
+		};
+	  x_a10c  ::  ta10j
 	  {-# L #-}
-	  x_a16u =
+	  x_a10c =
 	      case
-		  ds_d28P
+		  ds_d1ZO
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x_a16u xs_a16v ys_a16w  ->
-	      x_a16u;} } in
-	let {
-	  xs_a16v  :: 
-	      t{-a16I-}
+	      PrelTup.(,,){-63,w-}{i} x_a10c xs_a10d ys_a10e  ->
+	      x_a10c;};
+	  xs_a10d  ::  ta10j
 	  {-# L #-}
-	  xs_a16v =
+	  xs_a10d =
 	      case
-		  ds_d28P
+		  ds_d1ZO
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x_a16u xs_a16v ys_a16w  ->
-	      xs_a16v;} } in
-	let {
-	  ys_a16w  :: 
-	      [t{-a16I-}]
+	      PrelTup.(,,){-63,w-}{i} x_a10c xs_a10d ys_a10e  ->
+	      xs_a10d;};
+	  ys_a10e  ::  [ta10j]
 	  {-# L #-}
-	  ys_a16w =
+	  ys_a10e =
 	      case
-		  ds_d28P
+		  ds_d1ZO
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x_a16u xs_a16v ys_a16w  ->
-	      ys_a16w;}
+	      PrelTup.(,,){-63,w-}{i} x_a10c xs_a10d ys_a10e  ->
+	      ys_a10e;};
 	} in 
-	  PrelTup.(,,){-63,p-}{i}
-	      {_@_ t{-a16I-}
-	       _@_ t{-a16I-}
-	       _@_ [t{-a16I-}]
-	       x_a16u
-	       xs_a16v
-	       ys_a16w}
-x{-r4n,x-}  :: 
-    _forall_ [t{-a16I-}] => t{-a16I-}
+	  PrelTup.(,,){-63,w-}{i}
+	      {_@_ ta10j _@_ ta10j _@_ [ta10j] x_a10c xs_a10d ys_a10e}
+x{-r4k,x-}  ::  _forall_ [ta10j] => ta10j
 {-# L #-}
-x{-r4n,x-} =
-    _/\_ t{-a16I-} ->
+x{-r4k,x-} =
+    _/\_ ta10j ->
 	case
-	    ds_d1Rr
-		_@_ t{-a16I-}
+	    ds_d1Ka _@_ ta10j
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d29s ds_d29u ds_d29t  ->
-	ds_d29s;}
-xs{-r4m,x-}  :: 
-    _forall_ [t{-a16I-}] => t{-a16I-}
+	PrelTup.(,,){-63,w-}{i} ds_d222 ds_d223 ds_d224  ->
+	ds_d222;}
+xs{-r4j,x-}  ::  _forall_ [ta10j] => ta10j
 {-# L #-}
-xs{-r4m,x-} =
-    _/\_ t{-a16I-} ->
+xs{-r4j,x-} =
+    _/\_ ta10j ->
 	case
-	    ds_d1Rr
-		_@_ t{-a16I-}
+	    ds_d1Ka _@_ ta10j
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d29L ds_d29J ds_d29K  ->
-	ds_d29J;}
-ys{-r4l,x-}  :: 
-    _forall_ [t{-a16I-}] => [t{-a16I-}]
+	PrelTup.(,,){-63,w-}{i} ds_d22k ds_d22j ds_d22l  ->
+	ds_d22j;}
+ys{-r4i,x-}  ::  _forall_ [ta10j] => [ta10j]
 {-# L #-}
-ys{-r4l,x-} =
-    _/\_ t{-a16I-} ->
+ys{-r4i,x-} =
+    _/\_ ta10j ->
 	case
-	    ds_d1Rr
-		_@_ t{-a16I-}
+	    ds_d1Ka _@_ ta10j
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d2a2 ds_d2a1 ds_d2a0  ->
-	ds_d2a0;}
-ds_d1RI  :: 
-    _forall_ [t{-a16Y-}] => (t{-a16Y-}, t{-a16Y-}, [t{-a16Y-}])
+	PrelTup.(,,){-63,w-}{i} ds_d22B ds_d22C ds_d22A  ->
+	ds_d22A;}
+ds_d1Kr  ::  _forall_ [ta10z] => (ta10z, ta10z, [ta10z])
 {-# L #-}
-ds_d1RI =
-    _/\_ t{-a16Y-} ->
-	let { ds_d2bs  :: 
-		  (t{-a16Y-}, t{-a16Y-}, [t{-a16Y-}])
-	      {-# L #-}
-	      ds_d2bs =
-	  let {
-	    ds_d2aL  :: 
-		[t{-a16Y-}]
-	    {-# L #-}
-	    ds_d2aL =
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ t{-a16Y-} } in
-	  let {
-	    fail_d2aM  :: 
-		(t{-a16Y-}, t{-a16Y-}, [t{-a16Y-}])
-	    {-# L #-}
-	    fail_d2aM =
-		GHCerr.irrefutPatError{-8g,p-}
-		    _@_ (t{-a16Y-}, t{-a16Y-}, [t{-a16Y-}])
-		    _string_ "ds020.hs:29|(x1 PrelBase.: (xs1 PrelBase.: ys1))"
-	  } in 
-	    case ds_d2aL of {
-	      PrelBase.[]{-5i,p-}{i} ->
-		  fail_d2aM;
-	      PrelBase.:{-55,p-}{i} x1_a16K ds_d2aZ ->
-		  case ds_d2aZ of {
-		    PrelBase.[]{-5i,p-}{i} ->
-			fail_d2aM;
-		    PrelBase.:{-55,p-}{i} xs1_a16L ys1_a16M ->
-			PrelTup.(,,){-63,p-}{i}
-			    {_@_ t{-a16Y-}
-			     _@_ t{-a16Y-}
-			     _@_ [t{-a16Y-}]
-			     x1_a16K
-			     xs1_a16L
-			     ys1_a16M};
-		  };
-	    }
-	} in
-	let {
-	  x1_a16K  :: 
-	      t{-a16Y-}
+ds_d1Kr =
+    _/\_ ta10z ->
+	_letrec_ {
+	  ds_d22O  ::  (ta10z, ta10z, [ta10z])
+	  {-# L #-}
+	  ds_d22O =
+	      let {
+		ds_d238  ::  [ta10z]
+		{-# L #-}
+		ds_d238 =
+		    PrelBase.[]{-5i,w-}{i} _@_ ta10z } in
+	      let {
+		fail_d23l  ::  (ta10z, ta10z, [ta10z])
+		{-# L #-}
+		fail_d23l =
+		    GHCerr.irrefutPatError{-8g,w-}
+			_@_ (ta10z, ta10z, [ta10z])
+			_string_ "ds020.hs:29|(x1 PrelBase.: (xs1 PrelBase.: ys1))"
+	      } in 
+		case ds_d238 of {
+		  PrelBase.[]{-5i,w-}{i} -> fail_d23l;
+		  PrelBase.:{-55,w-}{i} x1_a10s ds_d23y ->
+		      case ds_d23y of {
+			PrelBase.[]{-5i,w-}{i} -> fail_d23l;
+			PrelBase.:{-55,w-}{i} xs1_a10t ys1_a10u ->
+			    PrelTup.(,,){-63,w-}{i}
+				{_@_ ta10z _@_ ta10z _@_ [ta10z] x1_a10s xs1_a10t ys1_a10u};
+		      };
+		};
+	  x1_a10s  ::  ta10z
 	  {-# L #-}
-	  x1_a16K =
+	  x1_a10s =
 	      case
-		  ds_d2bs
+		  ds_d22O
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x1_a16K xs1_a16L ys1_a16M  ->
-	      x1_a16K;} } in
-	let {
-	  xs1_a16L  :: 
-	      t{-a16Y-}
+	      PrelTup.(,,){-63,w-}{i} x1_a10s xs1_a10t ys1_a10u  ->
+	      x1_a10s;};
+	  xs1_a10t  ::  ta10z
 	  {-# L #-}
-	  xs1_a16L =
+	  xs1_a10t =
 	      case
-		  ds_d2bs
+		  ds_d22O
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x1_a16K xs1_a16L ys1_a16M  ->
-	      xs1_a16L;} } in
-	let {
-	  ys1_a16M  :: 
-	      [t{-a16Y-}]
+	      PrelTup.(,,){-63,w-}{i} x1_a10s xs1_a10t ys1_a10u  ->
+	      xs1_a10t;};
+	  ys1_a10u  ::  [ta10z]
 	  {-# L #-}
-	  ys1_a16M =
+	  ys1_a10u =
 	      case
-		  ds_d2bs
+		  ds_d22O
 	      of {
-	      PrelTup.(,,){-63,p-}{i} x1_a16K xs1_a16L ys1_a16M  ->
-	      ys1_a16M;}
+	      PrelTup.(,,){-63,w-}{i} x1_a10s xs1_a10t ys1_a10u  ->
+	      ys1_a10u;};
 	} in 
-	  PrelTup.(,,){-63,p-}{i}
-	      {_@_ t{-a16Y-}
-	       _@_ t{-a16Y-}
-	       _@_ [t{-a16Y-}]
-	       x1_a16K
-	       xs1_a16L
-	       ys1_a16M}
-x1{-r4q,x-}  :: 
-    _forall_ [t{-a16Y-}] => t{-a16Y-}
+	  PrelTup.(,,){-63,w-}{i}
+	      {_@_ ta10z _@_ ta10z _@_ [ta10z] x1_a10s xs1_a10t ys1_a10u}
+x1{-r4n,x-}  ::  _forall_ [ta10z] => ta10z
 {-# L #-}
-x1{-r4q,x-} =
-    _/\_ t{-a16Y-} ->
+x1{-r4n,x-} =
+    _/\_ ta10z ->
 	case
-	    ds_d1RI
-		_@_ t{-a16Y-}
+	    ds_d1Kr _@_ ta10z
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d2c5 ds_d2c7 ds_d2c6  ->
-	ds_d2c5;}
-xs1{-r4p,x-}  :: 
-    _forall_ [t{-a16Y-}] => t{-a16Y-}
+	PrelTup.(,,){-63,w-}{i} ds_d24T ds_d24U ds_d24V  ->
+	ds_d24T;}
+xs1{-r4m,x-}  ::  _forall_ [ta10z] => ta10z
 {-# L #-}
-xs1{-r4p,x-} =
-    _/\_ t{-a16Y-} ->
+xs1{-r4m,x-} =
+    _/\_ ta10z ->
 	case
-	    ds_d1RI
-		_@_ t{-a16Y-}
+	    ds_d1Kr _@_ ta10z
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d2co ds_d2cm ds_d2cn  ->
-	ds_d2cm;}
-ys1{-r4o,x-}  :: 
-    _forall_ [t{-a16Y-}] => [t{-a16Y-}]
+	PrelTup.(,,){-63,w-}{i} ds_d25b ds_d25a ds_d25c  ->
+	ds_d25a;}
+ys1{-r4l,x-}  ::  _forall_ [ta10z] => [ta10z]
 {-# L #-}
-ys1{-r4o,x-} =
-    _/\_ t{-a16Y-} ->
+ys1{-r4l,x-} =
+    _/\_ ta10z ->
 	case
-	    ds_d1RI
-		_@_ t{-a16Y-}
+	    ds_d1Kr _@_ ta10z
 	of {
-	PrelTup.(,,){-63,p-}{i} ds_d2cF ds_d2cE ds_d2cD  ->
-	ds_d2cD;}
-ds_d1RZ  :: 
-    PrelBase.(){-40,p-}
+	PrelTup.(,,){-63,w-}{i} ds_d25s ds_d25t ds_d25r  ->
+	ds_d25r;}
+ds_d1KI  ::  PrelBase.(){-40,W-}
 {-# L #-}
-ds_d1RZ =
-    let { ds_d2dp  :: 
-	      ([GHC.Void{-3T,p-}], [GHC.Void{-3T,p-}], [GHC.Void{-3T,p-}])
+ds_d1KI =
+    let { ds_d26d  ::  ([GHC.Void{-3T,W-}], [GHC.Void{-3T,W-}], [GHC.Void{-3T,W-}])
 	  {-# L #-}
-	  ds_d2dp =
+	  ds_d26d =
       let {
-	ds_d2cZ  :: 
-	    [GHC.Void{-3T,p-}]
+	ds_d25N  ::  [GHC.Void{-3T,W-}]
 	{-# L #-}
-	ds_d2cZ =
-	    PrelBase.[]{-5i,p-}{i}
-		_@_ GHC.Void{-3T,p-} } in
+	ds_d25N =
+	    PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-} } in
       let {
-	ds_d2d3  :: 
-	    [GHC.Void{-3T,p-}]
+	ds_d25R  ::  [GHC.Void{-3T,W-}]
 	{-# L #-}
-	ds_d2d3 =
-	    PrelBase.[]{-5i,p-}{i}
-		_@_ GHC.Void{-3T,p-} } in
+	ds_d25R =
+	    PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-} } in
       let {
-	ds_d2d7  :: 
-	    [GHC.Void{-3T,p-}]
+	ds_d25V  ::  [GHC.Void{-3T,W-}]
 	{-# L #-}
-	ds_d2d7 =
-	    PrelBase.[]{-5i,p-}{i}
-		_@_ GHC.Void{-3T,p-}
+	ds_d25V =
+	    PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-}
       } in 
-	PrelTup.(,,){-63,p-}{i}
-	    {_@_ [GHC.Void{-3T,p-}]
-	     _@_ [GHC.Void{-3T,p-}]
-	     _@_ [GHC.Void{-3T,p-}]
-	     ds_d2cZ
-	     ds_d2d3
-	     ds_d2d7}
+	PrelTup.(,,){-63,w-}{i}
+	    {_@_ [GHC.Void{-3T,W-}]
+	     _@_ [GHC.Void{-3T,W-}]
+	     _@_ [GHC.Void{-3T,W-}]
+	     ds_d25N
+	     ds_d25R
+	     ds_d25V}
     } in
     case
-	ds_d2dp
+	ds_d26d
     of {
-    PrelTup.(,,){-63,p-}{i} ds_d2dQ ds_d2dP ds_d2dO  ->
-    let { ds_d2eg  :: 
-	      PrelBase.(){-40,p-}
+    PrelTup.(,,){-63,w-}{i} ds_d26D ds_d26E ds_d26C  ->
+    let { ds_d274  ::  PrelBase.(){-40,W-}
 	  {-# L #-}
-	  ds_d2eg =
+	  ds_d274 =
       let {
-	fail_d2dR  :: 
-	    PrelBase.(){-40,p-}
+	fail_d26F  ::  PrelBase.(){-40,W-}
 	{-# L #-}
-	fail_d2dR =
-	    GHCerr.irrefutPatError{-8g,p-}
-		_@_ PrelBase.(){-40,p-} _string_ "ds020.hs:27|PrelBase.[]"
+	fail_d26F =
+	    GHCerr.irrefutPatError{-8g,w-}
+		_@_ PrelBase.(){-40,W-} _string_ "ds020.hs:27|PrelBase.[]"
       } in 
-	case ds_d2dO of {
-	  PrelBase.:{-55,p-}{i} ds_d2dZ ds_d2dY ->
-	      fail_d2dR;
-	  PrelBase.[]{-5i,p-}{i} ->
-	      PrelBase.(){-60,p-}{i}
-		  {};
+	case ds_d26C of {
+	  PrelBase.:{-55,w-}{i} ds_d26M ds_d26N -> fail_d26F;
+	  PrelBase.[]{-5i,w-}{i} -> PrelBase.(){-60,w-}{i} {};
 	}
     } in
-    let { ds_d2eG  :: 
-	      PrelBase.(){-40,p-}
+    let { ds_d27u  ::  PrelBase.(){-40,W-}
 	  {-# L #-}
-	  ds_d2eG =
+	  ds_d27u =
       let {
-	fail_d2eh  :: 
-	    PrelBase.(){-40,p-}
+	fail_d275  ::  PrelBase.(){-40,W-}
 	{-# L #-}
-	fail_d2eh =
-	    GHCerr.irrefutPatError{-8g,p-}
-		_@_ PrelBase.(){-40,p-} _string_ "ds020.hs:27|PrelBase.[]"
+	fail_d275 =
+	    GHCerr.irrefutPatError{-8g,w-}
+		_@_ PrelBase.(){-40,W-} _string_ "ds020.hs:27|PrelBase.[]"
       } in 
-	case ds_d2dP of {
-	  PrelBase.:{-55,p-}{i} ds_d2ep ds_d2eo ->
-	      fail_d2eh;
-	  PrelBase.[]{-5i,p-}{i} ->
-	      PrelBase.(){-60,p-}{i}
-		  {};
+	case ds_d26E of {
+	  PrelBase.:{-55,w-}{i} ds_d27c ds_d27d -> fail_d275;
+	  PrelBase.[]{-5i,w-}{i} -> PrelBase.(){-60,w-}{i} {};
 	}
     } in
-    let { ds_d2uC  :: 
-	      PrelBase.(){-40,p-}
+    let { ds_d2ql  ::  PrelBase.(){-40,W-}
 	  {-# L #-}
-	  ds_d2uC =
+	  ds_d2ql =
       let {
-	fail_d2eH  :: 
-	    PrelBase.(){-40,p-}
+	fail_d27v  ::  PrelBase.(){-40,W-}
 	{-# L #-}
-	fail_d2eH =
-	    GHCerr.irrefutPatError{-8g,p-}
-		_@_ PrelBase.(){-40,p-} _string_ "ds020.hs:27|PrelBase.[]"
+	fail_d27v =
+	    GHCerr.irrefutPatError{-8g,w-}
+		_@_ PrelBase.(){-40,W-} _string_ "ds020.hs:27|PrelBase.[]"
       } in 
-	case ds_d2dQ of {
-	  PrelBase.:{-55,p-}{i} ds_d2eP ds_d2eO ->
-	      fail_d2eH;
-	  PrelBase.[]{-5i,p-}{i} ->
-	      PrelBase.(){-60,p-}{i}
-		  {};
+	case ds_d26D of {
+	  PrelBase.:{-55,w-}{i} ds_d27C ds_d27D -> fail_d27v;
+	  PrelBase.[]{-5i,w-}{i} -> PrelBase.(){-60,w-}{i} {};
 	}
     } in
-    PrelBase.(){-60,p-}{i}
-	{};}
-ds_d1S4  :: 
-    PrelBase.(){-40,p-}
+    PrelBase.(){-60,w-}{i} {};}
+ds_d1KN  ::  PrelBase.(){-40,W-}
 {-# L #-}
-ds_d1S4 =
-    let { ds_d2fM  :: 
-	      ([GHC.Void{-3T,p-}], [GHC.Void{-3T,p-}], [GHC.Void{-3T,p-}])
+ds_d1KN =
+    let { ds_d28A  ::  ([GHC.Void{-3T,W-}], [GHC.Void{-3T,W-}], [GHC.Void{-3T,W-}])
 	  {-# L #-}
-	  ds_d2fM =
+	  ds_d28A =
       let {
-	ds_d2ff  :: 
-	    [GHC.Void{-3T,p-}]
+	ds_d283  ::  [GHC.Void{-3T,W-}]
 	{-# L #-}
-	ds_d2ff =
-	    PrelBase.[]{-5i,p-}{i}
-		_@_ GHC.Void{-3T,p-} } in
+	ds_d283 =
+	    PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-} } in
       let {
-	ds_d2fj  :: 
-	    [GHC.Void{-3T,p-}]
+	ds_d287  ::  [GHC.Void{-3T,W-}]
 	{-# L #-}
-	ds_d2fj =
-	    PrelBase.[]{-5i,p-}{i}
-		_@_ GHC.Void{-3T,p-} } in
+	ds_d287 =
+	    PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-} } in
       let {
-	ds_d2fn  :: 
-	    [GHC.Void{-3T,p-}]
+	ds_d28b  ::  [GHC.Void{-3T,W-}]
 	{-# L #-}
-	ds_d2fn =
-	    PrelBase.[]{-5i,p-}{i}
-		_@_ GHC.Void{-3T,p-}
+	ds_d28b =
+	    PrelBase.[]{-5i,w-}{i} _@_ GHC.Void{-3T,W-}
       } in 
-	PrelTup.(,,){-63,p-}{i}
-	    {_@_ [GHC.Void{-3T,p-}]
-	     _@_ [GHC.Void{-3T,p-}]
-	     _@_ [GHC.Void{-3T,p-}]
-	     ds_d2ff
-	     ds_d2fj
-	     ds_d2fn}
+	PrelTup.(,,){-63,w-}{i}
+	    {_@_ [GHC.Void{-3T,W-}]
+	     _@_ [GHC.Void{-3T,W-}]
+	     _@_ [GHC.Void{-3T,W-}]
+	     ds_d283
+	     ds_d287
+	     ds_d28b}
     } in
     let {
-      fail_d2fN  :: 
-	  PrelBase.(){-40,p-}
+      fail_d28B  ::  PrelBase.(){-40,W-}
       {-# L #-}
-      fail_d2fN =
-	  GHCerr.irrefutPatError{-8g,p-}
-	      _@_ PrelBase.(){-40,p-}
+      fail_d28B =
+	  GHCerr.irrefutPatError{-8g,w-}
+	      _@_ PrelBase.(){-40,W-}
 	      _string_ "ds020.hs:26|(PrelBase.[], PrelBase.[], PrelBase.[])"
     } in 
       case
-	  ds_d2fM
+	  ds_d28A
       of {
-      PrelTup.(,,){-63,p-}{i} ds_d2fW ds_d2fY ds_d2fX  ->
-      case ds_d2fW of {
-	PrelBase.:{-55,p-}{i} ds_d2g6 ds_d2g5 ->
-	    fail_d2fN;
-	PrelBase.[]{-5i,p-}{i} ->
-	    case ds_d2fY of {
-	      PrelBase.:{-55,p-}{i} ds_d2gk ds_d2gj ->
-		  fail_d2fN;
-	      PrelBase.[]{-5i,p-}{i} ->
-		  case ds_d2fX of {
-		    PrelBase.:{-55,p-}{i} ds_d2gy ds_d2gx ->
-			fail_d2fN;
-		    PrelBase.[]{-5i,p-}{i} ->
-			PrelBase.(){-60,p-}{i}
-			    {};
+      PrelTup.(,,){-63,w-}{i} ds_d28K ds_d28L ds_d28M  ->
+      case ds_d28K of {
+	PrelBase.:{-55,w-}{i} ds_d28T ds_d28U -> fail_d28B;
+	PrelBase.[]{-5i,w-}{i} ->
+	    case ds_d28L of {
+	      PrelBase.:{-55,w-}{i} ds_d297 ds_d298 -> fail_d28B;
+	      PrelBase.[]{-5i,w-}{i} ->
+		  case ds_d28M of {
+		    PrelBase.:{-55,w-}{i} ds_d29l ds_d29m -> fail_d28B;
+		    PrelBase.[]{-5i,w-}{i} -> PrelBase.(){-60,w-}{i} {};
 		  };
 	    };
       };}
-g{-r4r,x-}  :: 
-    _forall_ [t{-a17G-} t{-a17I-}] => [t{-a17G-}] -> [t{-a17I-}]
+g{-r4o,x-}  ::  _forall_ [ta11C ta11F] => [ta11C] -> [ta11F]
 {-# L #-}
-g{-r4r,x-} =
-    _/\_ t{-a17G-} t{-a17I-} -> \ ds_d2ha  :: 
-				      [t{-a17G-}]
-				  {-# L #-}
-				  ds_d2ha ->
-	let { ds_d2uD  :: 
-		  PrelBase.(){-40,p-}
-	      {-# L #-}
-	      ds_d2uD =
-	  let { ds_d2uE  :: 
-		    PrelBase.(){-40,p-}
+g{-r4o,x-} =
+    _/\_ ta11C ta11F ->
+	_letrec_ {
+	  g_a11w  ::  [ta11C] -> [ta11F]
+	  {-# L #-}
+	  g_a11w =
+	      \ ds_d2a5  ::  [ta11C]
 		{-# L #-}
-		ds_d2uE =
-	    let { ds_d2uF  :: 
-		      PrelBase.(){-40,p-}
-		  {-# L #-}
-		  ds_d2uF =
-	      let { ds_d2uG  :: 
-			PrelBase.(){-40,p-}
-		    {-# L #-}
-		    ds_d2uG =
-		let {
-		  fail_d2hb  :: 
-		      PrelBase.(){-40,p-}
-		  {-# L #-}
-		  fail_d2hb =
-		      GHCerr.irrefutPatError{-8g,p-}
-			  _@_ PrelBase.(){-40,p-} _string_ "ds020.hs:22|PrelBase.[]"
-		} in 
-		  case ds_d2ha of {
-		    PrelBase.:{-55,p-}{i} ds_d2hj ds_d2hi ->
-			fail_d2hb;
-		    PrelBase.[]{-5i,p-}{i} ->
-			PrelBase.(){-60,p-}{i}
-			    {};
-		  }
-	      } in
-	      PrelBase.(){-60,p-}{i}
-		  {}
-	    } in
-	    PrelBase.(){-60,p-}{i}
-		{}
-	  } in
-	  PrelBase.(){-60,p-}{i}
-	      {}
-	} in
-	PrelBase.[]{-5i,p-}{i}
-	    _@_ t{-a17I-}
-f{-r4s,x-}  :: 
-    _forall_ [t{-a17W-} t{-a17Y-}] => [t{-a17W-}] -> [t{-a17Y-}]
+		ds_d2a5 ->
+		  let { ds_d2qm  ::  PrelBase.(){-40,W-}
+			{-# L #-}
+			ds_d2qm =
+		    let { ds_d2qn  ::  PrelBase.(){-40,W-}
+			  {-# L #-}
+			  ds_d2qn =
+		      let { ds_d2qo  ::  PrelBase.(){-40,W-}
+			    {-# L #-}
+			    ds_d2qo =
+			let { ds_d2qp  ::  PrelBase.(){-40,W-}
+			      {-# L #-}
+			      ds_d2qp =
+			  let {
+			    fail_d2a6  ::  PrelBase.(){-40,W-}
+			    {-# L #-}
+			    fail_d2a6 =
+				GHCerr.irrefutPatError{-8g,w-}
+				    _@_ PrelBase.(){-40,W-} _string_ "ds020.hs:22|PrelBase.[]"
+			  } in 
+			    case ds_d2a5 of {
+			      PrelBase.:{-55,w-}{i} ds_d2ad ds_d2ae -> fail_d2a6;
+			      PrelBase.[]{-5i,w-}{i} -> PrelBase.(){-60,w-}{i} {};
+			    }
+			} in
+			PrelBase.(){-60,w-}{i} {}
+		      } in
+		      PrelBase.(){-60,w-}{i} {}
+		    } in
+		    PrelBase.(){-60,w-}{i} {}
+		  } in
+		  PrelBase.[]{-5i,w-}{i} _@_ ta11F;
+	} in  g_a11w
+f{-r4p,x-}  ::  _forall_ [ta11W ta11Y] => [ta11W] -> [ta11Y]
 {-# L #-}
-f{-r4s,x-} =
-    _/\_ t{-a17W-} t{-a17Y-} -> \ x_r3U  :: 
-				      [t{-a17W-}]
-				  {-# L #-}
-				  x_r3U ->
-	let { x_r3U  :: 
-		  [t{-a17W-}]
-	      {-# L #-}
-	      x_r3U =
-	  let {
-	    fail_d2hN  :: 
-		[t{-a17W-}]
-	    {-# L #-}
-	    fail_d2hN =
-		GHCerr.irrefutPatError{-8g,p-}
-		    _@_ [t{-a17W-}] _string_ "ds020.hs:19|(x@PrelBase.[])"
-	  } in 
-	    case x_r3U of {
-	      PrelBase.:{-55,p-}{i} ds_d2hV ds_d2hU ->
-		  fail_d2hN;
-	      PrelBase.[]{-5i,p-}{i} ->
-		  x_r3U;
-	    }
-	} in
-	PrelBase.[]{-5i,p-}{i}
-	    _@_ t{-a17Y-}
-d{-r4t,x-}  :: 
-    _forall_
-    [t{-a18b-} t{-a18D-}]
-    =>
-    {PrelBase.Num{-2c,p-} t{-a18b-}}
-    -> {PrelBase.Num{-2c,p-} t{-a18D-}}
-    -> {PrelBase.Ord{-2d,p-} t{-a18b-}}
-    -> t{-a18b-}
-    -> t{-a18D-}
+f{-r4p,x-} =
+    _/\_ ta11W ta11Y ->
+	_letrec_ {
+	  f_a11H  ::  [ta11W] -> [ta11Y]
+	  {-# L #-}
+	  f_a11H =
+	      \ x_r3R  ::  [ta11W]
+		{-# L #-}
+		x_r3R ->
+		  let { x_r3R  ::  [ta11W]
+			{-# L #-}
+			x_r3R =
+		    let {
+		      fail_d2aQ  ::  [ta11W]
+		      {-# L #-}
+		      fail_d2aQ =
+			  GHCerr.irrefutPatError{-8g,w-}
+			      _@_ [ta11W] _string_ "ds020.hs:19|(x@PrelBase.[])"
+		    } in 
+		      case x_r3R of {
+			PrelBase.:{-55,w-}{i} ds_d2aX ds_d2aY -> fail_d2aQ;
+			PrelBase.[]{-5i,w-}{i} -> x_r3R;
+		      }
+		  } in
+		  PrelBase.[]{-5i,w-}{i} _@_ ta11Y;
+	} in  f_a11H
+d{-r4q,x-}  ::  _forall_
+		[ta125 ta12z]
+		=>
+		{PrelBase.Num{-2c,p-} ta125}
+		-> {PrelBase.Num{-2c,p-} ta12z}
+		-> {PrelBase.Ord{-2d,p-} ta125}
+		-> ta125
+		-> ta12z
 {-# L #-}
-d{-r4t,x-} =
-    _/\_ t{-a18b-} t{-a18D-} -> \ d.Num_a18H  :: 
-				      {PrelBase.Num{-2c,p-} t{-a18b-}}
-				  {-# L #-}
-				  d.Num_a18H d.Num_a18M  :: 
-						 {PrelBase.Num{-2c,p-} t{-a18D-}}
-					     {-# L #-}
-					     d.Num_a18M d.Ord_a18R  :: 
-							    {PrelBase.Ord{-2d,p-} t{-a18b-}}
+d{-r4q,x-} =
+    _/\_ ta125 ta12z -> \ d.Num_a12C  ::  {PrelBase.Num{-2c,p-} ta125}
+			  {-# L #-}
+			  d.Num_a12C d.Num_a12H  ::  {PrelBase.Num{-2c,p-} ta12z}
+				     {-# L #-}
+				     d.Num_a12H d.Ord_a12M  ::  {PrelBase.Ord{-2d,p-} ta125}
+						{-# L #-}
+						d.Ord_a12M ->
+	_letrec_ {
+	  d.Eq_a12E  ::  {PrelBase.Eq{-23,p-} ta125}
+	  {-# L #-}
+	  d.Eq_a12E =
+	      PrelBase.scsel_OrdPrelBaseEq{-a2bU,p-} _@_ ta125 d.Ord_a12M;
+	  fromInt_a2bq  ::  PrelBase.Int{-3g,W-} -> ta125
+	  {-# L #-}
+	  fromInt_a2bq =
+	      PrelBase.fromInt{-8R,p-} _@_ ta125 d.Num_a12C;
+	  lit_a2br  ::  ta125
+	  {-# L #-}
+	  lit_a2br =
+	      let {
+		ds_d2e5  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2e5 =
+		    PrelBase.I#{-5b,w-}{i} 11
+	      } in  fromInt_a2bq ds_d2e5;
+	  ==_a2bs  ::  ta125 -> ta125 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a2bs =
+	      PrelBase.=={-8Y,p-} _@_ ta125 d.Eq_a12E;
+	  fromInt_a2bt  ::  PrelBase.Int{-3g,W-} -> ta12z
+	  {-# L #-}
+	  fromInt_a2bt =
+	      PrelBase.fromInt{-8R,p-} _@_ ta12z d.Num_a12H;
+	  lit_a2bu  ::  ta12z
+	  {-# L #-}
+	  lit_a2bu =
+	      let {
+		ds_d2ez  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2ez =
+		    PrelBase.I#{-5b,w-}{i} 4
+	      } in  fromInt_a2bt ds_d2ez;
+	  fromInt_a2bv  ::  PrelBase.Int{-3g,W-} -> ta125
+	  {-# L #-}
+	  fromInt_a2bv =
+	      fromInt_a2bq;
+	  lit_a2bw  ::  ta125
+	  {-# L #-}
+	  lit_a2bw =
+	      let {
+		ds_d2eO  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2eO =
+		    PrelBase.I#{-5b,w-}{i} 12
+	      } in  fromInt_a2bv ds_d2eO;
+	  ==_a2bx  ::  ta125 -> ta125 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a2bx =
+	      ==_a2bs;
+	  fromInt_a2by  ::  PrelBase.Int{-3g,W-} -> ta12z
+	  {-# L #-}
+	  fromInt_a2by =
+	      fromInt_a2bt;
+	  lit_a2bz  ::  ta12z
+	  {-# L #-}
+	  lit_a2bz =
+	      let {
+		ds_d2f4  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2f4 =
+		    PrelBase.I#{-5b,w-}{i} 3
+	      } in  fromInt_a2by ds_d2f4;
+	  fromInt_a2bA  ::  PrelBase.Int{-3g,W-} -> ta125
+	  {-# L #-}
+	  fromInt_a2bA =
+	      fromInt_a2bq;
+	  lit_a2bB  ::  ta125
+	  {-# L #-}
+	  lit_a2bB =
+	      let {
+		ds_d2fj  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2fj =
+		    PrelBase.I#{-5b,w-}{i} 4
+	      } in  fromInt_a2bA ds_d2fj;
+	  >=_a2bC  ::  ta125 -> ta125 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  >=_a2bC =
+	      PrelBase.>={-8Z,p-} _@_ ta125 d.Ord_a12M;
+	  d.Num_a12O  ::  {PrelBase.Num{-2c,p-} ta125}
+	  {-# L #-}
+	  d.Num_a12O =
+	      d.Num_a12C;
+	  -_a2bD  ::  ta125 -> ta125 -> ta125
+	  {-# L #-}
+	  -_a2bD =
+	      PrelBase.-{-817,p-} _@_ ta125 d.Num_a12O;
+	  fromInt_a2bE  ::  PrelBase.Int{-3g,W-} -> ta12z
+	  {-# L #-}
+	  fromInt_a2bE =
+	      fromInt_a2bt;
+	  lit_a2bF  ::  ta12z
+	  {-# L #-}
+	  lit_a2bF =
+	      let {
+		ds_d2fP  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2fP =
+		    PrelBase.I#{-5b,w-}{i} 2
+	      } in  fromInt_a2bE ds_d2fP;
+	  fromInt_a2bG  ::  PrelBase.Int{-3g,W-} -> ta125
+	  {-# L #-}
+	  fromInt_a2bG =
+	      fromInt_a2bq;
+	  lit_a2bH  ::  ta125
+	  {-# L #-}
+	  lit_a2bH =
+	      let {
+		ds_d2g4  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2g4 =
+		    PrelBase.I#{-5b,w-}{i} 43
+	      } in  fromInt_a2bG ds_d2g4;
+	  >=_a2bI  ::  ta125 -> ta125 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  >=_a2bI =
+	      >=_a2bC;
+	  -_a2bJ  ::  ta125 -> ta125 -> ta125
+	  {-# L #-}
+	  -_a2bJ =
+	      -_a2bD;
+	  fromInt_a2bK  ::  PrelBase.Int{-3g,W-} -> ta12z
+	  {-# L #-}
+	  fromInt_a2bK =
+	      fromInt_a2bt;
+	  lit_a2bL  ::  ta12z
+	  {-# L #-}
+	  lit_a2bL =
+	      let {
+		ds_d2gl  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2gl =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_a2bK ds_d2gl;
+	  fromInt_a2bM  ::  PrelBase.Int{-3g,W-} -> ta125
+	  {-# L #-}
+	  fromInt_a2bM =
+	      fromInt_a2bq;
+	  lit_a2bN  ::  ta125
+	  {-# L #-}
+	  lit_a2bN =
+	      let {
+		ds_d2gA  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2gA =
+		    PrelBase.I#{-5b,w-}{i} 999
+	      } in  fromInt_a2bM ds_d2gA;
+	  >=_a2bO  ::  ta125 -> ta125 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  >=_a2bO =
+	      >=_a2bC;
+	  -_a2bP  ::  ta125 -> ta125 -> ta125
+	  {-# L #-}
+	  -_a2bP =
+	      -_a2bD;
+	  fromInt_a2bQ  ::  PrelBase.Int{-3g,W-} -> ta12z
+	  {-# L #-}
+	  fromInt_a2bQ =
+	      fromInt_a2bt;
+	  lit_a2bR  ::  ta12z
+	  {-# L #-}
+	  lit_a2bR =
+	      let {
+		ds_d2gR  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2gR =
+		    PrelBase.I#{-5b,w-}{i} 0
+	      } in  fromInt_a2bQ ds_d2gR;
+	  d_a120  ::  ta125 -> ta12z
+	  {-# L #-}
+	  d_a120 =
+	      \ ds_d2hp  ::  ta125
+		{-# L #-}
+		ds_d2hp ->
+		  let { fail_d2ig  ::  ta12z
+			{-# L #-}
+			fail_d2ig =
+		    let { ds_d2h9  ::  PrelBase.(){-40,W-}
+			  {-# L #-}
+			  ds_d2h9 =
+		      let {
+			fail_d2hC  ::  PrelBase.(){-40,W-}
+			{-# L #-}
+			fail_d2hC =
+			    GHCerr.irrefutPatError{-8g,w-}
+				_@_ PrelBase.(){-40,W-} _string_ "ds020.hs:13|(n+4)"
+		      } in 
+			case
+			    (\ ds_d2hw  ::  ta125
+			       {-# L #-}
+			       ds_d2hw ->
+				 >=_a2bC ds_d2hw lit_a2bB)
+				ds_d2hp
+			of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      let {
+				n_r3L  ::  ta125
+				{-# L #-}
+				n_r3L =
+				    (\ ds_d2hV  ::  ta125
+				       {-# L #-}
+				       ds_d2hV ->
+					 -_a2bD ds_d2hV lit_a2bB)
+					ds_d2hp
+			      } in  PrelBase.(){-60,w-}{i} {};
+			  PrelBase.False{-58,w-}{i} -> fail_d2hC;
+			}
+		    } in
+		    lit_a2bF
+		  } in
+		  let {
+		    fail_d2iA  ::  ta12z
+		    {-# L #-}
+		    fail_d2iA =
+			case ==_a2bx lit_a2bw ds_d2hp of {
+			  PrelBase.True{-5E,w-}{i} -> lit_a2bz;
+			  PrelBase.False{-58,w-}{i} -> fail_d2ig;
+			}
+		  } in 
+		    case ==_a2bs lit_a2br ds_d2hp of {
+		      PrelBase.True{-5E,w-}{i} -> lit_a2bu;
+		      PrelBase.False{-58,w-}{i} -> fail_d2iA;
+		    };
+	} in  d_a120
+c{-r4r,x-}  ::  _forall_
+		[ta13o ta13b ta13i ta13q]
+		=>
+		{PrelNum.Fractional{-26,p-} ta13i}
+		-> {PrelBase.Num{-2c,p-} ta13b}
+		-> ta13q
+		-> ta13o
+		-> ta13b
+		-> ta13i
+		-> ta13q
+{-# L #-}
+c{-r4r,x-} =
+    _/\_ ta13o ta13b ta13i ta13q -> \ d.Fractional_a13y  ::  {PrelNum.Fractional{-26,p-} ta13i}
+				      {-# L #-}
+				      d.Fractional_a13y d.Num_a13t  ::  {PrelBase.Num{-2c,p-} ta13b}
 							{-# L #-}
-							d.Ord_a18R ->
-	let {
-	  d.Eq_a18J  :: 
-	      {PrelBase.Eq{-23,p-} t{-a18b-}}
-	  {-# L #-}
-	  d.Eq_a18J =
-	      PrelBase.scsel_OrdPrelBaseEq{-a2jI,p-}
-		  _@_ t{-a18b-} d.Ord_a18R } in
-	let {
-	  fromInt_a2jy  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18b-}
-	  {-# L #-}
-	  fromInt_a2jy =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-a18b-} d.Num_a18H } in
-	let { lit_a2jx  :: 
-		  t{-a18b-}
-	      {-# L #-}
-	      lit_a2jx =
-	  let {
-	    ds_d2jX  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2jX =
-		PrelBase.I#{-5b,p-}{i}
-		    11
-	  } in 
-	    fromInt_a2jy
-		ds_d2jX
-	} in
-	let {
-	  ==_a2jw  :: 
-	      t{-a18b-} -> t{-a18b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a2jw =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a18b-} d.Eq_a18J } in
-	let {
-	  fromInt_a2jv  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18D-}
-	  {-# L #-}
-	  fromInt_a2jv =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-a18D-} d.Num_a18M } in
-	let { lit_a2ju  :: 
-		  t{-a18D-}
-	      {-# L #-}
-	      lit_a2ju =
-	  let {
-	    ds_d2kr  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2kr =
-		PrelBase.I#{-5b,p-}{i}
-		    4
-	  } in 
-	    fromInt_a2jv
-		ds_d2kr
-	} in
-	let {
-	  fromInt_a2jt  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18b-}
-	  {-# L #-}
-	  fromInt_a2jt =
-	      fromInt_a2jy } in
-	let { lit_a2js  :: 
-		  t{-a18b-}
-	      {-# L #-}
-	      lit_a2js =
-	  let {
-	    ds_d2kG  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2kG =
-		PrelBase.I#{-5b,p-}{i}
-		    12
-	  } in 
-	    fromInt_a2jt
-		ds_d2kG
-	} in
-	let {
-	  ==_a2jr  :: 
-	      t{-a18b-} -> t{-a18b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a2jr =
-	      ==_a2jw } in
-	let {
-	  fromInt_a2jq  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18D-}
-	  {-# L #-}
-	  fromInt_a2jq =
-	      fromInt_a2jv } in
-	let { lit_a2jp  :: 
-		  t{-a18D-}
-	      {-# L #-}
-	      lit_a2jp =
-	  let {
-	    ds_d2kW  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2kW =
-		PrelBase.I#{-5b,p-}{i}
-		    3
-	  } in 
-	    fromInt_a2jq
-		ds_d2kW
-	} in
-	let {
-	  fromInt_a2jo  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18b-}
-	  {-# L #-}
-	  fromInt_a2jo =
-	      fromInt_a2jy } in
-	let { lit_a2jn  :: 
-		  t{-a18b-}
-	      {-# L #-}
-	      lit_a2jn =
-	  let {
-	    ds_d2lb  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2lb =
-		PrelBase.I#{-5b,p-}{i}
-		    4
-	  } in 
-	    fromInt_a2jo
-		ds_d2lb
-	} in
-	let {
-	  >=_a2jm  :: 
-	      t{-a18b-} -> t{-a18b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  >=_a2jm =
-	      PrelBase.>={-8Z,p-}
-		  _@_ t{-a18b-} d.Ord_a18R } in
-	let {
-	  d.Num_a18T  :: 
-	      {PrelBase.Num{-2c,p-} t{-a18b-}}
-	  {-# L #-}
-	  d.Num_a18T =
-	      d.Num_a18H } in
-	let {
-	  -_a2jl  :: 
-	      t{-a18b-} -> t{-a18b-} -> t{-a18b-}
-	  {-# L #-}
-	  -_a2jl =
-	      PrelBase.-{-817,p-}
-		  _@_ t{-a18b-} d.Num_a18T } in
-	let {
-	  fromInt_a2jk  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18D-}
-	  {-# L #-}
-	  fromInt_a2jk =
-	      fromInt_a2jv } in
-	let { lit_a2jj  :: 
-		  t{-a18D-}
-	      {-# L #-}
-	      lit_a2jj =
-	  let {
-	    ds_d2lH  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2lH =
-		PrelBase.I#{-5b,p-}{i}
-		    2
-	  } in 
-	    fromInt_a2jk
-		ds_d2lH
-	} in
-	let {
-	  fromInt_a2ji  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18b-}
-	  {-# L #-}
-	  fromInt_a2ji =
-	      fromInt_a2jy } in
-	let { lit_a2jh  :: 
-		  t{-a18b-}
-	      {-# L #-}
-	      lit_a2jh =
-	  let {
-	    ds_d2lW  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2lW =
-		PrelBase.I#{-5b,p-}{i}
-		    43
-	  } in 
-	    fromInt_a2ji
-		ds_d2lW
-	} in
-	let {
-	  >=_a2jg  :: 
-	      t{-a18b-} -> t{-a18b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  >=_a2jg =
-	      >=_a2jm } in
-	let {
-	  -_a2jf  :: 
-	      t{-a18b-} -> t{-a18b-} -> t{-a18b-}
-	  {-# L #-}
-	  -_a2jf =
-	      -_a2jl } in
-	let {
-	  fromInt_a2je  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18D-}
-	  {-# L #-}
-	  fromInt_a2je =
-	      fromInt_a2jv } in
-	let { lit_a2jd  :: 
-		  t{-a18D-}
-	      {-# L #-}
-	      lit_a2jd =
-	  let {
-	    ds_d2md  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2md =
-		PrelBase.I#{-5b,p-}{i}
-		    1
-	  } in 
-	    fromInt_a2je
-		ds_d2md
-	} in
-	let {
-	  fromInt_a2jc  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18b-}
-	  {-# L #-}
-	  fromInt_a2jc =
-	      fromInt_a2jy } in
-	let { lit_a2jb  :: 
-		  t{-a18b-}
-	      {-# L #-}
-	      lit_a2jb =
-	  let {
-	    ds_d2ms  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2ms =
-		PrelBase.I#{-5b,p-}{i}
-		    999
-	  } in 
-	    fromInt_a2jc
-		ds_d2ms
-	} in
-	let {
-	  >=_a2ja  :: 
-	      t{-a18b-} -> t{-a18b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  >=_a2ja =
-	      >=_a2jm } in
-	let {
-	  -_a2j9  :: 
-	      t{-a18b-} -> t{-a18b-} -> t{-a18b-}
-	  {-# L #-}
-	  -_a2j9 =
-	      -_a2jl } in
-	let {
-	  fromInt_a2j8  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a18D-}
+							d.Num_a13t ->
+	_letrec_ {
+	  d.Eq_a13v  ::  {PrelBase.Eq{-23,p-} ta13b}
+	  {-# L #-}
+	  d.Eq_a13v =
+	      PrelBase.scsel_NumPrelBaseEq{-a2jg,p-} _@_ ta13b d.Num_a13t;
+	  d.Num_a155  ::  {PrelBase.Num{-2c,p-} ta13i}
+	  {-# L #-}
+	  d.Num_a155 =
+	      PrelNum.scsel_FractionalPrelBaseNum{-a2jZ,p-}
+		  _@_ ta13i d.Fractional_a13y;
+	  d.Eq_a13A  ::  {PrelBase.Eq{-23,p-} ta13i}
+	  {-# L #-}
+	  d.Eq_a13A =
+	      PrelBase.scsel_NumPrelBaseEq{-a2jg,p-} _@_ ta13i d.Num_a155;
+	  fromInt_a2j8  ::  PrelBase.Int{-3g,W-} -> ta13b
 	  {-# L #-}
 	  fromInt_a2j8 =
-	      fromInt_a2jv } in
-	let { lit_a2j7  :: 
-		  t{-a18D-}
-	      {-# L #-}
-	      lit_a2j7 =
-	  let {
-	    ds_d2mJ  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2mJ =
-		PrelBase.I#{-5b,p-}{i}
-		    0
-	  } in 
-	    fromInt_a2j8
-		ds_d2mJ
-	} in
-	\ ds_d2ng  :: 
-	      t{-a18b-}
-	  {-# L #-}
-	  ds_d2ng ->
-	    let { fail_d2o7  :: 
-		      t{-a18D-}
-		  {-# L #-}
-		  fail_d2o7 =
-	      let { ds_d2n0  :: 
-			PrelBase.(){-40,p-}
+	      PrelBase.fromInt{-8R,p-} _@_ ta13b d.Num_a13t;
+	  lit_a2j9  ::  ta13b
+	  {-# L #-}
+	  lit_a2j9 =
+	      let {
+		ds_d2km  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d2km =
+		    PrelBase.I#{-5b,w-}{i} 11111
+	      } in  fromInt_a2j8 ds_d2km;
+	  ==_a2ja  ::  ta13b -> ta13b -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a2ja =
+	      PrelBase.=={-8Y,p-} _@_ ta13b d.Eq_a13v;
+	  fromRational_a2jb  ::  PrelNum.Rational{-3r,p-} -> ta13i
+	  {-# L #-}
+	  fromRational_a2jb =
+	      PrelNum.fromRational{-8T,p-} _@_ ta13i d.Fractional_a13y;
+	  lit_a2jc  ::  ta13i
+	  {-# L #-}
+	  lit_a2jc =
+	      fromRational_a2jb _rational_  62831853 20000000;
+	  ==_a2jd  ::  ta13i -> ta13i -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a2jd =
+	      PrelBase.=={-8Y,p-} _@_ ta13i d.Eq_a13A;
+	  c_a12W  ::  ta13q -> ta13o -> ta13b -> ta13i -> ta13q
+	  {-# L #-}
+	  c_a12W =
+	      \ x_r3H  ::  ta13q
+		{-# L #-}
+		x_r3H ds_d2lx  ::  ta13o
+		      {-# L #-}
+		      ds_d2lx ds_d2ly  ::  ta13b
+			      {-# L #-}
+			      ds_d2ly ds_d2lu  ::  ta13i
+				      {-# L #-}
+				      ds_d2lu ->
+		  let { ds_d2m4  ::  PrelBase.(){-40,W-}
+			{-# L #-}
+			ds_d2m4 =
+		    let {
+		      fail_d2lz  ::  PrelBase.(){-40,W-}
+		      {-# L #-}
+		      fail_d2lz =
+			  GHCerr.irrefutPatError{-8g,w-}
+			      _@_ PrelBase.(){-40,W-} _string_ "ds020.hs:11|3.1415926500000002"
+		    } in 
+		      case ==_a2jd lit_a2jc ds_d2lu of {
+			PrelBase.True{-5E,w-}{i} -> PrelBase.(){-60,w-}{i} {};
+			PrelBase.False{-58,w-}{i} -> fail_d2lz;
+		      }
+		  } in
+		  let { ds_d2mh  ::  PrelBase.(){-40,W-}
+			{-# L #-}
+			ds_d2mh =
+		    let {
+		      fail_d2m5  ::  PrelBase.(){-40,W-}
+		      {-# L #-}
+		      fail_d2m5 =
+			  GHCerr.irrefutPatError{-8g,w-}
+			      _@_ PrelBase.(){-40,W-} _string_ "ds020.hs:11|11111"
+		    } in 
+		      case ==_a2ja lit_a2j9 ds_d2ly of {
+			PrelBase.True{-5E,w-}{i} -> PrelBase.(){-60,w-}{i} {};
+			PrelBase.False{-58,w-}{i} -> fail_d2m5;
+		      }
+		  } in
+		  let {
+		    ds_d2lb  ::  PrelBase.(){-40,W-}
 		    {-# L #-}
-		    ds_d2n0 =
-		let {
-		  fail_d2nt  :: 
-		      PrelBase.(){-40,p-}
-		  {-# L #-}
-		  fail_d2nt =
-		      GHCerr.irrefutPatError{-8g,p-}
-			  _@_ PrelBase.(){-40,p-} _string_ "ds020.hs:13|(n+4)"
-		} in 
-		  case
-		      (\ ds_d2nn  :: 
-			     t{-a18b-}
-			 {-# L #-}
-			 ds_d2nn ->
-			   >=_a2jm
-			       ds_d2nn lit_a2jn)
-			  ds_d2ng
-		  of {
-		    PrelBase.True{-5E,p-}{i} ->
-			let {
-			  n_r3O  :: 
-			      t{-a18b-}
-			  {-# L #-}
-			  n_r3O =
-			      (\ ds_d2nM  :: 
-				     t{-a18b-}
-				 {-# L #-}
-				 ds_d2nM ->
-				   -_a2jl
-				       ds_d2nM lit_a2jn)
-				  ds_d2ng
-			} in 
-			  PrelBase.(){-60,p-}{i}
-			      {};
-		    PrelBase.False{-58,p-}{i} ->
-			fail_d2nt;
-		  }
-	      } in
-	      lit_a2jj
-	    } in
-	    let {
-	      fail_d2or  :: 
-		  t{-a18D-}
-	      {-# L #-}
-	      fail_d2or =
-		  case
-		      ==_a2jr
-			  lit_a2js ds_d2ng
-		  of {
-		    PrelBase.True{-5E,p-}{i} ->
-			lit_a2jp;
-		    PrelBase.False{-58,p-}{i} ->
-			fail_d2o7;
-		  }
-	    } in 
-	      case
-		  ==_a2jw
-		      lit_a2jx ds_d2ng
-	      of {
-		PrelBase.True{-5E,p-}{i} ->
-		    lit_a2ju;
-		PrelBase.False{-58,p-}{i} ->
-		    fail_d2or;
-	      }
-c{-r4u,x-}  :: 
-    _forall_
-    [t{-a19h-} t{-a19j-} t{-a199-} t{-a19d-}]
-    =>
-    {PrelNum.Fractional{-26,p-} t{-a19d-}}
-    -> {PrelBase.Num{-2c,p-} t{-a199-}}
-    -> t{-a19h-}
-    -> t{-a19j-}
-    -> t{-a199-}
-    -> t{-a19d-}
-    -> t{-a19h-}
+		    ds_d2lb =
+			PrelBase.(){-60,w-}{i} {}
+		  } in  x_r3H;
+	} in  c_a12W
+b{-r4s,x-}  ::  _forall_ [ta140 ta147] => [ta140] -> [ta147]
 {-# L #-}
-c{-r4u,x-} =
-    _/\_ t{-a19h-} t{-a19j-} t{-a199-} t{-a19d-} -> \ d.Fractional_a19r  :: 
-							  {PrelNum.Fractional{-26,p-} t{-a19d-}}
-						      {-# L #-}
-						      d.Fractional_a19r d.Num_a19m  :: 
-									    {PrelBase.Num{-2c,p-} t{-a199-}}
-									{-# L #-}
-									d.Num_a19m ->
-	let {
-	  d.Eq_a19o  :: 
-	      {PrelBase.Eq{-23,p-} t{-a199-}}
-	  {-# L #-}
-	  d.Eq_a19o =
-	      PrelBase.scsel_NumPrelBaseEq{-a2pi,p-}
-		  _@_ t{-a199-} d.Num_a19m } in
-	let {
-	  d.Num_a1b5  :: 
-	      {PrelBase.Num{-2c,p-} t{-a19d-}}
-	  {-# L #-}
-	  d.Num_a1b5 =
-	      PrelNum.scsel_FractionalPrelBaseNum{-a2pr,p-}
-		  _@_ t{-a19d-} d.Fractional_a19r } in
-	let {
-	  d.Eq_a19t  :: 
-	      {PrelBase.Eq{-23,p-} t{-a19d-}}
-	  {-# L #-}
-	  d.Eq_a19t =
-	      PrelBase.scsel_NumPrelBaseEq{-a2pi,p-}
-		  _@_ t{-a19d-} d.Num_a1b5 } in
-	let {
-	  fromInt_a2p8  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a199-}
-	  {-# L #-}
-	  fromInt_a2p8 =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-a199-} d.Num_a19m } in
-	let { lit_a2p7  :: 
-		  t{-a199-}
-	      {-# L #-}
-	      lit_a2p7 =
-	  let {
-	    ds_d2pO  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d2pO =
-		PrelBase.I#{-5b,p-}{i}
-		    11111
-	  } in 
-	    fromInt_a2p8
-		ds_d2pO
-	} in
-	let {
-	  ==_a2p6  :: 
-	      t{-a199-} -> t{-a199-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a2p6 =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a199-} d.Eq_a19o } in
-	let {
-	  fromRational_a2p5  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a19d-}
-	  {-# L #-}
-	  fromRational_a2p5 =
-	      PrelNum.fromRational{-8T,p-}
-		  _@_ t{-a19d-} d.Fractional_a19r } in
-	let {
-	  lit_a2p4  :: 
-	      t{-a19d-}
-	  {-# L #-}
-	  lit_a2p4 =
-	      fromRational_a2p5
-		  _rational_  62831853 20000000 } in
-	let {
-	  ==_a2p3  :: 
-	      t{-a19d-} -> t{-a19d-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a2p3 =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a19d-} d.Eq_a19t
-	} in 
-	  \ x_r3H  :: 
-		t{-a19h-}
-	    {-# L #-}
-	    x_r3H ds_d2qY  :: 
-		      t{-a19j-}
-		  {-# L #-}
-		  ds_d2qY ds_d2qZ  :: 
-			      t{-a199-}
-			  {-# L #-}
-			  ds_d2qZ ds_d2qV  :: 
-				      t{-a19d-}
-				  {-# L #-}
-				  ds_d2qV ->
-	      let { ds_d2rv  :: 
-			PrelBase.(){-40,p-}
+b{-r4s,x-} =
+    _/\_ ta140 ta147 ->
+	_letrec_ {
+	  b_a13E  ::  [ta140] -> [ta147]
+	  {-# L #-}
+	  b_a13E =
+	      \ ds_d2mU  ::  [ta140]
+		{-# L #-}
+		ds_d2mU ->
+		  let { ds_d2nB  ::  (ta140, ta140, [ta140])
+			{-# L #-}
+			ds_d2nB =
+		    let {
+		      fail_d2mV  ::  (ta140, ta140, [ta140])
+		      {-# L #-}
+		      fail_d2mV =
+			  GHCerr.irrefutPatError{-8g,w-}
+			      _@_ (ta140, ta140, [ta140])
+			      _string_ "ds020.hs:8|(x PrelBase.: (xs PrelBase.: ys))"
+		    } in 
+		      case ds_d2mU of {
+			PrelBase.[]{-5i,w-}{i} -> fail_d2mV;
+			PrelBase.:{-55,w-}{i} x_r3z ds_d2n8 ->
+			    case ds_d2n8 of {
+			      PrelBase.[]{-5i,w-}{i} -> fail_d2mV;
+			      PrelBase.:{-55,w-}{i} xs_r3A ys_r3B ->
+				  PrelTup.(,,){-63,w-}{i}
+				      {_@_ ta140 _@_ ta140 _@_ [ta140] x_r3z xs_r3A ys_r3B};
+			    };
+		      }
+		  } in
+		  let {
+		    x_r3z  ::  ta140
 		    {-# L #-}
-		    ds_d2rv =
-		let {
-		  fail_d2r0  :: 
-		      PrelBase.(){-40,p-}
-		  {-# L #-}
-		  fail_d2r0 =
-		      GHCerr.irrefutPatError{-8g,p-}
-			  _@_ PrelBase.(){-40,p-} _string_ "ds020.hs:11|3.1415926500000002"
-		} in 
-		  case
-		      ==_a2p3
-			  lit_a2p4 ds_d2qV
-		  of {
-		    PrelBase.True{-5E,p-}{i} ->
-			PrelBase.(){-60,p-}{i}
-			    {};
-		    PrelBase.False{-58,p-}{i} ->
-			fail_d2r0;
-		  }
-	      } in
-	      let { ds_d2rI  :: 
-			PrelBase.(){-40,p-}
+		    x_r3z =
+			case ds_d2nB of { PrelTup.(,,){-63,w-}{i} x_r3z xs_r3A ys_r3B  ->
+			x_r3z;} } in
+		  let {
+		    xs_r3A  ::  ta140
 		    {-# L #-}
-		    ds_d2rI =
-		let {
-		  fail_d2rw  :: 
-		      PrelBase.(){-40,p-}
-		  {-# L #-}
-		  fail_d2rw =
-		      GHCerr.irrefutPatError{-8g,p-}
-			  _@_ PrelBase.(){-40,p-} _string_ "ds020.hs:11|11111"
-		} in 
-		  case
-		      ==_a2p6
-			  lit_a2p7 ds_d2qZ
-		  of {
-		    PrelBase.True{-5E,p-}{i} ->
-			PrelBase.(){-60,p-}{i}
-			    {};
-		    PrelBase.False{-58,p-}{i} ->
-			fail_d2rw;
-		  }
-	      } in
-	      let {
-		ds_d2qC  :: 
-		    PrelBase.(){-40,p-}
+		    xs_r3A =
+			case ds_d2nB of { PrelTup.(,,){-63,w-}{i} x_r3z xs_r3A ys_r3B  ->
+			xs_r3A;} } in
+		  let {
+		    ys_r3B  ::  [ta140]
+		    {-# L #-}
+		    ys_r3B =
+			case ds_d2nB of { PrelTup.(,,){-63,w-}{i} x_r3z xs_r3A ys_r3B  ->
+			ys_r3B;}
+		  } in  PrelBase.[]{-5i,w-}{i} _@_ ta147;
+	} in  b_a13E
+a{-r4t,x-}  ::  _forall_
+		[ta14y ta14B ta14E ta14G]
+		=>
+		([ta14y], [ta14B], [ta14E]) -> [ta14G]
+{-# L #-}
+a{-r4t,x-} =
+    _/\_ ta14y ta14B ta14E ta14G ->
+	_letrec_ {
+	  a_a149  ::  ([ta14y], [ta14B], [ta14E]) -> [ta14G]
+	  {-# L #-}
+	  a_a149 =
+	      \ ds_d2oz  ::  ([ta14y], [ta14B], [ta14E])
 		{-# L #-}
-		ds_d2qC =
-		    PrelBase.(){-60,p-}{i}
-			{}
-	      } in 
-		x_r3H
-b{-r4v,x-}  :: 
-    _forall_ [t{-a19Q-} t{-a19X-}] => [t{-a19Q-}] -> [t{-a19X-}]
+		ds_d2oz ->
+		  let { ds_d2qq  ::  PrelBase.(){-40,W-}
+			{-# L #-}
+			ds_d2qq =
+		    let {
+		      fail_d2oA  ::  PrelBase.(){-40,W-}
+		      {-# L #-}
+		      fail_d2oA =
+			  GHCerr.irrefutPatError{-8g,w-}
+			      _@_ PrelBase.(){-40,W-}
+			      _string_ "ds020.hs:5|(PrelBase.[], PrelBase.[], PrelBase.[])"
+		    } in 
+		      case
+			  ds_d2oz
+		      of {
+		      PrelTup.(,,){-63,w-}{i} ds_d2oJ ds_d2oK ds_d2oL  ->
+		      case ds_d2oJ of {
+			PrelBase.:{-55,w-}{i} ds_d2oS ds_d2oT -> fail_d2oA;
+			PrelBase.[]{-5i,w-}{i} ->
+			    case ds_d2oK of {
+			      PrelBase.:{-55,w-}{i} ds_d2p6 ds_d2p7 -> fail_d2oA;
+			      PrelBase.[]{-5i,w-}{i} ->
+				  case ds_d2oL of {
+				    PrelBase.:{-55,w-}{i} ds_d2pk ds_d2pl -> fail_d2oA;
+				    PrelBase.[]{-5i,w-}{i} -> PrelBase.(){-60,w-}{i} {};
+				  };
+			    };
+		      };}
+		  } in
+		  PrelBase.[]{-5i,w-}{i} _@_ ta14G;
+	} in  a_a149
+d.Eq_a14Y  ::  {PrelBase.Eq{-23,p-} PrelBase.Int{-3g,W-}}
 {-# L #-}
-b{-r4v,x-} =
-    _/\_ t{-a19Q-} t{-a19X-} -> \ ds_d2sd  :: 
-				      [t{-a19Q-}]
-				  {-# L #-}
-				  ds_d2sd ->
-	let { ds_d2sU  :: 
-		  (t{-a19Q-}, t{-a19Q-}, [t{-a19Q-}])
-	      {-# L #-}
-	      ds_d2sU =
-	  let {
-	    fail_d2se  :: 
-		(t{-a19Q-}, t{-a19Q-}, [t{-a19Q-}])
-	    {-# L #-}
-	    fail_d2se =
-		GHCerr.irrefutPatError{-8g,p-}
-		    _@_ (t{-a19Q-}, t{-a19Q-}, [t{-a19Q-}])
-		    _string_ "ds020.hs:8|(x PrelBase.: (xs PrelBase.: ys))"
-	  } in 
-	    case ds_d2sd of {
-	      PrelBase.[]{-5i,p-}{i} ->
-		  fail_d2se;
-	      PrelBase.:{-55,p-}{i} x_r3z ds_d2sr ->
-		  case ds_d2sr of {
-		    PrelBase.[]{-5i,p-}{i} ->
-			fail_d2se;
-		    PrelBase.:{-55,p-}{i} xs_r3A ys_r3B ->
-			PrelTup.(,,){-63,p-}{i}
-			    {_@_ t{-a19Q-} _@_ t{-a19Q-} _@_ [t{-a19Q-}] x_r3z xs_r3A ys_r3B};
-		  };
-	    }
-	} in
-	let {
-	  x_r3z  :: 
-	      t{-a19Q-}
-	  {-# L #-}
-	  x_r3z =
-	      case ds_d2sU of { PrelTup.(,,){-63,p-}{i} x_r3z xs_r3A ys_r3B  ->
-	      x_r3z;} } in
-	let {
-	  xs_r3A  :: 
-	      t{-a19Q-}
-	  {-# L #-}
-	  xs_r3A =
-	      case ds_d2sU of { PrelTup.(,,){-63,p-}{i} x_r3z xs_r3A ys_r3B  ->
-	      xs_r3A;} } in
-	let {
-	  ys_r3B  :: 
-	      [t{-a19Q-}]
-	  {-# L #-}
-	  ys_r3B =
-	      case ds_d2sU of { PrelTup.(,,){-63,p-}{i} x_r3z xs_r3A ys_r3B  ->
-	      ys_r3B;}
-	} in 
-	  PrelBase.[]{-5i,p-}{i}
-	      _@_ t{-a19X-}
-a{-r4w,x-}  :: 
-    _forall_
-    [t{-a1al-} t{-a1ao-} t{-a1ar-} t{-a1at-}]
-    =>
-    ([t{-a1al-}], [t{-a1ao-}], [t{-a1ar-}]) -> [t{-a1at-}]
+d.Eq_a14Y =
+    PrelBase.$d8{-rq4,p-}
+==_a1zR  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
 {-# L #-}
-a{-r4w,x-} =
-    _/\_ t{-a1al-} t{-a1ao-} t{-a1ar-} t{-a1at-} -> \ ds_d2tK  :: 
-							  ([t{-a1al-}], [t{-a1ao-}], [t{-a1ar-}])
-						      {-# L #-}
-						      ds_d2tK ->
-	let { ds_d2uH  :: 
-		  PrelBase.(){-40,p-}
-	      {-# L #-}
-	      ds_d2uH =
-	  let {
-	    fail_d2tL  :: 
-		PrelBase.(){-40,p-}
-	    {-# L #-}
-	    fail_d2tL =
-		GHCerr.irrefutPatError{-8g,p-}
-		    _@_ PrelBase.(){-40,p-}
-		    _string_ "ds020.hs:5|(PrelBase.[], PrelBase.[], PrelBase.[])"
-	  } in 
-	    case
-		ds_d2tK
-	    of {
-	    PrelTup.(,,){-63,p-}{i} ds_d2tU ds_d2tW ds_d2tV  ->
-	    case ds_d2tU of {
-	      PrelBase.:{-55,p-}{i} ds_d2u4 ds_d2u3 ->
-		  fail_d2tL;
-	      PrelBase.[]{-5i,p-}{i} ->
-		  case ds_d2tW of {
-		    PrelBase.:{-55,p-}{i} ds_d2ui ds_d2uh ->
-			fail_d2tL;
-		    PrelBase.[]{-5i,p-}{i} ->
-			case ds_d2tV of {
-			  PrelBase.:{-55,p-}{i} ds_d2uw ds_d2uv ->
-			      fail_d2tL;
-			  PrelBase.[]{-5i,p-}{i} ->
-			      PrelBase.(){-60,p-}{i}
-				  {};
-			};
-		  };
-	    };}
-	} in
-	PrelBase.[]{-5i,p-}{i}
-	    _@_ t{-a1at-}
+==_a1zR =
+    PrelBase.=={-8Y,p-} _@_ PrelBase.Int{-3g,W-} d.Eq_a14Y
+lit_a1zS  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1zS =
+    PrelBase.I#{-5b,w-}{i} 2
+lit_a1zT  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1zT =
+    PrelBase.I#{-5b,w-}{i} 4
+lit_a1zU  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1zU =
+    PrelBase.I#{-5b,w-}{i} 3
+d.Ord_a151  ::  {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Ord_a151 =
+    PrelBase.$d7{-rq3,p-}
+>_a1zV  ::  PrelBase.Int{-3g,W-}
+	    -> PrelBase.Int{-3g,W-}
+	    -> PrelBase.Bool{-34,W-}
+{-# L #-}
+>_a1zV =
+    PrelBase.>{-ruE,p-} _@_ PrelBase.Int{-3g,W-} d.Ord_a151
+lit_a1zW  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1zW =
+    lit_a1zU
+lit_a1zX  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1zX =
+    lit_a1zT
+lit_a1zY  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1zY =
+    PrelBase.I#{-5b,w-}{i} 5
+d.Ord_a154  ::  {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Ord_a154 =
+    d.Ord_a151
+<=_a1zZ  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+<=_a1zZ =
+    PrelBase.<={-ruD,p-} _@_ PrelBase.Int{-3g,W-} d.Ord_a154
+lit_a1A0  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1A0 =
+    lit_a1zS
+lit_a1A1  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1A1 =
+    lit_a1zU
+==_a1A2  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+==_a1A2 =
+    ==_a1zR
+lit_a1A3  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1A3 =
+    lit_a1zS
+lit_a1A4  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1A4 =
+    lit_a1zT
+lit_a1A5  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1A5 =
+    lit_a1zU
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds021.stderr b/ghc/tests/deSugar/should_compile/ds021.stderr
index 2d6f67ac3c7a26ea22223abb6563c527f1209544..649c9b94637b958819da203c332356ca91c4dabb 100644
--- a/ghc/tests/deSugar/should_compile/ds021.stderr
+++ b/ghc/tests/deSugar/should_compile/ds021.stderr
@@ -5,77 +5,53 @@ ds021.hs:8:
 
 ================================================================================
 Desugared:
-f{-r3i,x-}  :: 
-    _forall_
-    [rlg{-aG9-} t{-aGm-}]
-    =>
-    {PrelBase.Eq{-23,p-} rlg{-aG9-}}
-    -> rlg{-aG9-}
-    -> rlg{-aG9-}
-    -> rlg{-aG9-}
-    -> [t{-aGm-}]
+Rec {
+f{-r3g,x-}  ::  _forall_
+		[taBa taBj]
+		=>
+		{PrelBase.Eq{-23,p-} taBa} -> taBa -> taBa -> taBa -> [taBj]
 {-# L #-}
-f{-r3i,x-} =
-    _/\_ rlg{-aG9-} t{-aGm-} -> \ d.Eq_aGr  :: 
-				      {PrelBase.Eq{-23,p-} rlg{-aG9-}}
-				  {-# L #-}
-				  d.Eq_aGr ->
-	let {
-	  ==_aIv  :: 
-	      rlg{-aG9-} -> rlg{-aG9-} -> PrelBase.Bool{-34,p-}
+f{-r3g,x-} =
+    _/\_ taBa taBj -> \ d.Eq_aBl  ::  {PrelBase.Eq{-23,p-} taBa}
+			{-# L #-}
+			d.Eq_aBl ->
+	_letrec_ {
+	  ==_aDt  ::  taBa -> taBa -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  ==_aIv =
-	      PrelBase.=={-8Y,p-}
-		  _@_ rlg{-aG9-} d.Eq_aGr } in
-	let {
-	  d.Eq_aGt  :: 
-	      {PrelBase.Eq{-23,p-} rlg{-aG9-}}
+	  ==_aDt =
+	      PrelBase.=={-8Y,p-} _@_ taBa d.Eq_aBl;
+	  d.Eq_aBn  ::  {PrelBase.Eq{-23,p-} taBa}
 	  {-# L #-}
-	  d.Eq_aGt =
-	      d.Eq_aGr } in
-	let {
-	  /=_aIu  :: 
-	      rlg{-aG9-} -> rlg{-aG9-} -> PrelBase.Bool{-34,p-}
+	  d.Eq_aBn =
+	      d.Eq_aBl;
+	  /=_aDA  ::  taBa -> taBa -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  /=_aIu =
-	      PrelBase./={-ray,p-}
-		  _@_ rlg{-aG9-} d.Eq_aGt
-	} in 
-	  \ x_r3d  :: 
-		rlg{-aG9-}
-	    {-# L #-}
-	    x_r3d y_r3f  :: 
-		      rlg{-aG9-}
-		  {-# L #-}
-		  y_r3f z_r3h  :: 
-			    rlg{-aG9-}
-			{-# L #-}
-			z_r3h ->
-	      let {
-		fail_dJa  :: 
-		    [t{-aGm-}]
+	  /=_aDA =
+	      PrelBase./={-r9I,p-} _@_ taBa d.Eq_aBn;
+	  f_aAK  ::  taBa -> taBa -> taBa -> [taBj]
+	  {-# L #-}
+	  f_aAK =
+	      \ x_r3d  ::  taBa
 		{-# L #-}
-		fail_dJa =
-		    GHCerr.patError{-8r,p-}
-			_@_ [t{-aGm-}] _string_ "ds021.hs:5|function `f'"
-	      } in 
-		case
-		    ==_aIv
-			x_r3d y_r3f
-		of {
-		  PrelBase.True{-5E,p-}{i} ->
-		      PrelBase.[]{-5i,p-}{i}
-			  _@_ t{-aGm-};
-		  PrelBase.False{-58,p-}{i} ->
-		      case
-			  /=_aIu
-			      x_r3d z_r3h
-		      of {
-			PrelBase.True{-5E,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-aGm-};
-			PrelBase.False{-58,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-aGm-};
-		      };
-		}
+		x_r3d y_r3e  ::  taBa
+		      {-# L #-}
+		      y_r3e z_r3f  ::  taBa
+			    {-# L #-}
+			    z_r3f ->
+		  let {
+		    fail_dEl  ::  [taBj]
+		    {-# L #-}
+		    fail_dEl =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taBj] _string_ "ds021.hs:5|function `f'"
+		  } in 
+		    case ==_aDt x_r3d y_r3e of {
+		      PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taBj;
+		      PrelBase.False{-58,w-}{i} ->
+			  case /=_aDA x_r3d z_r3f of {
+			    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taBj;
+			    PrelBase.False{-58,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taBj;
+			  };
+		    };
+	} in  f_aAK
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds022.stderr b/ghc/tests/deSugar/should_compile/ds022.stderr
index 98f3a0680e1920c40ee4eae8c3a6ac19847829e6..38b9fa3dfbce48df1762ad7fa2b39f7fb280b1cd 100644
--- a/ghc/tests/deSugar/should_compile/ds022.stderr
+++ b/ghc/tests/deSugar/should_compile/ds022.stderr
@@ -1,3 +1,12 @@
+ds022.hs:5: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `f'
+ds022.hs:10: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `g'
+ds022.hs:15: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `h'
 ds022.hs:22: 
     Warning: Pattern match(es) completely overlapped
 	in the definition of function `i'
@@ -7,1015 +16,660 @@ ds022.hs:23:
 ds022.hs:20: 
     Warning: Possibly incomplete patterns
 	in the definition of function `i'
-ds022.hs:15: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `h'
-ds022.hs:10: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `g'
-ds022.hs:5: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `f'
 
 
 ================================================================================
 Desugared:
 Rec {
-d.Eq_a13W  :: 
-    {PrelBase.Eq{-23,p-} PrelBase.Char{-38,p-}}
-{-# L #-}
-d.Eq_a13W =
-    PrelBase.$d33{-rbH,p-}
-d.Eq_a13U  :: 
-    {PrelBase.Eq{-23,p-} [PrelBase.Char{-38,p-}]}
-{-# L #-}
-d.Eq_a13U =
-    PrelBase.$d27{-rbA,p-}
-	_@_ PrelBase.Char{-38,p-} d.Eq_a13W
-==_a1pN  :: 
-    [PrelBase.Char{-38,p-}]
-    -> [PrelBase.Char{-38,p-}]
-    -> PrelBase.Bool{-34,p-}
+i{-r3s,x-}  ::  _forall_
+		[taUw taUD taVd]
+		=>
+		{PrelNum.Fractional{-26,p-} taUD}
+		-> {PrelBase.Num{-2c,p-} taUw}
+		-> taUw
+		-> taUD
+		-> [taVd]
 {-# L #-}
-==_a1pN =
-    PrelBase.=={-8Y,p-}
-	_@_ [PrelBase.Char{-38,p-}] d.Eq_a13U
-i{-r3E,x-}  :: 
-    _forall_
-    [t{-a11b-} t{-a11f-} t{-a11j-}]
-    =>
-    {PrelNum.Fractional{-26,p-} t{-a11f-}}
-    -> {PrelBase.Num{-2c,p-} t{-a11b-}}
-    -> t{-a11b-}
-    -> t{-a11f-}
-    -> [t{-a11j-}]
-{-# L #-}
-i{-r3E,x-} =
-    _/\_ t{-a11b-} t{-a11f-} t{-a11j-} -> \ d.Fractional_a11r  :: 
-						{PrelNum.Fractional{-26,p-} t{-a11f-}}
-					    {-# L #-}
-					    d.Fractional_a11r d.Num_a11m  :: 
-								  {PrelBase.Num{-2c,p-} t{-a11b-}}
-							      {-# L #-}
-							      d.Num_a11m ->
-	let {
-	  d.Eq_a11o  :: 
-	      {PrelBase.Eq{-23,p-} t{-a11b-}}
-	  {-# L #-}
-	  d.Eq_a11o =
-	      PrelBase.scsel_NumPrelBaseEq{-a1rD,p-}
-		  _@_ t{-a11b-} d.Num_a11m } in
-	let {
-	  d.Num_a13X  :: 
-	      {PrelBase.Num{-2c,p-} t{-a11f-}}
-	  {-# L #-}
-	  d.Num_a13X =
-	      PrelNum.scsel_FractionalPrelBaseNum{-a1rM,p-}
-		  _@_ t{-a11f-} d.Fractional_a11r } in
-	let {
-	  d.Eq_a11t  :: 
-	      {PrelBase.Eq{-23,p-} t{-a11f-}}
-	  {-# L #-}
-	  d.Eq_a11t =
-	      PrelBase.scsel_NumPrelBaseEq{-a1rD,p-}
-		  _@_ t{-a11f-} d.Num_a13X } in
-	let {
-	  fromInt_a1rt  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a11b-}
-	  {-# L #-}
-	  fromInt_a1rt =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-a11b-} d.Num_a11m } in
-	let { lit_a1rs  :: 
-		  t{-a11b-}
-	      {-# L #-}
-	      lit_a1rs =
-	  let {
-	    ds_d1s9  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1s9 =
-		PrelBase.I#{-5b,p-}{i}
-		    1
-	  } in 
-	    fromInt_a1rt
-		ds_d1s9
-	} in
-	let {
-	  ==_a1rr  :: 
-	      t{-a11b-} -> t{-a11b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1rr =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a11b-} d.Eq_a11o } in
-	let {
-	  fromRational_a1rq  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a11f-}
-	  {-# L #-}
-	  fromRational_a1rq =
-	      PrelNum.fromRational{-8T,p-}
-		  _@_ t{-a11f-} d.Fractional_a11r } in
-	let {
-	  lit_a1rp  :: 
-	      t{-a11f-}
-	  {-# L #-}
-	  lit_a1rp =
-	      fromRational_a1rq
-		  _rational_  11 10 } in
-	let {
-	  ==_a1ro  :: 
-	      t{-a11f-} -> t{-a11f-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1ro =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a11f-} d.Eq_a11t } in
-	let {
-	  fromInt_a1rn  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a11b-}
-	  {-# L #-}
-	  fromInt_a1rn =
-	      fromInt_a1rt } in
-	let { lit_a1rm  :: 
-		  t{-a11b-}
-	      {-# L #-}
-	      lit_a1rm =
-	  let {
-	    ds_d1sR  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1sR =
-		PrelBase.I#{-5b,p-}{i}
-		    2
-	  } in 
-	    fromInt_a1rn
-		ds_d1sR
-	} in
-	let {
-	  ==_a1rl  :: 
-	      t{-a11b-} -> t{-a11b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1rl =
-	      ==_a1rr } in
-	let {
-	  fromRational_a1rk  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a11f-}
-	  {-# L #-}
-	  fromRational_a1rk =
-	      fromRational_a1rq } in
-	let {
-	  lit_a1rj  :: 
-	      t{-a11f-}
-	  {-# L #-}
-	  lit_a1rj =
-	      fromRational_a1rk
-		  _rational_  11 5 } in
-	let {
-	  ==_a1ri  :: 
-	      t{-a11f-} -> t{-a11f-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1ri =
-	      ==_a1ro } in
-	let {
-	  lit_a1rh  :: 
-	      t{-a11b-}
-	  {-# L #-}
-	  lit_a1rh =
-	      lit_a1rs } in
-	let {
-	  ==_a1rg  :: 
-	      t{-a11b-} -> t{-a11b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1rg =
-	      ==_a1rr } in
-	let {
-	  lit_a1rf  :: 
-	      t{-a11f-}
-	  {-# L #-}
-	  lit_a1rf =
-	      lit_a1rp } in
-	let {
-	  ==_a1re  :: 
-	      t{-a11f-} -> t{-a11f-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1re =
-	      ==_a1ro } in
-	let {
-	  lit_a1rd  :: 
-	      t{-a11b-}
-	  {-# L #-}
-	  lit_a1rd =
-	      lit_a1rm } in
-	let {
-	  ==_a1rc  :: 
-	      t{-a11b-} -> t{-a11b-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1rc =
-	      ==_a1rr } in
-	let {
-	  lit_a1rb  :: 
-	      t{-a11f-}
-	  {-# L #-}
-	  lit_a1rb =
-	      lit_a1rj } in
-	let {
-	  ==_a1ra  :: 
-	      t{-a11f-} -> t{-a11f-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1ra =
-	      ==_a1ro
-	} in 
-	  \ ds_d1tC  :: 
-		t{-a11b-}
-	    {-# L #-}
-	    ds_d1tC ds_d1tF  :: 
-			t{-a11f-}
-		    {-# L #-}
-		    ds_d1tF ->
+i{-r3s,x-} =
+    _/\_ taUw taUD taVd -> \ d.Fractional_aVl  ::  {PrelNum.Fractional{-26,p-} taUD}
+			     {-# L #-}
+			     d.Fractional_aVl d.Num_aVg  ::  {PrelBase.Num{-2c,p-} taUw}
+					      {-# L #-}
+					      d.Num_aVg ->
+	_letrec_ {
+	  d.Eq_aVi  ::  {PrelBase.Eq{-23,p-} taUw}
+	  {-# L #-}
+	  d.Eq_aVi =
+	      PrelBase.scsel_NumPrelBaseEq{-a1ls,p-} _@_ taUw d.Num_aVg;
+	  d.Num_aY9  ::  {PrelBase.Num{-2c,p-} taUD}
+	  {-# L #-}
+	  d.Num_aY9 =
+	      PrelNum.scsel_FractionalPrelBaseNum{-a1nt,p-}
+		  _@_ taUD d.Fractional_aVl;
+	  d.Eq_aVn  ::  {PrelBase.Eq{-23,p-} taUD}
+	  {-# L #-}
+	  d.Eq_aVn =
+	      PrelBase.scsel_NumPrelBaseEq{-a1ls,p-} _@_ taUD d.Num_aY9;
+	  fromInt_a1l6  ::  PrelBase.Int{-3g,W-} -> taUw
+	  {-# L #-}
+	  fromInt_a1l6 =
+	      PrelBase.fromInt{-8R,p-} _@_ taUw d.Num_aVg;
+	  lit_a1l7  ::  taUw
+	  {-# L #-}
+	  lit_a1l7 =
 	      let {
-		fail_d1tG  :: 
-		    [t{-a11j-}]
+		ds_d1nQ  ::  PrelBase.Int{-3g,W-}
 		{-# L #-}
-		fail_d1tG =
-		    GHCerr.patError{-8r,p-}
-			_@_ [t{-a11j-}] _string_ "ds022.hs:20|function `i'" } in
+		ds_d1nQ =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_a1l6 ds_d1nQ;
+	  ==_a1l8  ::  taUw -> taUw -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1l8 =
+	      PrelBase.=={-8Y,p-} _@_ taUw d.Eq_aVi;
+	  fromRational_a1l9  ::  PrelNum.Rational{-3r,p-} -> taUD
+	  {-# L #-}
+	  fromRational_a1l9 =
+	      PrelNum.fromRational{-8T,p-} _@_ taUD d.Fractional_aVl;
+	  lit_a1la  ::  taUD
+	  {-# L #-}
+	  lit_a1la =
+	      fromRational_a1l9 _rational_  11 10;
+	  ==_a1lb  ::  taUD -> taUD -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1lb =
+	      PrelBase.=={-8Y,p-} _@_ taUD d.Eq_aVn;
+	  fromInt_a1lc  ::  PrelBase.Int{-3g,W-} -> taUw
+	  {-# L #-}
+	  fromInt_a1lc =
+	      fromInt_a1l6;
+	  lit_a1ld  ::  taUw
+	  {-# L #-}
+	  lit_a1ld =
 	      let {
-		fail_d1uo  :: 
-		    [t{-a11j-}]
+		ds_d1oy  ::  PrelBase.Int{-3g,W-}
 		{-# L #-}
-		fail_d1uo =
-		    case
-			==_a1rl
-			    lit_a1rm ds_d1tC
-		    of {
-		      PrelBase.True{-5E,p-}{i} ->
-			  case
-			      ==_a1ri
-				  lit_a1rj ds_d1tF
-			  of {
-			    PrelBase.True{-5E,p-}{i} ->
-				PrelBase.[]{-5i,p-}{i}
-				    _@_ t{-a11j-};
-			    PrelBase.False{-58,p-}{i} ->
-				fail_d1tG;
-			  };
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1tG;
-		    }
-	      } in 
-		case
-		    ==_a1rr
-			lit_a1rs ds_d1tC
-		of {
-		  PrelBase.True{-5E,p-}{i} ->
-		      case
-			  ==_a1ro
-			      lit_a1rp ds_d1tF
-		      of {
-			PrelBase.True{-5E,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-a11j-};
-			PrelBase.False{-58,p-}{i} ->
-			    fail_d1uo;
-		      };
-		  PrelBase.False{-58,p-}{i} ->
-		      fail_d1uo;
-		}
-h{-r3F,x-}  :: 
-    _forall_
-    [t{-a11Q-}]
-    =>
-    PrelBase.Char{-38,p-} -> [PrelBase.Char{-38,p-}] -> [t{-a11Q-}]
-{-# L #-}
-h{-r3F,x-} =
-    _/\_ t{-a11Q-} ->
-	let {
-	  ==_a1v3  :: 
-	      [PrelBase.Char{-38,p-}]
-	      -> [PrelBase.Char{-38,p-}]
-	      -> PrelBase.Bool{-34,p-}
+		ds_d1oy =
+		    PrelBase.I#{-5b,w-}{i} 2
+	      } in  fromInt_a1lc ds_d1oy;
+	  ==_a1le  ::  taUw -> taUw -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  ==_a1v3 =
-	      ==_a1pN
-	} in 
-	  \ ds_d1vj  :: 
-		PrelBase.Char{-38,p-}
-	    {-# L #-}
-	    ds_d1vj ds_d1vk  :: 
-			[PrelBase.Char{-38,p-}]
-		    {-# L #-}
-		    ds_d1vk ->
-	      let {
-		fail_d1vl  :: 
-		    [t{-a11Q-}]
+	  ==_a1le =
+	      ==_a1l8;
+	  fromRational_a1lf  ::  PrelNum.Rational{-3r,p-} -> taUD
+	  {-# L #-}
+	  fromRational_a1lf =
+	      fromRational_a1l9;
+	  lit_a1lg  ::  taUD
+	  {-# L #-}
+	  lit_a1lg =
+	      fromRational_a1lf _rational_  11 5;
+	  ==_a1lh  ::  taUD -> taUD -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1lh =
+	      ==_a1lb;
+	  lit_a1li  ::  taUw
+	  {-# L #-}
+	  lit_a1li =
+	      lit_a1l7;
+	  ==_a1lj  ::  taUw -> taUw -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1lj =
+	      ==_a1l8;
+	  lit_a1lk  ::  taUD
+	  {-# L #-}
+	  lit_a1lk =
+	      lit_a1la;
+	  ==_a1ll  ::  taUD -> taUD -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1ll =
+	      ==_a1lb;
+	  lit_a1lm  ::  taUw
+	  {-# L #-}
+	  lit_a1lm =
+	      lit_a1ld;
+	  ==_a1ln  ::  taUw -> taUw -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1ln =
+	      ==_a1l8;
+	  lit_a1lo  ::  taUD
+	  {-# L #-}
+	  lit_a1lo =
+	      lit_a1lg;
+	  ==_a1lp  ::  taUD -> taUD -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1lp =
+	      ==_a1lb;
+	  i_aUr  ::  taUw -> taUD -> [taVd]
+	  {-# L #-}
+	  i_aUr =
+	      \ ds_d1pk  ::  taUw
 		{-# L #-}
-		fail_d1vl =
-		    GHCerr.patError{-8r,p-}
-			_@_ [t{-a11Q-}] _string_ "ds022.hs:15|function `h'"
-	      } in 
-		case ds_d1vj of { PrelBase.C#{-54,p-}{i} ds_d1vu  ->
-		case# ds_d1vu of {
-		  'a' ->
-		      case ds_d1vk of {
-			PrelBase.:{-55,p-}{i} ds_d1vK ds_d1vJ ->
-			    fail_d1vl;
-			PrelBase.[]{-5i,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-a11Q-};
-		      };
-		  ''' ->
-		      case
-			  ==_a1v3
-			      _string_ "foo" ds_d1vk
-		      of {
-			PrelBase.True{-5E,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-a11Q-};
-			PrelBase.False{-58,p-}{i} ->
-			    fail_d1vl;
-		      };
-		  '"' ->
-		      case ds_d1vk of {
-			PrelBase.[]{-5i,p-}{i} ->
-			    fail_d1vl;
-			PrelBase.:{-55,p-}{i} ds_d1wC ds_d1wD ->
-			    case ds_d1wC of { PrelBase.C#{-54,p-}{i} ds_d1wM  ->
-			    case# ds_d1wM of {
-			      'b' ->
-				  case ds_d1wD of {
-				    PrelBase.[]{-5i,p-}{i} ->
-					fail_d1vl;
-				    PrelBase.:{-55,p-}{i} ds_d1x7 ds_d1x8 ->
-					case ds_d1x7 of { PrelBase.C#{-54,p-}{i} ds_d1xh  ->
-					case# ds_d1xh of {
-					  'a' ->
-					      case ds_d1x8 of {
-						PrelBase.[]{-5i,p-}{i} ->
-						    fail_d1vl;
-						PrelBase.:{-55,p-}{i} ds_d1xC ds_d1xD ->
-						    case
-							ds_d1xC
-						    of {
-						    PrelBase.C#{-54,p-}{i} ds_d1xM  ->
-						    case# ds_d1xM of {
-						      'r' ->
-							  case ds_d1xD of {
-							    PrelBase.:{-55,p-}{i} ds_d1y2 ds_d1y1 ->
-								fail_d1vl;
-							    PrelBase.[]{-5i,p-}{i} ->
-								PrelBase.[]{-5i,p-}{i}
-								    _@_ t{-a11Q-};
-							  };
-						      ds_d1yd ->
-							  fail_d1vl;
-						    };};
-					      };
-					  ds_d1yg ->
-					      fail_d1vl;
-					};};
-				  };
-			      ds_d1yj ->
-				  fail_d1vl;
-			    };};
-		      };
-		  '¨' ->
-		      let {
-			blob_r3D  :: 
-			    [PrelBase.Char{-38,p-}]
+		ds_d1pk ds_d1pn  ::  taUD
 			{-# L #-}
-			blob_r3D =
-			    ds_d1vk
-		      } in 
-			PrelBase.[]{-5i,p-}{i}
-			    _@_ t{-a11Q-};
-		  ds_d1yx ->
-		      fail_d1vl;
-		};}
-g{-r3G,x-}  :: 
-    _forall_
-    [t{-a12s-} t{-a12w-} t{-a12A-}]
-    =>
-    {PrelNum.Fractional{-26,p-} t{-a12w-}}
-    -> {PrelBase.Num{-2c,p-} t{-a12s-}}
-    -> t{-a12s-}
-    -> t{-a12w-}
-    -> [t{-a12A-}]
-{-# L #-}
-g{-r3G,x-} =
-    _/\_ t{-a12s-} t{-a12w-} t{-a12A-} -> \ d.Fractional_a12I  :: 
-						{PrelNum.Fractional{-26,p-} t{-a12w-}}
-					    {-# L #-}
-					    d.Fractional_a12I d.Num_a12D  :: 
-								  {PrelBase.Num{-2c,p-} t{-a12s-}}
-							      {-# L #-}
-							      d.Num_a12D ->
-	let {
-	  d.Eq_a12F  :: 
-	      {PrelBase.Eq{-23,p-} t{-a12s-}}
-	  {-# L #-}
-	  d.Eq_a12F =
-	      PrelBase.scsel_NumPrelBaseEq{-a1rD,p-}
-		  _@_ t{-a12s-} d.Num_a12D } in
-	let {
-	  d.Num_a13Y  :: 
-	      {PrelBase.Num{-2c,p-} t{-a12w-}}
-	  {-# L #-}
-	  d.Num_a13Y =
-	      PrelNum.scsel_FractionalPrelBaseNum{-a1rM,p-}
-		  _@_ t{-a12w-} d.Fractional_a12I } in
-	let {
-	  d.Eq_a12K  :: 
-	      {PrelBase.Eq{-23,p-} t{-a12w-}}
-	  {-# L #-}
-	  d.Eq_a12K =
-	      PrelBase.scsel_NumPrelBaseEq{-a1rD,p-}
-		  _@_ t{-a12w-} d.Num_a13Y } in
-	let {
-	  fromInteger_a1zV  :: 
-	      PrelBase.Integer{-3h,p-} -> t{-a12s-}
-	  {-# L #-}
-	  fromInteger_a1zV =
-	      PrelBase.fromInteger{-8S,p-}
-		  _@_ t{-a12s-} d.Num_a12D } in
-	let {
-	  lit_a1zU  :: 
-	      t{-a12s-}
-	  {-# L #-}
-	  lit_a1zU =
-	      fromInteger_a1zV
-		  _integer_  11111111111111111111111 } in
-	let {
-	  ==_a1zT  :: 
-	      t{-a12s-} -> t{-a12s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zT =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a12s-} d.Eq_a12F } in
-	let {
-	  fromRational_a1zS  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a12w-}
-	  {-# L #-}
-	  fromRational_a1zS =
-	      PrelNum.fromRational{-8T,p-}
-		  _@_ t{-a12w-} d.Fractional_a12I } in
-	let {
-	  lit_a1zR  :: 
-	      t{-a12w-}
-	  {-# L #-}
-	  lit_a1zR =
-	      fromRational_a1zS
-		  _rational_  111111111111111111 100000000000000000 } in
-	let {
-	  ==_a1zQ  :: 
-	      t{-a12w-} -> t{-a12w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zQ =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a12w-} d.Eq_a12K } in
-	let {
-	  fromInteger_a1zP  :: 
-	      PrelBase.Integer{-3h,p-} -> t{-a12s-}
-	  {-# L #-}
-	  fromInteger_a1zP =
-	      fromInteger_a1zV } in
-	let {
-	  lit_a1zO  :: 
-	      t{-a12s-}
-	  {-# L #-}
-	  lit_a1zO =
-	      fromInteger_a1zP
-		  _integer_  22222222222222222222222 } in
-	let {
-	  ==_a1zN  :: 
-	      t{-a12s-} -> t{-a12s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zN =
-	      ==_a1zT } in
-	let {
-	  fromRational_a1zM  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a12w-}
-	  {-# L #-}
-	  fromRational_a1zM =
-	      fromRational_a1zS } in
-	let {
-	  lit_a1zL  :: 
-	      t{-a12w-}
-	  {-# L #-}
-	  lit_a1zL =
-	      fromRational_a1zM
-		  _rational_  111111111111111111 50000000000000000 } in
-	let {
-	  ==_a1zK  :: 
-	      t{-a12w-} -> t{-a12w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zK =
-	      ==_a1zQ } in
-	let {
-	  fromInteger_a1zJ  :: 
-	      PrelBase.Integer{-3h,p-} -> t{-a12s-}
-	  {-# L #-}
-	  fromInteger_a1zJ =
-	      fromInteger_a1zV } in
-	let {
-	  lit_a1zI  :: 
-	      t{-a12s-}
-	  {-# L #-}
-	  lit_a1zI =
-	      fromInteger_a1zJ
-		  _integer_  33333333333333333333333 } in
-	let {
-	  ==_a1zH  :: 
-	      t{-a12s-} -> t{-a12s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zH =
-	      ==_a1zT } in
-	let {
-	  fromRational_a1zG  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a12w-}
-	  {-# L #-}
-	  fromRational_a1zG =
-	      fromRational_a1zS } in
-	let {
-	  lit_a1zF  :: 
-	      t{-a12w-}
-	  {-# L #-}
-	  lit_a1zF =
-	      fromRational_a1zG
-		  _rational_  333333333333333333 100000000000000000 } in
-	let {
-	  ==_a1zE  :: 
-	      t{-a12w-} -> t{-a12w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zE =
-	      ==_a1zQ } in
-	let {
-	  fromInteger_a1zD  :: 
-	      PrelBase.Integer{-3h,p-} -> t{-a12s-}
-	  {-# L #-}
-	  fromInteger_a1zD =
-	      fromInteger_a1zV } in
-	let {
-	  lit_a1zC  :: 
-	      t{-a12s-}
-	  {-# L #-}
-	  lit_a1zC =
-	      fromInteger_a1zD
-		  _integer_  44444444444444444444444 } in
-	let {
-	  ==_a1zB  :: 
-	      t{-a12s-} -> t{-a12s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zB =
-	      ==_a1zT } in
-	let {
-	  fromRational_a1zA  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a12w-}
-	  {-# L #-}
-	  fromRational_a1zA =
-	      fromRational_a1zS } in
-	let {
-	  lit_a1zz  :: 
-	      t{-a12w-}
-	  {-# L #-}
-	  lit_a1zz =
-	      fromRational_a1zA
-		  _rational_  111111111111111111 25000000000000000 } in
-	let {
-	  ==_a1zy  :: 
-	      t{-a12w-} -> t{-a12w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1zy =
-	      ==_a1zQ
-	} in 
-	  \ ds_d1Cc  :: 
-		t{-a12s-}
-	    {-# L #-}
-	    ds_d1Cc ds_d1Cf  :: 
-			t{-a12w-}
-		    {-# L #-}
-		    ds_d1Cf ->
-	      let {
-		fail_d1Cg  :: 
-		    [t{-a12A-}]
-		{-# L #-}
-		fail_d1Cg =
-		    GHCerr.patError{-8r,p-}
-			_@_ [t{-a12A-}] _string_ "ds022.hs:10|function `g'" } in
-	      let { fail_d1Eo  :: 
-			[t{-a12A-}]
+			ds_d1pn ->
+		  let {
+		    fail_d1po  ::  [taVd]
 		    {-# L #-}
-		    fail_d1Eo =
-		let { fail_d1DG  :: 
-			  [t{-a12A-}]
-		      {-# L #-}
-		      fail_d1DG =
+		    fail_d1po =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taVd] _string_ "ds022.hs:20|function `i'" } in
 		  let {
-		    fail_d1CY  :: 
-			[t{-a12A-}]
+		    fail_d1q6  ::  [taVd]
 		    {-# L #-}
-		    fail_d1CY =
-			case
-			    ==_a1zB
-				lit_a1zC ds_d1Cc
-			of {
-			  PrelBase.True{-5E,p-}{i} ->
-			      case
-				  ==_a1zy
-				      lit_a1zz ds_d1Cf
-			      of {
-				PrelBase.True{-5E,p-}{i} ->
-				    PrelBase.[]{-5i,p-}{i}
-					_@_ t{-a12A-};
-				PrelBase.False{-58,p-}{i} ->
-				    fail_d1Cg;
+		    fail_d1q6 =
+			case ==_a1le lit_a1ld ds_d1pk of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      case ==_a1lh lit_a1lg ds_d1pn of {
+				PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taVd;
+				PrelBase.False{-58,w-}{i} -> fail_d1po;
 			      };
-			  PrelBase.False{-58,p-}{i} ->
-			      fail_d1Cg;
+			  PrelBase.False{-58,w-}{i} -> fail_d1po;
 			}
 		  } in 
-		    case
-			==_a1zH
-			    lit_a1zI ds_d1Cc
-		    of {
-		      PrelBase.True{-5E,p-}{i} ->
-			  case
-			      ==_a1zE
-				  lit_a1zF ds_d1Cf
-			  of {
-			    PrelBase.True{-5E,p-}{i} ->
-				PrelBase.[]{-5i,p-}{i}
-				    _@_ t{-a12A-};
-			    PrelBase.False{-58,p-}{i} ->
-				fail_d1CY;
+		    case ==_a1l8 lit_a1l7 ds_d1pk of {
+		      PrelBase.True{-5E,w-}{i} ->
+			  case ==_a1lb lit_a1la ds_d1pn of {
+			    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taVd;
+			    PrelBase.False{-58,w-}{i} -> fail_d1q6;
 			  };
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1CY;
-		    }
-		} in
-		case
-		    ==_a1zN
-			lit_a1zO ds_d1Cc
-		of {
-		  PrelBase.True{-5E,p-}{i} ->
-		      case
-			  ==_a1zK
-			      lit_a1zL ds_d1Cf
-		      of {
-			PrelBase.True{-5E,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-a12A-};
-			PrelBase.False{-58,p-}{i} ->
-			    fail_d1DG;
-		      };
-		  PrelBase.False{-58,p-}{i} ->
-		      fail_d1DG;
-		}
-	      } in
-	      case
-		  ==_a1zT
-		      lit_a1zU ds_d1Cc
-	      of {
-		PrelBase.True{-5E,p-}{i} ->
-		    case
-			==_a1zQ
-			    lit_a1zR ds_d1Cf
-		    of {
-		      PrelBase.True{-5E,p-}{i} ->
-			  PrelBase.[]{-5i,p-}{i}
-			      _@_ t{-a12A-};
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1Eo;
+		      PrelBase.False{-58,w-}{i} -> fail_d1q6;
 		    };
-		PrelBase.False{-58,p-}{i} ->
-		    fail_d1Eo;
-	      }
-f{-r3H,x-}  :: 
-    _forall_
-    [t{-a13s-} t{-a13w-} t{-a13A-}]
-    =>
-    {PrelNum.Fractional{-26,p-} t{-a13w-}}
-    -> {PrelBase.Num{-2c,p-} t{-a13s-}}
-    -> t{-a13s-}
-    -> t{-a13w-}
-    -> [t{-a13A-}]
+	} in  i_aUr
+h{-r3t,x-}  ::  _forall_
+		[taVQ]
+		=>
+		PrelBase.Char{-38,W-} -> [PrelBase.Char{-38,W-}] -> [taVQ]
 {-# L #-}
-f{-r3H,x-} =
-    _/\_ t{-a13s-} t{-a13w-} t{-a13A-} -> \ d.Fractional_a13I  :: 
-						{PrelNum.Fractional{-26,p-} t{-a13w-}}
-					    {-# L #-}
-					    d.Fractional_a13I d.Num_a13D  :: 
-								  {PrelBase.Num{-2c,p-} t{-a13s-}}
-							      {-# L #-}
-							      d.Num_a13D ->
-	let {
-	  d.Eq_a13F  :: 
-	      {PrelBase.Eq{-23,p-} t{-a13s-}}
-	  {-# L #-}
-	  d.Eq_a13F =
-	      PrelBase.scsel_NumPrelBaseEq{-a1rD,p-}
-		  _@_ t{-a13s-} d.Num_a13D } in
-	let {
-	  d.Num_a13Z  :: 
-	      {PrelBase.Num{-2c,p-} t{-a13w-}}
-	  {-# L #-}
-	  d.Num_a13Z =
-	      PrelNum.scsel_FractionalPrelBaseNum{-a1rM,p-}
-		  _@_ t{-a13w-} d.Fractional_a13I } in
-	let {
-	  d.Eq_a13K  :: 
-	      {PrelBase.Eq{-23,p-} t{-a13w-}}
-	  {-# L #-}
-	  d.Eq_a13K =
-	      PrelBase.scsel_NumPrelBaseEq{-a1rD,p-}
-		  _@_ t{-a13w-} d.Num_a13Z } in
-	let {
-	  fromInt_a1Gk  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a13s-}
-	  {-# L #-}
-	  fromInt_a1Gk =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-a13s-} d.Num_a13D } in
-	let { lit_a1Gj  :: 
-		  t{-a13s-}
-	      {-# L #-}
-	      lit_a1Gj =
-	  let {
-	    ds_d1GY  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1GY =
-		PrelBase.I#{-5b,p-}{i}
-		    1
-	  } in 
-	    fromInt_a1Gk
-		ds_d1GY
-	} in
-	let {
-	  ==_a1Gi  :: 
-	      t{-a13s-} -> t{-a13s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1Gi =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a13s-} d.Eq_a13F } in
-	let {
-	  fromRational_a1Gh  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a13w-}
-	  {-# L #-}
-	  fromRational_a1Gh =
-	      PrelNum.fromRational{-8T,p-}
-		  _@_ t{-a13w-} d.Fractional_a13I } in
-	let {
-	  lit_a1Gg  :: 
-	      t{-a13w-}
-	  {-# L #-}
-	  lit_a1Gg =
-	      fromRational_a1Gh
-		  _rational_  11 10 } in
-	let {
-	  ==_a1Gf  :: 
-	      t{-a13w-} -> t{-a13w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1Gf =
-	      PrelBase.=={-8Y,p-}
-		  _@_ t{-a13w-} d.Eq_a13K } in
-	let {
-	  fromInt_a1Ge  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a13s-}
-	  {-# L #-}
-	  fromInt_a1Ge =
-	      fromInt_a1Gk } in
-	let { lit_a1Gd  :: 
-		  t{-a13s-}
-	      {-# L #-}
-	      lit_a1Gd =
-	  let {
-	    ds_d1HG  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1HG =
-		PrelBase.I#{-5b,p-}{i}
-		    2
-	  } in 
-	    fromInt_a1Ge
-		ds_d1HG
-	} in
-	let {
-	  ==_a1Gc  :: 
-	      t{-a13s-} -> t{-a13s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1Gc =
-	      ==_a1Gi } in
-	let {
-	  fromRational_a1Gb  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a13w-}
-	  {-# L #-}
-	  fromRational_a1Gb =
-	      fromRational_a1Gh } in
-	let {
-	  lit_a1Ga  :: 
-	      t{-a13w-}
-	  {-# L #-}
-	  lit_a1Ga =
-	      fromRational_a1Gb
-		  _rational_  11 5 } in
-	let {
-	  ==_a1G9  :: 
-	      t{-a13w-} -> t{-a13w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1G9 =
-	      ==_a1Gf } in
-	let {
-	  fromInt_a1G8  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a13s-}
-	  {-# L #-}
-	  fromInt_a1G8 =
-	      fromInt_a1Gk } in
-	let { lit_a1G7  :: 
-		  t{-a13s-}
-	      {-# L #-}
-	      lit_a1G7 =
-	  let {
-	    ds_d1I3  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1I3 =
-		PrelBase.I#{-5b,p-}{i}
-		    3
-	  } in 
-	    fromInt_a1G8
-		ds_d1I3
-	} in
-	let {
-	  ==_a1G6  :: 
-	      t{-a13s-} -> t{-a13s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1G6 =
-	      ==_a1Gi } in
-	let {
-	  fromRational_a1G5  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a13w-}
-	  {-# L #-}
-	  fromRational_a1G5 =
-	      fromRational_a1Gh } in
-	let {
-	  lit_a1G4  :: 
-	      t{-a13w-}
-	  {-# L #-}
-	  lit_a1G4 =
-	      fromRational_a1G5
-		  _rational_  33 10 } in
-	let {
-	  ==_a1G3  :: 
-	      t{-a13w-} -> t{-a13w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1G3 =
-	      ==_a1Gf } in
-	let {
-	  fromInt_a1G2  :: 
-	      PrelBase.Int{-3g,p-} -> t{-a13s-}
-	  {-# L #-}
-	  fromInt_a1G2 =
-	      fromInt_a1Gk } in
-	let { lit_a1G1  :: 
-		  t{-a13s-}
-	      {-# L #-}
-	      lit_a1G1 =
-	  let {
-	    ds_d1Iq  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1Iq =
-		PrelBase.I#{-5b,p-}{i}
-		    4
-	  } in 
-	    fromInt_a1G2
-		ds_d1Iq
-	} in
-	let {
-	  ==_a1G0  :: 
-	      t{-a13s-} -> t{-a13s-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1G0 =
-	      ==_a1Gi } in
-	let {
-	  fromRational_a1FZ  :: 
-	      PrelNum.Rational{-3r,p-} -> t{-a13w-}
-	  {-# L #-}
-	  fromRational_a1FZ =
-	      fromRational_a1Gh } in
-	let {
-	  lit_a1FY  :: 
-	      t{-a13w-}
-	  {-# L #-}
-	  lit_a1FY =
-	      fromRational_a1FZ
-		  _rational_  22 5 } in
-	let {
-	  ==_a1FX  :: 
-	      t{-a13w-} -> t{-a13w-} -> PrelBase.Bool{-34,p-}
-	  {-# L #-}
-	  ==_a1FX =
-	      ==_a1Gf
-	} in 
-	  \ ds_d1Jb  :: 
-		t{-a13s-}
-	    {-# L #-}
-	    ds_d1Jb ds_d1Je  :: 
-			t{-a13w-}
+h{-r3t,x-} =
+    _/\_ taVQ ->
+	_letrec_ {
+	  ==_a1qR  ::  [PrelBase.Char{-38,W-}]
+		       -> [PrelBase.Char{-38,W-}]
+		       -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1qR =
+	      ==_a1l5;
+	  h_aVt  ::  PrelBase.Char{-38,W-}
+		     -> [PrelBase.Char{-38,W-}]
+		     -> [taVQ]
+	  {-# L #-}
+	  h_aVt =
+	      \ ds_d1rb  ::  PrelBase.Char{-38,W-}
+		{-# L #-}
+		ds_d1rb ds_d1rc  ::  [PrelBase.Char{-38,W-}]
+			{-# L #-}
+			ds_d1rc ->
+		  let {
+		    fail_d1rd  ::  [taVQ]
 		    {-# L #-}
-		    ds_d1Je ->
-	      let {
-		fail_d1Jf  :: 
-		    [t{-a13A-}]
+		    fail_d1rd =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taVQ] _string_ "ds022.hs:15|function `h'"
+		  } in 
+		    case ds_d1rb of { PrelBase.C#{-54,w-}{i} ds_d1rm  ->
+		    case# ds_d1rm of {
+		      'a' ->
+			  case ds_d1rc of {
+			    PrelBase.:{-55,w-}{i} ds_d1rB ds_d1rC -> fail_d1rd;
+			    PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taVQ;
+			  };
+		      ''' ->
+			  case ==_a1qR _string_ "foo" ds_d1rc of {
+			    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taVQ;
+			    PrelBase.False{-58,w-}{i} -> fail_d1rd;
+			  };
+		      '"' ->
+			  case ds_d1rc of {
+			    PrelBase.[]{-5i,w-}{i} -> fail_d1rd;
+			    PrelBase.:{-55,w-}{i} ds_d1su ds_d1sv ->
+				case ds_d1su of { PrelBase.C#{-54,w-}{i} ds_d1sE  ->
+				case# ds_d1sE of {
+				  'b' ->
+				      case ds_d1sv of {
+					PrelBase.[]{-5i,w-}{i} -> fail_d1rd;
+					PrelBase.:{-55,w-}{i} ds_d1sZ ds_d1t0 ->
+					    case ds_d1sZ of { PrelBase.C#{-54,w-}{i} ds_d1t9  ->
+					    case# ds_d1t9 of {
+					      'a' ->
+						  case ds_d1t0 of {
+						    PrelBase.[]{-5i,w-}{i} -> fail_d1rd;
+						    PrelBase.:{-55,w-}{i} ds_d1tu ds_d1tv ->
+							case
+							    ds_d1tu
+							of {
+							PrelBase.C#{-54,w-}{i} ds_d1tE  ->
+							case# ds_d1tE of {
+							  'r' ->
+							      case ds_d1tv of {
+								PrelBase.:{-55,w-}{i} ds_d1tT ds_d1tU ->
+								    fail_d1rd;
+								PrelBase.[]{-5i,w-}{i} ->
+								    PrelBase.[]{-5i,w-}{i} _@_ taVQ;
+							      };
+							  ds_d1u5 -> fail_d1rd;
+							};};
+						  };
+					      ds_d1u8 -> fail_d1rd;
+					    };};
+				      };
+				  ds_d1ub -> fail_d1rd;
+				};};
+			  };
+		      '¨' ->
+			  let {
+			    blob_r3r  ::  [PrelBase.Char{-38,W-}]
+			    {-# L #-}
+			    blob_r3r =
+				ds_d1rc
+			  } in  PrelBase.[]{-5i,w-}{i} _@_ taVQ;
+		      ds_d1up -> fail_d1rd;
+		    };};
+	} in  h_aVt
+g{-r3u,x-}  ::  _forall_
+		[taVZ taW6 taWG]
+		=>
+		{PrelNum.Fractional{-26,p-} taW6}
+		-> {PrelBase.Num{-2c,p-} taVZ}
+		-> taVZ
+		-> taW6
+		-> [taWG]
+{-# L #-}
+g{-r3u,x-} =
+    _/\_ taVZ taW6 taWG -> \ d.Fractional_aWO  ::  {PrelNum.Fractional{-26,p-} taW6}
+			     {-# L #-}
+			     d.Fractional_aWO d.Num_aWJ  ::  {PrelBase.Num{-2c,p-} taVZ}
+					      {-# L #-}
+					      d.Num_aWJ ->
+	_letrec_ {
+	  d.Eq_aWL  ::  {PrelBase.Eq{-23,p-} taVZ}
+	  {-# L #-}
+	  d.Eq_aWL =
+	      PrelBase.scsel_NumPrelBaseEq{-a1ls,p-} _@_ taVZ d.Num_aWJ;
+	  d.Num_aYa  ::  {PrelBase.Num{-2c,p-} taW6}
+	  {-# L #-}
+	  d.Num_aYa =
+	      PrelNum.scsel_FractionalPrelBaseNum{-a1nt,p-}
+		  _@_ taW6 d.Fractional_aWO;
+	  d.Eq_aWQ  ::  {PrelBase.Eq{-23,p-} taW6}
+	  {-# L #-}
+	  d.Eq_aWQ =
+	      PrelBase.scsel_NumPrelBaseEq{-a1ls,p-} _@_ taW6 d.Num_aYa;
+	  fromInteger_a1uM  ::  PrelBase.Integer{-3h,W-} -> taVZ
+	  {-# L #-}
+	  fromInteger_a1uM =
+	      PrelBase.fromInteger{-8S,p-} _@_ taVZ d.Num_aWJ;
+	  lit_a1uN  ::  taVZ
+	  {-# L #-}
+	  lit_a1uN =
+	      fromInteger_a1uM _integer_  11111111111111111111111;
+	  ==_a1uO  ::  taVZ -> taVZ -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1uO =
+	      PrelBase.=={-8Y,p-} _@_ taVZ d.Eq_aWL;
+	  fromRational_a1uP  ::  PrelNum.Rational{-3r,p-} -> taW6
+	  {-# L #-}
+	  fromRational_a1uP =
+	      PrelNum.fromRational{-8T,p-} _@_ taW6 d.Fractional_aWO;
+	  lit_a1uQ  ::  taW6
+	  {-# L #-}
+	  lit_a1uQ =
+	      fromRational_a1uP
+		  _rational_  111111111111111111 100000000000000000;
+	  ==_a1uR  ::  taW6 -> taW6 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1uR =
+	      PrelBase.=={-8Y,p-} _@_ taW6 d.Eq_aWQ;
+	  fromInteger_a1uS  ::  PrelBase.Integer{-3h,W-} -> taVZ
+	  {-# L #-}
+	  fromInteger_a1uS =
+	      fromInteger_a1uM;
+	  lit_a1uT  ::  taVZ
+	  {-# L #-}
+	  lit_a1uT =
+	      fromInteger_a1uS _integer_  22222222222222222222222;
+	  ==_a1uU  ::  taVZ -> taVZ -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1uU =
+	      ==_a1uO;
+	  fromRational_a1uV  ::  PrelNum.Rational{-3r,p-} -> taW6
+	  {-# L #-}
+	  fromRational_a1uV =
+	      fromRational_a1uP;
+	  lit_a1uW  ::  taW6
+	  {-# L #-}
+	  lit_a1uW =
+	      fromRational_a1uV _rational_  111111111111111111 50000000000000000;
+	  ==_a1uX  ::  taW6 -> taW6 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1uX =
+	      ==_a1uR;
+	  fromInteger_a1uY  ::  PrelBase.Integer{-3h,W-} -> taVZ
+	  {-# L #-}
+	  fromInteger_a1uY =
+	      fromInteger_a1uM;
+	  lit_a1uZ  ::  taVZ
+	  {-# L #-}
+	  lit_a1uZ =
+	      fromInteger_a1uY _integer_  33333333333333333333333;
+	  ==_a1v0  ::  taVZ -> taVZ -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1v0 =
+	      ==_a1uO;
+	  fromRational_a1v1  ::  PrelNum.Rational{-3r,p-} -> taW6
+	  {-# L #-}
+	  fromRational_a1v1 =
+	      fromRational_a1uP;
+	  lit_a1v2  ::  taW6
+	  {-# L #-}
+	  lit_a1v2 =
+	      fromRational_a1v1
+		  _rational_  333333333333333333 100000000000000000;
+	  ==_a1v3  ::  taW6 -> taW6 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1v3 =
+	      ==_a1uR;
+	  fromInteger_a1v4  ::  PrelBase.Integer{-3h,W-} -> taVZ
+	  {-# L #-}
+	  fromInteger_a1v4 =
+	      fromInteger_a1uM;
+	  lit_a1v5  ::  taVZ
+	  {-# L #-}
+	  lit_a1v5 =
+	      fromInteger_a1v4 _integer_  44444444444444444444444;
+	  ==_a1v6  ::  taVZ -> taVZ -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1v6 =
+	      ==_a1uO;
+	  fromRational_a1v7  ::  PrelNum.Rational{-3r,p-} -> taW6
+	  {-# L #-}
+	  fromRational_a1v7 =
+	      fromRational_a1uP;
+	  lit_a1v8  ::  taW6
+	  {-# L #-}
+	  lit_a1v8 =
+	      fromRational_a1v7 _rational_  111111111111111111 25000000000000000;
+	  ==_a1v9  ::  taW6 -> taW6 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1v9 =
+	      ==_a1uR;
+	  g_aVU  ::  taVZ -> taW6 -> [taWG]
+	  {-# L #-}
+	  g_aVU =
+	      \ ds_d1z4  ::  taVZ
 		{-# L #-}
-		fail_d1Jf =
-		    GHCerr.patError{-8r,p-}
-			_@_ [t{-a13A-}] _string_ "ds022.hs:5|function `f'" } in
-	      let { fail_d1Ln  :: 
-			[t{-a13A-}]
+		ds_d1z4 ds_d1z7  ::  taW6
+			{-# L #-}
+			ds_d1z7 ->
+		  let {
+		    fail_d1z8  ::  [taWG]
 		    {-# L #-}
-		    fail_d1Ln =
-		let { fail_d1KF  :: 
-			  [t{-a13A-}]
-		      {-# L #-}
-		      fail_d1KF =
+		    fail_d1z8 =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taWG] _string_ "ds022.hs:10|function `g'" } in
+		  let { fail_d1Bg  ::  [taWG]
+			{-# L #-}
+			fail_d1Bg =
+		    let { fail_d1Ay  ::  [taWG]
+			  {-# L #-}
+			  fail_d1Ay =
+		      let {
+			fail_d1zQ  ::  [taWG]
+			{-# L #-}
+			fail_d1zQ =
+			    case ==_a1v6 lit_a1v5 ds_d1z4 of {
+			      PrelBase.True{-5E,w-}{i} ->
+				  case ==_a1v9 lit_a1v8 ds_d1z7 of {
+				    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taWG;
+				    PrelBase.False{-58,w-}{i} -> fail_d1z8;
+				  };
+			      PrelBase.False{-58,w-}{i} -> fail_d1z8;
+			    }
+		      } in 
+			case ==_a1v0 lit_a1uZ ds_d1z4 of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      case ==_a1v3 lit_a1v2 ds_d1z7 of {
+				PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taWG;
+				PrelBase.False{-58,w-}{i} -> fail_d1zQ;
+			      };
+			  PrelBase.False{-58,w-}{i} -> fail_d1zQ;
+			}
+		    } in
+		    case ==_a1uU lit_a1uT ds_d1z4 of {
+		      PrelBase.True{-5E,w-}{i} ->
+			  case ==_a1uX lit_a1uW ds_d1z7 of {
+			    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taWG;
+			    PrelBase.False{-58,w-}{i} -> fail_d1Ay;
+			  };
+		      PrelBase.False{-58,w-}{i} -> fail_d1Ay;
+		    }
+		  } in
+		  case ==_a1uO lit_a1uN ds_d1z4 of {
+		    PrelBase.True{-5E,w-}{i} ->
+			case ==_a1uR lit_a1uQ ds_d1z7 of {
+			  PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taWG;
+			  PrelBase.False{-58,w-}{i} -> fail_d1Bg;
+			};
+		    PrelBase.False{-58,w-}{i} -> fail_d1Bg;
+		  };
+	} in  g_aVU
+f{-r3v,x-}  ::  _forall_
+		[taX5 taXc taXM]
+		=>
+		{PrelNum.Fractional{-26,p-} taXc}
+		-> {PrelBase.Num{-2c,p-} taX5}
+		-> taX5
+		-> taXc
+		-> [taXM]
+{-# L #-}
+f{-r3v,x-} =
+    _/\_ taX5 taXc taXM -> \ d.Fractional_aXU  ::  {PrelNum.Fractional{-26,p-} taXc}
+			     {-# L #-}
+			     d.Fractional_aXU d.Num_aXP  ::  {PrelBase.Num{-2c,p-} taX5}
+					      {-# L #-}
+					      d.Num_aXP ->
+	_letrec_ {
+	  d.Eq_aXR  ::  {PrelBase.Eq{-23,p-} taX5}
+	  {-# L #-}
+	  d.Eq_aXR =
+	      PrelBase.scsel_NumPrelBaseEq{-a1ls,p-} _@_ taX5 d.Num_aXP;
+	  d.Num_aYb  ::  {PrelBase.Num{-2c,p-} taXc}
+	  {-# L #-}
+	  d.Num_aYb =
+	      PrelNum.scsel_FractionalPrelBaseNum{-a1nt,p-}
+		  _@_ taXc d.Fractional_aXU;
+	  d.Eq_aXW  ::  {PrelBase.Eq{-23,p-} taXc}
+	  {-# L #-}
+	  d.Eq_aXW =
+	      PrelBase.scsel_NumPrelBaseEq{-a1ls,p-} _@_ taXc d.Num_aYb;
+	  fromInt_a1Cb  ::  PrelBase.Int{-3g,W-} -> taX5
+	  {-# L #-}
+	  fromInt_a1Cb =
+	      PrelBase.fromInt{-8R,p-} _@_ taX5 d.Num_aXP;
+	  lit_a1Cc  ::  taX5
+	  {-# L #-}
+	  lit_a1Cc =
+	      let {
+		ds_d1EP  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1EP =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_a1Cb ds_d1EP;
+	  ==_a1Cd  ::  taX5 -> taX5 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cd =
+	      PrelBase.=={-8Y,p-} _@_ taX5 d.Eq_aXR;
+	  fromRational_a1Ce  ::  PrelNum.Rational{-3r,p-} -> taXc
+	  {-# L #-}
+	  fromRational_a1Ce =
+	      PrelNum.fromRational{-8T,p-} _@_ taXc d.Fractional_aXU;
+	  lit_a1Cf  ::  taXc
+	  {-# L #-}
+	  lit_a1Cf =
+	      fromRational_a1Ce _rational_  11 10;
+	  ==_a1Cg  ::  taXc -> taXc -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cg =
+	      PrelBase.=={-8Y,p-} _@_ taXc d.Eq_aXW;
+	  fromInt_a1Ch  ::  PrelBase.Int{-3g,W-} -> taX5
+	  {-# L #-}
+	  fromInt_a1Ch =
+	      fromInt_a1Cb;
+	  lit_a1Ci  ::  taX5
+	  {-# L #-}
+	  lit_a1Ci =
+	      let {
+		ds_d1Fx  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1Fx =
+		    PrelBase.I#{-5b,w-}{i} 2
+	      } in  fromInt_a1Ch ds_d1Fx;
+	  ==_a1Cj  ::  taX5 -> taX5 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cj =
+	      ==_a1Cd;
+	  fromRational_a1Ck  ::  PrelNum.Rational{-3r,p-} -> taXc
+	  {-# L #-}
+	  fromRational_a1Ck =
+	      fromRational_a1Ce;
+	  lit_a1Cl  ::  taXc
+	  {-# L #-}
+	  lit_a1Cl =
+	      fromRational_a1Ck _rational_  11 5;
+	  ==_a1Cm  ::  taXc -> taXc -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cm =
+	      ==_a1Cg;
+	  fromInt_a1Cn  ::  PrelBase.Int{-3g,W-} -> taX5
+	  {-# L #-}
+	  fromInt_a1Cn =
+	      fromInt_a1Cb;
+	  lit_a1Co  ::  taX5
+	  {-# L #-}
+	  lit_a1Co =
+	      let {
+		ds_d1FU  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1FU =
+		    PrelBase.I#{-5b,w-}{i} 3
+	      } in  fromInt_a1Cn ds_d1FU;
+	  ==_a1Cp  ::  taX5 -> taX5 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cp =
+	      ==_a1Cd;
+	  fromRational_a1Cq  ::  PrelNum.Rational{-3r,p-} -> taXc
+	  {-# L #-}
+	  fromRational_a1Cq =
+	      fromRational_a1Ce;
+	  lit_a1Cr  ::  taXc
+	  {-# L #-}
+	  lit_a1Cr =
+	      fromRational_a1Cq _rational_  33 10;
+	  ==_a1Cs  ::  taXc -> taXc -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cs =
+	      ==_a1Cg;
+	  fromInt_a1Ct  ::  PrelBase.Int{-3g,W-} -> taX5
+	  {-# L #-}
+	  fromInt_a1Ct =
+	      fromInt_a1Cb;
+	  lit_a1Cu  ::  taX5
+	  {-# L #-}
+	  lit_a1Cu =
+	      let {
+		ds_d1Gh  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1Gh =
+		    PrelBase.I#{-5b,w-}{i} 4
+	      } in  fromInt_a1Ct ds_d1Gh;
+	  ==_a1Cv  ::  taX5 -> taX5 -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cv =
+	      ==_a1Cd;
+	  fromRational_a1Cw  ::  PrelNum.Rational{-3r,p-} -> taXc
+	  {-# L #-}
+	  fromRational_a1Cw =
+	      fromRational_a1Ce;
+	  lit_a1Cx  ::  taXc
+	  {-# L #-}
+	  lit_a1Cx =
+	      fromRational_a1Cw _rational_  22 5;
+	  ==_a1Cy  ::  taXc -> taXc -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1Cy =
+	      ==_a1Cg;
+	  f_aX0  ::  taX5 -> taXc -> [taXM]
+	  {-# L #-}
+	  f_aX0 =
+	      \ ds_d1H3  ::  taX5
+		{-# L #-}
+		ds_d1H3 ds_d1H6  ::  taXc
+			{-# L #-}
+			ds_d1H6 ->
 		  let {
-		    fail_d1JX  :: 
-			[t{-a13A-}]
+		    fail_d1H7  ::  [taXM]
 		    {-# L #-}
-		    fail_d1JX =
-			case
-			    ==_a1G0
-				lit_a1G1 ds_d1Jb
-			of {
-			  PrelBase.True{-5E,p-}{i} ->
-			      case
-				  ==_a1FX
-				      lit_a1FY ds_d1Je
-			      of {
-				PrelBase.True{-5E,p-}{i} ->
-				    PrelBase.[]{-5i,p-}{i}
-					_@_ t{-a13A-};
-				PrelBase.False{-58,p-}{i} ->
-				    fail_d1Jf;
+		    fail_d1H7 =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taXM] _string_ "ds022.hs:5|function `f'" } in
+		  let { fail_d1Jf  ::  [taXM]
+			{-# L #-}
+			fail_d1Jf =
+		    let { fail_d1Ix  ::  [taXM]
+			  {-# L #-}
+			  fail_d1Ix =
+		      let {
+			fail_d1HP  ::  [taXM]
+			{-# L #-}
+			fail_d1HP =
+			    case ==_a1Cv lit_a1Cu ds_d1H3 of {
+			      PrelBase.True{-5E,w-}{i} ->
+				  case ==_a1Cy lit_a1Cx ds_d1H6 of {
+				    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taXM;
+				    PrelBase.False{-58,w-}{i} -> fail_d1H7;
+				  };
+			      PrelBase.False{-58,w-}{i} -> fail_d1H7;
+			    }
+		      } in 
+			case ==_a1Cp lit_a1Co ds_d1H3 of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      case ==_a1Cs lit_a1Cr ds_d1H6 of {
+				PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taXM;
+				PrelBase.False{-58,w-}{i} -> fail_d1HP;
 			      };
-			  PrelBase.False{-58,p-}{i} ->
-			      fail_d1Jf;
+			  PrelBase.False{-58,w-}{i} -> fail_d1HP;
 			}
-		  } in 
-		    case
-			==_a1G6
-			    lit_a1G7 ds_d1Jb
-		    of {
-		      PrelBase.True{-5E,p-}{i} ->
-			  case
-			      ==_a1G3
-				  lit_a1G4 ds_d1Je
-			  of {
-			    PrelBase.True{-5E,p-}{i} ->
-				PrelBase.[]{-5i,p-}{i}
-				    _@_ t{-a13A-};
-			    PrelBase.False{-58,p-}{i} ->
-				fail_d1JX;
+		    } in
+		    case ==_a1Cj lit_a1Ci ds_d1H3 of {
+		      PrelBase.True{-5E,w-}{i} ->
+			  case ==_a1Cm lit_a1Cl ds_d1H6 of {
+			    PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taXM;
+			    PrelBase.False{-58,w-}{i} -> fail_d1Ix;
 			  };
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1JX;
+		      PrelBase.False{-58,w-}{i} -> fail_d1Ix;
 		    }
-		} in
-		case
-		    ==_a1Gc
-			lit_a1Gd ds_d1Jb
-		of {
-		  PrelBase.True{-5E,p-}{i} ->
-		      case
-			  ==_a1G9
-			      lit_a1Ga ds_d1Je
-		      of {
-			PrelBase.True{-5E,p-}{i} ->
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ t{-a13A-};
-			PrelBase.False{-58,p-}{i} ->
-			    fail_d1KF;
-		      };
-		  PrelBase.False{-58,p-}{i} ->
-		      fail_d1KF;
-		}
-	      } in
-	      case
-		  ==_a1Gi
-		      lit_a1Gj ds_d1Jb
-	      of {
-		PrelBase.True{-5E,p-}{i} ->
-		    case
-			==_a1Gf
-			    lit_a1Gg ds_d1Je
-		    of {
-		      PrelBase.True{-5E,p-}{i} ->
-			  PrelBase.[]{-5i,p-}{i}
-			      _@_ t{-a13A-};
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1Ln;
-		    };
-		PrelBase.False{-58,p-}{i} ->
-		    fail_d1Ln;
-	      }
+		  } in
+		  case ==_a1Cd lit_a1Cc ds_d1H3 of {
+		    PrelBase.True{-5E,w-}{i} ->
+			case ==_a1Cg lit_a1Cf ds_d1H6 of {
+			  PrelBase.True{-5E,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taXM;
+			  PrelBase.False{-58,w-}{i} -> fail_d1Jf;
+			};
+		    PrelBase.False{-58,w-}{i} -> fail_d1Jf;
+		  };
+	} in  f_aX0
+d.Eq_aY8  ::  {PrelBase.Eq{-23,p-} PrelBase.Char{-38,W-}}
+{-# L #-}
+d.Eq_aY8 =
+    PrelBase.$d34{-raE,p-}
+d.Eq_aY6  ::  {PrelBase.Eq{-23,p-} [PrelBase.Char{-38,W-}]}
+{-# L #-}
+d.Eq_aY6 =
+    PrelBase.$d28{-rax,p-} _@_ PrelBase.Char{-38,W-} d.Eq_aY8
+==_a1l5  ::  [PrelBase.Char{-38,W-}]
+	     -> [PrelBase.Char{-38,W-}]
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+==_a1l5 =
+    PrelBase.=={-8Y,p-} _@_ [PrelBase.Char{-38,W-}] d.Eq_aY6
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds023.stderr b/ghc/tests/deSugar/should_compile/ds023.stderr
index a34fcde62149a583d02b9115a64d1e282091f621..51a7d0a5d22199b17f1230005666e1aa70ae37a5 100644
--- a/ghc/tests/deSugar/should_compile/ds023.stderr
+++ b/ghc/tests/deSugar/should_compile/ds023.stderr
@@ -3,129 +3,100 @@
 ================================================================================
 Desugared:
 Rec {
-ds_dK5  :: 
-    _forall_
-    [rlg{-aHq-} riC{-aHC-}]
-    =>
-    {PrelBase.Num{-2c,p-} riC{-aHC-}}
-    -> {PrelBase.Eq{-23,p-} rlg{-aHq-}}
-    -> (rlg{-aHq-} -> riC{-aHC-}, PrelBase.Bool{-34,p-}
-				  -> rlg{-aHq-}
-				  -> riC{-aHC-})
+ds_dEJ  ::  _forall_
+	    [taC5 taCc]
+	    =>
+	    {PrelBase.Num{-2c,p-} taCc}
+	    -> {PrelBase.Eq{-23,p-} taC5}
+	    -> (taC5 -> taCc, PrelBase.Bool{-34,W-} -> taC5 -> taCc)
 {-# L #-}
-ds_dK5 =
-    _/\_ rlg{-aHq-} riC{-aHC-} -> \ d.Num_aHI  :: 
-					{PrelBase.Num{-2c,p-} riC{-aHC-}}
-				    {-# L #-}
-				    d.Num_aHI d.Eq_aHG  :: 
-						  {PrelBase.Eq{-23,p-} rlg{-aHq-}}
-					      {-# L #-}
-					      d.Eq_aHG ->
+ds_dEJ =
+    _/\_ taC5 taCc -> \ d.Num_aCh  ::  {PrelBase.Num{-2c,p-} taCc}
+			{-# L #-}
+			d.Num_aCh d.Eq_aCf  ::  {PrelBase.Eq{-23,p-} taC5}
+				  {-# L #-}
+				  d.Eq_aCf ->
 	_letrec_ {
-	  ==_aKk  :: 
-	      rlg{-aHq-} -> rlg{-aHq-} -> PrelBase.Bool{-34,p-}
+	  ==_aEY  ::  taC5 -> taC5 -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  ==_aKk =
-	      PrelBase.=={-8Y,p-}
-		  _@_ rlg{-aHq-} d.Eq_aHG;
-	  abs_aKr  :: 
-	      riC{-aHC-} -> riC{-aHC-}
+	  ==_aEY =
+	      PrelBase.=={-8Y,p-} _@_ taC5 d.Eq_aCf;
+	  abs_aF5  ::  taCc -> taCc
 	  {-# L #-}
-	  abs_aKr =
-	      PrelBase.abs{-r3j,p-}
-		  _@_ riC{-aHC-} d.Num_aHI;
-	  f_aHi  :: 
-	      rlg{-aHq-} -> riC{-aHC-}
+	  abs_aF5 =
+	      PrelBase.abs{-r3i,p-} _@_ taCc d.Num_aCh;
+	  f_aBP  ::  taC5 -> taCc
 	  {-# L #-}
-	  f_aHi =
-	      \ x_r3e  :: 
-		    rlg{-aHq-}
+	  f_aBP =
+	      \ x_r3e  ::  taC5
 		{-# L #-}
 		x_r3e ->
-		  let {
-		    ds_dL3  :: 
-			PrelBase.Bool{-34,p-}
-		    {-# L #-}
-		    ds_dL3 =
-			==_aKk
-			    x_r3e x_r3e
-		  } in 
-		    g_aHj
-			ds_dL3 x_r3e;
-	  g_aHj  :: 
-	      PrelBase.Bool{-34,p-} -> rlg{-aHq-} -> riC{-aHC-}
+		  (let {
+		     ds_dFM  ::  PrelBase.Bool{-34,W-}
+		     {-# L #-}
+		     ds_dFM =
+			 ==_aEY x_r3e x_r3e
+		   } in  g_aBQ ds_dFM)
+		      x_r3e;
+	  g_aBQ  ::  PrelBase.Bool{-34,W-} -> taC5 -> taCc
 	  {-# L #-}
-	  g_aHj =
-	      \ b_r3g  :: 
-		    PrelBase.Bool{-34,p-}
+	  g_aBQ =
+	      \ b_r3g  ::  PrelBase.Bool{-34,W-}
 		{-# L #-}
-		b_r3g x_r3i  :: 
-			  rlg{-aHq-}
+		b_r3g x_r3h  ::  taC5
 		      {-# L #-}
-		      x_r3i ->
+		      x_r3h ->
 		  let {
-		    ds_dLq  :: 
-			riC{-aHC-}
+		    ds_dG6  ::  taCc
 		    {-# L #-}
-		    ds_dLq =
-			f_aHi
-			    x_r3i
-		  } in 
-		    abs_aKr
-			ds_dLq;
+		    ds_dG6 =
+			f_aBP x_r3h
+		  } in  abs_aF5 ds_dG6;
 	} in 
-	  PrelTup.(,){-62,p-}{i}
-	      {_@_ (rlg{-aHq-} -> riC{-aHC-})
-	       _@_ (PrelBase.Bool{-34,p-} -> rlg{-aHq-} -> riC{-aHC-})
-	       f_aHi
-	       g_aHj}
-f{-r3l,x-}  :: 
-    _forall_
-    [rlg{-aHq-} riC{-aHC-}]
-    =>
-    {PrelBase.Num{-2c,p-} riC{-aHC-}}
-    -> {PrelBase.Eq{-23,p-} rlg{-aHq-}}
-    -> rlg{-aHq-}
-    -> riC{-aHC-}
+	  PrelTup.(,){-62,w-}{i}
+	      {_@_ (taC5 -> taCc)
+	       _@_ (PrelBase.Bool{-34,W-} -> taC5 -> taCc)
+	       f_aBP
+	       g_aBQ}
+f{-r3k,x-}  ::  _forall_
+		[taC5 taCc]
+		=>
+		{PrelBase.Num{-2c,p-} taCc}
+		-> {PrelBase.Eq{-23,p-} taC5}
+		-> taC5
+		-> taCc
 {-# L #-}
-f{-r3l,x-} =
-    _/\_ rlg{-aHq-} riC{-aHC-} -> \ d.Num_aHI  :: 
-					{PrelBase.Num{-2c,p-} riC{-aHC-}}
-				    {-# L #-}
-				    d.Num_aHI d.Eq_aHG  :: 
-						  {PrelBase.Eq{-23,p-} rlg{-aHq-}}
-					      {-# L #-}
-					      d.Eq_aHG ->
+f{-r3k,x-} =
+    _/\_ taC5 taCc -> \ d.Num_aCh  ::  {PrelBase.Num{-2c,p-} taCc}
+			{-# L #-}
+			d.Num_aCh d.Eq_aCf  ::  {PrelBase.Eq{-23,p-} taC5}
+				  {-# L #-}
+				  d.Eq_aCf ->
 	case
-	    ds_dK5
-		_@_ rlg{-aHq-} _@_ riC{-aHC-} d.Num_aHI d.Eq_aHG
+	    ds_dEJ _@_ taC5 _@_ taCc d.Num_aCh d.Eq_aCf
 	of {
-	PrelTup.(,){-62,p-}{i} ds_dM9 ds_dMa  ->
-	ds_dM9;}
-g{-r3k,x-}  :: 
-    _forall_
-    [rlg{-aHq-} riC{-aHC-}]
-    =>
-    {PrelBase.Num{-2c,p-} riC{-aHC-}}
-    -> {PrelBase.Eq{-23,p-} rlg{-aHq-}}
-    -> PrelBase.Bool{-34,p-}
-    -> rlg{-aHq-}
-    -> riC{-aHC-}
+	PrelTup.(,){-62,w-}{i} ds_dGP ds_dGQ  ->
+	ds_dGP;}
+g{-r3j,x-}  ::  _forall_
+		[taC5 taCc]
+		=>
+		{PrelBase.Num{-2c,p-} taCc}
+		-> {PrelBase.Eq{-23,p-} taC5}
+		-> PrelBase.Bool{-34,W-}
+		-> taC5
+		-> taCc
 {-# L #-}
-g{-r3k,x-} =
-    _/\_ rlg{-aHq-} riC{-aHC-} -> \ d.Num_aHI  :: 
-					{PrelBase.Num{-2c,p-} riC{-aHC-}}
-				    {-# L #-}
-				    d.Num_aHI d.Eq_aHG  :: 
-						  {PrelBase.Eq{-23,p-} rlg{-aHq-}}
-					      {-# L #-}
-					      d.Eq_aHG ->
+g{-r3j,x-} =
+    _/\_ taC5 taCc -> \ d.Num_aCh  ::  {PrelBase.Num{-2c,p-} taCc}
+			{-# L #-}
+			d.Num_aCh d.Eq_aCf  ::  {PrelBase.Eq{-23,p-} taC5}
+				  {-# L #-}
+				  d.Eq_aCf ->
 	case
-	    ds_dK5
-		_@_ rlg{-aHq-} _@_ riC{-aHC-} d.Num_aHI d.Eq_aHG
+	    ds_dEJ _@_ taC5 _@_ taCc d.Num_aCh d.Eq_aCf
 	of {
-	PrelTup.(,){-62,p-}{i} ds_dMB ds_dMA  ->
-	ds_dMA;}
+	PrelTup.(,){-62,w-}{i} ds_dHh ds_dHg  ->
+	ds_dHg;}
 end Rec }
 
 NOTE: Simplifier still going after 4 iterations; bailing out.
diff --git a/ghc/tests/deSugar/should_compile/ds024.stderr b/ghc/tests/deSugar/should_compile/ds024.stderr
index b377760d03f6f7673fd6222d21187d8dc3357cbf..77bca55b85e103271f1b947ea527a1377f6ccf78 100644
--- a/ghc/tests/deSugar/should_compile/ds024.stderr
+++ b/ghc/tests/deSugar/should_compile/ds024.stderr
@@ -2,77 +2,71 @@
 
 ================================================================================
 Desugared:
-g{-r3h,x-}  :: 
-    _forall_
-    [t{-aAR-} t{-aAL-} t{-aAN-} t{-aAP-}]
-    =>
-    t{-aAR-} -> ([t{-aAL-}], [t{-aAN-}], [t{-aAP-}])
+Rec {
+g{-r3h,x-}  ::  _forall_
+		[tayq tayk taym tayo]
+		=>
+		tayq -> ([tayk], [taym], [tayo])
 {-# L #-}
 g{-r3h,x-} =
-    _/\_ t{-aAR-} t{-aAL-} t{-aAN-} t{-aAP-} -> \ x_r3g  :: 
-						      t{-aAR-}
-						  {-# L #-}
-						  x_r3g ->
-	let {
-	  ds_dD1  :: 
-	      [t{-aAL-}]
+    _/\_ tayq tayk taym tayo ->
+	_letrec_ {
+	  g_ay5  ::  tayq -> ([tayk], [taym], [tayo])
 	  {-# L #-}
-	  ds_dD1 =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aAL-} } in
-	let {
-	  ds_dD5  :: 
-	      [t{-aAN-}]
-	  {-# L #-}
-	  ds_dD5 =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aAN-} } in
-	let {
-	  ds_dD9  :: 
-	      [t{-aAP-}]
-	  {-# L #-}
-	  ds_dD9 =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aAP-}
-	} in 
-	  PrelTup.(,,){-63,p-}{i}
-	      {_@_ [t{-aAL-}] _@_ [t{-aAN-}] _@_ [t{-aAP-}] ds_dD1 ds_dD5 ds_dD9}
-f{-r3i,x-}  :: 
-    _forall_ [t{-aAZ-} t{-aB3-}] => t{-aB3-} -> [[t{-aAZ-}]]
+	  g_ay5 =
+	      \ x_r3g  ::  tayq
+		{-# L #-}
+		x_r3g ->
+		  let {
+		    ds_dAP  ::  [tayk]
+		    {-# L #-}
+		    ds_dAP =
+			PrelBase.[]{-5i,w-}{i} _@_ tayk } in
+		  let {
+		    ds_dAT  ::  [taym]
+		    {-# L #-}
+		    ds_dAT =
+			PrelBase.[]{-5i,w-}{i} _@_ taym } in
+		  let {
+		    ds_dAX  ::  [tayo]
+		    {-# L #-}
+		    ds_dAX =
+			PrelBase.[]{-5i,w-}{i} _@_ tayo
+		  } in 
+		    PrelTup.(,,){-63,w-}{i}
+			{_@_ [tayk] _@_ [taym] _@_ [tayo] ds_dAP ds_dAT ds_dAX};
+	} in  g_ay5
+f{-r3i,x-}  ::  _forall_ [tayH tayF] => tayH -> [[tayF]]
 {-# L #-}
 f{-r3i,x-} =
-    _/\_ t{-aAZ-} t{-aB3-} -> \ x_r3e  :: 
-				    t{-aB3-}
-				{-# L #-}
-				x_r3e ->
-	let {
-	  ds_dDN  :: 
-	      [t{-aAZ-}]
+    _/\_ tayH tayF ->
+	_letrec_ {
+	  f_ays  ::  tayH -> [[tayF]]
 	  {-# L #-}
-	  ds_dDN =
-	      PrelBase.[]{-5i,p-}{i}
-		  _@_ t{-aAZ-} } in
-	let { ds_dDR  :: 
-		  [[t{-aAZ-}]]
-	      {-# L #-}
-	      ds_dDR =
-	  let {
-	    ds_dE7  :: 
-		[t{-aAZ-}]
-	    {-# L #-}
-	    ds_dE7 =
-		PrelBase.[]{-5i,p-}{i}
-		    _@_ t{-aAZ-} } in
-	  let {
-	    ds_dEb  :: 
-		[[t{-aAZ-}]]
-	    {-# L #-}
-	    ds_dEb =
-		PrelBase.[]{-5i,p-}{i}
-		    {_@_ [t{-aAZ-}]}
-	  } in 
-	    PrelBase.:{-55,p-}{i}
-		{_@_ [t{-aAZ-}] ds_dE7 ds_dEb}
-	} in
-	PrelBase.:{-55,p-}{i}
-	    {_@_ [t{-aAZ-}] ds_dDN ds_dDR}
+	  f_ays =
+	      \ x_r3e  ::  tayH
+		{-# L #-}
+		x_r3e ->
+		  let {
+		    ds_dBF  ::  [tayF]
+		    {-# L #-}
+		    ds_dBF =
+			PrelBase.[]{-5i,w-}{i} _@_ tayF } in
+		  let { ds_dBJ  ::  [[tayF]]
+			{-# L #-}
+			ds_dBJ =
+		    let {
+		      ds_dBZ  ::  [tayF]
+		      {-# L #-}
+		      ds_dBZ =
+			  PrelBase.[]{-5i,w-}{i} _@_ tayF } in
+		    let {
+		      ds_dC3  ::  [[tayF]]
+		      {-# L #-}
+		      ds_dC3 =
+			  PrelBase.[]{-5i,w-}{i} {_@_ [tayF]}
+		    } in  PrelBase.:{-55,w-}{i} {_@_ [tayF] ds_dBZ ds_dC3}
+		  } in
+		  PrelBase.:{-55,w-}{i} {_@_ [tayF] ds_dBF ds_dBJ};
+	} in  f_ays
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds025.hs b/ghc/tests/deSugar/should_compile/ds025.hs
index c28b16d5bf74d51b024bd93bbd6ec4f508105a98..b2ae1fda46d7a046066047186c6a9ec4accf5c53 100644
--- a/ghc/tests/deSugar/should_compile/ds025.hs
+++ b/ghc/tests/deSugar/should_compile/ds025.hs
@@ -14,5 +14,3 @@ assocMaybe :: (Eq a) => a -> [(a,b)] -> Maybe b
 assocMaybe key lst
  = if (null res) then Nothing else (Just (head res))
    where res =  [ val | (key',val) <- lst, key==key']
-
-data Maybe a = Just a | Nothing deriving ()
diff --git a/ghc/tests/deSugar/should_compile/ds025.stderr b/ghc/tests/deSugar/should_compile/ds025.stderr
index 4e6ad93bad1d56d3f567f609da36943ba43daf5f..77c98c5c3271d7fb9d5c49124e88ac319ea9ac4d 100644
--- a/ghc/tests/deSugar/should_compile/ds025.stderr
+++ b/ghc/tests/deSugar/should_compile/ds025.stderr
@@ -1,18 +1,344 @@
- 
-ds025.hs:3:
-    Conflicting definitions for: `Just'
-	Defined at ds025.hs:18
-	Imported from Prelude at ds025.hs:3
- 
-ds025.hs:3:
-    Conflicting definitions for: `Nothing'
-	Defined at ds025.hs:18
-	Imported from Prelude at ds025.hs:3
- 
-ds025.hs:3:
-    Conflicting definitions for: `Maybe'
-	Defined at ds025.hs:18
-	Imported from Prelude at ds025.hs:3
+ds025.hs:6: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `ehead'
 
 
-Compilation had errors
+================================================================================
+Desugared:
+Rec {
+assocMaybe{-r3h,x-}  ::  _forall_
+			 [taUL taUO]
+			 =>
+			 {PrelBase.Eq{-23,p-} taUL}
+			 -> taUL
+			 -> [(taUL, taUO)]
+			 -> PrelBase.Maybe{-rhk,p-} taUO
+{-# L #-}
+assocMaybe{-r3h,x-} =
+    _/\_ taUL taUO -> \ d.Eq_aVB  ::  {PrelBase.Eq{-23,p-} taUL}
+			{-# L #-}
+			d.Eq_aVB ->
+	_letrec_ {
+	  d.Eq_aVD  ::  {PrelBase.Eq{-23,p-} taUL}
+	  {-# L #-}
+	  d.Eq_aVD =
+	      d.Eq_aVB;
+	  ==_a16L  ::  taUL -> taUL -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a16L =
+	      PrelBase.=={-8Y,p-} _@_ taUL d.Eq_aVD;
+	  assocMaybe_aUI  ::  taUL
+			      -> [(taUL, taUO)]
+			      -> PrelBase.Maybe{-rhk,p-} taUO
+	  {-# L #-}
+	  assocMaybe_aUI =
+	      \ key_r3x  ::  taUL
+		{-# L #-}
+		key_r3x lst_r3y  ::  [(taUL, taUO)]
+			{-# L #-}
+			lst_r3y ->
+		  let { res_aUQ  ::  [taUO]
+			{-# L #-}
+			res_aUQ =
+		    _letrec_ {
+		      ds_d18e  ::  [(taUL, taUO)] -> [taUO]
+		      {-# L #-}
+		      ds_d18e =
+			  \ ds_d18j  ::  [(taUL, taUO)]
+			    {-# L #-}
+			    ds_d18j ->
+			      case ds_d18j of {
+				PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} {_@_ taUO};
+				PrelBase.:{-55,w-}{i} ds_d18y ds_d18z ->
+				    case ds_d18y of { PrelTup.(,){-62,w-}{i} key'_r3C val_r3D  ->
+				    case ==_a16L key_r3x key'_r3C of {
+				      PrelBase.True{-5E,w-}{i} ->
+					  let {
+					    ds_d195  ::  [taUO]
+					    {-# L #-}
+					    ds_d195 =
+						ds_d18e ds_d18z
+					  } in  PrelBase.:{-55,w-}{i} {_@_ taUO val_r3D ds_d195};
+				      PrelBase.False{-58,w-}{i} -> ds_d18e ds_d18z;
+				    };};
+			      };
+		    } in  ds_d18e lst_r3y
+		  } in
+		  let {
+		    res_r3A  ::  [taUO]
+		    {-# L #-}
+		    res_r3A =
+			res_aUQ
+		  } in 
+		    case PrelList.null{-r51,p-} _@_ taUO res_r3A of {
+		      PrelBase.True{-5E,w-}{i} -> PrelBase.Nothing{-rbW,p-}{i} _@_ taUO;
+		      PrelBase.False{-58,w-}{i} ->
+			  let {
+			    ds_d19W  ::  taUO
+			    {-# L #-}
+			    ds_d19W =
+				PrelList.head{-r3E,p-} _@_ taUO res_r3A
+			  } in  PrelBase.Just{-rbS,p-}{i} _@_ taUO ds_d19W;
+		    };
+	} in  assocMaybe_aUI
+ehead{-r3i,x-}  ::  _forall_
+		    [taWc]
+		    =>
+		    [taWc] -> [PrelBase.Char{-38,W-}] -> taWc
+{-# L #-}
+ehead{-r3i,x-} =
+    _/\_ taWc ->
+	_letrec_ {
+	  ehead_aVL  ::  [taWc] -> [PrelBase.Char{-38,W-}] -> taWc
+	  {-# L #-}
+	  ehead_aVL =
+	      \ xs_r3l  ::  [taWc]
+		{-# L #-}
+		xs_r3l loc_r3m  ::  [PrelBase.Char{-38,W-}]
+		       {-# L #-}
+		       loc_r3m ->
+		  let {
+		    fail_d1aE  ::  taWc
+		    {-# L #-}
+		    fail_d1aE =
+			GHCerr.patError{-8r,w-}
+			    _@_ taWc _string_ "ds025.hs:5|function `ehead'"
+		  } in 
+		    case PrelList.null{-r51,p-} _@_ taWc xs_r3l of {
+		      PrelBase.True{-5E,w-}{i} ->
+			  let { ds_d1aS  ::  [PrelBase.Char{-38,W-}]
+				{-# L #-}
+				ds_d1aS =
+			    let { ds_d1b2  ::  [PrelBase.Char{-38,W-}]
+				  {-# L #-}
+				  ds_d1b2 =
+			      let {
+				ds_d1bg  ::  PrelBase.Char{-38,W-}
+				{-# L #-}
+				ds_d1bg =
+				    PrelBase.C#{-54,w-}{i} {'4'} } in
+			      let {
+				ds_d1bk  ::  [PrelBase.Char{-38,W-}]
+				{-# L #-}
+				ds_d1bk =
+				    PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+			      } in 
+				PrelBase.:{-55,w-}{i} {_@_ PrelBase.Char{-38,W-} ds_d1bg ds_d1bk}
+			    } in
+			    ++_a127 _@_ PrelBase.Char{-38,W-} ds_d1b2 loc_r3m
+			  } in
+			  IOBase.error{-87,w-} _@_ taWc ds_d1aS;
+		      PrelBase.False{-58,w-}{i} ->
+			  PrelList.head{-r3E,p-} _@_ taWc xs_r3l;
+		    };
+	} in  ehead_aVL
+assoc{-r3j,x-}  ::  _forall_
+		    [taXo taXr]
+		    =>
+		    {PrelBase.Show{-2i,p-} taXo}
+		    -> {PrelBase.Eq{-23,p-} taXo}
+		    -> taXo
+		    -> [(taXo, taXr)]
+		    -> [PrelBase.Char{-38,W-}]
+		    -> taXr
+{-# L #-}
+assoc{-r3j,x-} =
+    _/\_ taXo taXr -> \ d.Show_aXv  ::  {PrelBase.Show{-2i,p-} taXo}
+			{-# L #-}
+			d.Show_aXv d.Eq_aXx  ::  {PrelBase.Eq{-23,p-} taXo}
+				   {-# L #-}
+				   d.Eq_aXx ->
+	_letrec_ {
+	  ++_a122  ::  _forall_ [taXd] => [taXd] -> [taXd] -> [taXd]
+	  {-# L #-}
+	  ++_a122 =
+	      ++_a123;
+	  ++_a121  ::  _forall_ [taXk] => [taXk] -> [taXk] -> [taXk]
+	  {-# L #-}
+	  ++_a121 =
+	      ++_a123;
+	  show_a12b  ::  taXo -> PrelBase.String{-rhB,p-}
+	  {-# L #-}
+	  show_a12b =
+	      PrelBase.show{-rij,p-} _@_ taXo d.Show_aXv;
+	  ==_a12c  ::  taXo -> taXo -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a12c =
+	      PrelBase.=={-8Y,p-} _@_ taXo d.Eq_aXx;
+	  assoc_aWg  ::  taXo
+			 -> [(taXo, taXr)]
+			 -> [PrelBase.Char{-38,W-}]
+			 -> taXr
+	  {-# L #-}
+	  assoc_aWg =
+	      \ key_r3o  ::  taXo
+		{-# L #-}
+		key_r3o lst_r3p  ::  [(taXo, taXr)]
+			{-# L #-}
+			lst_r3p loc_r3q  ::  [PrelBase.Char{-38,W-}]
+				{-# L #-}
+				loc_r3q ->
+		  let { res_aWy  ::  [taXr]
+			{-# L #-}
+			res_aWy =
+		    _letrec_ {
+		      ds_d1cL  ::  [(taXo, taXr)] -> [taXr]
+		      {-# L #-}
+		      ds_d1cL =
+			  \ ds_d1cQ  ::  [(taXo, taXr)]
+			    {-# L #-}
+			    ds_d1cQ ->
+			      case ds_d1cQ of {
+				PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} {_@_ taXr};
+				PrelBase.:{-55,w-}{i} ds_d1d5 ds_d1d6 ->
+				    case ds_d1d5 of { PrelTup.(,){-62,w-}{i} key'_r3u val_r3v  ->
+				    case ==_a12c key_r3o key'_r3u of {
+				      PrelBase.True{-5E,w-}{i} ->
+					  let {
+					    ds_d1dC  ::  [taXr]
+					    {-# L #-}
+					    ds_d1dC =
+						ds_d1cL ds_d1d6
+					  } in  PrelBase.:{-55,w-}{i} {_@_ taXr val_r3v ds_d1dC};
+				      PrelBase.False{-58,w-}{i} -> ds_d1cL ds_d1d6;
+				    };};
+			      };
+		    } in  ds_d1cL lst_r3p
+		  } in
+		  let {
+		    res_r3s  ::  [taXr]
+		    {-# L #-}
+		    res_r3s =
+			res_aWy
+		  } in 
+		    case PrelList.null{-r51,p-} _@_ taXr res_r3s of {
+		      PrelBase.True{-5E,w-}{i} ->
+			  let { ds_d1el  ::  [PrelBase.Char{-38,W-}]
+				{-# L #-}
+				ds_d1el =
+			    let { ds_d1ex  ::  [PrelBase.Char{-38,W-}]
+				  {-# L #-}
+				  ds_d1ex =
+			      let {
+				ds_d1eM  ::  PrelBase.Char{-38,W-}
+				{-# L #-}
+				ds_d1eM =
+				    PrelBase.C#{-54,w-}{i} {'1'} } in
+			      let {
+				ds_d1eQ  ::  [PrelBase.Char{-38,W-}]
+				{-# L #-}
+				ds_d1eQ =
+				    PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+			      } in 
+				PrelBase.:{-55,w-}{i} {_@_ PrelBase.Char{-38,W-} ds_d1eM ds_d1eQ}
+			    } in
+			    let { ds_d1eB  ::  [PrelBase.Char{-38,W-}]
+				  {-# L #-}
+				  ds_d1eB =
+			      let { ds_d1f9  ::  [PrelBase.Char{-38,W-}]
+				    {-# L #-}
+				    ds_d1f9 =
+				let { ds_d1fl  ::  [PrelBase.Char{-38,W-}]
+				      {-# L #-}
+				      ds_d1fl =
+				  let {
+				    ds_d1fA  ::  PrelBase.Char{-38,W-}
+				    {-# L #-}
+				    ds_d1fA =
+					PrelBase.C#{-54,w-}{i} {'2'} } in
+				  let {
+				    ds_d1fE  ::  [PrelBase.Char{-38,W-}]
+				    {-# L #-}
+				    ds_d1fE =
+					PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+				  } in 
+				    PrelBase.:{-55,w-}{i}
+					{_@_ PrelBase.Char{-38,W-} ds_d1fA ds_d1fE}
+				} in
+				let {
+				  ds_d1fp  ::  [PrelBase.Char{-38,W-}]
+				  {-# L #-}
+				  ds_d1fp =
+				      show_a12b key_r3o
+				} in  ++_a121 _@_ PrelBase.Char{-38,W-} ds_d1fl ds_d1fp
+			      } in
+			      ++_a122 _@_ PrelBase.Char{-38,W-} loc_r3q ds_d1f9
+			    } in
+			    ++_a123 _@_ PrelBase.Char{-38,W-} ds_d1ex ds_d1eB
+			  } in
+			  IOBase.error{-87,w-} _@_ taXr ds_d1el;
+		      PrelBase.False{-58,w-}{i} ->
+			  let { ds_d1ga  ::  [PrelBase.Char{-38,W-}]
+				{-# L #-}
+				ds_d1ga =
+			    let {
+			      ds_d1gl  ::  PrelBase.Char{-38,W-}
+			      {-# L #-}
+			      ds_d1gl =
+				  PrelBase.C#{-54,w-}{i} {'3'} } in
+			    let {
+			      ds_d1gp  ::  [PrelBase.Char{-38,W-}]
+			      {-# L #-}
+			      ds_d1gp =
+				  PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}}
+			    } in 
+			      PrelBase.:{-55,w-}{i} {_@_ PrelBase.Char{-38,W-} ds_d1gl ds_d1gp}
+			  } in
+			  ehead{-r3i,x-} _@_ taXr res_r3s ds_d1ga;
+		    };
+	} in  assoc_aWg
+d.MonadPlus_aXF  ::  {PrelBase.MonadPlus{-2a,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.MonadPlus_aXF =
+    PrelBase.$d23{-rcg,p-}
+++_a123  ::  _forall_ [taX7] => [taX7] -> [taX7] -> [taX7]
+{-# L #-}
+++_a123 =
+    PrelBase.++{-rhm,p-} _@_ PrelBase.[]{-3j,W-} d.MonadPlus_aXF
+d.Monad_aXI  ::  {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.Monad_aXI =
+    PrelBase.$d25{-rci,p-}
+>>=_a124  ::  _forall_
+	      [taXO taXP]
+	      =>
+	      [taXO] -> (taXO -> [taXP]) -> [taXP]
+{-# L #-}
+>>=_a124 =
+    PrelBase.>>={-811,p-} _@_ PrelBase.[]{-3j,W-} d.Monad_aXI
+d.Monad_aXL  ::  {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.Monad_aXL =
+    d.Monad_aXI
+return_a125  ::  _forall_ [taXQ] => taXQ -> [taXQ]
+{-# L #-}
+return_a125 =
+    PrelBase.return{-816,p-} _@_ PrelBase.[]{-3j,W-} d.Monad_aXL
+d.MonadZero_aXN  ::  {PrelBase.MonadZero{-29,p-} PrelBase.[]{-3j,W-}}
+{-# L #-}
+d.MonadZero_aXN =
+    PrelBase.$d24{-rch,p-}
+zero_a126  ::  _forall_ [taXR] => [taXR]
+{-# L #-}
+zero_a126 =
+    PrelBase.zero{-810,p-} _@_ PrelBase.[]{-3j,W-} d.MonadZero_aXN
+++_a127  ::  _forall_ [taW6] => [taW6] -> [taW6] -> [taW6]
+{-# L #-}
+++_a127 =
+    ++_a123
+>>=_a128  ::  _forall_
+	      [taXS taXT]
+	      =>
+	      [taXS] -> (taXS -> [taXT]) -> [taXT]
+{-# L #-}
+>>=_a128 =
+    >>=_a124
+return_a129  ::  _forall_ [taXU] => taXU -> [taXU]
+{-# L #-}
+return_a129 =
+    return_a125
+zero_a12a  ::  _forall_ [taXV] => [taXV]
+{-# L #-}
+zero_a12a =
+    zero_a126
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds026.stderr b/ghc/tests/deSugar/should_compile/ds026.stderr
index 914cc16d2cad8b4c831d3e3f73e91d3d3a55e23c..5565a158ab8c67644ba45ab464c03b348bd6caf3 100644
--- a/ghc/tests/deSugar/should_compile/ds026.stderr
+++ b/ghc/tests/deSugar/should_compile/ds026.stderr
@@ -3,190 +3,142 @@
 ================================================================================
 Desugared:
 Rec {
-scsel_NooShouldSucceedBoo{-aKl,x-}  :: 
-    _forall_
-    [a{-r3n-}]
-    =>
-    {Noo{-r3B,x-} a{-r3n-}} -> {Boo{-r3o,x-} a{-r3n-}}
+f{-r3w,x-}  ::  _forall_
+		[taBw taBB]
+		=>
+		{Noo{-r3x,x-} taBw}
+		-> {PrelBase.Eq{-23,p-} taBB}
+		-> taBw
+		-> taBB
+		-> taBw
 {-# L #-}
-scsel_NooShouldSucceedBoo{-aKl,x-} =
-    _/\_ a{-r3n-} -> \ tpl_B1  :: 
-			   {Noo{-r3B,x-} a{-r3n-}}
-		       {-# L #-}
-		       tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
-op2{-r3A,x-}  :: 
-    _forall_
-    [a{-r3n-}]
-    =>
-    {Noo{-r3B,x-} a{-r3n-}}
-    -> (_forall_
-	[b{-r3q-}]
-	=>
-	{PrelBase.Eq{-23,p-} b{-r3q-}} -> a{-r3n-} -> b{-r3q-} -> a{-r3n-})
+f{-r3w,x-} =
+    _/\_ taBw taBB -> \ d.Noo_aBH  ::  {Noo{-r3x,x-} taBw}
+			{-# L #-}
+			d.Noo_aBH d.Eq_aBJ  ::  {PrelBase.Eq{-23,p-} taBB}
+				  {-# L #-}
+				  d.Eq_aBJ ->
+	_letrec_ {
+	  d.Boo_aBL  ::  {Boo{-r3n,x-} taBw}
+	  {-# L #-}
+	  d.Boo_aBL =
+	      scsel_NooShouldSucceedBoo{-aEv,x-} _@_ taBw d.Noo_aBH;
+	  d.Foo_aBF  ::  {Foo{-r3s,x-} taBw}
+	  {-# L #-}
+	  d.Foo_aBF =
+	      scsel_BooShouldSucceedFoo{-aEw,x-} _@_ taBw d.Boo_aBL;
+	  op_aEx  ::  taBw -> taBw
+	  {-# L #-}
+	  op_aEx =
+	      op{-r3y,x-} _@_ taBw d.Foo_aBF;
+	  op2_aBC  ::  _forall_
+		       [taBy]
+		       =>
+		       {PrelBase.Eq{-23,p-} taBy} -> taBw -> taBy -> taBw
+	  {-# L #-}
+	  op2_aBC =
+	      op2{-r3A,x-} _@_ taBw d.Noo_aBH;
+	  op2_aEy  ::  taBw -> taBB -> taBw
+	  {-# L #-}
+	  op2_aEy =
+	      op2_aBC _@_ taBB d.Eq_aBJ;
+	  f_aBf  ::  taBw -> taBB -> taBw
+	  {-# L #-}
+	  f_aBf =
+	      \ x_r3j  ::  taBw
+		{-# L #-}
+		x_r3j y_r3k  ::  taBB
+		      {-# L #-}
+		      y_r3k ->
+		  let {
+		    ds_dG8  ::  taBw
+		    {-# L #-}
+		    ds_dG8 =
+			op2_aEy x_r3j y_r3k
+		  } in  op_aEx ds_dG8;
+	} in  f_aBf
+scsel_NooShouldSucceedBoo{-aEv,x-}  ::  _forall_
+					[a_tr3m]
+					=>
+					{Noo{-r3x,x-} a_tr3m} -> {Boo{-r3n,x-} a_tr3m}
+{-# L #-}
+scsel_NooShouldSucceedBoo{-aEv,x-} =
+    _/\_ t12 -> \ tpl_B1  ::  {Noo{-r3x,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op2{-r3A,x-}  ::  _forall_
+		  [a_tr3m]
+		  =>
+		  {Noo{-r3x,x-} a_tr3m}
+		  -> (_forall_
+		      [b_tr3p]
+		      =>
+		      {PrelBase.Eq{-23,p-} b_tr3p} -> a_tr3m -> b_tr3p -> a_tr3m)
 {-# L #-}
 op2{-r3A,x-} =
-    _/\_ a{-r3n-} -> \ tpl_B1  :: 
-			   {Noo{-r3B,x-} a{-r3n-}}
-		       {-# L #-}
-		       tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
-$mop2{-rGB,x-}  :: 
-    _forall_
-    [a{-r3n-}]
-    =>
-    {Noo{-r3B,x-} a{-r3n-}}
-    -> (_forall_
-	[b{-r3q-}]
-	=>
-	{PrelBase.Eq{-23,p-} b{-r3q-}} -> a{-r3n-} -> b{-r3q-} -> a{-r3n-})
+    _/\_ t12 -> \ tpl_B1  ::  {Noo{-r3x,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+ds_dEN  ::  _forall_
+	    [taBV]
+	    =>
+	    {Noo{-r3x,x-} taBV} -> PrelBase.(){-40,W-}
 {-# L #-}
-$mop2{-rGB,x-} =
-    _/\_ a{-aHc-} -> \ d.Noo_aH5  :: 
-			   {Noo{-r3B,x-} a{-aHc-}}
-		       {-# L #-}
-		       d.Noo_aH5 ->
-	_/\_ b{-aHg-} -> \ d.Eq_aHi  :: 
-			       {PrelBase.Eq{-23,p-} b{-aHg-}}
-			   {-# L #-}
-			   d.Eq_aHi ->
-	    GHCerr.noDefaultMethodError{-8k,p-}
-		_@_ (a{-aHc-} -> b{-aHg-} -> a{-aHc-})
-		_string_ "Class Noo Method op2"
-scsel_BooShouldSucceedFoo{-aKD,x-}  :: 
-    _forall_
-    [a{-r3t-}]
-    =>
-    {Boo{-r3o,x-} a{-r3t-}} -> {Foo{-r3u,x-} a{-r3t-}}
+ds_dEN =
+    _/\_ taBV -> \ d.Noo_aBO  ::  {Noo{-r3x,x-} taBV}
+		   {-# L #-}
+		   d.Noo_aBO ->
+	PrelBase.(){-60,w-}{i} {}
+scsel_BooShouldSucceedFoo{-aEw,x-}  ::  _forall_
+					[a_tr3r]
+					=>
+					{Boo{-r3n,x-} a_tr3r} -> {Foo{-r3s,x-} a_tr3r}
 {-# L #-}
-scsel_BooShouldSucceedFoo{-aKD,x-} =
-    _/\_ a{-r3t-} -> \ tpl_B1  :: 
-			   {Boo{-r3o,x-} a{-r3t-}}
-		       {-# L #-}
-		       tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
-op1{-r3C,x-}  :: 
-    _forall_
-    [a{-r3t-}]
-    =>
-    {Boo{-r3o,x-} a{-r3t-}} -> a{-r3t-} -> a{-r3t-}
+scsel_BooShouldSucceedFoo{-aEw,x-} =
+    _/\_ t12 -> \ tpl_B1  ::  {Boo{-r3n,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op1{-r3z,x-}  ::  _forall_
+		  [a_tr3r]
+		  =>
+		  {Boo{-r3n,x-} a_tr3r} -> a_tr3r -> a_tr3r
 {-# L #-}
-op1{-r3C,x-} =
-    _/\_ a{-r3t-} -> \ tpl_B1  :: 
-			   {Boo{-r3o,x-} a{-r3t-}}
-		       {-# L #-}
-		       tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
-$mop1{-rGD,x-}  :: 
-    _forall_
-    [a{-r3t-}]
-    =>
-    {Boo{-r3o,x-} a{-r3t-}} -> a{-r3t-} -> a{-r3t-}
+op1{-r3z,x-} =
+    _/\_ t12 -> \ tpl_B1  ::  {Boo{-r3n,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+ds_dF0  ::  _forall_
+	    [taBW]
+	    =>
+	    {Boo{-r3n,x-} taBW} -> PrelBase.(){-40,W-}
 {-# L #-}
-$mop1{-rGD,x-} =
-    _/\_ a{-aHs-} -> \ d.Boo_aHl  :: 
-			   {Boo{-r3o,x-} a{-aHs-}}
-		       {-# L #-}
-		       d.Boo_aHl ->
-	GHCerr.noDefaultMethodError{-8k,p-}
-	    _@_ (a{-aHs-} -> a{-aHs-}) _string_ "Class Boo Method op1"
-op{-r3D,x-}  :: 
-    _forall_
-    [a{-r3y-}]
-    =>
-    {Foo{-r3u,x-} a{-r3y-}} -> a{-r3y-} -> a{-r3y-}
+ds_dF0 =
+    _/\_ taBW -> \ d.Boo_aBR  ::  {Boo{-r3n,x-} taBW}
+		   {-# L #-}
+		   d.Boo_aBR ->
+	PrelBase.(){-60,w-}{i} {}
+op{-r3y,x-}  ::  _forall_
+		 [a_tr3v]
+		 =>
+		 {Foo{-r3s,x-} a_tr3v} -> a_tr3v -> a_tr3v
 {-# L #-}
-op{-r3D,x-} =
-    _/\_ a{-r3y-} -> \ tpl_B1  :: 
-			   {Foo{-r3u,x-} a{-r3y-}}
-		       {-# L #-}
-		       tpl_B1 ->
+op{-r3y,x-} =
+    _/\_ t12 -> \ tpl_B1  ::  {Foo{-r3s,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
 	tpl_B1
-$mop{-rGC,x-}  :: 
-    _forall_
-    [a{-r3y-}]
-    =>
-    {Foo{-r3u,x-} a{-r3y-}} -> a{-r3y-} -> a{-r3y-}
-{-# L #-}
-$mop{-rGC,x-} =
-    _/\_ a{-aHD-} -> \ d.Foo_aHw  :: 
-			   {Foo{-r3u,x-} a{-aHD-}}
-		       {-# L #-}
-		       d.Foo_aHw ->
-	GHCerr.noDefaultMethodError{-8k,p-}
-	    _@_ (a{-aHD-} -> a{-aHD-}) _string_ "Class Foo Method op"
-f{-r3z,x-}  :: 
-    _forall_
-    [a{-aGK-} b{-aGQ-}]
-    =>
-    {Noo{-r3B,x-} a{-aGK-}}
-    -> {PrelBase.Eq{-23,p-} b{-aGQ-}}
-    -> a{-aGK-}
-    -> b{-aGQ-}
-    -> a{-aGK-}
+ds_dF9  ::  _forall_
+	    [taBX]
+	    =>
+	    {Foo{-r3s,x-} taBX} -> PrelBase.(){-40,W-}
 {-# L #-}
-f{-r3z,x-} =
-    _/\_ a{-aGK-} b{-aGQ-} -> \ d.Noo_aGY  :: 
-				    {Noo{-r3B,x-} a{-aGK-}}
-				{-# L #-}
-				d.Noo_aGY d.Eq_aH0  :: 
-					      {PrelBase.Eq{-23,p-} b{-aGQ-}}
-					  {-# L #-}
-					  d.Eq_aH0 ->
-	let {
-	  d.Boo_aH2  :: 
-	      {Boo{-r3o,x-} a{-aGK-}}
-	  {-# L #-}
-	  d.Boo_aH2 =
-	      scsel_NooShouldSucceedBoo{-aKl,x-}
-		  _@_ a{-aGK-} d.Noo_aGY } in
-	let {
-	  d.Foo_aGW  :: 
-	      {Foo{-r3u,x-} a{-aGK-}}
-	  {-# L #-}
-	  d.Foo_aGW =
-	      scsel_BooShouldSucceedFoo{-aKD,x-}
-		  _@_ a{-aGK-} d.Boo_aH2 } in
-	let {
-	  op_aMI  :: 
-	      a{-aGK-} -> a{-aGK-}
-	  {-# L #-}
-	  op_aMI =
-	      op{-r3D,x-}
-		  _@_ a{-aGK-} d.Foo_aGW } in
-	let {
-	  op2_aMH  :: 
-	      _forall_
-	      [b{-aGM-}]
-	      =>
-	      {PrelBase.Eq{-23,p-} b{-aGM-}} -> a{-aGK-} -> b{-aGM-} -> a{-aGK-}
-	  {-# L #-}
-	  op2_aMH =
-	      op2{-r3A,x-}
-		  _@_ a{-aGK-} d.Noo_aGY } in
-	let {
-	  op2_aMG  :: 
-	      a{-aGK-} -> b{-aGQ-} -> a{-aGK-}
-	  {-# L #-}
-	  op2_aMG =
-	      op2_aMH
-		  _@_ b{-aGQ-} d.Eq_aH0
-	} in 
-	  \ x_r3j  :: 
-		a{-aGK-}
-	    {-# L #-}
-	    x_r3j y_r3l  :: 
-		      b{-aGQ-}
-		  {-# L #-}
-		  y_r3l ->
-	      let {
-		ds_dNv  :: 
-		    a{-aGK-}
-		{-# L #-}
-		ds_dNv =
-		    op2_aMG
-			x_r3j y_r3l
-	      } in 
-		op_aMI
-		    ds_dNv
+ds_dF9 =
+    _/\_ taBX -> \ d.Foo_aBU  ::  {Foo{-r3s,x-} taBX}
+		   {-# L #-}
+		   d.Foo_aBU ->
+	PrelBase.(){-60,w-}{i} {}
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds027.stderr b/ghc/tests/deSugar/should_compile/ds027.stderr
index 3d500d9cb34dd88f27a9005f4c21174722b462f5..a5be5a546ac085bc48ec7ece402f898903aad87c 100644
--- a/ghc/tests/deSugar/should_compile/ds027.stderr
+++ b/ghc/tests/deSugar/should_compile/ds027.stderr
@@ -1,118 +1,94 @@
-ds027.hs:8: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `=='
 ds027.hs:9: 
     Warning: Possibly incomplete patterns
 	in the definition of function `/='
+ds027.hs:8: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `=='
 
 
 ================================================================================
 Desugared:
 Rec {
-d.Eval_aGg  :: 
-    {PrelBase.Eval{-24,p-} Foo{-r3n,x-}}
+Bar{-r4,x-}{i}  ::  Foo{-r3m,x-}
+_A_ 0 {-# L #-}
+Bar{-r4,x-}{i} =
+    Bar{-r4,x-}{i} {}
+Baz{-r3,x-}{i}  ::  Foo{-r3m,x-}
+_A_ 0 {-# L #-}
+Baz{-r3,x-}{i} =
+    Baz{-r3,x-}{i} {}
+d.Eval_aB7  ::  {PrelBase.Eval{-24,p-} Foo{-r3m,x-}}
 {-# L #-}
-d.Eval_aGg =
-    PrelBase.void{-8G,p-}
-$d2{-rIX,x-}  :: 
-    {PrelBase.Eval{-24,p-} Foo{-r3n,x-}}
+d.Eval_aB7 =
+    PrelBase.void{-8G,w-}
+$d2{-rE9,x-}  ::  {PrelBase.Eval{-24,p-} Foo{-r3m,x-}}
 {-# L #-}
-$d2{-rIX,x-} =
-    d.Eval_aGg
-==_aGo  :: 
-    Foo{-r3n,x-} -> Foo{-r3n,x-} -> PrelBase.Bool{-34,p-}
+$d2{-rE9,x-} =
+    d.Eval_aB7
+==_aBg  ::  Foo{-r3m,x-} -> Foo{-r3m,x-} -> PrelBase.Bool{-34,W-}
 {-# L #-}
-==_aGo =
-    \ ds_dJM  :: 
-	  Foo{-r3n,x-}
+==_aBg =
+    \ ds_dEQ  ::  Foo{-r3m,x-}
       {-# L #-}
-      ds_dJM ds_dJN  :: 
-		 Foo{-r3n,x-}
+      ds_dEQ ds_dER  ::  Foo{-r3m,x-}
 	     {-# L #-}
-	     ds_dJN ->
+	     ds_dER ->
 	let {
-	  fail_dJO  :: 
-	      PrelBase.Bool{-34,p-}
+	  fail_dES  ::  PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  fail_dJO =
-	      GHCerr.patError{-8r,p-}
-		  _@_ PrelBase.Bool{-34,p-} _string_ "ds027.hs:8|function `=='"
+	  fail_dES =
+	      GHCerr.patError{-8r,w-}
+		  _@_ PrelBase.Bool{-34,W-} _string_ "ds027.hs:8|function `=='"
 	} in 
-	  case ds_dJM of {
-	    Baz{-r3,x-}{i} ->
-		fail_dJO;
+	  case ds_dEQ of {
+	    Baz{-r3,x-}{i} -> fail_dES;
 	    Bar{-r4,x-}{i} ->
-		case ds_dJN of {
-		  Bar{-r4,x-}{i} ->
-		      fail_dJO;
-		  Baz{-r3,x-}{i} ->
-		      PrelBase.True{-5E,p-}{i};
+		case ds_dER of {
+		  Bar{-r4,x-}{i} -> fail_dES;
+		  Baz{-r3,x-}{i} -> PrelBase.True{-5E,w-}{i};
 		};
 	  }
-==_aJ7  :: 
-    Foo{-r3n,x-} -> Foo{-r3n,x-} -> PrelBase.Bool{-34,p-}
+==_aEk  ::  Foo{-r3m,x-} -> Foo{-r3m,x-} -> PrelBase.Bool{-34,W-}
 {-# L #-}
-==_aJ7 =
-    ==_aGo
-/=_aGs  :: 
-    Foo{-r3n,x-} -> Foo{-r3n,x-} -> PrelBase.Bool{-34,p-}
+==_aEk =
+    ==_aBg
+/=_aBl  ::  Foo{-r3m,x-} -> Foo{-r3m,x-} -> PrelBase.Bool{-34,W-}
 {-# L #-}
-/=_aGs =
-    \ ds_dKq  :: 
-	  Foo{-r3n,x-}
+/=_aBl =
+    \ ds_dFu  ::  Foo{-r3m,x-}
       {-# L #-}
-      ds_dKq ds_dKr  :: 
-		 Foo{-r3n,x-}
+      ds_dFu ds_dFv  ::  Foo{-r3m,x-}
 	     {-# L #-}
-	     ds_dKr ->
+	     ds_dFv ->
 	let {
-	  fail_dKs  :: 
-	      PrelBase.Bool{-34,p-}
+	  fail_dFw  ::  PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  fail_dKs =
-	      GHCerr.patError{-8r,p-}
-		  _@_ PrelBase.Bool{-34,p-} _string_ "ds027.hs:9|function `/='"
+	  fail_dFw =
+	      GHCerr.patError{-8r,w-}
+		  _@_ PrelBase.Bool{-34,W-} _string_ "ds027.hs:9|function `/='"
 	} in 
-	  case ds_dKq of {
-	    Baz{-r3,x-}{i} ->
-		fail_dKs;
+	  case ds_dFu of {
+	    Baz{-r3,x-}{i} -> fail_dFw;
 	    Bar{-r4,x-}{i} ->
-		case ds_dKr of {
-		  Bar{-r4,x-}{i} ->
-		      fail_dKs;
-		  Baz{-r3,x-}{i} ->
-		      PrelBase.False{-58,p-}{i};
+		case ds_dFv of {
+		  Bar{-r4,x-}{i} -> fail_dFw;
+		  Baz{-r3,x-}{i} -> PrelBase.False{-58,w-}{i};
 		};
 	  }
-/=_aJg  :: 
-    Foo{-r3n,x-} -> Foo{-r3n,x-} -> PrelBase.Bool{-34,p-}
+/=_aEt  ::  Foo{-r3m,x-} -> Foo{-r3m,x-} -> PrelBase.Bool{-34,W-}
 {-# L #-}
-/=_aJg =
-    /=_aGs
-d.Eq_aGl  :: 
-    {PrelBase.Eq{-23,p-} Foo{-r3n,x-}}
+/=_aEt =
+    /=_aBl
+d.Eq_aBc  ::  {PrelBase.Eq{-23,p-} Foo{-r3m,x-}}
 {-# L #-}
-d.Eq_aGl =
-    PrelTup.(,){-62,p-}{i}
-	{_@_ (Foo{-r3n,x-} -> Foo{-r3n,x-} -> PrelBase.Bool{-34,p-})
-	 _@_ (Foo{-r3n,x-} -> Foo{-r3n,x-} -> PrelBase.Bool{-34,p-})
-	 ==_aJ7
-	 /=_aJg}
-$d1{-rJp,x-}  :: 
-    {PrelBase.Eq{-23,p-} Foo{-r3n,x-}}
+d.Eq_aBc =
+    PrelTup.(,){-62,w-}{i}
+	{_@_ (Foo{-r3m,x-} -> Foo{-r3m,x-} -> PrelBase.Bool{-34,W-})
+	 _@_ (Foo{-r3m,x-} -> Foo{-r3m,x-} -> PrelBase.Bool{-34,W-})
+	 ==_aEk
+	 /=_aEt}
+$d1{-rEb,x-}  ::  {PrelBase.Eq{-23,p-} Foo{-r3m,x-}}
 {-# L #-}
-$d1{-rJp,x-} =
-    d.Eq_aGl
-Bar{-r4,x-}{i}  :: 
-    Foo{-r3n,x-}
-_A_ 0 {-# L #-}
-Bar{-r4,x-}{i} =
-    Bar{-r4,x-}{i}
-	{}
-Baz{-r3,x-}{i}  :: 
-    Foo{-r3n,x-}
-_A_ 0 {-# L #-}
-Baz{-r3,x-}{i} =
-    Baz{-r3,x-}{i}
-	{}
+$d1{-rEb,x-} =
+    d.Eq_aBc
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds028.stderr b/ghc/tests/deSugar/should_compile/ds028.stderr
index 99e83c83e449186f5a302c8a008622194e5d7247..528ce286ed070349036b8c83431d4dd70ff51680 100644
--- a/ghc/tests/deSugar/should_compile/ds028.stderr
+++ b/ghc/tests/deSugar/should_compile/ds028.stderr
@@ -2,82 +2,62 @@
 
 ================================================================================
 Desugared:
-||||_amR  :: 
-    PrelBase.Bool{-34,p-}
-    -> PrelBase.Bool{-34,p-}
-    -> PrelBase.Bool{-34,p-}
+Rec {
+||||_akd  ::  PrelBase.Bool{-34,W-}
+	      -> PrelBase.Bool{-34,W-}
+	      -> PrelBase.Bool{-34,W-}
 {-# L #-}
-||||_amR =
-    \ ds_dq6  :: 
-	  PrelBase.Bool{-34,p-}
+||||_akd =
+    \ ds_dnL  ::  PrelBase.Bool{-34,W-}
       {-# L #-}
-      ds_dq6 ds_dq7  :: 
-		 PrelBase.Bool{-34,p-}
+      ds_dnL ds_dnU  ::  PrelBase.Bool{-34,W-}
 	     {-# L #-}
-	     ds_dq7 ->
-	case ds_dq6 of {
-	  PrelBase.True{-5E,p-}{i} ->
-	      PrelBase.True{-5E,p-}{i};
-	  PrelBase.False{-58,p-}{i} ->
-	      ds_dq7;
+	     ds_dnU ->
+	case ds_dnL of {
+	  PrelBase.True{-5E,w-}{i} -> PrelBase.True{-5E,w-}{i};
+	  PrelBase.False{-58,w-}{i} -> ds_dnU;
 	}
-||||{-r3q,x-}  :: 
-    PrelBase.Bool{-34,p-}
-    -> PrelBase.Bool{-34,p-}
-    -> PrelBase.Bool{-34,p-}
+||||{-r3m,x-}  ::  PrelBase.Bool{-34,W-}
+		   -> PrelBase.Bool{-34,W-}
+		   -> PrelBase.Bool{-34,W-}
 {-# L #-}
-||||{-r3q,x-} =
-    ||||_amR
-Rec {
-mAp{-r3r,x-}  :: 
-    _forall_
-    [t{-an5-} t{-an7-}]
-    =>
-    (t{-an5-} -> t{-an7-}) -> [t{-an5-}] -> [t{-an7-}]
+||||{-r3m,x-} =
+    ||||_akd
+mAp{-r3n,x-}  ::  _forall_
+		  [takK takO]
+		  =>
+		  (takK -> takO) -> [takK] -> [takO]
 {-# L #-}
-mAp{-r3r,x-} =
-    _/\_ t{-an5-} t{-an7-} ->
+mAp{-r3n,x-} =
+    _/\_ takK takO ->
 	_letrec_ {
-	  mAp_amZ  :: 
-	      (t{-an5-} -> t{-an7-}) -> [t{-an5-}] -> [t{-an7-}]
+	  mAp_akq  ::  (takK -> takO) -> [takK] -> [takO]
 	  {-# L #-}
-	  mAp_amZ =
-	      \ f_r3e  :: 
-		    t{-an5-} -> t{-an7-}
+	  mAp_akq =
+	      \ f_r3e  ::  takK -> takO
 		{-# L #-}
-		f_r3e ds_dqV  :: 
-			  [t{-an5-}]
+		f_r3e ds_doq  ::  [takK]
 		      {-# L #-}
-		      ds_dqV ->
-		  case ds_dqV of {
-		    PrelBase.[]{-5i,p-}{i} ->
-			PrelBase.[]{-5i,p-}{i}
-			    _@_ t{-an7-};
-		    PrelBase.:{-55,p-}{i} x_r3j xs_r3k ->
+		      ds_doq ->
+		  case ds_doq of {
+		    PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ takO;
+		    PrelBase.:{-55,w-}{i} x_r3h xs_r3i ->
 			let {
-			  f_r3h  :: 
-			      t{-an5-} -> t{-an7-}
+			  f_r3g  ::  takK -> takO
 			  {-# L #-}
-			  f_r3h =
+			  f_r3g =
 			      f_r3e } in
 			let {
-			  ds_drl  :: 
-			      t{-an7-}
+			  ds_doQ  ::  takO
 			  {-# L #-}
-			  ds_drl =
-			      f_r3h
-				  x_r3j } in
+			  ds_doQ =
+			      f_r3g x_r3h } in
 			let {
-			  ds_drp  :: 
-			      [t{-an7-}]
+			  ds_doU  ::  [takO]
 			  {-# L #-}
-			  ds_drp =
-			      mAp_amZ
-				  f_r3h xs_r3k
-			} in 
-			  PrelBase.:{-55,p-}{i}
-			      _@_ t{-an7-} ds_drl ds_drp;
+			  ds_doU =
+			      mAp_akq f_r3g xs_r3i
+			} in  PrelBase.:{-55,w-}{i} _@_ takO ds_doQ ds_doU;
 		  };
-	} in 
-	  mAp_amZ
+	} in  mAp_akq
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds029.stderr b/ghc/tests/deSugar/should_compile/ds029.stderr
index f3230a1b50ce2a47283373391405d39dd2fd8398..10856f1dc089198bc41b711e576e3804e5443b34 100644
--- a/ghc/tests/deSugar/should_compile/ds029.stderr
+++ b/ghc/tests/deSugar/should_compile/ds029.stderr
@@ -2,186 +2,131 @@
 
 ================================================================================
 Desugared:
-f{-r3h,x-}  :: 
-    _forall_
-    [t{-aY1-} t{-aYi-}]
-    =>
-    {PrelBase.Ord{-2d,p-} t{-aY1-}}
-    -> {PrelBase.Num{-2c,p-} t{-aY1-}}
-    -> t{-aYi-}
-    -> t{-aY1-}
+Rec {
+f{-r3h,x-}  ::  _forall_
+		[taSX taSv]
+		=>
+		{PrelBase.Ord{-2d,p-} taSv}
+		-> {PrelBase.Num{-2c,p-} taSv}
+		-> taSX
+		-> taSv
 {-# L #-}
 f{-r3h,x-} =
-    _/\_ t{-aY1-} t{-aYi-} -> \ d.Ord_aYk  :: 
-				    {PrelBase.Ord{-2d,p-} t{-aY1-}}
-				{-# L #-}
-				d.Ord_aYk d.Num_aYn  :: 
-					      {PrelBase.Num{-2c,p-} t{-aY1-}}
-					  {-# L #-}
-					  d.Num_aYn ->
-	let {
-	  <_a137  :: 
-	      t{-aY1-} -> t{-aY1-} -> PrelBase.Bool{-34,p-}
+    _/\_ taSX taSv -> \ d.Ord_aSZ  ::  {PrelBase.Ord{-2d,p-} taSv}
+			{-# L #-}
+			d.Ord_aSZ d.Num_aT2  ::  {PrelBase.Num{-2c,p-} taSv}
+				  {-# L #-}
+				  d.Num_aT2 ->
+	_letrec_ {
+	  <_aXx  ::  taSv -> taSv -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  <_a137 =
-	      PrelBase.<{-rcJ,p-}
-		  _@_ t{-aY1-} d.Ord_aYk } in
-	let {
-	  fromInt_a136  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aY1-}
+	  <_aXx =
+	      PrelBase.<{-rfn,p-} _@_ taSv d.Ord_aSZ;
+	  fromInt_aXE  ::  PrelBase.Int{-3g,W-} -> taSv
 	  {-# L #-}
-	  fromInt_a136 =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-aY1-} d.Num_aYn } in
-	let { lit_a135  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      lit_a135 =
-	  let {
-	    ds_d13v  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d13v =
-		PrelBase.I#{-5b,p-}{i}
-		    0
-	  } in 
-	    fromInt_a136
-		ds_d13v
-	} in
-	let {
-	  fromInt_a134  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aY1-}
+	  fromInt_aXE =
+	      PrelBase.fromInt{-8R,p-} _@_ taSv d.Num_aT2;
+	  lit_aXF  ::  taSv
 	  {-# L #-}
-	  fromInt_a134 =
-	      fromInt_a136 } in
-	let { lit_a133  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      lit_a133 =
-	  let {
-	    ds_d13K  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d13K =
-		PrelBase.I#{-5b,p-}{i}
-		    1
-	  } in 
-	    fromInt_a134
-		ds_d13K
-	} in
-	let {
-	  d.Ord_aYq  :: 
-	      {PrelBase.Ord{-2d,p-} t{-aY1-}}
+	  lit_aXF =
+	      let {
+		ds_dYN  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dYN =
+		    PrelBase.I#{-5b,w-}{i} 0
+	      } in  fromInt_aXE ds_dYN;
+	  fromInt_aXG  ::  PrelBase.Int{-3g,W-} -> taSv
 	  {-# L #-}
-	  d.Ord_aYq =
-	      d.Ord_aYk } in
-	let {
-	  >_a132  :: 
-	      t{-aY1-} -> t{-aY1-} -> PrelBase.Bool{-34,p-}
+	  fromInt_aXG =
+	      fromInt_aXE;
+	  lit_aXH  ::  taSv
 	  {-# L #-}
-	  >_a132 =
-	      PrelBase.>{-rcL,p-}
-		  _@_ t{-aY1-} d.Ord_aYq } in
-	let {
-	  fromInt_a131  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aY1-}
+	  lit_aXH =
+	      let {
+		ds_dZ2  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dZ2 =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_aXG ds_dZ2;
+	  d.Ord_aT5  ::  {PrelBase.Ord{-2d,p-} taSv}
 	  {-# L #-}
-	  fromInt_a131 =
-	      fromInt_a136 } in
-	let { lit_a130  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      lit_a130 =
-	  let {
-	    ds_d148  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d148 =
-		PrelBase.I#{-5b,p-}{i}
-		    2
-	  } in 
-	    fromInt_a131
-		ds_d148
-	} in
-	let {
-	  fromInt_a12Z  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aY1-}
+	  d.Ord_aT5 =
+	      d.Ord_aSZ;
+	  >_aXI  ::  taSv -> taSv -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  fromInt_a12Z =
-	      fromInt_a136 } in
-	let { lit_a12W  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      lit_a12W =
-	  let {
-	    ds_d14n  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d14n =
-		PrelBase.I#{-5b,p-}{i}
-		    3
-	  } in 
-	    fromInt_a12Z
-		ds_d14n
-	} in
-	\ x_r3d  :: 
-	      t{-aYi-}
+	  >_aXI =
+	      PrelBase.>{-rfp,p-} _@_ taSv d.Ord_aT5;
+	  fromInt_aXK  ::  PrelBase.Int{-3g,W-} -> taSv
 	  {-# L #-}
-	  x_r3d ->
-	    _letrec_ {
-	      lit_a14F  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      lit_a14F =
-		  lit_a133;
-	      lit_a14H  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      lit_a14H =
-		  lit_a130;
-	      ds_d14Q  :: 
-		  (t{-aY1-}, t{-aY1-})
-	      {-# L #-}
-	      ds_d14Q =
-		  case
-		      <_a137
-			  y_aXx z_aXy
-		  of {
-		    PrelBase.True{-5E,p-}{i} ->
-			PrelTup.(,){-62,p-}{i}
-			    {_@_ t{-aY1-} _@_ t{-aY1-} lit_a135 lit_a133};
-		    PrelBase.False{-58,p-}{i} ->
-			case
-			    >_a132
-				y_aXx z_aXy
-			of {
-			  PrelBase.True{-5E,p-}{i} ->
-			      PrelTup.(,){-62,p-}{i}
-				  {_@_ t{-aY1-} _@_ t{-aY1-} lit_a14F lit_a130};
-			  PrelBase.False{-58,p-}{i} ->
-			      PrelTup.(,){-62,p-}{i}
-				  {_@_ t{-aY1-} _@_ t{-aY1-} lit_a14H lit_a12W};
+	  fromInt_aXK =
+	      fromInt_aXE;
+	  lit_aXL  ::  taSv
+	  {-# L #-}
+	  lit_aXL =
+	      let {
+		ds_dZq  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dZq =
+		    PrelBase.I#{-5b,w-}{i} 2
+	      } in  fromInt_aXK ds_dZq;
+	  fromInt_aXN  ::  PrelBase.Int{-3g,W-} -> taSv
+	  {-# L #-}
+	  fromInt_aXN =
+	      fromInt_aXE;
+	  lit_aXO  ::  taSv
+	  {-# L #-}
+	  lit_aXO =
+	      let {
+		ds_dZF  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dZF =
+		    PrelBase.I#{-5b,w-}{i} 3
+	      } in  fromInt_aXN ds_dZF;
+	  f_aS1  ::  taSX -> taSv
+	  {-# L #-}
+	  f_aS1 =
+	      \ x_r3d  ::  taSX
+		{-# L #-}
+		x_r3d ->
+		  _letrec_ {
+		    lit_aZY  ::  taSv
+		    {-# L #-}
+		    lit_aZY =
+			lit_aXH;
+		    lit_a100  ::  taSv
+		    {-# L #-}
+		    lit_a100 =
+			lit_aXL;
+		    ds_d109  ::  (taSv, taSv)
+		    {-# L #-}
+		    ds_d109 =
+			case <_aXx y_aS9 z_aSa of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      PrelTup.(,){-62,w-}{i} {_@_ taSv _@_ taSv lit_aXF lit_aXH};
+			  PrelBase.False{-58,w-}{i} ->
+			      case >_aXI y_aS9 z_aSa of {
+				PrelBase.True{-5E,w-}{i} ->
+				    PrelTup.(,){-62,w-}{i} {_@_ taSv _@_ taSv lit_aZY lit_aXL};
+				PrelBase.False{-58,w-}{i} ->
+				    PrelTup.(,){-62,w-}{i} {_@_ taSv _@_ taSv lit_a100 lit_aXO};
+			      };
 			};
-		  };
-	      y_aXx  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      y_aXx =
-		  case ds_d14Q of { PrelTup.(,){-62,p-}{i} y_aXx z_aXy  -> y_aXx;};
-	      z_aXy  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      z_aXy =
-		  case ds_d14Q of { PrelTup.(,){-62,p-}{i} y_aXx z_aXy  -> z_aXy;};
-	      y_r3f  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      y_r3f =
-		  y_aXx;
-	      z_r3g  :: 
-		  t{-aY1-}
-	      {-# L #-}
-	      z_r3g =
-		  z_aXy;
-	    } in 
-	      y_r3f
+		    y_aS9  ::  taSv
+		    {-# L #-}
+		    y_aS9 =
+			case ds_d109 of { PrelTup.(,){-62,w-}{i} y_aS9 z_aSa  -> y_aS9;};
+		    z_aSa  ::  taSv
+		    {-# L #-}
+		    z_aSa =
+			case ds_d109 of { PrelTup.(,){-62,w-}{i} y_aS9 z_aSa  -> z_aSa;};
+		    y_r3f  ::  taSv
+		    {-# L #-}
+		    y_r3f =
+			y_aS9;
+		    z_r3g  ::  taSv
+		    {-# L #-}
+		    z_r3g =
+			z_aSa;
+		  } in  y_r3f;
+	} in  f_aS1
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds030.stderr b/ghc/tests/deSugar/should_compile/ds030.stderr
index beecd0ff22bcd1e933c3f59679483eb312701274..1c144afcf2e62f01462cce61849a3577228917ae 100644
--- a/ghc/tests/deSugar/should_compile/ds030.stderr
+++ b/ghc/tests/deSugar/should_compile/ds030.stderr
@@ -3,52 +3,39 @@
 ================================================================================
 Desugared:
 Rec {
+f{-r3e,x-}  ::  _forall_ [taBY] => [taBY] -> PrelBase.Int{-3g,W-}
 {-# L #-}
-d.Num_aHE =
-    PrelBase.$d3
-{-# L #-}
-fromInt_aKm =
-    PrelBase.fromInt
-	_@_ PrelBase.Int d.Num_aHE
-{-# L #-}
-lit_aKx =
-    let {
-      {-# L #-}
-      ds_dKW =
-	  PrelBase.I#
-	      3
-    } in 
-      fromInt_aKm
-	  ds_dKW
-{-# L #-}
-fromInt_aKw =
-    fromInt_aKm
+f{-r3e,x-} =
+    _/\_ taBY ->
+	_letrec_ {
+	  f_aBO  ::  [taBY] -> PrelBase.Int{-3g,W-}
+	  {-# L #-}
+	  f_aBO =
+	      \ x_r3d  ::  [taBY]
+		{-# L #-}
+		x_r3d ->
+		  let {
+		    ds_dEM  ::  [taBY]
+		    {-# L #-}
+		    ds_dEM =
+			x_r3d } in
+		  let {
+		    fail_dEO  ::  PrelBase.Int{-3g,W-}
+		    {-# L #-}
+		    fail_dEO =
+			lit_aEC
+		  } in 
+		    case ds_dEM of {
+		      PrelBase.:{-55,w-}{i} ds_dEV ds_dEW -> fail_dEO;
+		      PrelBase.[]{-5i,w-}{i} -> lit_aEA;
+		    };
+	} in  f_aBO
+lit_aEA  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-lit_aKt =
-    let {
-      {-# L #-}
-      ds_dLb =
-	  PrelBase.I#
-	      4
-    } in 
-      fromInt_aKw
-	  ds_dLb
+lit_aEA =
+    PrelBase.I#{-5b,w-}{i} 3
+lit_aEC  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-f = _/\_ t{-aHm-} -> \ {-# L #-}
-		       x_r3d ->
-	let {
-	  {-# L #-}
-	  ds_dLw =
-	      x_r3d } in
-	let {
-	  {-# L #-}
-	  fail_dLy =
-	      lit_aKt
-	} in 
-	  case ds_dLw of {
-	    PrelBase.: ds_dLG ds_dLF ->
-		fail_dLy;
-	    PrelBase.[] ->
-		lit_aKx;
-	  }
+lit_aEC =
+    PrelBase.I#{-5b,w-}{i} 4
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds031.stderr b/ghc/tests/deSugar/should_compile/ds031.stderr
index c59f652da4b2d0e4682295c9faebbc16decb9789..d6c06e83ecf9dbc28243e86e1ee3484bcebf1cc8 100644
--- a/ghc/tests/deSugar/should_compile/ds031.stderr
+++ b/ghc/tests/deSugar/should_compile/ds031.stderr
@@ -6,132 +6,98 @@ ds031.hs:4:
 ================================================================================
 Desugared:
 Rec {
-foldPair{-r3f,x-}  :: 
-    _forall_
-    [a{-aB1-} b{-aB2-}]
-    =>
-    (a{-aB1-} -> a{-aB1-} -> a{-aB1-}, b{-aB2-}
-				       -> b{-aB2-}
-				       -> b{-aB2-})
-    -> (a{-aB1-}, b{-aB2-})
-    -> [(a{-aB1-}, b{-aB2-})]
-    -> (a{-aB1-}, b{-aB2-})
+foldPair{-r3f,x-}  ::  _forall_
+		       [tayn tayo]
+		       =>
+		       (tayn -> tayn -> tayn, tayo -> tayo -> tayo)
+		       -> (tayn, tayo)
+		       -> [(tayn, tayo)]
+		       -> (tayn, tayo)
 {-# L #-}
 foldPair{-r3f,x-} =
-    _/\_ a{-aB1-} b{-aB2-} ->
+    _/\_ tayn tayo ->
 	_letrec_ {
-	  foldPair_aAY  :: 
-	      (a{-aB1-} -> a{-aB1-} -> a{-aB1-}, b{-aB2-}
-						 -> b{-aB2-}
-						 -> b{-aB2-})
-	      -> (a{-aB1-}, b{-aB2-})
-	      -> [(a{-aB1-}, b{-aB2-})]
-	      -> (a{-aB1-}, b{-aB2-})
+	  foldPair_ayk  ::  (tayn -> tayn -> tayn, tayo -> tayo -> tayo)
+			    -> (tayn, tayo)
+			    -> [(tayn, tayo)]
+			    -> (tayn, tayo)
 	  {-# L #-}
-	  foldPair_aAY =
-	      \ fg_r3h  :: 
-		    (a{-aB1-} -> a{-aB1-} -> a{-aB1-}, b{-aB2-}
-						       -> b{-aB2-}
-						       -> b{-aB2-})
+	  foldPair_ayk =
+	      \ fg_r3h  ::  (tayn -> tayn -> tayn, tayo -> tayo -> tayo)
 		{-# L #-}
-		fg_r3h ab_r3j  :: 
-			   (a{-aB1-}, b{-aB2-})
+		fg_r3h ab_r3i  ::  (tayn, tayo)
 		       {-# L #-}
-		       ab_r3j ds_dFz  :: 
-				  [(a{-aB1-}, b{-aB2-})]
+		       ab_r3i ds_dDb  ::  [(tayn, tayo)]
 			      {-# L #-}
-			      ds_dFz ->
+			      ds_dDb ->
 		  let {
-		    fail_dFA  :: 
-			(a{-aB1-}, b{-aB2-})
+		    fail_dDc  ::  (tayn, tayo)
 		    {-# L #-}
-		    fail_dFA =
-			GHCerr.patError{-8r,p-}
-			    _@_ (a{-aB1-}, b{-aB2-})
-			    _string_ "ds031.hs:4|function `foldPair'" } in
+		    fail_dDc =
+			GHCerr.patError{-8r,w-}
+			    _@_ (tayn, tayo) _string_ "ds031.hs:4|function `foldPair'" } in
 		  let {
-		    fail_dHs  :: 
-			(a{-aB1-}, b{-aB2-})
+		    fail_dF4  ::  (tayn, tayo)
 		    {-# L #-}
-		    fail_dHs =
-			case fg_r3h of { PrelTup.(,){-62,p-}{i} f_r3n g_r3o  ->
-			case ds_dFz of {
-			  PrelBase.[]{-5i,p-}{i} ->
-			      fail_dFA;
-			  PrelBase.:{-55,p-}{i} ds_dFV abs_r3u ->
-			      case ds_dFV of { PrelTup.(,){-62,p-}{i} a_r3s b_r3t  ->
+		    fail_dF4 =
+			case fg_r3h of { PrelTup.(,){-62,w-}{i} f_r3l g_r3m  ->
+			case ds_dDb of {
+			  PrelBase.[]{-5i,w-}{i} -> fail_dDc;
+			  PrelBase.:{-55,w-}{i} ds_dDx abs_r3q ->
+			      case ds_dDx of { PrelTup.(,){-62,w-}{i} a_r3o b_r3p  ->
 			      let {
-				ab_r3q  :: 
-				    (a{-aB1-}, b{-aB2-})
+				ab_r3n  ::  (tayn, tayo)
 				{-# L #-}
-				ab_r3q =
-				    ab_r3j } in
+				ab_r3n =
+				    ab_r3i } in
 			      let {
-				fg_r3m  :: 
-				    (a{-aB1-} -> a{-aB1-} -> a{-aB1-}, b{-aB2-}
-								       -> b{-aB2-}
-								       -> b{-aB2-})
+				fg_r3k  ::  (tayn -> tayn -> tayn, tayo -> tayo -> tayo)
 				{-# L #-}
-				fg_r3m =
+				fg_r3k =
 				    fg_r3h } in
 			      let {
-				ds_dGR  :: 
-				    (a{-aB1-}, b{-aB2-})
+				ds_dEt  ::  (tayn, tayo)
 				{-# L #-}
-				ds_dGR =
-				    foldPair{-r3f,x-}
-					_@_ a{-aB1-} _@_ b{-aB2-} fg_r3m ab_r3q abs_r3u } in
+				ds_dEt =
+				    foldPair{-r3f,x-} _@_ tayn _@_ tayo fg_r3k ab_r3n abs_r3q } in
 			      let {
-				u_aBw  :: 
-				    a{-aB1-}
+				u_ayS  ::  tayn
 				{-# L #-}
-				u_aBw =
-				    case ds_dGR of { PrelTup.(,){-62,p-}{i} u_aBw v_aBx  ->
-				    u_aBw;} } in
+				u_ayS =
+				    case ds_dEt of { PrelTup.(,){-62,w-}{i} u_ayS v_ayT  ->
+				    u_ayS;} } in
 			      let {
-				v_aBx  :: 
-				    b{-aB2-}
+				v_ayT  ::  tayo
 				{-# L #-}
-				v_aBx =
-				    case ds_dGR of { PrelTup.(,){-62,p-}{i} u_aBw v_aBx  ->
-				    v_aBx;} } in
+				v_ayT =
+				    case ds_dEt of { PrelTup.(,){-62,w-}{i} u_ayS v_ayT  ->
+				    v_ayT;} } in
 			      let {
-				u_r3w  :: 
-				    a{-aB1-}
+				u_r3s  ::  tayn
 				{-# L #-}
-				u_r3w =
-				    u_aBw } in
+				u_r3s =
+				    u_ayS } in
 			      let {
-				v_r3x  :: 
-				    b{-aB2-}
+				v_r3t  ::  tayo
 				{-# L #-}
-				v_r3x =
-				    v_aBx } in
+				v_r3t =
+				    v_ayT } in
 			      let {
-				ds_dGq  :: 
-				    a{-aB1-}
+				ds_dE2  ::  tayn
 				{-# L #-}
-				ds_dGq =
-				    f_r3n
-					a_r3s u_r3w } in
+				ds_dE2 =
+				    f_r3l a_r3o u_r3s } in
 			      let {
-				ds_dGu  :: 
-				    b{-aB2-}
+				ds_dE6  ::  tayo
 				{-# L #-}
-				ds_dGu =
-				    g_r3o
-					b_r3t v_r3x
-			      } in 
-				PrelTup.(,){-62,p-}{i}
-				    {_@_ a{-aB1-} _@_ b{-aB2-} ds_dGq ds_dGu};};
+				ds_dE6 =
+				    g_r3m b_r3p v_r3t
+			      } in  PrelTup.(,){-62,w-}{i} {_@_ tayn _@_ tayo ds_dE2 ds_dE6};};
 			};}
 		  } in 
-		    case ds_dFz of {
-		      PrelBase.:{-55,p-}{i} ds_dHA ds_dHz ->
-			  fail_dHs;
-		      PrelBase.[]{-5i,p-}{i} ->
-			  ab_r3j;
+		    case ds_dDb of {
+		      PrelBase.:{-55,w-}{i} ds_dFb ds_dFc -> fail_dF4;
+		      PrelBase.[]{-5i,w-}{i} -> ab_r3i;
 		    };
-	} in 
-	  foldPair_aAY
+	} in  foldPair_ayk
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds032.stderr b/ghc/tests/deSugar/should_compile/ds032.stderr
index 1276b4e37208b54f2af932f874aa00d5dc372fcc..742fcea1fac74636681e1090cbe2e929cbdb6667 100644
--- a/ghc/tests/deSugar/should_compile/ds032.stderr
+++ b/ghc/tests/deSugar/should_compile/ds032.stderr
@@ -6,196 +6,159 @@ ds032.hs:12:
 ================================================================================
 Desugared:
 Rec {
-d.Fractional_a11b  :: 
-    {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Fractional_a11b =
-    PrelNum.$d23{-rGg,p-}
-fromRational_a17D  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a17D =
-    PrelNum.fromRational{-8T,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Fractional_a11b
-lit_a17V  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a17V =
-    fromRational_a17D
-	_rational_  0 1
-d.Eq_a11e  :: 
-    {PrelBase.Eq{-23,p-} PrelBase.Float{-3c,p-}}
-{-# L #-}
-d.Eq_a11e =
-    PrelNum.$d27{-rGk,p-}
-==_a17U  :: 
-    PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a17U =
-    PrelBase.=={-8Y,p-}
-	_@_ PrelBase.Float{-3c,p-} d.Eq_a11e
-fromRational_a17T  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a17T =
-    fromRational_a17D
-lit_a17S  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a17S =
-    fromRational_a17T
-	_rational_  1 1
-fromRational_a17R  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a17R =
-    fromRational_a17D
-lit_a17Q  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a17Q =
-    fromRational_a17R
-	_rational_  11 10
-fromRational_a17P  :: 
-    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
-{-# L #-}
-fromRational_a17P =
-    fromRational_a17D
-lit_a17K  :: 
-    PrelBase.Float{-3c,p-}
-{-# L #-}
-lit_a17K =
-    fromRational_a17P
-	_rational_  6 5
-==_a18C  :: 
-    PrelBase.Float{-3c,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a18C =
-    ==_a17U
-flatten_a10r  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
-    -> PrelBase.String{-rzM,p-}
-{-# L #-}
-flatten_a10r =
-    \ n_r3i  :: 
-	  PrelBase.Int{-3g,p-}
+==_a11H  ::  PrelBase.Float{-3c,W-}
+	     -> PrelBase.Float{-3c,W-}
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+==_a11H =
+    ==_a11J
+flatten_aUn  ::  PrelBase.Int{-3g,W-}
+		 -> PrelBase.Bool{-34,W-}
+		 -> PrelBase.Float{-3c,W-}
+		 -> [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
+		 -> PrelBase.String{-rAJ,p-}
+{-# L #-}
+flatten_aUn =
+    \ n_r3i  ::  PrelBase.Int{-3g,W-}
       {-# L #-}
-      n_r3i nlp_r3k  :: 
-		PrelBase.Bool{-34,p-}
+      n_r3i nlp_r3j  ::  PrelBase.Bool{-34,W-}
 	    {-# L #-}
-	    nlp_r3k ds_d19G  :: 
-			PrelBase.Float{-3c,p-}
+	    nlp_r3j ds_d13a  ::  PrelBase.Float{-3c,W-}
 		    {-# L #-}
-		    ds_d19G seqs_r3n  :: 
-				[(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
+		    ds_d13a seqs_r3k  ::  [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
 			    {-# L #-}
-			    seqs_r3n ->
+			    seqs_r3k ->
 	let {
-	  fail_d19H  :: 
-	      PrelBase.String{-rzM,p-}
+	  fail_d13b  ::  PrelBase.String{-rAJ,p-}
 	  {-# L #-}
-	  fail_d19H =
-	      GHCerr.patError{-8r,p-}
-		  _@_ PrelBase.String{-rzM,p-}
+	  fail_d13b =
+	      GHCerr.patError{-8r,w-}
+		  _@_ PrelBase.String{-rAJ,p-}
 		  _string_ "ds032.hs:12|function `flatten'"
 	} in 
-	  case ds_d19G of { PrelBase.F#{-59,p-}{i} ds_d19Q  ->
-	  case# ds_d19Q of {
-	    _float_ 0.0000000000000000 ->
-		flattenS{-r3,x-}
-		    nlp_r3k seqs_r3n;
+	  case ds_d13a of { PrelBase.F#{-59,w-}{i} ds_d13k  ->
+	  case# ds_d13k of {
+	    _float_ 0.0000000000000000 -> flattenS{-r3,x-} nlp_r3j seqs_r3k;
 	    _float_ 1.0000000000000000 ->
 		let {
-		  seqs_r3u  :: 
-		      [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
+		  seqs_r3o  ::  [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
 		  {-# L #-}
-		  seqs_r3u =
-		      seqs_r3n } in
+		  seqs_r3o =
+		      seqs_r3k } in
 		let {
-		  nlp_r3r  :: 
-		      PrelBase.Bool{-34,p-}
+		  nlp_r3n  ::  PrelBase.Bool{-34,W-}
 		  {-# L #-}
-		  nlp_r3r =
-		      nlp_r3k } in
+		  nlp_r3n =
+		      nlp_r3j } in
 		let {
-		  n_r3p  :: 
-		      PrelBase.Int{-3g,p-}
+		  n_r3m  ::  PrelBase.Int{-3g,W-}
 		  {-# L #-}
-		  n_r3p =
+		  n_r3m =
 		      n_r3i } in
-		let { ds_d1at  :: 
-			  [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
+		let { ds_d13X  ::  [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
 		      {-# L #-}
-		      ds_d1at =
+		      ds_d13X =
 		  let {
-		    ds_d1aG  :: 
-			(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})
+		    ds_d14a  ::  (PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})
 		    {-# L #-}
-		    ds_d1aG =
-			PrelTup.(,){-62,p-}{i}
-			    {_@_ PrelBase.Int{-3g,p-}
-			     _@_ PrelBase.Float{-3c,p-}
-			     n_r3p
-			     lit_a17K}
+		    ds_d14a =
+			PrelTup.(,){-62,w-}{i}
+			    {_@_ PrelBase.Int{-3g,W-}
+			     _@_ PrelBase.Float{-3c,W-}
+			     n_r3m
+			     lit_a11V}
 		  } in 
-		    PrelBase.:{-55,p-}{i}
-			_@_ (PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-}) ds_d1aG seqs_r3u
+		    PrelBase.:{-55,w-}{i}
+			_@_ (PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-}) ds_d14a seqs_r3o
 		} in
-		flatten{-r1,x-}
-		    n_r3p nlp_r3r lit_a17Q ds_d1at;
-	    ds_d1b0 ->
-		fail_d19H;
+		flatten{-r1,x-} n_r3m nlp_r3n lit_a11S ds_d13X;
+	    ds_d14u -> fail_d13b;
 	  };}
-flattenS_a10s  :: 
-    PrelBase.Bool{-34,p-}
-    -> [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
-    -> PrelBase.String{-rzM,p-}
-{-# L #-}
-flattenS_a10s =
-    \ nlp_r3w  :: 
-	  PrelBase.Bool{-34,p-}
+flattenS_aUo  ::  PrelBase.Bool{-34,W-}
+		  -> [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
+		  -> PrelBase.String{-rAJ,p-}
+{-# L #-}
+flattenS_aUo =
+    \ nlp_r3q  ::  PrelBase.Bool{-34,W-}
       {-# L #-}
-      nlp_r3w ds_d1b6  :: 
-		  [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
+      nlp_r3q ds_d14A  ::  [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
 	      {-# L #-}
-	      ds_d1b6 ->
-	case ds_d1b6 of {
-	  PrelBase.[]{-5i,p-}{i} ->
-	      PrelBase.[]{-5i,p-}{i}
-		  {_@_ PrelBase.Char{-38,p-}};
-	  PrelBase.:{-55,p-}{i} ds_d1bl seqs_r3D ->
-	      case ds_d1bl of { PrelTup.(,){-62,p-}{i} col_r3B seq_r3C  ->
+	      ds_d14A ->
+	case ds_d14A of {
+	  PrelBase.[]{-5i,w-}{i} ->
+	      PrelBase.[]{-5i,w-}{i} {_@_ PrelBase.Char{-38,W-}};
+	  PrelBase.:{-55,w-}{i} ds_d14P seqs_r3v ->
+	      case ds_d14P of { PrelTup.(,){-62,w-}{i} col_r3t seq_r3u  ->
 	      let {
-		nlp_r3z  :: 
-		    PrelBase.Bool{-34,p-}
+		nlp_r3s  ::  PrelBase.Bool{-34,W-}
 		{-# L #-}
-		nlp_r3z =
-		    nlp_r3w
-	      } in 
-		flatten{-r1,x-}
-		    col_r3B nlp_r3z seq_r3C seqs_r3D;};
+		nlp_r3s =
+		    nlp_r3q
+	      } in  flatten{-r1,x-} col_r3t nlp_r3s seq_r3u seqs_r3v;};
 	}
-flatten{-r1,x-}  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-    -> PrelBase.Float{-3c,p-}
-    -> [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
-    -> PrelBase.String{-rzM,p-}
+flatten{-r1,x-}  ::  PrelBase.Int{-3g,W-}
+		     -> PrelBase.Bool{-34,W-}
+		     -> PrelBase.Float{-3c,W-}
+		     -> [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
+		     -> PrelBase.String{-rAJ,p-}
 {-# L #-}
 flatten{-r1,x-} =
-    flatten_a10r
-flattenS{-r3,x-}  :: 
-    PrelBase.Bool{-34,p-}
-    -> [(PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-})]
-    -> PrelBase.String{-rzM,p-}
+    flatten_aUn
+flattenS{-r3,x-}  ::  PrelBase.Bool{-34,W-}
+		      -> [(PrelBase.Int{-3g,W-}, PrelBase.Float{-3c,W-})]
+		      -> PrelBase.String{-rAJ,p-}
 {-# L #-}
 flattenS{-r3,x-} =
-    flattenS_a10s
+    flattenS_aUo
+d.Fractional_aV4  ::  {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Fractional_aV4 =
+    PrelNum.$d23{-rCU,p-}
+fromRational_a11K  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a11K =
+    PrelNum.fromRational{-8T,p-}
+	_@_ PrelBase.Float{-3c,W-} d.Fractional_aV4
+lit_a11L  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a11L =
+    fromRational_a11K _rational_  0 1
+d.Eq_aV7  ::  {PrelBase.Eq{-23,p-} PrelBase.Float{-3c,W-}}
+{-# L #-}
+d.Eq_aV7 =
+    PrelNum.$d27{-rCY,p-}
+==_a11J  ::  PrelBase.Float{-3c,W-}
+	     -> PrelBase.Float{-3c,W-}
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+==_a11J =
+    PrelBase.=={-8Y,p-} _@_ PrelBase.Float{-3c,W-} d.Eq_aV7
+fromRational_a11O  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a11O =
+    fromRational_a11K
+lit_a11P  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a11P =
+    fromRational_a11O _rational_  1 1
+fromRational_a11R  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a11R =
+    fromRational_a11K
+lit_a11S  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a11S =
+    fromRational_a11R _rational_  11 10
+fromRational_a11U  ::  PrelNum.Rational{-3r,p-}
+		       -> PrelBase.Float{-3c,W-}
+{-# L #-}
+fromRational_a11U =
+    fromRational_a11K
+lit_a11V  ::  PrelBase.Float{-3c,W-}
+{-# L #-}
+lit_a11V =
+    fromRational_a11U _rational_  6 5
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds033.stderr b/ghc/tests/deSugar/should_compile/ds033.stderr
index d6dd38f0490863b6711fb13efe0265d97cbd3cf1..bddc426f5248cc489f6b617bb8d951d99119a483 100644
--- a/ghc/tests/deSugar/should_compile/ds033.stderr
+++ b/ghc/tests/deSugar/should_compile/ds033.stderr
@@ -3,160 +3,138 @@
 ================================================================================
 Desugared:
 Rec {
-ds_dsc  :: 
-    _forall_
-    [t{-anl-} t{-ann-}]
-    =>
-    (t{-anl-} -> t{-ann-}, t{-anl-} -> t{-ann-})
+ds_dq1  ::  _forall_ [takN takP] => (takP -> takN, takP -> takN)
 {-# L #-}
-ds_dsc =
-    _/\_ t{-anl-} t{-ann-} ->
+ds_dq1 =
+    _/\_ takN takP ->
 	_letrec_ {
-	  g4_an6  :: 
-	      t{-anl-} -> t{-ann-}
+	  g4_akw  ::  takP -> takN
 	  {-# L #-}
-	  g4_an6 =
-	      \ y_r3w  :: 
-		    t{-anl-}
+	  g4_akw =
+	      \ y_r3w  ::  takP
 		{-# L #-}
 		y_r3w ->
-		  f4_an7
-		      y_r3w;
-	  f4_an7  :: 
-	      t{-anl-} -> t{-ann-}
+		  f4_akx y_r3w;
+	  f4_akx  ::  takP -> takN
 	  {-# L #-}
-	  f4_an7 =
-	      \ x_r3y  :: 
-		    t{-anl-}
+	  f4_akx =
+	      \ x_r3y  ::  takP
 		{-# L #-}
 		x_r3y ->
-		  g4_an6
-		      x_r3y;
+		  g4_akw x_r3y;
 	} in 
-	  PrelTup.(,){-62,p-}{i}
-	      {_@_ (t{-anl-} -> t{-ann-})
-	       _@_ (t{-anl-} -> t{-ann-})
-	       g4_an6
-	       f4_an7}
-g4{-r3A,x-}  :: 
-    _forall_ [t{-anl-} t{-ann-}] => t{-anl-} -> t{-ann-}
+	  PrelTup.(,){-62,w-}{i}
+	      {_@_ (takP -> takN) _@_ (takP -> takN) g4_akw f4_akx}
+g4{-r3A,x-}  ::  _forall_ [takN takP] => takP -> takN
 {-# L #-}
 g4{-r3A,x-} =
-    _/\_ t{-anl-} t{-ann-} ->
+    _/\_ takN takP ->
 	case
-	    ds_dsc
-		_@_ t{-anl-} _@_ t{-ann-}
+	    ds_dq1 _@_ takN _@_ takP
 	of {
-	PrelTup.(,){-62,p-}{i} ds_dth ds_dti  ->
-	ds_dth;}
-f4{-r3z,x-}  :: 
-    _forall_ [t{-anl-} t{-ann-}] => t{-anl-} -> t{-ann-}
+	PrelTup.(,){-62,w-}{i} ds_drz ds_drA  ->
+	ds_drz;}
+f4{-r3z,x-}  ::  _forall_ [takN takP] => takP -> takN
 {-# L #-}
 f4{-r3z,x-} =
-    _/\_ t{-anl-} t{-ann-} ->
+    _/\_ takN takP ->
 	case
-	    ds_dsc
-		_@_ t{-anl-} _@_ t{-ann-}
+	    ds_dq1 _@_ takN _@_ takP
 	of {
-	PrelTup.(,){-62,p-}{i} ds_dtB ds_dtA  ->
-	ds_dtA;}
-end Rec }
-Rec {
-ds_dtM  :: 
-    _forall_
-    [t{-anE-} t{-anG-}]
-    =>
-    (t{-anE-} -> t{-anG-}, t{-anE-} -> t{-anG-})
+	PrelTup.(,){-62,w-}{i} ds_drT ds_drS  ->
+	ds_drS;}
+ds_dqx  ::  _forall_ [tal8 tala] => (tala -> tal8, tala -> tal8)
 {-# L #-}
-ds_dtM =
-    _/\_ t{-anE-} t{-anG-} ->
+ds_dqx =
+    _/\_ tal8 tala ->
 	_letrec_ {
-	  f3_anp  :: 
-	      t{-anE-} -> t{-anG-}
+	  f3_akR  ::  tala -> tal8
 	  {-# L #-}
-	  f3_anp =
-	      \ x_r3s  :: 
-		    t{-anE-}
+	  f3_akR =
+	      \ x_r3s  ::  tala
 		{-# L #-}
 		x_r3s ->
-		  g3_anq
-		      x_r3s;
-	  g3_anq  :: 
-	      t{-anE-} -> t{-anG-}
+		  g3_akS x_r3s;
+	  g3_akS  ::  tala -> tal8
 	  {-# L #-}
-	  g3_anq =
-	      \ y_r3u  :: 
-		    t{-anE-}
+	  g3_akS =
+	      \ y_r3u  ::  tala
 		{-# L #-}
 		y_r3u ->
-		  f3_anp
-		      y_r3u;
+		  f3_akR y_r3u;
 	} in 
-	  PrelTup.(,){-62,p-}{i}
-	      {_@_ (t{-anE-} -> t{-anG-})
-	       _@_ (t{-anE-} -> t{-anG-})
-	       f3_anp
-	       g3_anq}
-f3{-r3C,x-}  :: 
-    _forall_ [t{-anE-} t{-anG-}] => t{-anE-} -> t{-anG-}
+	  PrelTup.(,){-62,w-}{i}
+	      {_@_ (tala -> tal8) _@_ (tala -> tal8) f3_akR g3_akS}
+f3{-r3C,x-}  ::  _forall_ [tal8 tala] => tala -> tal8
 {-# L #-}
 f3{-r3C,x-} =
-    _/\_ t{-anE-} t{-anG-} ->
+    _/\_ tal8 tala ->
 	case
-	    ds_dtM
-		_@_ t{-anE-} _@_ t{-anG-}
+	    ds_dqx _@_ tal8 _@_ tala
 	of {
-	PrelTup.(,){-62,p-}{i} ds_duR ds_duS  ->
-	ds_duR;}
-g3{-r3B,x-}  :: 
-    _forall_ [t{-anE-} t{-anG-}] => t{-anE-} -> t{-anG-}
+	PrelTup.(,){-62,w-}{i} ds_dsQ ds_dsR  ->
+	ds_dsQ;}
+g3{-r3B,x-}  ::  _forall_ [tal8 tala] => tala -> tal8
 {-# L #-}
 g3{-r3B,x-} =
-    _/\_ t{-anE-} t{-anG-} ->
+    _/\_ tal8 tala ->
 	case
-	    ds_dtM
-		_@_ t{-anE-} _@_ t{-anG-}
+	    ds_dqx _@_ tal8 _@_ tala
 	of {
-	PrelTup.(,){-62,p-}{i} ds_dvb ds_dva  ->
-	ds_dva;}
-end Rec }
-g2{-r3E,x-}  :: 
-    _forall_ [t{-anO-}] => t{-anO-} -> t{-anO-}
+	PrelTup.(,){-62,w-}{i} ds_dta ds_dt9  ->
+	ds_dt9;}
+g2{-r3E,x-}  ::  _forall_ [tall] => tall -> tall
 {-# L #-}
 g2{-r3E,x-} =
-    _/\_ t{-anO-} -> \ y_r3o  :: 
-			   t{-anO-}
-		       {-# L #-}
-		       y_r3o ->
-	y_r3o
-f2{-r3D,x-}  :: 
-    _forall_ [t{-anU-}] => t{-anU-} -> t{-anU-}
+    _/\_ tall ->
+	_letrec_ {
+	  g2_alc  ::  tall -> tall
+	  {-# L #-}
+	  g2_alc =
+	      \ y_r3o  ::  tall
+		{-# L #-}
+		y_r3o ->
+		  y_r3o;
+	} in  g2_alc
+f2{-r3D,x-}  ::  _forall_ [talw] => talw -> talw
 {-# L #-}
 f2{-r3D,x-} =
-    _/\_ t{-anU-} -> \ x_r3q  :: 
-			   t{-anU-}
-		       {-# L #-}
-		       x_r3q ->
-	g2{-r3E,x-}
-	    _@_ t{-anU-} x_r3q
-g1{-r3F,x-}  :: 
-    _forall_ [t{-ao4-}] => t{-ao4-} -> t{-ao4-}
+    _/\_ talw ->
+	_letrec_ {
+	  f2_aln  ::  talw -> talw
+	  {-# L #-}
+	  f2_aln =
+	      \ x_r3q  ::  talw
+		{-# L #-}
+		x_r3q ->
+		  g2{-r3E,x-} _@_ talw x_r3q;
+	} in  f2_aln
+g1{-r3F,x-}  ::  _forall_ [talH] => talH -> talH
 {-# L #-}
 g1{-r3F,x-} =
-    _/\_ t{-ao4-} -> \ y_r3m  :: 
-			   t{-ao4-}
-		       {-# L #-}
-		       y_r3m ->
-	y_r3m
-f1{-r3G,x-}  :: 
-    _forall_ [t{-aoa-}] => t{-aoa-} -> t{-aoa-}
+    _/\_ talH ->
+	_letrec_ {
+	  g1_aly  ::  talH -> talH
+	  {-# L #-}
+	  g1_aly =
+	      \ y_r3m  ::  talH
+		{-# L #-}
+		y_r3m ->
+		  y_r3m;
+	} in  g1_aly
+f1{-r3G,x-}  ::  _forall_ [talS] => talS -> talS
 {-# L #-}
 f1{-r3G,x-} =
-    _/\_ t{-aoa-} -> \ x_r3k  :: 
-			   t{-aoa-}
-		       {-# L #-}
-		       x_r3k ->
-	g1{-r3F,x-}
-	    _@_ t{-aoa-} x_r3k
+    _/\_ talS ->
+	_letrec_ {
+	  f1_alJ  ::  talS -> talS
+	  {-# L #-}
+	  f1_alJ =
+	      \ x_r3k  ::  talS
+		{-# L #-}
+		x_r3k ->
+		  g1{-r3F,x-} _@_ talS x_r3k;
+	} in  f1_alJ
+end Rec }
 
 NOTE: Simplifier still going after 4 iterations; bailing out.
diff --git a/ghc/tests/deSugar/should_compile/ds034.stderr b/ghc/tests/deSugar/should_compile/ds034.stderr
index 9a2659f841d799e6d3a7db8e846e58c98358bdb9..b8bcc0e9013ed70816c646fa62bd065e650acabb 100644
--- a/ghc/tests/deSugar/should_compile/ds034.stderr
+++ b/ghc/tests/deSugar/should_compile/ds034.stderr
@@ -3,108 +3,76 @@
 ================================================================================
 Desugared:
 Rec {
-op1{-r3r,x-}  :: 
-    _forall_
-    [a{-r3p-}]
-    =>
-    {Foo{-r3s,x-} a{-r3p-}} -> a{-r3p-} -> a{-r3p-}
+op2_amz  ::  PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-}
 {-# L #-}
-op1{-r3r,x-} =
-    _/\_ a{-r3p-} -> \ tpl_B1  :: 
-			   {Foo{-r3s,x-} a{-r3p-}}
-		       {-# L #-}
-		       tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
-op2{-r3q,x-}  :: 
-    _forall_
-    [a{-r3p-}]
-    =>
-    {Foo{-r3s,x-} a{-r3p-}} -> a{-r3p-} -> a{-r3p-}
-{-# L #-}
-op2{-r3q,x-} =
-    _/\_ a{-r3p-} -> \ tpl_B1  :: 
-			   {Foo{-r3s,x-} a{-r3p-}}
-		       {-# L #-}
-		       tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
-$mop1{-rn8,x-}  :: 
-    _forall_
-    [a{-r3p-}]
-    =>
-    {Foo{-r3s,x-} a{-r3p-}} -> a{-r3p-} -> a{-r3p-}
-{-# L #-}
-$mop1{-rn8,x-} =
-    _/\_ a{-anB-} -> \ d.Foo_anu  :: 
-			   {Foo{-r3s,x-} a{-anB-}}
-		       {-# L #-}
-		       d.Foo_anu ->
-	GHCerr.noDefaultMethodError{-8k,p-}
-	    _@_ (a{-anB-} -> a{-anB-}) _string_ "Class Foo Method op1"
-$mop2{-rn7,x-}  :: 
-    _forall_
-    [a{-r3p-}]
-    =>
-    {Foo{-r3s,x-} a{-r3p-}} -> a{-r3p-} -> a{-r3p-}
-{-# L #-}
-$mop2{-rn7,x-} =
-    _/\_ a{-anB-} -> \ d.Foo_anE  :: 
-			   {Foo{-r3s,x-} a{-anB-}}
-		       {-# L #-}
-		       d.Foo_anE ->
-	GHCerr.noDefaultMethodError{-8k,p-}
-	    _@_ (a{-anB-} -> a{-anB-}) _string_ "Class Foo Method op2"
-op2_aq8  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-op2_aq8 =
-    op2_aqv
-op1_aqd  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+op2_amz =
+    op2_amB
+op1_amD  ::  PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-}
 {-# L #-}
-op1_aqd =
-    op1_aqm
-op1_an6  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+op1_amD =
+    op1_amE
+op1_akv  ::  PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-}
 {-# L #-}
-op1_an6 =
-    \ x_r3i  :: 
-	  PrelBase.Int{-3g,p-}
+op1_akv =
+    \ x_r3i  ::  PrelBase.Int{-3g,W-}
       {-# L #-}
       x_r3i ->
-	op2_aq8
-	    x_r3i
-op1_aqm  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+	op2_amz x_r3i
+op1_amE  ::  PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-}
 {-# L #-}
-op1_aqm =
-    op1_an6
-op2_anj  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+op1_amE =
+    op1_akv
+op2_akF  ::  PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-}
 {-# L #-}
-op2_anj =
-    \ y_r3m  :: 
-	  PrelBase.Int{-3g,p-}
+op2_akF =
+    \ y_r3m  ::  PrelBase.Int{-3g,W-}
       {-# L #-}
       y_r3m ->
-	op1_aqd
-	    y_r3m
-op2_aqv  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+	op1_amD y_r3m
+op2_amB  ::  PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-}
 {-# L #-}
-op2_aqv =
-    op2_anj
-d.Foo_an3  :: 
-    {Foo{-r3s,x-} PrelBase.Int{-3g,p-}}
+op2_amB =
+    op2_akF
+d.Foo_akr  ::  {Foo{-r3q,x-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Foo_akr =
+    PrelTup.(,){-62,w-}{i}
+	{_@_ (PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-})
+	 _@_ (PrelBase.Int{-3g,W-} -> PrelBase.Int{-3g,W-})
+	 op1_amE
+	 op2_amB}
+$d1{-rmC,x-}  ::  {Foo{-r3q,x-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+$d1{-rmC,x-} =
+    d.Foo_akr
+op1{-r3r,x-}  ::  _forall_
+		  [a_tr3p]
+		  =>
+		  {Foo{-r3q,x-} a_tr3p} -> a_tr3p -> a_tr3p
+{-# L #-}
+op1{-r3r,x-} =
+    _/\_ t12 -> \ tpl_B1  ::  {Foo{-r3q,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op2{-r3s,x-}  ::  _forall_
+		  [a_tr3p]
+		  =>
+		  {Foo{-r3q,x-} a_tr3p} -> a_tr3p -> a_tr3p
 {-# L #-}
-d.Foo_an3 =
-    PrelTup.(,){-62,p-}{i}
-	{_@_ (PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-})
-	 _@_ (PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-})
-	 op1_aqm
-	 op2_aqv}
-$d1{-rqE,x-}  :: 
-    {Foo{-r3s,x-} PrelBase.Int{-3g,p-}}
+op2{-r3s,x-} =
+    _/\_ t12 -> \ tpl_B1  ::  {Foo{-r3q,x-} t12}
+		  {-# L #-}
+		  tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+ds_dnj  ::  _forall_
+	    [takP]
+	    =>
+	    {Foo{-r3q,x-} takP} -> PrelBase.(){-40,W-}
 {-# L #-}
-$d1{-rqE,x-} =
-    d.Foo_an3
+ds_dnj =
+    _/\_ takP -> \ d.Foo_akO  ::  {Foo{-r3q,x-} takP}
+		   {-# L #-}
+		   d.Foo_akO ->
+	PrelBase.(){-60,w-}{i} {}
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds035.hs b/ghc/tests/deSugar/should_compile/ds035.hs
index 5a29a0eb3be8202f35a1a3bad02579f05c9555d0..e6383bc059b3923ba676a1df6d454eeb823d25ba 100644
--- a/ghc/tests/deSugar/should_compile/ds035.hs
+++ b/ghc/tests/deSugar/should_compile/ds035.hs
@@ -1,17 +1,19 @@
+import GlaExts
+
 data CList = CNil | CCons Int# CList
 
 mk :: Int# -> CList
 mk n = case (n ==# 0#) of
-       0# -> CNil
-       _  -> CCons 1# (mk (n `minusInt#` 1#))
+       False -> CNil
+       _     -> CCons 1# (mk (n -# 1#))
 
 clen :: CList -> Int#
 clen CNil = 0#
 clen (CCons _ cl) = 1# +# (clen cl)
 
-main = case len4_twice of
+main = putStr (case len4_twice of
 	    8# -> "bingo\n"
-	    _  -> "oops\n"
+	    _  -> "oops\n")
   where
     list4	= mk 4#
     len4	= clen list4
diff --git a/ghc/tests/deSugar/should_compile/ds035.stderr b/ghc/tests/deSugar/should_compile/ds035.stderr
index 1aa6581dd1ac5799af336a9633aaefa62ef19034..f8f13ab00aa22d44cf6db27345108b25e2ded05c 100644
--- a/ghc/tests/deSugar/should_compile/ds035.stderr
+++ b/ghc/tests/deSugar/should_compile/ds035.stderr
@@ -1,24 +1,112 @@
- 
-ds035.hs:3:
-    Type constructor or class not in scope: `Int#'
- 
-ds035.hs:8:
-    Type constructor or class not in scope: `Int#'
- 
-ds035.hs:4:
-    Value not in scope: `==#'
- 
-ds035.hs:6:
-    Value not in scope: `minusInt#'
- 
-ds035.hs:10:
-    Value not in scope: `+#'
- 
-ds035.hs:18:
-    Value not in scope: `+#'
- 
-ds035.hs:3:
-    Type constructor or class not in scope: `Int#'
 
 
-Compilation had errors
+================================================================================
+Desugared:
+Rec {
+CNil{-r7,x-}{i}  ::  CList{-r4u,x-}
+_A_ 0 {-# L #-}
+CNil{-r7,x-}{i} =
+    CNil{-r7,x-}{i} {}
+CCons{-r6,x-}{i}  ::  GHC.Int#{-3f,W-}
+		      -> CList{-r4u,x-}
+		      -> CList{-r4u,x-}
+_A_ 2 {-# L #-}
+CCons{-r6,x-}{i} =
+    \ tpl_B1  ::  GHC.Int#{-3f,W-}
+      {-# L #-}
+      tpl_B1 tpl_B2  ::  CList{-r4u,x-}
+	     {-# L #-}
+	     tpl_B2 ->
+	CCons{-r6,x-}{i} {tpl_B1 tpl_B2}
+clen_aGK  ::  CList{-r4u,x-} -> GHC.Int#{-3f,W-}
+{-# L #-}
+clen_aGK =
+    \ ds_dNA  ::  CList{-r4u,x-}
+      {-# L #-}
+      ds_dNA ->
+	case ds_dNA of {
+	  CNil{-r7,x-}{i} -> 0;
+	  CCons{-r6,x-}{i} ds_dNR cl_r4p ->
+	      case# clen{-r9,x-} cl_r4p of { ds_dO1 ->
+	      GHC.+#{-7D,w-}{I} 1 ds_dO1;};
+	}
+clen{-r9,x-}  ::  CList{-r4u,x-} -> GHC.Int#{-3f,W-}
+{-# L #-}
+clen{-r9,x-} =
+    clen_aGK
+mk_aGP  ::  GHC.Int#{-3f,W-} -> CList{-r4u,x-}
+{-# L #-}
+mk_aGP =
+    \ n_r4k  ::  GHC.Int#{-3f,W-}
+      {-# L #-}
+      n_r4k ->
+	let {
+	  ds_dOE  ::  PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ds_dOE =
+	      GHC.==#{-79,w-}{I} n_r4k 0 } in
+	let { fail_dOR  ::  CList{-r4u,x-}
+	      {-# L #-}
+	      fail_dOR =
+	  let {
+	    ds_dOs  ::  CList{-r4u,x-}
+	    {-# L #-}
+	    ds_dOs =
+		case# GHC.-#{-7E,w-}{I} n_r4k 1 of { ds_dOM -> mk{-r8,x-} ds_dOM;}
+	  } in  CCons{-r6,x-}{i} 1 ds_dOs
+	} in
+	case ds_dOE of {
+	  PrelBase.True{-5E,w-}{i} -> fail_dOR;
+	  PrelBase.False{-58,w-}{i} -> CNil{-r7,x-}{i};
+	}
+mk{-r8,x-}  ::  GHC.Int#{-3f,W-} -> CList{-r4u,x-}
+{-# L #-}
+mk{-r8,x-} =
+    mk_aGP
+main_aH0  ::  IOBase.IO{-3e,p-} PrelBase.(){-40,W-}
+{-# L #-}
+main_aH0 =
+    let {
+      list4_aGZ  ::  CList{-r4u,x-}
+      {-# L #-}
+      list4_aGZ =
+	  mk{-r8,x-} 4 } in
+    let {
+      list4_r4r  ::  CList{-r4u,x-}
+      {-# L #-}
+      list4_r4r =
+	  list4_aGZ
+    } in 
+      case# clen{-r9,x-} list4_r4r of { len4_aH4 ->
+      case# len4_aH4 of { len4_r4s ->
+      case# GHC.+#{-7D,w-}{I} len4_r4s len4_r4s of { len4_twice_aH7 ->
+      case# len4_twice_aH7 of { len4_twice_r4t ->
+      let {
+	ds_dPl  ::  [PrelBase.Char{-38,W-}]
+	{-# L #-}
+	ds_dPl =
+	    case# len4_twice_r4t of { ds_dPS ->
+	    let {
+	      fail_dPT  ::  PrelBase.String{-rgL,p-}
+	      {-# L #-}
+	      fail_dPT =
+		  _string_ "oops\n"
+	    } in 
+	      case# ds_dPS of {
+		8 -> _string_ "bingo\n";
+		ds_dQ1 -> fail_dPT;
+	      };}
+      } in  PrelIO.putStr{-rhQ,p-} ds_dPl;};};};}
+main{-814,x-}  ::  IOBase.IO{-3e,p-} PrelBase.(){-40,W-}
+{-# L #-}
+main{-814,x-} =
+    main_aH0
+d.Eval_aHh  ::  {PrelBase.Eval{-24,p-} CList{-r4u,x-}}
+{-# L #-}
+d.Eval_aHh =
+    PrelBase.void{-8G,w-}
+$d1{-rNv,x-}  ::  {PrelBase.Eval{-24,p-} CList{-r4u,x-}}
+{-# L #-}
+$d1{-rNv,x-} =
+    d.Eval_aHh
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds036.stderr b/ghc/tests/deSugar/should_compile/ds036.stderr
index 615b7df6466934d6aca6377fc054d2d4effa3f12..3e91e7ec988e298aa3bd38da5be27668ae3b132a 100644
--- a/ghc/tests/deSugar/should_compile/ds036.stderr
+++ b/ghc/tests/deSugar/should_compile/ds036.stderr
@@ -1,539 +1,382 @@
-ds036.hs:44: 
-    Warning: Possibly incomplete patterns
-	in the definition of function `kh'
 ds036.hs:22: 
     Warning: Possibly incomplete patterns
 	in the definition of function `brack''
+ds036.hs:44: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `kh'
 
 
 ================================================================================
 Desugared:
 Rec {
-d.Num_aZF  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Num_aZF =
-    PrelBase.$d3{-rbz,p-}
-fromInt_a19P  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_a19P =
-    PrelBase.fromInt{-8R,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aZF
-lit_a1a1  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a1a1 =
-    let {
-      ds_d1aS  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d1aS =
-	  PrelBase.I#{-5b,p-}{i}
-	      0
-    } in 
-      fromInt_a19P
-	  ds_d1aS
-d.Eq_aZI  :: 
-    {PrelBase.Eq{-23,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Eq_aZI =
-    PrelBase.$d7{-rc5,p-}
-==_a1a0  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
-==_a1a0 =
-    PrelBase.=={-8Y,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Eq_aZI
-fromInt_a19Z  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_a19Z =
-    fromInt_a19P
-lit_a19Y  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_a19Y =
-    let {
-      ds_d1bg  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d1bg =
-	  PrelBase.I#{-5b,p-}{i}
-	      1
-    } in 
-      fromInt_a19Z
-	  ds_d1bg
-d.Ord_aZM  :: 
-    {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Ord_aZM =
-    PrelBase.$d6{-rc4,p-}
->=_a19X  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Bool{-34,p-}
-{-# L #-}
->=_a19X =
-    PrelBase.>={-8Z,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Ord_aZM
-d.Num_aZP  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Num_aZP =
-    d.Num_aZF
--_a19W  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-{-# L #-}
--_a19W =
-    PrelBase.-{-817,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aZP
-kh{-r3g,x-}  :: 
-    _forall_
-    [t{-aYd-}]
-    =>
-    {PrelBase.Num{-2c,p-} t{-aYd-}}
-    -> {PrelBase.Ord{-2d,p-} t{-aYd-}}
-    -> t{-aYd-}
-    -> t{-aYd-}
-    -> t{-aYd-}
+kh{-r3g,x-}  ::  _forall_
+		 [taSF]
+		 =>
+		 {PrelBase.Num{-2c,p-} taSF}
+		 -> {PrelBase.Ord{-2d,p-} taSF}
+		 -> taSF
+		 -> taSF
+		 -> taSF
 {-# L #-}
 kh{-r3g,x-} =
-    _/\_ t{-aYd-} -> \ d.Num_aYs  :: 
-			   {PrelBase.Num{-2c,p-} t{-aYd-}}
-		       {-# L #-}
-		       d.Num_aYs d.Ord_aYu  :: 
-				     {PrelBase.Ord{-2d,p-} t{-aYd-}}
-				 {-# L #-}
-				 d.Ord_aYu ->
-	let {
-	  fromInt_a1cx  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aYd-}
+    _/\_ taSF -> \ d.Num_aSU  ::  {PrelBase.Num{-2c,p-} taSF}
+		   {-# L #-}
+		   d.Num_aSU d.Ord_aSW  ::  {PrelBase.Ord{-2d,p-} taSF}
+			     {-# L #-}
+			     d.Ord_aSW ->
+	_letrec_ {
+	  fromInt_a14h  ::  PrelBase.Int{-3g,W-} -> taSF
 	  {-# L #-}
-	  fromInt_a1cx =
-	      PrelBase.fromInt{-8R,p-}
-		  _@_ t{-aYd-} d.Num_aYs } in
-	let { lit_a1cw  :: 
-		  t{-aYd-}
-	      {-# L #-}
-	      lit_a1cw =
-	  let {
-	    ds_d1cN  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1cN =
-		PrelBase.I#{-5b,p-}{i}
-		    2
-	  } in 
-	    fromInt_a1cx
-		ds_d1cN
-	} in
-	let {
-	  >=_a1cv  :: 
-	      t{-aYd-} -> t{-aYd-} -> PrelBase.Bool{-34,p-}
+	  fromInt_a14h =
+	      PrelBase.fromInt{-8R,p-} _@_ taSF d.Num_aSU;
+	  lit_a14t  ::  taSF
 	  {-# L #-}
-	  >=_a1cv =
-	      PrelBase.>={-8Z,p-}
-		  _@_ t{-aYd-} d.Ord_aYu } in
-	let {
-	  d.Num_aYw  :: 
-	      {PrelBase.Num{-2c,p-} t{-aYd-}}
+	  lit_a14t =
+	      let {
+		ds_d16u  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d16u =
+		    PrelBase.I#{-5b,w-}{i} 2
+	      } in  fromInt_a14h ds_d16u;
+	  >=_a14u  ::  taSF -> taSF -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  d.Num_aYw =
-	      d.Num_aYs } in
-	let {
-	  -_a1cu  :: 
-	      t{-aYd-} -> t{-aYd-} -> t{-aYd-}
+	  >=_a14u =
+	      PrelBase.>={-8Z,p-} _@_ taSF d.Ord_aSW;
+	  d.Num_aSY  ::  {PrelBase.Num{-2c,p-} taSF}
 	  {-# L #-}
-	  -_a1cu =
-	      PrelBase.-{-817,p-}
-		  _@_ t{-aYd-} d.Num_aYw } in
-	let {
-	  d.Ord_aYy  :: 
-	      {PrelBase.Ord{-2d,p-} t{-aYd-}}
+	  d.Num_aSY =
+	      d.Num_aSU;
+	  -_a14v  ::  taSF -> taSF -> taSF
 	  {-# L #-}
-	  d.Ord_aYy =
-	      d.Ord_aYu } in
-	let {
-	  >_a1ct  :: 
-	      t{-aYd-} -> t{-aYd-} -> PrelBase.Bool{-34,p-}
+	  -_a14v =
+	      PrelBase.-{-817,p-} _@_ taSF d.Num_aSY;
+	  d.Ord_aT0  ::  {PrelBase.Ord{-2d,p-} taSF}
 	  {-# L #-}
-	  >_a1ct =
-	      PrelBase.>{-rdf,p-}
-		  _@_ t{-aYd-} d.Ord_aYy } in
-	let {
-	  d.Num_aYA  :: 
-	      {PrelBase.Num{-2c,p-} t{-aYd-}}
+	  d.Ord_aT0 =
+	      d.Ord_aSW;
+	  >_a14w  ::  taSF -> taSF -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  d.Num_aYA =
-	      d.Num_aYs } in
-	let {
-	  *_a1cs  :: 
-	      t{-aYd-} -> t{-aYd-} -> t{-aYd-}
+	  >_a14w =
+	      PrelBase.>{-rfI,p-} _@_ taSF d.Ord_aT0;
+	  d.Num_aT2  ::  {PrelBase.Num{-2c,p-} taSF}
 	  {-# L #-}
-	  *_a1cs =
-	      PrelBase.*{-rd8,p-}
-		  _@_ t{-aYd-} d.Num_aYA } in
-	let {
-	  lit_a1cr  :: 
-	      t{-aYd-}
+	  d.Num_aT2 =
+	      d.Num_aSU;
+	  *_a14x  ::  taSF -> taSF -> taSF
 	  {-# L #-}
-	  lit_a1cr =
-	      lit_a1cw } in
-	let {
-	  fromInt_a1cq  :: 
-	      PrelBase.Int{-3g,p-} -> t{-aYd-}
+	  *_a14x =
+	      PrelBase.*{-rfB,p-} _@_ taSF d.Num_aT2;
+	  lit_a14y  ::  taSF
 	  {-# L #-}
-	  fromInt_a1cq =
-	      fromInt_a1cx } in
-	let { lit_a1cp  :: 
-		  t{-aYd-}
-	      {-# L #-}
-	      lit_a1cp =
-	  let {
-	    ds_d1dC  :: 
-		PrelBase.Int{-3g,p-}
-	    {-# L #-}
-	    ds_d1dC =
-		PrelBase.I#{-5b,p-}{i}
-		    1
-	  } in 
-	    fromInt_a1cq
-		ds_d1dC
-	} in
-	let {
-	  >=_a1co  :: 
-	      t{-aYd-} -> t{-aYd-} -> PrelBase.Bool{-34,p-}
+	  lit_a14y =
+	      lit_a14t;
+	  fromInt_a14z  ::  PrelBase.Int{-3g,W-} -> taSF
 	  {-# L #-}
-	  >=_a1co =
-	      >=_a1cv } in
-	let {
-	  -_a1cn  :: 
-	      t{-aYd-} -> t{-aYd-} -> t{-aYd-}
+	  fromInt_a14z =
+	      fromInt_a14h;
+	  lit_a14A  ::  taSF
 	  {-# L #-}
-	  -_a1cn =
-	      -_a1cu } in
-	let {
-	  lit_a1cm  :: 
-	      t{-aYd-}
+	  lit_a14A =
+	      let {
+		ds_d17j  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d17j =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_a14z ds_d17j;
+	  >=_a14B  ::  taSF -> taSF -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  lit_a1cm =
-	      lit_a1cp } in
-	let {
-	  >=_a1cl  :: 
-	      t{-aYd-} -> t{-aYd-} -> PrelBase.Bool{-34,p-}
+	  >=_a14B =
+	      >=_a14u;
+	  -_a14C  ::  taSF -> taSF -> taSF
 	  {-# L #-}
-	  >=_a1cl =
-	      >=_a1cv } in
-	let {
-	  -_a1ck  :: 
-	      t{-aYd-} -> t{-aYd-} -> t{-aYd-}
+	  -_a14C =
+	      -_a14v;
+	  lit_a14D  ::  taSF
 	  {-# L #-}
-	  -_a1ck =
-	      -_a1cu
-	} in 
-	  \ ds_d1e9  :: 
-		t{-aYd-}
-	    {-# L #-}
-	    ds_d1e9 x_r3H  :: 
-			t{-aYd-}
-		    {-# L #-}
-		    x_r3H ->
-	      let {
-		fail_d1em  :: 
-		    t{-aYd-}
-		{-# L #-}
-		fail_d1em =
-		    GHCerr.patError{-8r,p-}
-			_@_ t{-aYd-} _string_ "ds036.hs:44|function `kh'" } in
-	      let {
-		fail_d1fO  :: 
-		    t{-aYd-}
+	  lit_a14D =
+	      lit_a14A;
+	  >=_a14E  ::  taSF -> taSF -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  >=_a14E =
+	      >=_a14u;
+	  -_a14F  ::  taSF -> taSF -> taSF
+	  {-# L #-}
+	  -_a14F =
+	      -_a14v;
+	  kh_aSk  ::  taSF -> taSF -> taSF
+	  {-# L #-}
+	  kh_aSk =
+	      \ ds_d17R  ::  taSF
 		{-# L #-}
-		fail_d1fO =
+		ds_d17R x_r3x  ::  taSF
+			{-# L #-}
+			x_r3x ->
+		  let {
+		    fail_d184  ::  taSF
+		    {-# L #-}
+		    fail_d184 =
+			GHCerr.patError{-8r,w-}
+			    _@_ taSF _string_ "ds036.hs:44|function `kh'" } in
+		  let {
+		    fail_d19w  ::  taSF
+		    {-# L #-}
+		    fail_d19w =
+			case
+			    (\ ds_d17Y  ::  taSF
+			       {-# L #-}
+			       ds_d17Y ->
+				 >=_a14B ds_d17Y lit_a14A)
+				ds_d17R
+			of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      let {
+				x_r3z  ::  taSF
+				{-# L #-}
+				x_r3z =
+				    (\ ds_d18o  ::  taSF
+				       {-# L #-}
+				       ds_d18o ->
+					 -_a14C ds_d18o lit_a14A)
+					ds_d17R
+			      } in 
+				case
+				    (\ ds_d18E  ::  taSF
+				       {-# L #-}
+				       ds_d18E ->
+					 >=_a14E ds_d18E lit_a14D)
+					x_r3x
+				of {
+				  PrelBase.True{-5E,w-}{i} ->
+				      (\ ds_d192  ::  taSF
+					 {-# L #-}
+					 ds_d192 ->
+					   -_a14F ds_d192 lit_a14D)
+					  x_r3x;
+				  PrelBase.False{-58,w-}{i} -> fail_d184;
+				};
+			  PrelBase.False{-58,w-}{i} -> fail_d184;
+			}
+		  } in 
 		    case
-			(\ ds_d1eg  :: 
-			       t{-aYd-}
+			(\ ds_d19q  ::  taSF
 			   {-# L #-}
-			   ds_d1eg ->
-			     >=_a1co
-				 ds_d1eg lit_a1cp)
-			    ds_d1e9
+			   ds_d19q ->
+			     >=_a14u ds_d19q lit_a14t)
+			    ds_d17R
 		    of {
-		      PrelBase.True{-5E,p-}{i} ->
+		      PrelBase.True{-5E,w-}{i} ->
 			  let {
-			    x_r3J  :: 
-				t{-aYd-}
+			    n_r3w  ::  taSF
 			    {-# L #-}
-			    x_r3J =
-				(\ ds_d1eG  :: 
-				       t{-aYd-}
+			    n_r3w =
+				(\ ds_d19Q  ::  taSF
 				   {-# L #-}
-				   ds_d1eG ->
-				     -_a1cn
-					 ds_d1eG lit_a1cp)
-				    ds_d1e9
+				   ds_d19Q ->
+				     -_a14v ds_d19Q lit_a14t)
+				    ds_d17R
 			  } in 
-			    case
-				(\ ds_d1eW  :: 
-				       t{-aYd-}
-				   {-# L #-}
-				   ds_d1eW ->
-				     >=_a1cl
-					 ds_d1eW lit_a1cm)
-				    x_r3H
-			    of {
-			      PrelBase.True{-5E,p-}{i} ->
-				  (\ ds_d1fk  :: 
-					 t{-aYd-}
-				     {-# L #-}
-				     ds_d1fk ->
-				       -_a1ck
-					   ds_d1fk lit_a1cm)
-				      x_r3H;
-			      PrelBase.False{-58,p-}{i} ->
-				  fail_d1em;
+			    case >_a14w x_r3x n_r3w of {
+			      PrelBase.True{-5E,w-}{i} -> *_a14x x_r3x lit_a14y;
+			      PrelBase.False{-58,w-}{i} -> fail_d19w;
 			    };
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1em;
-		    }
-	      } in 
-		case
-		    (\ ds_d1fI  :: 
-			   t{-aYd-}
-		       {-# L #-}
-		       ds_d1fI ->
-			 >=_a1cv
-			     ds_d1fI lit_a1cw)
-			ds_d1e9
-		of {
-		  PrelBase.True{-5E,p-}{i} ->
-		      let {
-			n_r3F  :: 
-			    t{-aYd-}
-			{-# L #-}
-			n_r3F =
-			    (\ ds_d1g8  :: 
-				   t{-aYd-}
-			       {-# L #-}
-			       ds_d1g8 ->
-				 -_a1cu
-				     ds_d1g8 lit_a1cw)
-				ds_d1e9
-		      } in 
-			case
-			    >_a1ct
-				x_r3H n_r3F
-			of {
-			  PrelBase.True{-5E,p-}{i} ->
-			      *_a1cs
-				  x_r3H lit_a1cr;
-			  PrelBase.False{-58,p-}{i} ->
-			      fail_d1fO;
-			};
-		  PrelBase.False{-58,p-}{i} ->
-		      fail_d1fO;
-		}
-brack'{-r3f,x-}  :: 
-    _forall_
-    [a{-aYI-}]
-    =>
-    {PrelBase.Eq{-23,p-} a{-aYI-}}
-    -> a{-aYI-}
-    -> a{-aYI-}
-    -> PrelBase.Int{-3g,p-}
-    -> [a{-aYI-}]
-    -> ([a{-aYI-}], [a{-aYI-}])
+		      PrelBase.False{-58,w-}{i} -> fail_d19w;
+		    };
+	} in  kh_aSk
+brack'{-r3f,x-}  ::  _forall_
+		     [taTa]
+		     =>
+		     {PrelBase.Eq{-23,p-} taTa}
+		     -> taTa
+		     -> taTa
+		     -> PrelBase.Int{-3g,W-}
+		     -> [taTa]
+		     -> ([taTa], [taTa])
 {-# L #-}
 brack'{-r3f,x-} =
-    _/\_ a{-aYI-} -> \ d.Eq_aZs  :: 
-			   {PrelBase.Eq{-23,p-} a{-aYI-}}
-		       {-# L #-}
-		       d.Eq_aZs ->
-	let {
-	  lit_a1h1  :: 
-	      PrelBase.Int{-3g,p-}
+    _/\_ taTa -> \ d.Eq_aU7  ::  {PrelBase.Eq{-23,p-} taTa}
+		   {-# L #-}
+		   d.Eq_aU7 ->
+	_letrec_ {
+	  lit_a1aE  ::  PrelBase.Int{-3g,W-}
+	  {-# L #-}
+	  lit_a1aE =
+	      lit_a14q;
+	  >=_a1aG  ::  PrelBase.Int{-3g,W-}
+		       -> PrelBase.Int{-3g,W-}
+		       -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  lit_a1h1 =
-	      lit_a19Y } in
-	let {
-	  >=_a1h0  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> PrelBase.Bool{-34,p-}
+	  >=_a1aG =
+	      >=_a14r;
+	  -_a1aH  ::  PrelBase.Int{-3g,W-}
+		      -> PrelBase.Int{-3g,W-}
+		      -> PrelBase.Int{-3g,W-}
 	  {-# L #-}
-	  >=_a1h0 =
-	      >=_a19X } in
-	let {
-	  -_a1gZ  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
+	  -_a1aH =
+	      -_a14s;
+	  d.Eq_aUf  ::  {PrelBase.Eq{-23,p-} taTa}
 	  {-# L #-}
-	  -_a1gZ =
-	      -_a19W } in
-	let {
-	  d.Eq_aZC  :: 
-	      {PrelBase.Eq{-23,p-} a{-aYI-}}
+	  d.Eq_aUf =
+	      d.Eq_aU7;
+	  ==_a1aI  ::  taTa -> taTa -> PrelBase.Bool{-34,W-}
 	  {-# L #-}
-	  d.Eq_aZC =
-	      d.Eq_aZs } in
-	let {
-	  ==_a1gY  :: 
-	      a{-aYI-} -> a{-aYI-} -> PrelBase.Bool{-34,p-}
+	  ==_a1aI =
+	      PrelBase.=={-8Y,p-} _@_ taTa d.Eq_aUf;
+	  brack'_aT7  ::  taTa
+			  -> taTa
+			  -> PrelBase.Int{-3g,W-}
+			  -> [taTa]
+			  -> ([taTa], [taTa])
 	  {-# L #-}
-	  ==_a1gY =
-	      PrelBase.=={-8Y,p-}
-		  _@_ a{-aYI-} d.Eq_aZC
-	} in 
-	  \ open_r3i  :: 
-		a{-aYI-}
-	    {-# L #-}
-	    open_r3i close_r3k  :: 
-			 a{-aYI-}
-		     {-# L #-}
-		     close_r3k ds_d1hB  :: 
-				   PrelBase.Int{-3g,p-}
+	  brack'_aT7 =
+	      \ open_r3i  ::  taTa
+		{-# L #-}
+		open_r3i close_r3j  ::  taTa
+			 {-# L #-}
+			 close_r3j ds_d1bB  ::  PrelBase.Int{-3g,W-}
+				   {-# L #-}
+				   ds_d1bB xs_r3k  ::  [taTa]
+					   {-# L #-}
+					   xs_r3k ->
+		  let {
+		    fail_d1bO  ::  ([taTa], [taTa])
+		    {-# L #-}
+		    fail_d1bO =
+			GHCerr.patError{-8r,w-}
+			    _@_ ([taTa], [taTa]) _string_ "ds036.hs:22|function `brack''" } in
+		  let {
+		    fail_d1dT  ::  ([taTa], [taTa])
+		    {-# L #-}
+		    fail_d1dT =
+			case
+			    (\ ds_d1bI  ::  PrelBase.Int{-3g,W-}
 			       {-# L #-}
-			       ds_d1hB xs_r3n  :: 
-					   [a{-aYI-}]
+			       ds_d1bI ->
+				 >=_a14r ds_d1bI lit_a14q)
+				ds_d1bB
+			of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      let {
+				n_r3o  ::  PrelBase.Int{-3g,W-}
+				{-# L #-}
+				n_r3o =
+				    (\ ds_d1c8  ::  PrelBase.Int{-3g,W-}
 				       {-# L #-}
-				       xs_r3n ->
-	      let {
-		fail_d1hO  :: 
-		    ([a{-aYI-}], [a{-aYI-}])
-		{-# L #-}
-		fail_d1hO =
-		    GHCerr.patError{-8r,p-}
-			_@_ ([a{-aYI-}], [a{-aYI-}])
-			_string_ "ds036.hs:22|function `brack''" } in
-	      let {
-		fail_d1jT  :: 
-		    ([a{-aYI-}], [a{-aYI-}])
-		{-# L #-}
-		fail_d1jT =
-		    case
-			(\ ds_d1hI  :: 
-			       PrelBase.Int{-3g,p-}
-			   {-# L #-}
-			   ds_d1hI ->
-			     >=_a19X
-				 ds_d1hI lit_a19Y)
-			    ds_d1hB
-		    of {
-		      PrelBase.True{-5E,p-}{i} ->
+				       ds_d1c8 ->
+					 -_a14s ds_d1c8 lit_a14q)
+					ds_d1bB
+			      } in 
+				case xs_r3k of {
+				  PrelBase.[]{-5i,w-}{i} ->
+				      let {
+					close_r3n  ::  taTa
+					{-# L #-}
+					close_r3n =
+					    close_r3j } in
+				      let {
+					open_r3m  ::  taTa
+					{-# L #-}
+					open_r3m =
+					    open_r3i } in
+				      let {
+					ds_d1cz  ::  [taTa]
+					{-# L #-}
+					ds_d1cz =
+					    PrelBase.[]{-5i,w-}{i} _@_ taTa } in
+				      let {
+					ds_d1cD  ::  [taTa]
+					{-# L #-}
+					ds_d1cD =
+					    PrelBase.[]{-5i,w-}{i} _@_ taTa
+				      } in 
+					PrelTup.(,){-62,w-}{i}
+					    {_@_ [taTa] _@_ [taTa] ds_d1cz ds_d1cD};
+				  PrelBase.:{-55,w-}{i} h_r3t t_r3u ->
+				      let {
+					n_r3s  ::  PrelBase.Int{-3g,W-}
+					{-# L #-}
+					n_r3s =
+					    n_r3o } in
+				      let {
+					close_r3r  ::  taTa
+					{-# L #-}
+					close_r3r =
+					    close_r3j } in
+				      let {
+					open_r3q  ::  taTa
+					{-# L #-}
+					open_r3q =
+					    open_r3i
+				      } in 
+					case ==_a1aI h_r3t open_r3q of {
+					  PrelBase.True{-5E,w-}{i} ->
+					      let {
+						ds_d1du  ::  [taTa]
+						{-# L #-}
+						ds_d1du =
+						    PrelBase.[]{-5i,w-}{i} _@_ taTa } in
+					      let {
+						ds_d1dy  ::  [taTa]
+						{-# L #-}
+						ds_d1dy =
+						    PrelBase.[]{-5i,w-}{i} _@_ taTa
+					      } in 
+						PrelTup.(,){-62,w-}{i}
+						    {_@_ [taTa] _@_ [taTa] ds_d1du ds_d1dy};
+					  PrelBase.False{-58,w-}{i} -> fail_d1bO;
+					};
+				};
+			  PrelBase.False{-58,w-}{i} -> fail_d1bO;
+			}
+		  } in 
+		    case ds_d1bB of { PrelBase.I#{-5b,w-}{i} ds_d1e2  ->
+		    case# ds_d1e2 of {
+		      0 ->
 			  let {
-			    n_r3t  :: 
-				PrelBase.Int{-3g,p-}
+			    ds_d1eh  ::  [taTa]
 			    {-# L #-}
-			    n_r3t =
-				(\ ds_d1i8  :: 
-				       PrelBase.Int{-3g,p-}
-				   {-# L #-}
-				   ds_d1i8 ->
-				     -_a19W
-					 ds_d1i8 lit_a19Y)
-				    ds_d1hB
+			    ds_d1eh =
+				PrelBase.[]{-5i,w-}{i} _@_ taTa
 			  } in 
-			    case xs_r3n of {
-			      PrelBase.[]{-5i,p-}{i} ->
-				  let {
-				    close_r3r  :: 
-					a{-aYI-}
-				    {-# L #-}
-				    close_r3r =
-					close_r3k } in
-				  let {
-				    open_r3p  :: 
-					a{-aYI-}
-				    {-# L #-}
-				    open_r3p =
-					open_r3i } in
-				  let {
-				    ds_d1iz  :: 
-					[a{-aYI-}]
-				    {-# L #-}
-				    ds_d1iz =
-					PrelBase.[]{-5i,p-}{i}
-					    _@_ a{-aYI-} } in
-				  let {
-				    ds_d1iD  :: 
-					[a{-aYI-}]
-				    {-# L #-}
-				    ds_d1iD =
-					PrelBase.[]{-5i,p-}{i}
-					    _@_ a{-aYI-}
-				  } in 
-				    PrelTup.(,){-62,p-}{i}
-					{_@_ [a{-aYI-}] _@_ [a{-aYI-}] ds_d1iz ds_d1iD};
-			      PrelBase.:{-55,p-}{i} h_r3C t_r3D ->
-				  let {
-				    n_r3A  :: 
-					PrelBase.Int{-3g,p-}
-				    {-# L #-}
-				    n_r3A =
-					n_r3t } in
-				  let {
-				    close_r3y  :: 
-					a{-aYI-}
-				    {-# L #-}
-				    close_r3y =
-					close_r3k } in
-				  let {
-				    open_r3w  :: 
-					a{-aYI-}
-				    {-# L #-}
-				    open_r3w =
-					open_r3i
-				  } in 
-				    case
-					==_a1gY
-					    h_r3C open_r3w
-				    of {
-				      PrelBase.True{-5E,p-}{i} ->
-					  let {
-					    ds_d1ju  :: 
-						[a{-aYI-}]
-					    {-# L #-}
-					    ds_d1ju =
-						PrelBase.[]{-5i,p-}{i}
-						    _@_ a{-aYI-} } in
-					  let {
-					    ds_d1jy  :: 
-						[a{-aYI-}]
-					    {-# L #-}
-					    ds_d1jy =
-						PrelBase.[]{-5i,p-}{i}
-						    _@_ a{-aYI-}
-					  } in 
-					    PrelTup.(,){-62,p-}{i}
-						{_@_ [a{-aYI-}] _@_ [a{-aYI-}] ds_d1ju ds_d1jy};
-				      PrelBase.False{-58,p-}{i} ->
-					  fail_d1hO;
-				    };
-			    };
-		      PrelBase.False{-58,p-}{i} ->
-			  fail_d1hO;
-		    }
-	      } in 
-		case ds_d1hB of { PrelBase.I#{-5b,p-}{i} ds_d1k2  ->
-		case# ds_d1k2 of {
-		  0 ->
-		      let {
-			ds_d1kh  :: 
-			    [a{-aYI-}]
-			{-# L #-}
-			ds_d1kh =
-			    PrelBase.[]{-5i,p-}{i}
-				_@_ a{-aYI-}
-		      } in 
-			PrelTup.(,){-62,p-}{i}
-			    {_@_ [a{-aYI-}] _@_ [a{-aYI-}] ds_d1kh xs_r3n};
-		  ds_d1kt ->
-		      fail_d1jT;
-		};}
+			    PrelTup.(,){-62,w-}{i} {_@_ [taTa] _@_ [taTa] ds_d1eh xs_r3k};
+		      ds_d1et -> fail_d1dT;
+		    };};
+	} in  brack'_aT7
+lit_a14o  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a14o =
+    PrelBase.I#{-5b,w-}{i} 0
+d.Eq_aUh  ::  {PrelBase.Eq{-23,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Eq_aUh =
+    PrelBase.$d8{-rb8,p-}
+==_a14p  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+==_a14p =
+    PrelBase.=={-8Y,p-} _@_ PrelBase.Int{-3g,W-} d.Eq_aUh
+lit_a14q  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a14q =
+    PrelBase.I#{-5b,w-}{i} 1
+d.Ord_aUk  ::  {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Ord_aUk =
+    PrelBase.$d7{-rb7,p-}
+>=_a14r  ::  PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> PrelBase.Bool{-34,W-}
+{-# L #-}
+>=_a14r =
+    PrelBase.>={-8Z,p-} _@_ PrelBase.Int{-3g,W-} d.Ord_aUk
+d.Num_aUn  ::  {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Num_aUn =
+    PrelBase.$d4{-raL,p-}
+-_a14s  ::  PrelBase.Int{-3g,W-}
+	    -> PrelBase.Int{-3g,W-}
+	    -> PrelBase.Int{-3g,W-}
+{-# L #-}
+-_a14s =
+    PrelBase.-{-817,p-} _@_ PrelBase.Int{-3g,W-} d.Num_aUn
 end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds037.stderr b/ghc/tests/deSugar/should_compile/ds037.stderr
index cb76a7ec535f45e24c0ab3248be2bf416eae8179..4a058697b54edaa9d06e8a973213120443c745cd 100644
--- a/ghc/tests/deSugar/should_compile/ds037.stderr
+++ b/ghc/tests/deSugar/should_compile/ds037.stderr
@@ -3,187 +3,130 @@
 ================================================================================
 Desugared:
 Rec {
-d.Num_aXF  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
+ds_dVA  ::  _forall_
+	    [taS9]
+	    =>
+	    (PrelBase.Int{-3g,W-}
+	     -> PrelBase.Int{-3g,W-}
+	     -> (taS9, PrelBase.Int{-3g,W-}), PrelBase.Int{-3g,W-}
+					      -> PrelBase.Int{-3g,W-}
+					      -> (taS9, PrelBase.Int{-3g,W-}))
 {-# L #-}
-d.Num_aXF =
-    PrelBase.$d3{-rbd,p-}
-+_aZO  :: 
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-{-# L #-}
-+_aZO =
-    PrelBase.+{-r3m,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aXF
-d.Num_aXJ  :: 
-    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
-{-# L #-}
-d.Num_aXJ =
-    d.Num_aXF
-fromInt_aZN  :: 
-    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
-{-# L #-}
-fromInt_aZN =
-    PrelBase.fromInt{-8R,p-}
-	_@_ PrelBase.Int{-3g,p-} d.Num_aXJ
-lit_aZM  :: 
-    PrelBase.Int{-3g,p-}
-{-# L #-}
-lit_aZM =
-    let {
-      ds_d123  :: 
-	  PrelBase.Int{-3g,p-}
-      {-# L #-}
-      ds_d123 =
-	  PrelBase.I#{-5b,p-}{i}
-	      1
-    } in 
-      fromInt_aZN
-	  ds_d123
-ds_d11F  :: 
-    _forall_
-    [b{-aXa-}]
-    =>
-    (PrelBase.Int{-3g,p-}
-     -> PrelBase.Int{-3g,p-}
-     -> (b{-aXa-}, PrelBase.Int{-3g,p-}), PrelBase.Int{-3g,p-}
-					  -> PrelBase.Int{-3g,p-}
-					  -> (b{-aXa-}, PrelBase.Int{-3g,p-}))
-{-# L #-}
-ds_d11F =
-    _/\_ b{-aXa-} ->
+ds_dVA =
+    _/\_ taS9 ->
 	_letrec_ {
-	  +_aZQ  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
+	  +_aTZ  ::  PrelBase.Int{-3g,W-}
+		     -> PrelBase.Int{-3g,W-}
+		     -> PrelBase.Int{-3g,W-}
 	  {-# L #-}
-	  +_aZQ =
-	      +_aZO;
-	  lit_aZP  :: 
-	      PrelBase.Int{-3g,p-}
+	  +_aTZ =
+	      +_aU0;
+	  lit_aU2  ::  PrelBase.Int{-3g,W-}
 	  {-# L #-}
-	  lit_aZP =
-	      lit_aZM;
-	  f_aWT  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> (b{-aXa-}, PrelBase.Int{-3g,p-})
+	  lit_aU2 =
+	      lit_aU1;
+	  f_aRp  ::  PrelBase.Int{-3g,W-}
+		     -> PrelBase.Int{-3g,W-}
+		     -> (taS9, PrelBase.Int{-3g,W-})
 	  {-# L #-}
-	  f_aWT =
-	      \ x_r3e  :: 
-		    PrelBase.Int{-3g,p-}
+	  f_aRp =
+	      \ x_r3e  ::  PrelBase.Int{-3g,W-}
 		{-# L #-}
-		x_r3e y_r3g  :: 
-			  PrelBase.Int{-3g,p-}
+		x_r3e y_r3f  ::  PrelBase.Int{-3g,W-}
 		      {-# L #-}
-		      y_r3g ->
-		  let { ds_d12N  :: 
-			    b{-aXa-}
+		      y_r3f ->
+		  let { ds_dWx  ::  taS9
 			{-# L #-}
-			ds_d12N =
+			ds_dWx =
 		    let {
-		      ds_d133  :: 
-			  (b{-aXa-}, PrelBase.Int{-3g,p-})
+		      ds_dWN  ::  (taS9, PrelBase.Int{-3g,W-})
 		      {-# L #-}
-		      ds_d133 =
-			  g_aWU
-			      y_r3g x_r3e
-		    } in 
-		      PrelTup.fst{-riN,p-}
-			  _@_ PrelBase.Int{-3g,p-} _@_ b{-aXa-} ds_d133
+		      ds_dWN =
+			  g_aRq y_r3f x_r3e
+		    } in  PrelTup.fst{-rgQ,p-} _@_ PrelBase.Int{-3g,W-} _@_ taS9 ds_dWN
 		  } in
 		  let {
-		    ds_d12R  :: 
-			PrelBase.Int{-3g,p-}
+		    ds_dWB  ::  PrelBase.Int{-3g,W-}
 		    {-# L #-}
-		    ds_d12R =
-			+_aZO
-			    x_r3e lit_aZM
+		    ds_dWB =
+			+_aU0 x_r3e lit_aU1
 		  } in 
-		    PrelTup.(,){-62,p-}{i}
-			{_@_ b{-aXa-} _@_ PrelBase.Int{-3g,p-} ds_d12N ds_d12R};
-	  g_aWU  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> PrelBase.Int{-3g,p-}
-	      -> (b{-aXa-}, PrelBase.Int{-3g,p-})
+		    PrelTup.(,){-62,w-}{i}
+			{_@_ taS9 _@_ PrelBase.Int{-3g,W-} ds_dWx ds_dWB};
+	  g_aRq  ::  PrelBase.Int{-3g,W-}
+		     -> PrelBase.Int{-3g,W-}
+		     -> (taS9, PrelBase.Int{-3g,W-})
 	  {-# L #-}
-	  g_aWU =
-	      \ x_r3j  :: 
-		    PrelBase.Int{-3g,p-}
+	  g_aRq =
+	      \ x_r3j  ::  PrelBase.Int{-3g,W-}
 		{-# L #-}
-		x_r3j y_r3l  :: 
-			  PrelBase.Int{-3g,p-}
+		x_r3j y_r3k  ::  PrelBase.Int{-3g,W-}
 		      {-# L #-}
-		      y_r3l ->
-		  let { ds_d13B  :: 
-			    b{-aXa-}
+		      y_r3k ->
+		  let { ds_dXl  ::  taS9
 			{-# L #-}
-			ds_d13B =
+			ds_dXl =
 		    let {
-		      ds_d13R  :: 
-			  (b{-aXa-}, PrelBase.Int{-3g,p-})
+		      ds_dXB  ::  (taS9, PrelBase.Int{-3g,W-})
 		      {-# L #-}
-		      ds_d13R =
-			  f_aWT
-			      x_r3j y_r3l
-		    } in 
-		      PrelTup.fst{-riN,p-}
-			  _@_ PrelBase.Int{-3g,p-} _@_ b{-aXa-} ds_d13R
+		      ds_dXB =
+			  f_aRp x_r3j y_r3k
+		    } in  PrelTup.fst{-rgQ,p-} _@_ PrelBase.Int{-3g,W-} _@_ taS9 ds_dXB
 		  } in
 		  let {
-		    ds_d13F  :: 
-			PrelBase.Int{-3g,p-}
+		    ds_dXp  ::  PrelBase.Int{-3g,W-}
 		    {-# L #-}
-		    ds_d13F =
-			+_aZQ
-			    y_r3l lit_aZP
+		    ds_dXp =
+			+_aTZ y_r3k lit_aU2
 		  } in 
-		    PrelTup.(,){-62,p-}{i}
-			{_@_ b{-aXa-} _@_ PrelBase.Int{-3g,p-} ds_d13B ds_d13F};
+		    PrelTup.(,){-62,w-}{i}
+			{_@_ taS9 _@_ PrelBase.Int{-3g,W-} ds_dXl ds_dXp};
 	} in 
-	  PrelTup.(,){-62,p-}{i}
-	      {_@_ (PrelBase.Int{-3g,p-}
-		    -> PrelBase.Int{-3g,p-}
-		    -> (b{-aXa-}, PrelBase.Int{-3g,p-}))
-	       _@_ (PrelBase.Int{-3g,p-}
-		    -> PrelBase.Int{-3g,p-}
-		    -> (b{-aXa-}, PrelBase.Int{-3g,p-}))
-	       f_aWT
-	       g_aWU}
-f{-r3o,x-}  :: 
-    _forall_
-    [b{-aXa-}]
-    =>
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> (b{-aXa-}, PrelBase.Int{-3g,p-})
+	  PrelTup.(,){-62,w-}{i}
+	      {_@_ (PrelBase.Int{-3g,W-}
+		    -> PrelBase.Int{-3g,W-}
+		    -> (taS9, PrelBase.Int{-3g,W-}))
+	       _@_ (PrelBase.Int{-3g,W-}
+		    -> PrelBase.Int{-3g,W-}
+		    -> (taS9, PrelBase.Int{-3g,W-}))
+	       f_aRp
+	       g_aRq}
+f{-r3l,x-}  ::  _forall_
+		[taS9]
+		=>
+		PrelBase.Int{-3g,W-}
+		-> PrelBase.Int{-3g,W-}
+		-> (taS9, PrelBase.Int{-3g,W-})
+{-# L #-}
+f{-r3l,x-} =
+    _/\_ taS9 ->
+	case ds_dVA _@_ taS9 of { PrelTup.(,){-62,w-}{i} ds_dYl ds_dYm  ->
+	ds_dYl;}
+g{-r3g,x-}  ::  _forall_
+		[taS9]
+		=>
+		PrelBase.Int{-3g,W-}
+		-> PrelBase.Int{-3g,W-}
+		-> (taS9, PrelBase.Int{-3g,W-})
+{-# L #-}
+g{-r3g,x-} =
+    _/\_ taS9 ->
+	case ds_dVA _@_ taS9 of { PrelTup.(,){-62,w-}{i} ds_dYC ds_dYB  ->
+	ds_dYB;}
+d.Num_aSj  ::  {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Num_aSj =
+    PrelBase.$d4{-ray,p-}
++_aU0  ::  PrelBase.Int{-3g,W-}
+	   -> PrelBase.Int{-3g,W-}
+	   -> PrelBase.Int{-3g,W-}
 {-# L #-}
-f{-r3o,x-} =
-    _/\_ b{-aXa-} ->
-	case
-	    ds_d11F
-		_@_ b{-aXa-}
-	of {
-	PrelTup.(,){-62,p-}{i} ds_d14B ds_d14C  ->
-	ds_d14B;}
-g{-r3n,x-}  :: 
-    _forall_
-    [b{-aXa-}]
-    =>
-    PrelBase.Int{-3g,p-}
-    -> PrelBase.Int{-3g,p-}
-    -> (b{-aXa-}, PrelBase.Int{-3g,p-})
++_aU0 =
+    PrelBase.+{-r3m,p-} _@_ PrelBase.Int{-3g,W-} d.Num_aSj
+lit_aU1  ::  PrelBase.Int{-3g,W-}
 {-# L #-}
-g{-r3n,x-} =
-    _/\_ b{-aXa-} ->
-	case
-	    ds_d11F
-		_@_ b{-aXa-}
-	of {
-	PrelTup.(,){-62,p-}{i} ds_d14S ds_d14R  ->
-	ds_d14R;}
+lit_aU1 =
+    PrelBase.I#{-5b,w-}{i} 1
 end Rec }
 
 NOTE: Simplifier still going after 4 iterations; bailing out.
diff --git a/ghc/tests/deSugar/should_compile/ds038.hs b/ghc/tests/deSugar/should_compile/ds038.hs
index ceffab1435fff0d53688e057995fa599586a7f7d..14e60e96e29b2cf56cc8e5ceedba8ff5d511679c 100644
--- a/ghc/tests/deSugar/should_compile/ds038.hs
+++ b/ghc/tests/deSugar/should_compile/ds038.hs
@@ -1,6 +1,8 @@
 --!!! Jon Hill reported a bug in desugaring this in 0.09
 --!!! (recursive with n+k patts)
 --
+module ShouldSucceed where
+
 takeList :: Int -> [a] -> [a]
 takeList 0     _      = []
 takeList (n+1) []     = []
diff --git a/ghc/tests/deSugar/should_compile/ds038.stderr b/ghc/tests/deSugar/should_compile/ds038.stderr
index a45cd41ad9a69c3c42359d7c0648ecadea8000ae..05e67d54319695ab977eb05f6d2b2932b6971e5e 100644
--- a/ghc/tests/deSugar/should_compile/ds038.stderr
+++ b/ghc/tests/deSugar/should_compile/ds038.stderr
@@ -1,5 +1,131 @@
- 
-ds038.hs:4: Module Main must include a definition for `Main.main'
+ds038.hs:7: 
+    Warning: Possibly incomplete patterns
+	in the definition of function `takeList'
 
 
-Compilation had errors
+================================================================================
+Desugared:
+Rec {
+takeList{-r3e,x-}  ::  _forall_
+		       [taCy]
+		       =>
+		       PrelBase.Int{-3g,W-} -> [taCy] -> [taCy]
+{-# L #-}
+takeList{-r3e,x-} =
+    _/\_ taCy ->
+	_letrec_ {
+	  lit_aHX  ::  PrelBase.Int{-3g,W-}
+	  {-# L #-}
+	  lit_aHX =
+	      lit_aHZ;
+	  >=_aI4  ::  PrelBase.Int{-3g,W-}
+		      -> PrelBase.Int{-3g,W-}
+		      -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  >=_aI4 =
+	      >=_aI2;
+	  -_aI5  ::  PrelBase.Int{-3g,W-}
+		     -> PrelBase.Int{-3g,W-}
+		     -> PrelBase.Int{-3g,W-}
+	  {-# L #-}
+	  -_aI5 =
+	      -_aI3;
+	  takeList_aCs  ::  PrelBase.Int{-3g,W-} -> [taCy] -> [taCy]
+	  {-# L #-}
+	  takeList_aCs =
+	      \ ds_dJb  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_dJb ds_dJo  ::  [taCy]
+		       {-# L #-}
+		       ds_dJo ->
+		  let {
+		    fail_dJp  ::  [taCy]
+		    {-# L #-}
+		    fail_dJp =
+			GHCerr.patError{-8r,w-}
+			    _@_ [taCy] _string_ "ds038.hs:7|function `takeList'" } in
+		  let {
+		    fail_dKA  ::  [taCy]
+		    {-# L #-}
+		    fail_dKA =
+			case
+			    (\ ds_dJi  ::  PrelBase.Int{-3g,W-}
+			       {-# L #-}
+			       ds_dJi ->
+				 >=_aI2 ds_dJi lit_aHZ)
+				ds_dJb
+			of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      let {
+				n_r3h  ::  PrelBase.Int{-3g,W-}
+				{-# L #-}
+				n_r3h =
+				    (\ ds_dJJ  ::  PrelBase.Int{-3g,W-}
+				       {-# L #-}
+				       ds_dJJ ->
+					 -_aI3 ds_dJJ lit_aHZ)
+					ds_dJb
+			      } in 
+				case ds_dJo of {
+				  PrelBase.[]{-5i,w-}{i} -> PrelBase.[]{-5i,w-}{i} _@_ taCy;
+				  PrelBase.:{-55,w-}{i} x_r3k xs_r3l ->
+				      let {
+					n_r3j  ::  PrelBase.Int{-3g,W-}
+					{-# L #-}
+					n_r3j =
+					    n_r3h } in
+				      let {
+					ds_dKg  ::  [taCy]
+					{-# L #-}
+					ds_dKg =
+					    takeList{-r3e,x-} _@_ taCy n_r3j xs_r3l
+				      } in  PrelBase.:{-55,w-}{i} _@_ taCy x_r3k ds_dKg;
+				};
+			  PrelBase.False{-58,w-}{i} -> fail_dJp;
+			}
+		  } in 
+		    case ds_dJb of { PrelBase.I#{-5b,w-}{i} ds_dKJ  ->
+		    case# ds_dKJ of {
+		      0 -> PrelBase.[]{-5i,w-}{i} _@_ taCy;
+		      ds_dKW -> fail_dKA;
+		    };};
+	} in  takeList_aCs
+lit_aI0  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_aI0 =
+    PrelBase.I#{-5b,w-}{i} 0
+d.Eq_aD5  ::  {PrelBase.Eq{-23,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Eq_aD5 =
+    PrelBase.$d8{-raT,p-}
+==_aI1  ::  PrelBase.Int{-3g,W-}
+	    -> PrelBase.Int{-3g,W-}
+	    -> PrelBase.Bool{-34,W-}
+{-# L #-}
+==_aI1 =
+    PrelBase.=={-8Y,p-} _@_ PrelBase.Int{-3g,W-} d.Eq_aD5
+lit_aHZ  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_aHZ =
+    PrelBase.I#{-5b,w-}{i} 1
+d.Ord_aD8  ::  {PrelBase.Ord{-2d,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Ord_aD8 =
+    PrelBase.$d7{-raS,p-}
+>=_aI2  ::  PrelBase.Int{-3g,W-}
+	    -> PrelBase.Int{-3g,W-}
+	    -> PrelBase.Bool{-34,W-}
+{-# L #-}
+>=_aI2 =
+    PrelBase.>={-8Z,p-} _@_ PrelBase.Int{-3g,W-} d.Ord_aD8
+d.Num_aDb  ::  {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Num_aDb =
+    PrelBase.$d4{-raw,p-}
+-_aI3  ::  PrelBase.Int{-3g,W-}
+	   -> PrelBase.Int{-3g,W-}
+	   -> PrelBase.Int{-3g,W-}
+{-# L #-}
+-_aI3 =
+    PrelBase.-{-817,p-} _@_ PrelBase.Int{-3g,W-} d.Num_aDb
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds039.stderr b/ghc/tests/deSugar/should_compile/ds039.stderr
index 1ff3f31bc1fbe0069e27a8a20a4d047a685dffe3..fcc5f336b1500964c2431df5c3026adb44f197cf 100644
--- a/ghc/tests/deSugar/should_compile/ds039.stderr
+++ b/ghc/tests/deSugar/should_compile/ds039.stderr
@@ -2,7 +2,15 @@
 
 ================================================================================
 Desugared:
+Rec {
+f{-r1,x-}  ::  _forall_ [tak6] => tak6 -> [tak6] -> [tak6]
 {-# L #-}
-f = _/\_ t{-amG-} ->
-	PrelBase.:
-	    _@_ t{-amG-}
+f{-r1,x-} =
+    _/\_ tak6 ->
+	_letrec_ {
+	  f_ak2  ::  tak6 -> [tak6] -> [tak6]
+	  {-# L #-}
+	  f_ak2 =
+	      PrelBase.:{-55,w-}{i} _@_ tak6;
+	} in  f_ak2
+end Rec }
diff --git a/ghc/tests/deSugar/should_compile/ds040.hs b/ghc/tests/deSugar/should_compile/ds040.hs
index d7fb6216e925524e7e0f14b9079f7f491303c6bf..6d1c17e3f238b1e0219d46f75b974eb4927507d9 100644
--- a/ghc/tests/deSugar/should_compile/ds040.hs
+++ b/ghc/tests/deSugar/should_compile/ds040.hs
@@ -1,7 +1,7 @@
 --!!! Another bug in overloaded n+k patts
 --
 
-main _ = [AppendChan stdout (shows ((4::Int) ^^^^ (6::Int)) "\n")]
+main  = print ((4::Int) ^^^^ (6::Int))
 
 (^^^^)		:: (Num a, Integral b) => a -> b -> a
 x ^^^^ 0		=  1
diff --git a/ghc/tests/deSugar/should_compile/ds040.stderr b/ghc/tests/deSugar/should_compile/ds040.stderr
index 0fe36a3ecbbc53e666351f0750e71181cb4d9aba..bee5ab604bfb4c89f1aab5a30419f2c80b48af59 100644
--- a/ghc/tests/deSugar/should_compile/ds040.stderr
+++ b/ghc/tests/deSugar/should_compile/ds040.stderr
@@ -1,9 +1,391 @@
- 
-ds040.hs:4:
-    Data constructor not in scope: `AppendChan'
- 
-ds040.hs:4:
-    Value not in scope: `stdout'
 
 
-Compilation had errors
+================================================================================
+Desugared:
+Rec {
+^^^^{-r3g,x-}  ::  _forall_
+		   [taZJ taZG]
+		   =>
+		   {PrelBase.Num{-2c,p-} taZG}
+		   -> {PrelNum.Integral{-27,p-} taZJ}
+		   -> taZG
+		   -> taZJ
+		   -> taZG
+{-# L #-}
+^^^^{-r3g,x-} =
+    _/\_ taZJ taZG -> \ d.Num_a11q  ::  {PrelBase.Num{-2c,p-} taZG}
+			{-# L #-}
+			d.Num_a11q d.Integral_a11r  ::  {PrelNum.Integral{-27,p-} taZJ}
+				   {-# L #-}
+				   d.Integral_a11r ->
+	_letrec_ {
+	  d.Real_a11G  ::  {PrelNum.Real{-2f,p-} taZJ}
+	  {-# L #-}
+	  d.Real_a11G =
+	      PrelNum.scsel_IntegralPrelNumReal{-a1eV,p-}
+		  _@_ taZJ d.Integral_a11r;
+	  d.Num_a11u  ::  {PrelBase.Num{-2c,p-} taZJ}
+	  {-# L #-}
+	  d.Num_a11u =
+	      PrelNum.scsel_RealPrelBaseNum{-a1gK,p-} _@_ taZJ d.Real_a11G;
+	  d.Ord_a11C  ::  {PrelBase.Ord{-2d,p-} taZJ}
+	  {-# L #-}
+	  d.Ord_a11C =
+	      PrelNum.scsel_RealPrelBaseOrd{-a1gT,p-} _@_ taZJ d.Real_a11G;
+	  d.Eq_a11w  ::  {PrelBase.Eq{-23,p-} taZJ}
+	  {-# L #-}
+	  d.Eq_a11w =
+	      PrelBase.scsel_OrdPrelBaseEq{-a1h2,p-} _@_ taZJ d.Ord_a11C;
+	  fromInt_a1eK  ::  PrelBase.Int{-3g,W-} -> taZJ
+	  {-# L #-}
+	  fromInt_a1eK =
+	      PrelBase.fromInt{-8R,p-} _@_ taZJ d.Num_a11u;
+	  lit_a1eL  ::  taZJ
+	  {-# L #-}
+	  lit_a1eL =
+	      let {
+		ds_d1hh  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1hh =
+		    PrelBase.I#{-5b,w-}{i} 0
+	      } in  fromInt_a1eK ds_d1hh;
+	  ==_a1eM  ::  taZJ -> taZJ -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  ==_a1eM =
+	      PrelBase.=={-8Y,p-} _@_ taZJ d.Eq_a11w;
+	  d.Num_a11z  ::  {PrelBase.Num{-2c,p-} taZG}
+	  {-# L #-}
+	  d.Num_a11z =
+	      d.Num_a11q;
+	  fromInt_a1eN  ::  PrelBase.Int{-3g,W-} -> taZG
+	  {-# L #-}
+	  fromInt_a1eN =
+	      PrelBase.fromInt{-8R,p-} _@_ taZG d.Num_a11z;
+	  lit_a1eO  ::  taZG
+	  {-# L #-}
+	  lit_a1eO =
+	      let {
+		ds_d1hM  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1hM =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_a1eN ds_d1hM;
+	  fromInt_a1eP  ::  PrelBase.Int{-3g,W-} -> taZJ
+	  {-# L #-}
+	  fromInt_a1eP =
+	      fromInt_a1eK;
+	  lit_a1eQ  ::  taZJ
+	  {-# L #-}
+	  lit_a1eQ =
+	      let {
+		ds_d1i1  ::  PrelBase.Int{-3g,W-}
+		{-# L #-}
+		ds_d1i1 =
+		    PrelBase.I#{-5b,w-}{i} 1
+	      } in  fromInt_a1eP ds_d1i1;
+	  >=_a1eR  ::  taZJ -> taZJ -> PrelBase.Bool{-34,W-}
+	  {-# L #-}
+	  >=_a1eR =
+	      PrelBase.>={-8Z,p-} _@_ taZJ d.Ord_a11C;
+	  d.Num_a11E  ::  {PrelBase.Num{-2c,p-} taZJ}
+	  {-# L #-}
+	  d.Num_a11E =
+	      d.Num_a11u;
+	  -_a1eS  ::  taZJ -> taZJ -> taZJ
+	  {-# L #-}
+	  -_a1eS =
+	      PrelBase.-{-817,p-} _@_ taZJ d.Num_a11E;
+	  d.Integral_a11h  ::  {PrelNum.Integral{-27,p-} taZJ}
+	  {-# L #-}
+	  d.Integral_a11h =
+	      d.Integral_a11r;
+	  d.Num_a11i  ::  {PrelBase.Num{-2c,p-} taZG}
+	  {-# L #-}
+	  d.Num_a11i =
+	      d.Num_a11q;
+	  ^^^^_aZD  ::  taZG -> taZJ -> taZG
+	  {-# L #-}
+	  ^^^^_aZD =
+	      \ x_r3k  ::  taZG
+		{-# L #-}
+		x_r3k ds_d1iN  ::  taZJ
+		      {-# L #-}
+		      ds_d1iN ->
+		  let {
+		    fail_d1j0  ::  taZG
+		    {-# L #-}
+		    fail_d1j0 =
+			IOBase.error{-87,w-}
+			    _@_ taZG _string_ "(^^^^){Prelude}: negative exponent" } in
+		  let {
+		    fail_d1qc  ::  taZG
+		    {-# L #-}
+		    fail_d1qc =
+			case
+			    (\ ds_d1iU  ::  taZJ
+			       {-# L #-}
+			       ds_d1iU ->
+				 >=_a1eR ds_d1iU lit_a1eQ)
+				ds_d1iN
+			of {
+			  PrelBase.True{-5E,w-}{i} ->
+			      let {
+				n_r3n  ::  taZJ
+				{-# L #-}
+				n_r3n =
+				    (\ ds_d1jp  ::  taZJ
+				       {-# L #-}
+				       ds_d1jp ->
+					 -_a1eS ds_d1jp lit_a1eQ)
+					ds_d1iN } in
+			      let {
+				x_r3m  ::  taZG
+				{-# L #-}
+				x_r3m =
+				    x_r3k } in
+			      _letrec_ {
+				f_r3p  ::  _forall_
+					   [ta10M ta10Q]
+					   =>
+					   {PrelNum.Integral{-27,p-} ta10M}
+					   -> {PrelBase.Num{-2c,p-} ta10Q}
+					   -> ta10Q
+					   -> ta10M
+					   -> ta10Q
+					   -> ta10Q
+				{-# L #-}
+				f_r3p =
+				    _/\_ ta10M ta10Q -> \ d.Integral_a10Z  ::  {PrelNum.Integral{-27,p-} ta10M}
+							  {-# L #-}
+							  d.Integral_a10Z d.Num_a111  ::  {PrelBase.Num{-2c,p-} ta10Q}
+									  {-# L #-}
+									  d.Num_a111 ->
+					_letrec_ {
+					  d.Real_a119  ::  {PrelNum.Real{-2f,p-} ta10M}
+					  {-# L #-}
+					  d.Real_a119 =
+					      PrelNum.scsel_IntegralPrelNumReal{-a1eV,p-}
+						  _@_ ta10M d.Integral_a10Z;
+					  d.Num_a10V  ::  {PrelBase.Num{-2c,p-} ta10M}
+					  {-# L #-}
+					  d.Num_a10V =
+					      PrelNum.scsel_RealPrelBaseNum{-a1gK,p-}
+						  _@_ ta10M d.Real_a119;
+					  d.Eq_a10X  ::  {PrelBase.Eq{-23,p-} ta10M}
+					  {-# L #-}
+					  d.Eq_a10X =
+					      PrelBase.scsel_NumPrelBaseEq{-a1lq,p-}
+						  _@_ ta10M d.Num_a10V;
+					  fromInt_a1jV  ::  PrelBase.Int{-3g,W-} -> ta10M
+					  {-# L #-}
+					  fromInt_a1jV =
+					      PrelBase.fromInt{-8R,p-} _@_ ta10M d.Num_a10V;
+					  lit_a1jW  ::  ta10M
+					  {-# L #-}
+					  lit_a1jW =
+					      let {
+						ds_d1lF  ::  PrelBase.Int{-3g,W-}
+						{-# L #-}
+						ds_d1lF =
+						    PrelBase.I#{-5b,w-}{i} 0
+					      } in  fromInt_a1jV ds_d1lF;
+					  ==_a1jX  ::  ta10M -> ta10M -> PrelBase.Bool{-34,W-}
+					  {-# L #-}
+					  ==_a1jX =
+					      PrelBase.=={-8Y,p-} _@_ ta10M d.Eq_a10X;
+					  even_a1jY  ::  ta10M -> PrelBase.Bool{-34,W-}
+					  {-# L #-}
+					  even_a1jY =
+					      PrelNum.even{-ruE,p-} _@_ ta10M d.Integral_a10Z;
+					  *_a1jZ  ::  ta10Q -> ta10Q -> ta10Q
+					  {-# L #-}
+					  *_a1jZ =
+					      PrelBase.*{-ra3,p-} _@_ ta10Q d.Num_a111;
+					  d.Integral_a113  ::  {PrelNum.Integral{-27,p-} ta10M}
+					  {-# L #-}
+					  d.Integral_a113 =
+					      d.Integral_a10Z;
+					  quot_a1k0  ::  ta10M -> ta10M -> ta10M
+					  {-# L #-}
+					  quot_a1k0 =
+					      PrelNum.quot{-rh5,p-} _@_ ta10M d.Integral_a113;
+					  fromInt_a1k1  ::  PrelBase.Int{-3g,W-} -> ta10M
+					  {-# L #-}
+					  fromInt_a1k1 =
+					      fromInt_a1jV;
+					  lit_a1k2  ::  ta10M
+					  {-# L #-}
+					  lit_a1k2 =
+					      let {
+						ds_d1mr  ::  PrelBase.Int{-3g,W-}
+						{-# L #-}
+						ds_d1mr =
+						    PrelBase.I#{-5b,w-}{i} 2
+					      } in  fromInt_a1k1 ds_d1mr;
+					  d.Num_a116  ::  {PrelBase.Num{-2c,p-} ta10M}
+					  {-# L #-}
+					  d.Num_a116 =
+					      d.Num_a10V;
+					  -_a1k3  ::  ta10M -> ta10M -> ta10M
+					  {-# L #-}
+					  -_a1k3 =
+					      PrelBase.-{-817,p-} _@_ ta10M d.Num_a116;
+					  fromInt_a1k4  ::  PrelBase.Int{-3g,W-} -> ta10M
+					  {-# L #-}
+					  fromInt_a1k4 =
+					      fromInt_a1jV;
+					  lit_a1k5  ::  ta10M
+					  {-# L #-}
+					  lit_a1k5 =
+					      let {
+						ds_d1mP  ::  PrelBase.Int{-3g,W-}
+						{-# L #-}
+						ds_d1mP =
+						    PrelBase.I#{-5b,w-}{i} 1
+					      } in  fromInt_a1k4 ds_d1mP;
+					  f_aZV  ::  ta10Q -> ta10M -> ta10Q -> ta10Q
+					  {-# L #-}
+					  f_aZV =
+					      \ ds_d1n9  ::  ta10Q
+						{-# L #-}
+						ds_d1n9 ds_d1n6  ::  ta10M
+							{-# L #-}
+							ds_d1n6 y_r3r  ::  ta10Q
+								{-# L #-}
+								y_r3r ->
+						  let { fail_d1pl  ::  ta10Q
+							{-# L #-}
+							fail_d1pl =
+						    let {
+						      y_r3v  ::  ta10Q
+						      {-# L #-}
+						      y_r3v =
+							  y_r3r } in
+						    let {
+						      n_r3u  ::  ta10M
+						      {-# L #-}
+						      n_r3u =
+							  ds_d1n6 } in
+						    let {
+						      x_r3t  ::  ta10Q
+						      {-# L #-}
+						      x_r3t =
+							  ds_d1n9 } in
+						    _letrec_ {
+						      *_a1np  ::  ta10Q -> ta10Q -> ta10Q
+						      {-# L #-}
+						      *_a1np =
+							  *_a1jZ;
+						      g_a10m  ::  ta10Q -> ta10M -> ta10Q
+						      {-# L #-}
+						      g_a10m =
+							  \ x_r3z  ::  ta10Q
+							    {-# L #-}
+							    x_r3z n_r3A  ::  ta10M
+								  {-# L #-}
+								  n_r3A ->
+							      case even_a1jY n_r3A of {
+								PrelBase.True{-5E,w-}{i} ->
+								    let {
+								      ds_d1nU  ::  ta10M
+								      {-# L #-}
+								      ds_d1nU =
+									  quot_a1k0 n_r3A lit_a1k2
+								    } in 
+								      (let {
+									 ds_d1ob  ::  ta10Q
+									 {-# L #-}
+									 ds_d1ob =
+									     *_a1jZ x_r3z x_r3z
+								       } in  g_a10m ds_d1ob)
+									  ds_d1nU;
+								PrelBase.False{-58,w-}{i} ->
+								    let {
+								      ds_d1ow  ::  ta10Q
+								      {-# L #-}
+								      ds_d1ow =
+									  *_a1np x_r3z y_r3v
+								    } in 
+								      (let {
+									 ds_d1oQ  ::  ta10M
+									 {-# L #-}
+									 ds_d1oQ =
+									     -_a1k3 n_r3A lit_a1k5
+								       } in  f_aZV x_r3z ds_d1oQ)
+									  ds_d1ow;
+							      };
+						      g_r3x  ::  ta10Q -> ta10M -> ta10Q
+						      {-# L #-}
+						      g_r3x =
+							  g_a10m;
+						    } in  g_r3x x_r3t n_r3u
+						  } in
+						  case ==_a1jX lit_a1jW ds_d1n6 of {
+						    PrelBase.True{-5E,w-}{i} -> y_r3r;
+						    PrelBase.False{-58,w-}{i} -> fail_d1pl;
+						  };
+					} in  f_aZV;
+			      } in 
+				let {
+				  f_a1pD  ::  taZG -> taZJ -> taZG -> taZG
+				  {-# L #-}
+				  f_a1pD =
+				      f_r3p _@_ taZJ _@_ taZG d.Integral_a11h d.Num_a11i
+				} in  f_a1pD x_r3m n_r3n x_r3m;
+			  PrelBase.False{-58,w-}{i} -> fail_d1j0;
+			}
+		  } in 
+		    case ==_a1eM lit_a1eL ds_d1iN of {
+		      PrelBase.True{-5E,w-}{i} -> lit_a1eO;
+		      PrelBase.False{-58,w-}{i} -> fail_d1qc;
+		    };
+	} in  ^^^^_aZD
+^^^^_a1eG  ::  PrelBase.Int{-3g,W-}
+	       -> PrelBase.Int{-3g,W-}
+	       -> PrelBase.Int{-3g,W-}
+{-# L #-}
+^^^^_a1eG =
+    ^^^^{-r3g,x-}
+	_@_ PrelBase.Int{-3g,W-}
+	_@_ PrelBase.Int{-3g,W-}
+	d.Num_a127
+	d.Integral_a128
+main_a11K  ::  IOBase.IO{-3e,p-} PrelBase.(){-40,W-}
+{-# L #-}
+main_a11K =
+    let {
+      ds_d1qH  ::  PrelBase.Int{-3g,W-}
+      {-# L #-}
+      ds_d1qH =
+	  ^^^^_a1eG lit_a1eI lit_a1eJ
+    } in  print_a1eH ds_d1qH
+main{-814,x-}  ::  IOBase.IO{-3e,p-} PrelBase.(){-40,W-}
+{-# L #-}
+main{-814,x-} =
+    main_a11K
+d.Show_a12a  ::  {PrelBase.Show{-2i,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Show_a12a =
+    PrelBase.$d3{-raC,p-}
+print_a1eH  ::  PrelBase.Int{-3g,W-}
+		-> IOBase.IO{-3e,p-} PrelBase.(){-40,W-}
+{-# L #-}
+print_a1eH =
+    PrelIO.print{-rLi,p-} _@_ PrelBase.Int{-3g,W-} d.Show_a12a
+d.Num_a127  ::  {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Num_a127 =
+    PrelBase.$d4{-raN,p-}
+d.Integral_a128  ::  {PrelNum.Integral{-27,p-} PrelBase.Int{-3g,W-}}
+{-# L #-}
+d.Integral_a128 =
+    PrelNum.$d36{-roC,p-}
+lit_a1eI  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1eI =
+    PrelBase.I#{-5b,w-}{i} 4
+lit_a1eJ  ::  PrelBase.Int{-3g,W-}
+{-# L #-}
+lit_a1eJ =
+    PrelBase.I#{-5b,w-}{i} 6
+end Rec }
diff --git a/ghc/tests/deSugar/should_run/Makefile b/ghc/tests/deSugar/should_run/Makefile
index ca6251d6044627cbee6cd72ed697fe2e9c324b79..41a62539b90a14823013cab0e4a09f24ccb53eaa 100644
--- a/ghc/tests/deSugar/should_run/Makefile
+++ b/ghc/tests/deSugar/should_run/Makefile
@@ -3,15 +3,20 @@ include $(TOP)/mk/boilerplate.mk
 
 HS_SRCS = $(wildcard *.hs)
 BINS = $(patsubst %.o,%,$(HS_OBJS))
+RUNTESTS = $(patsubst %,%.run,$(BINS))
 
 SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
-HC_OPTS += -noC -dcore-lint
+HC_OPTS += -dcore-lint
 
-all :: $(BINS)
+all :: $(BINS) $(RUNTESTS)
 
-%.o : %
+%.run : %
+	$(RUNTEST) $< $(RUNTEST_OPTS)
+
+% : %.o
 	$(HC) $(HC_OPTS) $< -o $@
 
+dsrun005_RUNTEST_OPTS = -x 1
 
 include $(TOP)/mk/target.mk
 
diff --git a/ghc/tests/deSugar/should_run/dsrun001.stdout b/ghc/tests/deSugar/should_run/dsrun001.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..130e6b0b7d4c177391f90a8a088b58621cb710d0
--- /dev/null
+++ b/ghc/tests/deSugar/should_run/dsrun001.stdout
@@ -0,0 +1 @@
+[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
diff --git a/ghc/tests/deSugar/should_run/dsrun002.stdout b/ghc/tests/deSugar/should_run/dsrun002.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..660eacecf54d38a354f29f87500a89e5e9d0746f
--- /dev/null
+++ b/ghc/tests/deSugar/should_run/dsrun002.stdout
@@ -0,0 +1 @@
+aabcb
diff --git a/ghc/tests/deSugar/should_run/ds003.hs b/ghc/tests/deSugar/should_run/dsrun003.hs
similarity index 100%
rename from ghc/tests/deSugar/should_run/ds003.hs
rename to ghc/tests/deSugar/should_run/dsrun003.hs
diff --git a/ghc/tests/deSugar/should_run/dsrun003.stdout b/ghc/tests/deSugar/should_run/dsrun003.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..0ca95142bb715442d0c2c82a7c573a08c4593845
--- /dev/null
+++ b/ghc/tests/deSugar/should_run/dsrun003.stdout
@@ -0,0 +1 @@
+True
diff --git a/ghc/tests/deSugar/should_run/ds004.hs b/ghc/tests/deSugar/should_run/dsrun004.hs
similarity index 100%
rename from ghc/tests/deSugar/should_run/ds004.hs
rename to ghc/tests/deSugar/should_run/dsrun004.hs
diff --git a/ghc/tests/deSugar/should_run/dsrun004.stdout b/ghc/tests/deSugar/should_run/dsrun004.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..49ae94bb33c86281c34caecdc96fc1cbb8336fe6
--- /dev/null
+++ b/ghc/tests/deSugar/should_run/dsrun004.stdout
@@ -0,0 +1,2 @@
+2
+5
diff --git a/ghc/tests/deSugar/should_run/ds005.hs b/ghc/tests/deSugar/should_run/dsrun005.hs
similarity index 100%
rename from ghc/tests/deSugar/should_run/ds005.hs
rename to ghc/tests/deSugar/should_run/dsrun005.hs
diff --git a/ghc/tests/deSugar/should_run/dsrun005.stderr b/ghc/tests/deSugar/should_run/dsrun005.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..ce7bbe2b93c52dcf099c11a97b464fd9d2c4aaba
--- /dev/null
+++ b/ghc/tests/deSugar/should_run/dsrun005.stderr
@@ -0,0 +1,2 @@
+
+Fail: dsrun005.hs:42: Non-exhaustive patterns in function `f'
diff --git a/ghc/tests/stranal/should_compile/moo.stderr b/ghc/tests/deSugar/should_run/dsrun005.stdout
similarity index 100%
rename from ghc/tests/stranal/should_compile/moo.stderr
rename to ghc/tests/deSugar/should_run/dsrun005.stdout
diff --git a/ghc/tests/deSugar/should_run/ds006.hs b/ghc/tests/deSugar/should_run/dsrun006.hs
similarity index 100%
rename from ghc/tests/deSugar/should_run/ds006.hs
rename to ghc/tests/deSugar/should_run/dsrun006.hs
diff --git a/ghc/tests/deSugar/should_run/dsrun006.stdout b/ghc/tests/deSugar/should_run/dsrun006.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..00750edc07d6415dcc07ae0351e9397b0222b7ba
--- /dev/null
+++ b/ghc/tests/deSugar/should_run/dsrun006.stdout
@@ -0,0 +1 @@
+3
diff --git a/ghc/tests/deriving/should_compile/Makefile b/ghc/tests/deriving/should_compile/Makefile
index a6cfba3e52434ab3a16deb8ac48e696d0d706cd4..8a8af1e3926c55ec884ec31e17e38fc85b4b52b9 100644
--- a/ghc/tests/deriving/should_compile/Makefile
+++ b/ghc/tests/deriving/should_compile/Makefile
@@ -1,15 +1,7 @@
-TOP = ../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
-HC_OPTS += -noC -dcore-lint -hi -ddump-tc 
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
-
-all :: $(HS_OBJS)
+HC_OPTS += -noC -dcore-lint -hi -ddump-tc
 
 include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/deriving/should_compile/drv008.hs b/ghc/tests/deriving/should_compile/drv008.hs
index da1391dbc9e4be9911d6c7e48bce8ed686ff6729..c06332e26e3b4685bf6ea50ede22d4f96be16a77 100644
--- a/ghc/tests/deriving/should_compile/drv008.hs
+++ b/ghc/tests/deriving/should_compile/drv008.hs
@@ -1,5 +1,7 @@
 --!!! deriving Ix on d. type with nullary constructors
 module ShouldSucceed where
 
+import Ix
+
 data AD = A | B | C | D deriving (Show, Ord, Eq, Ix)
 
diff --git a/ghc/tests/deriving/should_compile/drv008.stderr b/ghc/tests/deriving/should_compile/drv008.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6d714d80a9f7534c00222356aeeaefcc53116cce
--- /dev/null
+++ b/ghc/tests/deriving/should_compile/drv008.stderr
@@ -0,0 +1,193 @@
+
+
+================================================================================
+Typechecked:
+A{-r4,x-}{i} = A{-r4,x-}{i} {}
+B{-r3,x-}{i} = B{-r3,x-}{i} {}
+C{-r6,x-}{i} = C{-r6,x-}{i} {}
+D{-r8,x-}{i} = D{-r8,x-}{i} {}
+AbsBinds [] [] [([], con2tag_AD#_rUn, con2tag_AD#_aXE)]
+    con2tag_AD#_aXE A{-r4,x-}{i} = 0#
+    con2tag_AD#_aXE B{-r3,x-}{i} = 1#
+    con2tag_AD#_aXE C{-r6,x-}{i} = 2#
+    con2tag_AD#_aXE D{-r8,x-}{i} = 3#
+AbsBinds [] [] [([], maxtag_AD#_rUm, maxtag_AD#_aXJ)]
+    maxtag_AD#_aXJ = PrelBase.I#{-5b,w-}{i} 3#
+AbsBinds [] [] [([], tag2con_AD#_rUl, tag2con_AD#_aXM)]
+    tag2con_AD#_aXM (PrelBase.I#{-5b,w-}{i} 0#) = A{-r4,x-}{i}
+    tag2con_AD#_aXM (PrelBase.I#{-5b,w-}{i} 1#) = B{-r3,x-}{i}
+    tag2con_AD#_aXM (PrelBase.I#{-5b,w-}{i} 2#) = C{-r6,x-}{i}
+    tag2con_AD#_aXM (PrelBase.I#{-5b,w-}{i} 3#) = D{-r8,x-}{i}
+    tag2con_AD#_aXM _
+		    = IOBase.error{-87,w-} AD{-r4h,x-} "Urk! in TcGenDeriv"
+AbsBinds [] [] [([], $d1{-r12z,x-}, d.Eq_aXY)]
+    ==_a12G = ==_a12H
+    AbsBinds [] [] [([], ==_a12H, ==_aY2)]
+	==_aY2 a_rUC b_rUD
+	       = case con2tag_AD#_rUn a_rUC of
+		   a#_rUF
+		   -> case con2tag_AD#_rUn b_rUD of
+			b#_rUH
+			-> if a#_rUF GHC.==#{-79,w-}{I} b#_rUH then
+			       PrelBase.True{-5E,w-}{i}
+			   else
+			       PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], /=_a12I, /=_aYh)]
+	/=_aYh a_rUL b_rUM = PrelBase.not{-rhL,p-} ==_a12G a_rUL b_rUM
+    d.Eq_aXY = ({-dict-} [] [==_a12H, /=_a12I])
+AbsBinds [] [] [([], $d2{-r12A,x-}, d.Eval_aYt)]
+    d.Eval_aYt = ({-dict-} [] [])
+AbsBinds [] [] [([], $d3{-r12B,x-}, d.Ord_aYy)]
+    d.Eq_a10h = $d1{-r12z,x-}
+    compare_a12J = compare_a12P
+    compare_a12K = compare_a12P
+    compare_a12L = compare_a12P
+    compare_a12M = compare_a12P
+    compare_a12N = compare_a12P
+    compare_a12O = compare_a12P
+    AbsBinds [] [] [([], compare_a12P, compare_aYC)]
+	compare_aYC a_rVE b_rVF
+		    = case con2tag_AD#_rUn a_rVE of
+			a#_rVK
+			-> case con2tag_AD#_rUn b_rVF of
+			     b#_rVM
+			     -> if a#_rVK GHC.==#{-79,w-}{I} b#_rVM then
+				    PrelBase.EQ{-raK,p-}{i}
+				else
+				    if a#_rVK GHC.<#{-7b,w-}{I} b#_rVM then
+					PrelBase.LT{-raL,p-}{i}
+				    else
+					PrelBase.GT{-raM,p-}{i}
+		    where
+			{- nonrec -}
+			AbsBinds [taYV, taYX] [] [([taYV, taYX], cmp_eq_rVH, cmp_eq_aYG)]
+			    cmp_eq_aYG _ _ = PrelBase.EQ{-raK,p-}{i}
+			{- nonrec -}
+			{- nonrec -}
+    AbsBinds [] [] [([], <_a12Q, <_aZa)]
+	<_aZa a_rUS b_rUT
+	      = case compare_a12J a_rUS b_rUT of
+		  PrelBase.LT{-raL,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		  PrelBase.EQ{-raK,p-}{i} -> PrelBase.False{-58,w-}{i}
+		  PrelBase.GT{-raM,p-}{i} -> PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], <=_a12R, <=_aZm)]
+	<=_aZm a_rV0 b_rV1
+	       = case compare_a12K a_rV0 b_rV1 of
+		   PrelBase.LT{-raL,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.EQ{-raK,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.GT{-raM,p-}{i} -> PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], >=_a12S, >=_aZy)]
+	>=_aZy a_rV8 b_rV9
+	       = case compare_a12L a_rV8 b_rV9 of
+		   PrelBase.LT{-raL,p-}{i} -> PrelBase.False{-58,w-}{i}
+		   PrelBase.EQ{-raK,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.GT{-raM,p-}{i} -> PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], >_a12T, >_aZK)]
+	>_aZK a_rVg b_rVh
+	      = case compare_a12M a_rVg b_rVh of
+		  PrelBase.LT{-raL,p-}{i} -> PrelBase.False{-58,w-}{i}
+		  PrelBase.EQ{-raK,p-}{i} -> PrelBase.False{-58,w-}{i}
+		  PrelBase.GT{-raM,p-}{i} -> PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], max_a12U, max_aZW)]
+	max_aZW a_rVo b_rVp
+		= case compare_a12N a_rVo b_rVp of
+		    PrelBase.LT{-raL,p-}{i} -> b_rVp
+		    PrelBase.EQ{-raK,p-}{i} -> a_rVo
+		    PrelBase.GT{-raM,p-}{i} -> a_rVo
+    AbsBinds [] [] [([], min_a12V, min_a108)]
+	min_a108 a_rVw b_rVx
+		 = case compare_a12O a_rVw b_rVx of
+		     PrelBase.LT{-raL,p-}{i} -> a_rVw
+		     PrelBase.EQ{-raK,p-}{i} -> b_rVx
+		     PrelBase.GT{-raM,p-}{i} -> b_rVx
+    d.Ord_aYy =
+	({-dict-}
+	 [d.Eq_a10h]
+	 [compare_a12P, <_a12Q, <=_a12R, >=_a12S, >_a12T, max_a12U, min_a12V])
+AbsBinds [] [] [([], $d4{-r12C,x-}, d.Show_a10o)]
+    showsPrec_a12W = showsPrec_a12X
+    AbsBinds [] [] [([], showsPrec_a12X, showsPrec_a10s)]
+	showsPrec_a10s a_rVR A{-r4,x-}{i}
+		       = PrelBase.showString{-ri0,p-} "A"
+	showsPrec_a10s a_rVT B{-r3,x-}{i}
+		       = PrelBase.showString{-ri0,p-} "B"
+	showsPrec_a10s a_rVV C{-r6,x-}{i}
+		       = PrelBase.showString{-ri0,p-} "C"
+	showsPrec_a10s a_rVX D{-r8,x-}{i}
+		       = PrelBase.showString{-ri0,p-} "D"
+    AbsBinds [] [] [([], showList_a12Y, showList_a10B)]
+	showList_a10B = PrelBase.showList__{-rhV,p-}
+			    AD{-r4h,x-} showsPrec_a12W PrelBase.I#{-5b,w-}{i} 0#
+    d.Show_a10o = ({-dict-} [] [showsPrec_a12X, showList_a12Y])
+AbsBinds [] [] [([], $d5{-r12D,x-}, d.Ix_a10M)]
+    d.Show_a12j = $d4{-r12C,x-}
+    d.Ord_a12k = $d3{-r12B,x-}
+    inRange_a12Z = inRange_a132
+    AbsBinds [] [] [([], range_a130, range_a10Q)]
+	range_a10Q (a_rW5, b_rW6)
+		   = case con2tag_AD#_rUn a_rW5 of
+		       a#_rW8
+		       -> case con2tag_AD#_rUn b_rW6 of
+			    b#_rWa
+			    -> map_a12E [PrelBase.Int{-3g,W-}, AD{-r4h,x-}] tag2con_AD#_rUl
+									    enumFromTo_a12F PrelBase.I#{-5b,w-}{i} a#_rW8
+											    PrelBase.I#{-5b,w-}{i} b#_rWa
+    AbsBinds [] [] [([], index_a131, index_a11q)]
+	index_a11q (c_rWe@(a_rWf, b_rWg)) d_rWh
+		   = if inRange_a12Z c_rWe d_rWh then
+			 case con2tag_AD#_rUn a_rWf of
+			   a#_rWj
+			   -> case con2tag_AD#_rUn d_rWh of
+				d#_rWl
+				-> case d#_rWl GHC.-#{-7E,w-}{I} a#_rWj of
+				     c_rWn -> PrelBase.I#{-5b,w-}{i} c_rWn
+		     else
+			 IOBase.error{-87,w-}
+			     PrelBase.Int{-3g,W-} "Ix.AD.index: out of range\n"
+    AbsBinds [] [] [([], inRange_a132, inRange_a11X)]
+	inRange_a11X (a_rWr, b_rWs) c_rWt
+		     = case con2tag_AD#_rUn a_rWr of
+			 a#_rWv
+			 -> case con2tag_AD#_rUn b_rWs of
+			      b#_rWx
+			      -> case con2tag_AD#_rUn c_rWt of
+				   c#_rWz
+				   -> if c#_rWz GHC.>=#{-78,w-}{I} a#_rWv then
+					  c#_rWz GHC.<=#{-7c,w-}{I} b#_rWx
+				      else
+					  PrelBase.False{-58,w-}{i}
+    d.Ix_a10M =
+	({-dict-}
+	 [d.Show_a12j, d.Ord_a12k]
+	 [range_a130, index_a131, inRange_a132])
+d.Functor_a12v = PrelBase.$d26{-rbT,p-}
+map_a12E = PrelBase.map{-rgT,p-} PrelBase.[]{-3j,W-} d.Functor_a12v
+d.Enum_a12y = PrelBase.$d6{-rct,p-}
+enumFromTo_a12F =
+    PrelBase.enumFromTo{-8W,p-} PrelBase.Int{-3g,W-} d.Enum_a12y
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+Ix 1 :: $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $d9 1 Ix 1;
+PrelBase 1 :: $d1 1 $d11 1 $d12 1 $d14 1 $d15 1 $d16 1 $d2 1 $d22 1 $d24 1 $d25 1 $d26 1 $d27 1 $d28 1 $d3 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d6 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $m>> 1 $mcompare 1 $menumFromThenTo 1 $menumFromTo 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 && 1 . 1 not 1 showList__ 1 showParen 1 showSpace 1 showString 1 Enum 1 Eq 1 Eval 1 Functor 1 Monad 1 MonadZero 1 Num 1 Ord 1 Ordering 1 Ordering 1 Show 1 ShowS 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d17 1 $d18 1 $d28 1 $d29 1 $d30 1 $d33 1 $d34 1 $d35 1 $d8 1;
+PrelTup 1 :: $d13 1 $d4 1 $d49 1 $d9 1;
+_exports_
+ShouldSucceed AD(A B C D);
+_instances_
+instance {PrelBase.Eq AD} = $d1;
+instance {PrelBase.Eval AD} = $d2;
+instance {PrelBase.Ord AD} = $d3;
+instance {PrelBase.Show AD} = $d4;
+instance {Ix.Ix AD} = $d5;
+_declarations_
+1 $d1 _:_ {PrelBase.Eq AD} ;;
+1 $d2 _:_ {PrelBase.Eval AD} ;;
+1 $d3 _:_ {PrelBase.Ord AD} ;;
+1 $d4 _:_ {PrelBase.Show AD} ;;
+1 $d5 _:_ {Ix.Ix AD} ;;
+1 data AD = A |  B |  C |  D ;
diff --git a/ghc/tests/deriving/should_compile/drv009.hs b/ghc/tests/deriving/should_compile/drv009.hs
index e0ff3992d037db78a811ad5a9e7884dda71b78a2..4d192788ba56c48c2d51b276e98e55e6ba939ff0 100644
--- a/ghc/tests/deriving/should_compile/drv009.hs
+++ b/ghc/tests/deriving/should_compile/drv009.hs
@@ -1,4 +1,6 @@
 --!!! deriving Ix on d. type with one constructor
 module ShouldSucceed where
 
+import Ix
+
 data Pair a b = Pair a b deriving (Show, Ord, Eq, Ix)
diff --git a/ghc/tests/deriving/should_compile/drv009.stderr b/ghc/tests/deriving/should_compile/drv009.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..da8142d92b2d432c0fed5e031b33111f14457574
--- /dev/null
+++ b/ghc/tests/deriving/should_compile/drv009.stderr
@@ -0,0 +1,248 @@
+
+
+================================================================================
+Typechecked:
+Pair{-r4e,x-}{i} =
+    _/\_ a_tr4b b_tr4c -> \ tpl_B1 tpl_B2 ->
+	Pair{-r4e,x-}{i} {_@_ a_tr4b _@_ b_tr4c tpl_B1 tpl_B2}
+AbsBinds
+[taXK, taXN]
+[]
+[([taXK, taXN], con2tag_Pair#_rUo, con2tag_Pair#_aXD)]
+    con2tag_Pair#_aXD (Pair{-r4e,x-}{i} _ _) = 0#
+AbsBinds [] [] [([], maxtag_Pair#_rUn, maxtag_Pair#_aXR)]
+    maxtag_Pair#_aXR = PrelBase.I#{-5b,w-}{i} 0#
+AbsBinds
+[taY0, taY2]
+[]
+[([taY0, taY2], tag2con_Pair#_rUm, tag2con_Pair#_aXU)]
+    tag2con_Pair#_aXU (PrelBase.I#{-5b,w-}{i} 0#)
+		      = Pair{-r4e,x-}{i} [taY0, taY2]
+    tag2con_Pair#_aXU _
+		      = IOBase.error{-87,w-}
+			    (taY0 -> taY2 -> Pair{-r4d,x-} taY0 taY2) "Urk! in TcGenDeriv"
+AbsBinds
+[taYr, taYs]
+[d.Eq_aYS, d.Eq_aYT]
+[([taYr, taYs], $d1{-r17l,x-}, d.Eq_aYe)]
+    d.Eq_aYX = d.Eq_aYS
+    ==_a17y = PrelBase.=={-8Y,p-} taYr d.Eq_aYX
+    d.Eq_aYZ = d.Eq_aYT
+    ==_a17z = PrelBase.=={-8Y,p-} taYs d.Eq_aYZ
+    ==_a17A = ==_a17B
+    AbsBinds [] [] [([], ==_a17B, ==_aYi)]
+	==_aYi (Pair{-r4e,x-}{i} a1_rUx a2_rUy)
+	       (Pair{-r4e,x-}{i} b1_rUz b2_rUA)
+	       = (a1_rUx ==_a17y b1_rUz)
+		 PrelBase.&&{-rgJ,p-} (a2_rUy ==_a17z b2_rUA)
+    AbsBinds [] [] [([], /=_a17C, /=_aYL)]
+	/=_aYL a_rUE b_rUF = PrelBase.not{-rhH,p-} ==_a17A a_rUE b_rUF
+    d.Eq_aYe = ({-dict-} [] [==_a17B, /=_a17C])
+AbsBinds
+[ta17g, ta17h]
+[]
+[([ta17g, ta17h], $d2{-r17m,x-}, d.Eval_aZ8)]
+    d.Eval_aZ8 = ({-dict-} [] [])
+AbsBinds
+[taZm, taZn]
+[d.Ord_a11v, d.Ord_a11w, d.Eq_a11x]
+[([taZm, taZn], $d3{-r17n,x-}, d.Ord_aZf)]
+    d.Eq_a11u = d.Eq_a11x
+    d.Ord_a10d = d.Ord_a11v
+    d.Ord_a10e = d.Ord_a11w
+    compare_a17D = compare_a17J
+    compare_a17E = compare_a17J
+    compare_a17F = compare_a17J
+    compare_a17G = compare_a17J
+    compare_a17H = compare_a17J
+    compare_a17I = compare_a17J
+    AbsBinds [] [] [([], compare_a17J, compare_aZj)]
+	compare_aZj a_rVx b_rVy
+		    = case cmp_eq_a17Q a_rVx b_rVy of
+			PrelBase.LT{-raH,p-}{i} -> PrelBase.LT{-raH,p-}{i}
+			PrelBase.EQ{-raG,p-}{i} -> PrelBase.EQ{-raG,p-}{i}
+			PrelBase.GT{-raI,p-}{i} -> PrelBase.GT{-raI,p-}{i}
+		    where
+			{- nonrec -}
+			AbsBinds
+			[taZR, taZV]
+			[d.Ord_a103, d.Ord_a105]
+			[([taZR, taZV], cmp_eq_rVA, cmp_eq_aZr)]
+			    compare_a17R = PrelBase.compare{-rgY,p-} taZR d.Ord_a103
+			    compare_a17S = PrelBase.compare{-rgY,p-} taZV d.Ord_a105
+			    cmp_eq_aZr (Pair{-r4e,x-}{i} a1_rVC a2_rVD)
+				       (Pair{-r4e,x-}{i} b1_rVE b2_rVF)
+				       = case compare_a17R a1_rVC b1_rVE of
+					   PrelBase.LT{-raH,p-}{i} -> PrelBase.LT{-raH,p-}{i}
+					   PrelBase.EQ{-raG,p-}{i}
+					   -> case compare_a17S a2_rVD b2_rVF of
+						PrelBase.LT{-raH,p-}{i} -> PrelBase.LT{-raH,p-}{i}
+						PrelBase.EQ{-raG,p-}{i} -> PrelBase.EQ{-raG,p-}{i}
+						PrelBase.GT{-raI,p-}{i} -> PrelBase.GT{-raI,p-}{i}
+					   PrelBase.GT{-raI,p-}{i} -> PrelBase.GT{-raI,p-}{i}
+			    cmp_eq_aZr _ _
+				       = IOBase.error{-87,w-}
+					     PrelBase.Ordering{-3o,p-} "Urk! in TcGenDeriv"
+			{- nonrec -}
+			cmp_eq_a17Q = cmp_eq_rVA [taZm, taZn] [d.Ord_a10d, d.Ord_a10e]
+			{- nonrec -}
+    AbsBinds [] [] [([], <_a17K, <_a10j)]
+	<_a10j a_rUL b_rUM
+	       = case compare_a17D a_rUL b_rUM of
+		   PrelBase.LT{-raH,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.EQ{-raG,p-}{i} -> PrelBase.False{-58,w-}{i}
+		   PrelBase.GT{-raI,p-}{i} -> PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], <=_a17L, <=_a10w)]
+	<=_a10w a_rUT b_rUU
+		= case compare_a17E a_rUT b_rUU of
+		    PrelBase.LT{-raH,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		    PrelBase.EQ{-raG,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		    PrelBase.GT{-raI,p-}{i} -> PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], >=_a17M, >=_a10J)]
+	>=_a10J a_rV1 b_rV2
+		= case compare_a17F a_rV1 b_rV2 of
+		    PrelBase.LT{-raH,p-}{i} -> PrelBase.False{-58,w-}{i}
+		    PrelBase.EQ{-raG,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		    PrelBase.GT{-raI,p-}{i} -> PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], >_a17N, >_a10W)]
+	>_a10W a_rV9 b_rVa
+	       = case compare_a17G a_rV9 b_rVa of
+		   PrelBase.LT{-raH,p-}{i} -> PrelBase.False{-58,w-}{i}
+		   PrelBase.EQ{-raG,p-}{i} -> PrelBase.False{-58,w-}{i}
+		   PrelBase.GT{-raI,p-}{i} -> PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], max_a17O, max_a119)]
+	max_a119 a_rVh b_rVi
+		 = case compare_a17H a_rVh b_rVi of
+		     PrelBase.LT{-raH,p-}{i} -> b_rVi
+		     PrelBase.EQ{-raG,p-}{i} -> a_rVh
+		     PrelBase.GT{-raI,p-}{i} -> a_rVh
+    AbsBinds [] [] [([], min_a17P, min_a11m)]
+	min_a11m a_rVp b_rVq
+		 = case compare_a17I a_rVp b_rVq of
+		     PrelBase.LT{-raH,p-}{i} -> a_rVp
+		     PrelBase.EQ{-raG,p-}{i} -> b_rVq
+		     PrelBase.GT{-raI,p-}{i} -> b_rVq
+    d.Ord_aZf =
+	({-dict-}
+	 [d.Eq_a11u]
+	 [compare_a17J, <_a17K, <=_a17L, >=_a17M, >_a17N, max_a17O, min_a17P])
+AbsBinds
+[ta121, ta122]
+[d.Show_a12w, d.Show_a12x]
+[([ta121, ta122], $d4{-r17o,x-}, d.Show_a11N)]
+    d.Show_a12D = d.Show_a12w
+    showsPrec_a17T = PrelBase.showsPrec{-rh4,p-} ta121 d.Show_a12D
+    d.Show_a12F = d.Show_a12x
+    showsPrec_a17U = PrelBase.showsPrec{-rh4,p-} ta122 d.Show_a12F
+    showsPrec_a17V = showsPrec_a17W
+    AbsBinds [] [] [([], showsPrec_a17W, showsPrec_a11R)]
+	showsPrec_a11R a_rVU (Pair{-r4e,x-}{i} b1_rVV b2_rVW)
+		       = PrelBase.showParen{-rhT,p-} a_rVU >=_a17q lit_a17r
+						     PrelBase..{-rgK,p-}
+							 [PrelBase.String{-rh7,p-}, PrelBase.String{-rh7,p-}, PrelBase.String{-rh7,p-}] PrelBase.showString{-rhW,p-} "Pair "
+																	PrelBase..{-rgK,p-}
+																	    [PrelBase.String{-rh7,p-}, PrelBase.String{-rh7,p-}, PrelBase.String{-rh7,p-}] showsPrec_a17T PrelBase.I#{-5b,w-}{i} 10#
+																													  b1_rVV
+																											   PrelBase..{-rgK,p-}
+																											       [PrelBase.String{-rh7,p-}, PrelBase.String{-rh7,p-}, PrelBase.String{-rh7,p-}] PrelBase.showSpace{-rhV,p-}
+																																					      showsPrec_a17U PrelBase.I#{-5b,w-}{i} 10#
+																																							     b2_rVW
+    AbsBinds [] [] [([], showList_a17X, showList_a12r)]
+	showList_a12r = PrelBase.showList__{-rhR,p-}
+			    (Pair{-r4d,x-} ta121 ta122) showsPrec_a17V PrelBase.I#{-5b,w-}{i} 0#
+    d.Show_a11N = ({-dict-} [] [showsPrec_a17W, showList_a17X])
+AbsBinds
+[ta13d, ta13e]
+[d.Ix_a16l, d.Ix_a16m, d.Show_a16n, d.Ord_a16o]
+[([ta13d, ta13e], $d5{-r17p,x-}, d.Ix_a12O)]
+    d.Show_a16k = d.Show_a16n
+    d.Ord_a16p = d.Ord_a16o
+    d.Ix_a16s = d.Ix_a16l
+    range_a17Y = Ix.range{-rbr,p-} ta13d d.Ix_a16s
+    d.Ix_a16u = d.Ix_a16m
+    range_a17Z = Ix.range{-rbr,p-} ta13e d.Ix_a16u
+    d.Ix_a16C = d.Ix_a16m
+    index_a180 = Ix.index{-rbs,p-} ta13e d.Ix_a16C
+    d.Ix_a15t = d.Ix_a16m
+    d.Ix_a16G = d.Ix_a16l
+    index_a181 = Ix.index{-rbs,p-} ta13d d.Ix_a16G
+    d.Ix_a15u = d.Ix_a16l
+    d.Ix_a16I = d.Ix_a16l
+    inRange_a182 = Ix.inRange{-rbt,p-} ta13d d.Ix_a16I
+    d.Ix_a16K = d.Ix_a16m
+    inRange_a183 = Ix.inRange{-rbt,p-} ta13e d.Ix_a16K
+    AbsBinds [] [] [([], range_a184, range_a12S)]
+	range_a12S ((Pair{-r4e,x-}{i} a1_rW4 a2_rW5), (Pair{-r4e,x-}{i} b1_rW6 b2_rW7))
+		   = [Pair{-r4e,x-}{i} [ta13d, ta13e] c1_rW9 c2_rWb |
+			  c1_rW9 <- range_a17Y (a1_rW4,
+						b1_rW6), c2_rWb <- range_a17Z (a2_rW5, b2_rW7)]
+    AbsBinds [] [] [([], index_a185, index_a13T)]
+	+_a187 = +_a17u
+	*_a188 = *_a17v
+	+_a189 = +_a17u
+	index_a13T ((Pair{-r4e,x-}{i} a1_rWf a2_rWg), (Pair{-r4e,x-}{i} b1_rWh b2_rWi))
+		   (Pair{-r4e,x-}{i} c1_rWj c2_rWk)
+		   = (index_a180 (a2_rWg, b2_rWi) c2_rWk)
+		     +_a17u ((rangeSize_a18a (a2_rWg, b2_rWi))
+			     *_a17v ((index_a181 (a1_rWf, b1_rWh) c1_rWj)
+				     +_a187 ((rangeSize_a18b (a1_rWf, b1_rWh)) *_a188 lit_a17w)))
+		   where
+		       {- nonrec -}
+		       AbsBinds
+		       [ta14I]
+		       [d.Ix_a14P]
+		       [([ta14I], rangeSize_rWm, rangeSize_a14n)]
+			   index_a18c = Ix.index{-rbs,p-} ta14I d.Ix_a14P
+			   rangeSize_a14n (a_rWo, b_rWp)
+					  = (index_a18c (a_rWo, b_rWp) b_rWp) +_a189 lit_a17x
+		       {- nonrec -}
+		       rangeSize_a18a = rangeSize_rWm ta13e d.Ix_a15t
+		       rangeSize_a18b = rangeSize_rWm ta13d d.Ix_a15u
+		       {- nonrec -}
+    AbsBinds [] [] [([], inRange_a186, inRange_a15D)]
+	inRange_a15D ((Pair{-r4e,x-}{i} a1_rWt a2_rWu), (Pair{-r4e,x-}{i} b1_rWv b2_rWw))
+		     (Pair{-r4e,x-}{i} c1_rWx c2_rWy)
+		     = (inRange_a182 (a1_rWt, b1_rWv) c1_rWx)
+		       PrelBase.&&{-rgJ,p-} (inRange_a183 (a2_rWu, b2_rWw) c2_rWy)
+    d.Ix_a12O =
+	({-dict-}
+	 [d.Show_a16k, d.Ord_a16p]
+	 [range_a184, index_a185, inRange_a186])
+d.Ord_a174 = PrelBase.$d7{-rcq,p-}
+>=_a17q = PrelBase.>={-8Z,p-} PrelBase.Int{-3g,W-} d.Ord_a174
+lit_a17r = PrelBase.I#{-5b,w-}{i} 10#
+d.Monad_a177 = PrelBase.$d25{-rbO,p-}
+>>=_a17s = PrelBase.>>={-811,p-} PrelBase.[]{-3j,W-} d.Monad_a177
+d.Monad_a17a = d.Monad_a177
+return_a17t =
+    PrelBase.return{-816,p-} PrelBase.[]{-3j,W-} d.Monad_a17a
+d.Num_a17c = PrelBase.$d4{-rc4,p-}
++_a17u = PrelBase.+{-rgT,p-} PrelBase.Int{-3g,W-} d.Num_a17c
+d.Num_a17f = d.Num_a17c
+*_a17v = PrelBase.*{-rgU,p-} PrelBase.Int{-3g,W-} d.Num_a17f
+lit_a17w = PrelBase.I#{-5b,w-}{i} 0#
+lit_a17x = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+Ix 1 :: $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $d9 1 Ix 1;
+PrelBase 1 :: $d1 1 $d11 1 $d12 1 $d14 1 $d15 1 $d16 1 $d2 1 $d22 1 $d24 1 $d25 1 $d26 1 $d27 1 $d28 1 $d3 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d6 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $m>> 1 $mcompare 1 $menumFromThenTo 1 $menumFromTo 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 && 1 . 1 not 1 showList__ 1 showParen 1 showSpace 1 showString 1 Enum 1 Eq 1 Eval 1 Functor 1 Monad 1 MonadZero 1 Num 1 Ord 1 Ordering 1 Ordering 1 Show 1 ShowS 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d17 1 $d18 1 $d28 1 $d29 1 $d30 1 $d33 1 $d34 1 $d35 1 $d8 1;
+PrelTup 1 :: $d13 1 $d4 1 $d49 1 $d9 1;
+_exports_
+ShouldSucceed Pair(Pair);
+_instances_
+instance _forall_ [a b] {PrelBase.Eq a, PrelBase.Eq b} => {PrelBase.Eq (Pair a b)} = $d1;
+instance _forall_ [a b] => {PrelBase.Eval (Pair a b)} = $d2;
+instance _forall_ [a b] {PrelBase.Ord a, PrelBase.Ord b} => {PrelBase.Ord (Pair a b)} = $d3;
+instance _forall_ [a b] {PrelBase.Show a, PrelBase.Show b} => {PrelBase.Show (Pair a b)} = $d4;
+instance _forall_ [a b] {Ix.Ix a, Ix.Ix b} => {Ix.Ix (Pair a b)} = $d5;
+_declarations_
+1 $d1 _:_ _forall_ [a b] {PrelBase.Eq a, PrelBase.Eq b} => {PrelBase.Eq (Pair a b)} ;;
+1 $d2 _:_ _forall_ [a b] => {PrelBase.Eval (Pair a b)} ;;
+1 $d3 _:_ _forall_ [a b] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Eq (Pair a b)} => {PrelBase.Ord (Pair a b)} ;;
+1 $d4 _:_ _forall_ [a b] {PrelBase.Show a, PrelBase.Show b} => {PrelBase.Show (Pair a b)} ;;
+1 $d5 _:_ _forall_ [a b] {Ix.Ix a, Ix.Ix b, PrelBase.Show (Pair a b), PrelBase.Ord (Pair a b)} => {Ix.Ix (Pair a b)} ;;
+1 data Pair a b = Pair a b ;
diff --git a/ghc/tests/deriving/should_compile/drv010.stderr b/ghc/tests/deriving/should_compile/drv010.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..63c0573502dc2245532af7e9a40ac06172378bd6
--- /dev/null
+++ b/ghc/tests/deriving/should_compile/drv010.stderr
@@ -0,0 +1,87 @@
+
+
+================================================================================
+Typechecked:
+A{-r4,x-}{i} = A{-r4,x-}{i} {}
+B{-r3,x-}{i} = B{-r3,x-}{i} {}
+C{-r6,x-}{i} = C{-r6,x-}{i} {}
+D{-r8,x-}{i} = D{-r8,x-}{i} {}
+AbsBinds [] [] [([], con2tag_AD#_rBg, con2tag_AD#_aC1)]
+    con2tag_AD#_aC1 A{-r4,x-}{i} = 0#
+    con2tag_AD#_aC1 B{-r3,x-}{i} = 1#
+    con2tag_AD#_aC1 C{-r6,x-}{i} = 2#
+    con2tag_AD#_aC1 D{-r8,x-}{i} = 3#
+AbsBinds [] [] [([], maxtag_AD#_rBf, maxtag_AD#_aC6)]
+    maxtag_AD#_aC6 = PrelBase.I#{-5b,w-}{i} 3#
+AbsBinds [] [] [([], tag2con_AD#_rBe, tag2con_AD#_aC9)]
+    tag2con_AD#_aC9 (PrelBase.I#{-5b,w-}{i} 0#) = A{-r4,x-}{i}
+    tag2con_AD#_aC9 (PrelBase.I#{-5b,w-}{i} 1#) = B{-r3,x-}{i}
+    tag2con_AD#_aC9 (PrelBase.I#{-5b,w-}{i} 2#) = C{-r6,x-}{i}
+    tag2con_AD#_aC9 (PrelBase.I#{-5b,w-}{i} 3#) = D{-r8,x-}{i}
+    tag2con_AD#_aC9 _
+		    = IOBase.error{-87,w-} AD{-rU,x-} "Urk! in TcGenDeriv"
+AbsBinds [] [] [([], $d1{-rEh,x-}, d.Enum_aCl)]
+    map_aEp = map_aEk
+    AbsBinds [] [] [([], toEnum_aEq, toEnum_aCp)]
+	toEnum_aCp a_rBv = tag2con_AD#_rBe a_rBv
+    AbsBinds [] [] [([], fromEnum_aEr, fromEnum_aCv)]
+	fromEnum_aCv a_rBO
+		     = case con2tag_AD#_rBg a_rBO of
+			 a#_rBQ -> PrelBase.I#{-5b,w-}{i} a#_rBQ
+    AbsBinds [] [] [([], enumFrom_aEs, enumFrom_aCF)]
+	enumFrom_aCF a_rBz
+		     = case con2tag_AD#_rBg a_rBz of
+			 a#_rBB
+			 -> map_aEk [PrelBase.Int{-3g,W-}, AD{-rU,x-}] tag2con_AD#_rBe
+								       enumFromTo_aEl PrelBase.I#{-5b,w-}{i} a#_rBB
+										      maxtag_AD#_rBf
+    AbsBinds [] [] [([], enumFromThen_aEt, enumFromThen_aD4)]
+	enumFromThen_aD4 a_rBF b_rBG
+			 = case con2tag_AD#_rBg a_rBF of
+			     a#_rBI
+			     -> case con2tag_AD#_rBg b_rBG of
+				  b#_rBK
+				  -> map_aEp [PrelBase.Int{-3g,W-}, AD{-rU,x-}] tag2con_AD#_rBe
+										enumFromThenTo_aEm PrelBase.I#{-5b,w-}{i} a#_rBI
+												   PrelBase.I#{-5b,w-}{i} b#_rBK
+												   maxtag_AD#_rBf
+    AbsBinds [] [] [([], enumFromTo_aEu, enumFromTo_aDz)]
+	enumFromTo_aDz = $menumFromTo_aEn
+    AbsBinds [] [] [([], enumFromThenTo_aEv, enumFromThenTo_aDJ)]
+	enumFromThenTo_aDJ = $menumFromThenTo_aEo
+    d.Enum_aCl =
+	({-dict-}
+	 []
+	 [toEnum_aEq, fromEnum_aEr, enumFrom_aEs, enumFromThen_aEt, enumFromTo_aEu, enumFromThenTo_aEv])
+AbsBinds [] [] [([], $d2{-rEj,x-}, d.Eval_aE3)]
+    d.Eval_aE3 = ({-dict-} [] [])
+d.Functor_aE5 = PrelBase.$d26{-rai,p-}
+map_aEk = PrelBase.map{-rT,p-} PrelBase.[]{-3j,W-} d.Functor_aE5
+d.Enum_aE8 = PrelBase.$d6{-raS,p-}
+enumFromTo_aEl =
+    PrelBase.enumFromTo{-8W,p-} PrelBase.Int{-3g,W-} d.Enum_aE8
+d.Enum_aEb = d.Enum_aE8
+enumFromThenTo_aEm =
+    PrelBase.enumFromThenTo{-8X,p-} PrelBase.Int{-3g,W-} d.Enum_aEb
+d.Enum_aEd = $d1{-rEh,x-}
+$menumFromTo_aEn =
+    PrelBase.$menumFromTo{-rf6,p-} AD{-rU,x-} d.Enum_aEd
+d.Enum_aEg = d.Enum_aEd
+$menumFromThenTo_aEo =
+    PrelBase.$menumFromThenTo{-rf5,p-} AD{-rU,x-} d.Enum_aEg
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d14 1 $d2 1 $d26 1 $d31 1 $d38 1 $d40 1 $d42 1 $d45 1 $d47 1 $d6 1 $menumFromThenTo 1 $menumFromTo 1 Enum 1 Eval 1 Functor 1;
+PrelNum 1 :: $d8 1;
+_exports_
+ShouldSucceed AD(A B C D);
+_instances_
+instance {PrelBase.Enum AD} = $d1;
+instance {PrelBase.Eval AD} = $d2;
+_declarations_
+1 $d1 _:_ {PrelBase.Enum AD} ;;
+1 $d2 _:_ {PrelBase.Eval AD} ;;
+1 data AD = A |  B |  C |  D ;
diff --git a/ghc/tests/deriving/should_fail/Makefile b/ghc/tests/deriving/should_fail/Makefile
index fb0a5f379d4bac6c3c5bf44646461e7bdc80b57d..5d88d1e1ed1ca958f63b85033ec15aa91784575d 100644
--- a/ghc/tests/deriving/should_fail/Makefile
+++ b/ghc/tests/deriving/should_fail/Makefile
@@ -1,14 +1,7 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_fail.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 1
 HC_OPTS += -noC
 
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
-
-all :: $(HS_OBJS)
-
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/deriving/should_run/Makefile b/ghc/tests/deriving/should_run/Makefile
index 4c05806d15feb556321c22c065160b88ddb13424..0c0576b8d9ceec1dbe57dee3928f6fb06994b0fa 100644
--- a/ghc/tests/deriving/should_run/Makefile
+++ b/ghc/tests/deriving/should_run/Makefile
@@ -1,4 +1,4 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
 
 HS_SRCS = $(wildcard *.hs)
diff --git a/ghc/tests/deriving/should_run/drvrun001.stdout b/ghc/tests/deriving/should_run/drvrun001.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..bbfb2f6226bc7abee0b7b422570e3253e74c2cf1
--- /dev/null
+++ b/ghc/tests/deriving/should_run/drvrun001.stdout
@@ -0,0 +1 @@
+MkAge 8
diff --git a/ghc/tests/io/should_run/io019.hs b/ghc/tests/io/should_run/io019.hs
index bd50838bb519eba42d049e80740ec498307fc43e..219351b3287ccb21feea9189248dc01eadc68de7 100644
--- a/ghc/tests/io/should_run/io019.hs
+++ b/ghc/tests/io/should_run/io019.hs
@@ -7,8 +7,8 @@ main =
     let (CalendarTime year month mday hour min sec psec 
                       wday yday timezone gmtoff isdst) = toUTCTime time
     in
-      putStr (wdays !! wday) >>
-      putStr (' ' : months !! month) >>
+      putStr (wdays !! fromEnum wday) >>
+      putStr (' ' : months !! fromEnum month) >>
       putStr (' ' : shows2 mday (' ' : shows2 hour (':' : shows2 min (':' : shows2 sec
              (' ' : timezone ++ ' ' : shows year "\n")))))
 
diff --git a/ghc/tests/io/should_run/net002.hs b/ghc/tests/io/should_run/net002.hs
index 7ae6cdc2b6bf5a178433407935b7a6d77205a905..8906023985791efd26144542460d9696384f3ea7 100644
--- a/ghc/tests/io/should_run/net002.hs
+++ b/ghc/tests/io/should_run/net002.hs
@@ -37,6 +37,6 @@ main =
     connect s (SockAddrInet 5000 (inet_addr avon))	>>
     
     writeSocket s message				>>
-    shutdown s 2					>>
+    shutdown s ShutdownBoth				>>
     sClose s
 
diff --git a/ghc/tests/io/should_run/net004.hs b/ghc/tests/io/should_run/net004.hs
index 3891156b01573763b0907bd23123df3716033076..c5043262dddf6c830f6aea12e0bb0d1272d30d48 100644
--- a/ghc/tests/io/should_run/net004.hs
+++ b/ghc/tests/io/should_run/net004.hs
@@ -28,6 +28,6 @@ main =
     getPeerName s			>>= \ (SockAddrInet p haddr) ->   
     putStr ("Connected to : " ++ (inet_ntoa haddr) ++ "\n") >>
     writeSocket s message			>>
-    shutdown s 2				>>
+    shutdown s ShutdownBoth			>>
     sClose s
 
diff --git a/ghc/tests/mk/boilerplate.mk b/ghc/tests/mk/boilerplate.mk
index 8629c89a215fa73fb5950b636795f178c9d975f3..25d5ff3ee9cb0538583067f57c99e5722308340a 100644
--- a/ghc/tests/mk/boilerplate.mk
+++ b/ghc/tests/mk/boilerplate.mk
@@ -16,20 +16,3 @@ TEST_TOP := $(TOP)
 TOP := $(TOP)/..
 include $(TOP)/mk/boilerplate.mk
 TOP:=$(TEST_TOP)
-
-
-# -----------------------------------------------------------------
-# Everything after this point
-# augments or overrides previously set variables.
-# (these files are optional, so `make' won't fret if it
-#  cannot get to them).
-# -----------------------------------------------------------------
-
-
-# Define TEST_PROG.  In ..../nofib/imaginary/exp3_8, PROG is exp3_8 by default.
-#
-TEST_PROG = $(notdir $(shell pwd))$(_way)
-
-# Eventually, have the binary purged
-CLEAN_FILES += $(TEST_PROG)
-
diff --git a/ghc/tests/mk/target.mk b/ghc/tests/mk/target.mk
index 92d4441892fe2e8fc59184b80f6105f97fe283ed..06f4a769612e9414a8b966574efb52f46da32e52 100644
--- a/ghc/tests/mk/target.mk
+++ b/ghc/tests/mk/target.mk
@@ -6,23 +6,5 @@
 #
 #################################################################################
 
-
-# Link step
-$(TEST_PROG) : $(OBJS)
-	$(HC) $(HC_FLAGS) $(OBJS) -o $(TEST_PROG)
-
-# Run test
-runtest : $(TEST_PROG)
-	$(RUNTEST) ./$< \
-	  $(addprefix -i ,$(wildcard $(TEST_PROG).stdin)) \
-	  $(addprefix -o1 ,$(wildcard $(TEST_PROG).stdout)) \
-	  $(addprefix -o2 ,$(wildcard $(TEST_PROG).stderr)) \
-	  $(RUNTEST_OPTS)
-
-
-# Include standard boilerplate
-# We do this at the end for cosmetic reasons: it means that the "normal-way"
-# runtests will precede the "other-way" recursive invocations of make
-
 include $(FPTOOLS_TOP)/mk/target.mk
 
diff --git a/ghc/tests/printing/Makefile b/ghc/tests/printing/Makefile
index bc76d4598cdf56c0ed079c38937ee2e03b583cea..5268832ad4a75e41f4d135d235defca8d9f818bb 100644
--- a/ghc/tests/printing/Makefile
+++ b/ghc/tests/printing/Makefile
@@ -1,19 +1,7 @@
-TOP = ../../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -accept-output -o1 $*.stdout -o2 $*.stderr -x 0
-HC_OPTS += -noC -ddump-tc -dcore-lint -hi
-
-%.o : %.hs
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
-
-all :: $(HS_OBJS)
-
-print002_HC_OPTS = -fno-implicit-prelude -dppr-user -ddump-rdr -ddump-tc
+SUBDIRS = should_compile
 
 include $(TOP)/mk/target.mk
 
diff --git a/ghc/tests/printing/Print001.stderr b/ghc/tests/printing/Print001.stderr
deleted file mode 100644
index 4df32738f97ff5d285481c62b4dbfd6d8a27ec5a..0000000000000000000000000000000000000000
--- a/ghc/tests/printing/Print001.stderr
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-================================================================================
-Typechecked:
-{- nonrec -}
-{- nonrec -}
-{- nonrec -}
-BarNil{-r4r,x-}{i} =
-    _/\_ a{-r4O-} ->
-	BarNil{-r4r,x-}{i}
-	    {_@_ a{-r4O-}}
-BarCon{-r4q,x-}{i} =
-    _/\_ a{-r4O-} -> \ tpl_B1 tpl_B2 ->
-	BarCon{-r4q,x-}{i}
-	    {_@_ a{-r4O-} tpl_B1 tpl_B2}
-{- nonrec -}
-MkFoo{-r4U,x-}{i} =
-    _/\_ d{-r4Q-} e{-r4R-} f{-r4S-} -> \ tpl_B1 tpl_B2 tpl_B3 ->
-	MkFoo{-r4U,x-}{i}
-	    {_@_ d{-r4Q-} _@_ e{-r4R-} _@_ f{-r4S-} tpl_B1 tpl_B2 tpl_B3}
-{- rec -}
-AbsBinds [a{-a15E-}] [] [([a{-a15E-}], $d1{-r15L,x-}, d.Eval_a15s)]
-    d.Eval_a15s =
-	({-dict-} [] [])
-{- rec -}
-AbsBinds
-[d{-a15F-}, e{-a15H-}, f{-a15G-}]
-[]
-[([d{-a15F-}, e{-a15H-}, f{-a15G-}], $d2{-r15P,x-}, d.Eval_a15A)]
-    d.Eval_a15A =
-	({-dict-} [] [])
-{- nonrec -}
-d.Fractional_a15D =
-    PrelNum.$d23{-rIo,p-}
-fromRational_a15N =
-    PrelNum.fromRational{-8T,p-}
-	PrelBase.Float{-3c,p-}
-	d.Fractional_a15D
-lit_a15M =
-    fromRational_a15N
-	2.0000000000000000
-{- nonrec -}
-AbsBinds
-[a{-a14B-}, b{-a14C-}]
-[]
-[([b{-a14C-}, a{-a14B-}], g{-r4F,x-}, g_a14y)]
-    g_a14y
-	x_r4M   =   lit_a15M
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-a14R-}, b{-a14S-}, c{-a14T-}]
-[d.Eq_a14V, d.Ord_a14W, d.Ix_a14X]
-[([a{-a14R-}, b{-a14S-}, c{-a14T-}], f2{-r4E,x-}, f2_a14O)]
-    f2_a14O
-	x_r4K   =   x_r4K
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-a158-}, b{-a159-}, c{-a15a-}]
-[d.Eq_a15c]
-[([a{-a158-}, b{-a159-}, c{-a15a-}], f{-r4D,x-}, f_a155)]
-    f_a155
-	x_r4I   =   x_r4I
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[d{-a15i-}, e{-a15k-}, f{-a15m-}]
-[]
-[([d{-a15i-}, e{-a15k-}, f{-a15m-}], mkFoo{-r4G,x-}, mkFoo_a15e)]
-    mkFoo_a15e
-	=   MkFoo{-r4U,x-}{i}
-		[d{-a15i-}, e{-a15k-}, f{-a15m-}]
-{- nonrec -}
-ghc: module version changed to 1; reason: no old .hi file
-_interface_ Print001 1
-_instance_modules_
-ArrBase IO PrelNum
-_usages_
-Ix 1 :: $d3 1 $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $d9 1 $minRange 1 $mindex 1 $mrange 1 Ix 1;
-PrelBase 1 :: $d1 1 $d10 1 $d11 1 $d13 1 $d14 1 $d15 1 $d2 1 $d21 1 $d26 1 $d27 1 $d3 1 $d30 1 $d31 1 $d32 1 $d33 1 $d34 1 $d37 1 $d38 1 $d39 1 $d40 1 $d41 1 $d42 1 $d44 1 $d45 1 $d46 1 $d49 1 $d5 1 $d50 1 $d51 1 $d54 1 $d55 1 $d6 1 $d7 1 $d8 1 $m* 1 $m+ 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m== 1 $m> 1 $m>= 1 $mabs 1 $mcompare 1 $menumFrom 1 $menumFromThen 1 $menumFromThenTo 1 $menumFromTo 1 $mfromEnum 1 $mfromInt 1 $mfromInteger 1 $mmax 1 $mmin 1 $mnegate 1 $mshowList 1 $mshowsPrec 1 $msignum 1 $mtoEnum 1 Enum 1 Eq 1 Eval 1 Num 1 Ord 1 Ordering 1 Show 1 String 1;
-PrelNum 1 :: $d1 1 $d10 1 $d14 1 $d15 1 $d16 1 $d17 1 $d18 1 $d19 1 $d2 1 $d23 1 $d24 1 $d25 1 $d26 1 $d27 1 $d28 1 $d29 1 $d30 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d36 1 $d37 1 $d38 1 $d39 1 $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $d9 1 $m/ 1 $mdiv 1 $mdivMod 1 $mfromRational 1 $mmod 1 $mquot 1 $mquotRem 1 $mrecip 1 $mrem 1 $mtoInt 1 $mtoInteger 1 $mtoRational 1 Fractional 1 Integral 1 Ratio 1 Rational 1 Real 1;
-PrelTup 1 :: $d10 1 $d13 1 $d14 1 $d3 1 $d4 1 $d49 1 $d50 1 $d9 1;
-_exports_
-Print001 f f2 g mkFoo Bar(BarNil BarCon) Foo(MkFoo);
-_instances_
-instance _forall_ [a] => {PrelBase.Eval (Bar a)} = $d1;
-instance _forall_ [a b c] => {PrelBase.Eval (Foo a b c)} = $d2;
-_declarations_
-1 $d1 _:_ _forall_ [a] => {PrelBase.Eval (Bar a)} ;;
-1 $d2 _:_ _forall_ [a b c] => {PrelBase.Eval (Foo a b c)} ;;
-1 data Bar r4O = BarNil |  BarCon (Foo r4O r4O r4O) (Bar r4O) ;
-1 data Foo r4Q r4R r4S = MkFoo [((r4Q -> PrelBase.Int) -> r4Q) -> r4R] (r4Q -> r4R, r4R -> r4R) PrelBase.() ;
-1 f _:_ _forall_ [a b c] {PrelBase.Eq a} => (a -> b -> c) -> a -> b -> c ;;
-1 f2 _:_ _forall_ [a b c] {PrelBase.Eq a, PrelBase.Ord a, Ix.Ix c} => (a -> b -> c) -> a -> b -> c ;;
-1 g _:_ _forall_ [a b] => Foo PrelBase.Int (b -> a) (b -> [(b, PrelBase.Double, PrelBase.Int)]) -> PrelBase.Float ;;
-1 mkFoo _:_ _forall_ [a b c] => [((a -> PrelBase.Int) -> a) -> b] -> (a -> b, b -> b) -> PrelBase.() -> Foo a b c ;;
diff --git a/ghc/tests/printing/Print002.stderr b/ghc/tests/printing/Print002.stderr
deleted file mode 100644
index f87250e6e536f199736474937e6a006090a4eceb..0000000000000000000000000000000000000000
--- a/ghc/tests/printing/Print002.stderr
+++ /dev/null
@@ -1,589 +0,0 @@
-
-
-================================================================================
-Typechecked:
-{- nonrec -}
-{- nonrec -}
-MkFoo1{-rk,x-}{i} =
-    _/\_ a{-r4z-} b{-r4A-} c{-r4B-} -> \ tpl_B1 tpl_B2 ->
-	MkFoo1{-rk,x-}{i}
-	    {_@_ a{-r4z-} _@_ b{-r4A-} _@_ c{-r4B-} tpl_B1 tpl_B2}
-:##{-rj,x-}{i} =
-    _/\_ a{-r4z-} b{-r4A-} c{-r4B-} -> \ tpl_B1 tpl_B2 ->
-	:##{-rj,x-}{i}
-	    {_@_ a{-r4z-} _@_ b{-r4A-} _@_ c{-r4B-} tpl_B1 tpl_B2}
-MkFoo3{-rm,x-}{i} =
-    _/\_ a{-r4z-} b{-r4A-} c{-r4B-} -> \ tpl_B1 tpl_B2 ->
-	MkFoo3{-rm,x-}{i}
-	    {_@_ a{-r4z-} _@_ b{-r4A-} _@_ c{-r4B-} tpl_B1 tpl_B2}
-:***{-ro,x-}{i} =
-    _/\_ a{-r4z-} b{-r4A-} c{-r4B-} -> \ tpl_B1 tpl_B2 ->
-	:***{-ro,x-}{i}
-	    {_@_ a{-r4z-} _@_ b{-r4A-} _@_ c{-r4B-} tpl_B1 tpl_B2}
-{- nonrec -}
-scsel_Bar2Print002Bar{-aVQ,x-} =
-    _/\_ a{-r4n-} -> \ tpl_B1 ->
-	tpl_B1
-{- nonrec -}
-{- nonrec -}
-meth1{-r4R,x-} =
-    _/\_ a{-r4q-} -> \ tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,,){-63,p-}{i} tpl_B1 tpl_B2 tpl_B3  ->
-	tpl_B1;}
-/////{-r4Q,x-} =
-    _/\_ a{-r4q-} -> \ tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,,){-63,p-}{i} tpl_B1 tpl_B2 tpl_B3  ->
-	tpl_B2;}
-meth2{-r4P,x-} =
-    _/\_ a{-r4q-} -> \ tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,,){-63,p-}{i} tpl_B1 tpl_B2 tpl_B3  ->
-	tpl_B3;}
-{- nonrec -}
-AbsBinds
-[a{-aVq-}]
-[d.Bar_aVj]
-[([a{-aVq-}], $mmeth1{-rLc,x-}, meth1_aVl)]
-    AbsBinds [] [] [([], meth1_aVl, meth1_aVn)]
-	meth1_aVn
-	    =   GHCerr.noDefaultMethodError{-8k,p-}
-		    (a{-aVq-} -> a{-aVq-} -> PrelBase.Bool{-34,p-})
-		    "Class Bar Method meth1"
-AbsBinds
-[a{-aVq-}]
-[d.Bar_aVt]
-[([a{-aVq-}], $m/////{-rLb,x-}, /////_aVv)]
-    AbsBinds [] [] [([], /////_aVv, /////_aVx)]
-	/////_aVx
-	    =   GHCerr.noDefaultMethodError{-8k,p-}
-		    (a{-aVq-} -> a{-aVq-} -> PrelBase.Bool{-34,p-})
-		    "Class Bar Method /////"
-AbsBinds
-[a{-aVq-}]
-[d.Bar_aVC]
-[([a{-aVq-}], $mmeth2{-rLa,x-}, meth2_aVF)]
-    AbsBinds [b{-aVM-}] [] [([b{-aVM-}], meth2_aVF, meth2_aVI)]
-	meth2_aVI
-	    =   GHCerr.noDefaultMethodError{-8k,p-}
-		    (a{-aVq-} -> b{-aVM-} -> PrelBase.Bool{-34,p-})
-		    "Class Bar Method meth2"
-{- rec -}
-AbsBinds
-[a{-aOK-}, b{-aON-}, c{-aOQ-}]
-[d.Eq_aQB, d.Eq_aQC, d.Eq_aQD]
-[([a{-aOK-}, b{-aON-}, c{-aOQ-}], $d1{-rVR,x-}, d.Eq_aOA)]
-    d.Eq_aQH =
-	d.Eq_aQB
-    ==_aVX =
-	PrelBase.=={-8Y,p-}
-	    a{-aOK-}
-	    d.Eq_aQH
-    d.Eq_aQJ =
-	d.Eq_aQC
-    ==_aVW =
-	PrelBase.=={-8Y,p-}
-	    b{-aON-}
-	    d.Eq_aQJ
-    d.Eq_aQL =
-	d.Eq_aQD
-    ==_aVV =
-	PrelBase.=={-8Y,p-}
-	    c{-aOQ-}
-	    d.Eq_aQL
-    ==_aVU =
-	==_aVT
-    AbsBinds [] [] [([], ==_aVT, ==_aOD)]
-	==_aW2 =
-	    ==_aVX
-	==_aW1 =
-	    ==_aVW
-	==_aW0 =
-	    ==_aVW
-	==_aVZ =
-	    ==_aVV
-	==_aVY =
-	    ==_aVV
-	==_aOD
-	    (MkFoo1{-rk,x-}{i} a1_rIv a2_rIw) (MkFoo1{-rk,x-}{i} b1_rIy b2_rIz)
-		    =   (a1_rIv ==_aVX b1_rIy)
-			PrelBase.&&{-re5,p-} (a2_rIw ==_aW2 b2_rIz)
-	==_aOD
-	    (:##{-rj,x-}{i} a1_rIB a2_rIC) (:##{-rj,x-}{i} b1_rIE b2_rIF)
-		    =   (a1_rIB ==_aVW b1_rIE)
-			PrelBase.&&{-re5,p-} (a2_rIC ==_aVV b2_rIF)
-	==_aOD
-	    (MkFoo3{-rm,x-}{i} a1_rIH a2_rII) (MkFoo3{-rm,x-}{i} b1_rIK b2_rIL)
-		    =   (a1_rIH ==_aW1 b1_rIK)
-			PrelBase.&&{-re5,p-} (a2_rII ==_aW0 b2_rIL)
-	==_aOD
-	    (:***{-ro,x-}{i} a1_rIN a2_rIO) (:***{-ro,x-}{i} b1_rIQ b2_rIR)
-		    =   (a1_rIN ==_aVZ b1_rIQ)
-			PrelBase.&&{-re5,p-} (a2_rIO ==_aVY b2_rIR)
-	==_aOD
-	    a_rIT b_rIV
-		    =   PrelBase.False{-58,p-}{i}
-    AbsBinds [] [] [([], /=_aVS, /=_aQu)]
-	/=_aQu
-	    a_rIZ b_rJ1
-		    =   PrelBase.not{-rgK,p-}
-			    ==_aVU
-				a_rIZ b_rJ1
-    d.Eq_aOA =
-	({-dict-} [] [==_aVT, /=_aVS])
-{- rec -}
-AbsBinds
-[a{-aVN-}, b{-aVP-}, c{-aVO-}]
-[]
-[([a{-aVN-}, b{-aVP-}, c{-aVO-}], $d2{-rW3,x-}, d.Eval_aQW)]
-    d.Eval_aQW =
-	({-dict-} [] [])
-{- rec -}
-AbsBinds
-[a{-aRa-}, b{-aRb-}, c{-aRc-}]
-[d.Ord_aV0, d.Ord_aV1, d.Ord_aV2, d.Eq_aV3]
-[([a{-aRa-}, b{-aRb-}, c{-aRc-}], $d3{-rW4,x-}, d.Ord_aR4)]
-    d.Eq_aV4 =
-	d.Eq_aV3
-    d.Ord_aTL =
-	d.Ord_aV0
-    d.Ord_aTM =
-	d.Ord_aV1
-    d.Ord_aTN =
-	d.Ord_aV2
-    compare_aWh =
-	compare_aWb
-    compare_aWg =
-	compare_aWb
-    compare_aWf =
-	compare_aWb
-    compare_aWe =
-	compare_aWb
-    compare_aWd =
-	compare_aWb
-    compare_aWc =
-	compare_aWb
-    AbsBinds [] [] [([], compare_aWb, compare_aR7)]
-	compare_aR7
-	    a_rJZ b_rK1
-		    =   case
-			    con2tag_Foo#_rIm
-				[c{-aRc-}, a{-aRa-}, b{-aRb-}]
-				a_rJZ
-			of
-			  a#_rKT  ->  case
-					  con2tag_Foo#_rIm
-					      [c{-aRc-}, a{-aRa-}, b{-aRb-}]
-					      b_rK1
-				      of
-					b#_rKV  ->  if a#_rKT GHC.==#{-79,p-}{I} b#_rKV then
-							case
-							    cmp_eq_aWi
-								a_rJZ b_rK1
-							of
-							  PrelBase.LT{-rc8,p-}{i}
-								  ->  PrelBase.LT{-rc8,p-}{i}
-							  PrelBase.EQ{-r4C,p-}{i}
-								  ->  PrelBase.EQ{-r4C,p-}{i}
-							  PrelBase.GT{-rc9,p-}{i}
-								  ->  PrelBase.GT{-rc9,p-}{i}
-						    else
-							if a#_rKT GHC.<#{-7b,p-}{I} b#_rKV then
-							    PrelBase.LT{-rc8,p-}{i}
-							else
-							    PrelBase.GT{-rc9,p-}{i}
-		    where
-			{- nonrec -}
-			AbsBinds
-			[c{-aST-}, a{-aT4-}, b{-aT5-}]
-			[d.Ord_aTe, d.Ord_aTg, d.Ord_aTi]
-			[([c{-aST-}, a{-aT4-}, b{-aT5-}], cmp_eq_rK3, cmp_eq_aRg)]
-			    compare_aWq =
-				PrelBase.compare{-rei,p-}
-				    a{-aT4-}
-				    d.Ord_aTe
-			    compare_aWp =
-				compare_aWq
-			    compare_aWo =
-				PrelBase.compare{-rei,p-}
-				    b{-aT5-}
-				    d.Ord_aTg
-			    compare_aWn =
-				PrelBase.compare{-rei,p-}
-				    c{-aST-}
-				    d.Ord_aTi
-			    compare_aWm =
-				compare_aWo
-			    compare_aWl =
-				compare_aWo
-			    compare_aWk =
-				compare_aWn
-			    compare_aWj =
-				compare_aWn
-			    cmp_eq_aRg
-				(MkFoo1{-rk,x-}{i} a1_rK5 a2_rK6) (MkFoo1{-rk,x-}{i} b1_rK8 b2_rK9)
-					=   case
-						compare_aWq
-						    a1_rK5 b1_rK8
-					    of
-					      PrelBase.LT{-rc8,p-}{i}
-						      ->  PrelBase.LT{-rc8,p-}{i}
-					      PrelBase.EQ{-r4C,p-}{i}
-						      ->  case
-							      compare_aWp
-								  a2_rK6 b2_rK9
-							  of
-							    PrelBase.LT{-rc8,p-}{i}
-								    ->  PrelBase.LT{-rc8,p-}{i}
-							    PrelBase.EQ{-r4C,p-}{i}
-								    ->  PrelBase.EQ{-r4C,p-}{i}
-							    PrelBase.GT{-rc9,p-}{i}
-								    ->  PrelBase.GT{-rc9,p-}{i}
-					      PrelBase.GT{-rc9,p-}{i}
-						      ->  PrelBase.GT{-rc9,p-}{i}
-			    cmp_eq_aRg
-				(:##{-rj,x-}{i} a1_rKh a2_rKi) (:##{-rj,x-}{i} b1_rKk b2_rKl)
-					=   case
-						compare_aWo
-						    a1_rKh b1_rKk
-					    of
-					      PrelBase.LT{-rc8,p-}{i}
-						      ->  PrelBase.LT{-rc8,p-}{i}
-					      PrelBase.EQ{-r4C,p-}{i}
-						      ->  case
-							      compare_aWn
-								  a2_rKi b2_rKl
-							  of
-							    PrelBase.LT{-rc8,p-}{i}
-								    ->  PrelBase.LT{-rc8,p-}{i}
-							    PrelBase.EQ{-r4C,p-}{i}
-								    ->  PrelBase.EQ{-r4C,p-}{i}
-							    PrelBase.GT{-rc9,p-}{i}
-								    ->  PrelBase.GT{-rc9,p-}{i}
-					      PrelBase.GT{-rc9,p-}{i}
-						      ->  PrelBase.GT{-rc9,p-}{i}
-			    cmp_eq_aRg
-				(MkFoo3{-rm,x-}{i} a1_rKt a2_rKu) (MkFoo3{-rm,x-}{i} b1_rKw b2_rKx)
-					=   case
-						compare_aWm
-						    a1_rKt b1_rKw
-					    of
-					      PrelBase.LT{-rc8,p-}{i}
-						      ->  PrelBase.LT{-rc8,p-}{i}
-					      PrelBase.EQ{-r4C,p-}{i}
-						      ->  case
-							      compare_aWl
-								  a2_rKu b2_rKx
-							  of
-							    PrelBase.LT{-rc8,p-}{i}
-								    ->  PrelBase.LT{-rc8,p-}{i}
-							    PrelBase.EQ{-r4C,p-}{i}
-								    ->  PrelBase.EQ{-r4C,p-}{i}
-							    PrelBase.GT{-rc9,p-}{i}
-								    ->  PrelBase.GT{-rc9,p-}{i}
-					      PrelBase.GT{-rc9,p-}{i}
-						      ->  PrelBase.GT{-rc9,p-}{i}
-			    cmp_eq_aRg
-				(:***{-ro,x-}{i} a1_rKF a2_rKG) (:***{-ro,x-}{i} b1_rKI b2_rKJ)
-					=   case
-						compare_aWk
-						    a1_rKF b1_rKI
-					    of
-					      PrelBase.LT{-rc8,p-}{i}
-						      ->  PrelBase.LT{-rc8,p-}{i}
-					      PrelBase.EQ{-r4C,p-}{i}
-						      ->  case
-							      compare_aWj
-								  a2_rKG b2_rKJ
-							  of
-							    PrelBase.LT{-rc8,p-}{i}
-								    ->  PrelBase.LT{-rc8,p-}{i}
-							    PrelBase.EQ{-r4C,p-}{i}
-								    ->  PrelBase.EQ{-r4C,p-}{i}
-							    PrelBase.GT{-rc9,p-}{i}
-								    ->  PrelBase.GT{-rc9,p-}{i}
-					      PrelBase.GT{-rc9,p-}{i}
-						      ->  PrelBase.GT{-rc9,p-}{i}
-			    cmp_eq_aRg
-				_ _     =   IOBase.error{-87,p-}
-						PrelBase.Ordering{-3o,p-}
-						"Urk! in TcGenDeriv"
-			{- nonrec -}
-			cmp_eq_aWi =
-			    cmp_eq_rK3
-				[c{-aRc-}, a{-aRa-}, b{-aRb-}]
-				[d.Ord_aTL, d.Ord_aTM, d.Ord_aTN]
-    AbsBinds [] [] [([], <_aWa, <_aTR)]
-	<_aTR
-	    a_rJ7 b_rJ9
-		    =   case
-			    compare_aWh
-				a_rJ7 b_rJ9
-			of
-			  PrelBase.LT{-rc8,p-}{i}
-				  ->  PrelBase.True{-5E,p-}{i}
-			  PrelBase.EQ{-r4C,p-}{i}
-				  ->  PrelBase.False{-58,p-}{i}
-			  PrelBase.GT{-rc9,p-}{i}
-				  ->  PrelBase.False{-58,p-}{i}
-    AbsBinds [] [] [([], <=_aW9, <=_aU3)]
-	<=_aU3
-	    a_rJg b_rJi
-		    =   case
-			    compare_aWg
-				a_rJg b_rJi
-			of
-			  PrelBase.LT{-rc8,p-}{i}
-				  ->  PrelBase.True{-5E,p-}{i}
-			  PrelBase.EQ{-r4C,p-}{i}
-				  ->  PrelBase.True{-5E,p-}{i}
-			  PrelBase.GT{-rc9,p-}{i}
-				  ->  PrelBase.False{-58,p-}{i}
-    AbsBinds [] [] [([], >=_aW8, >=_aUf)]
-	>=_aUf
-	    a_rJp b_rJr
-		    =   case
-			    compare_aWf
-				a_rJp b_rJr
-			of
-			  PrelBase.LT{-rc8,p-}{i}
-				  ->  PrelBase.False{-58,p-}{i}
-			  PrelBase.EQ{-r4C,p-}{i}
-				  ->  PrelBase.True{-5E,p-}{i}
-			  PrelBase.GT{-rc9,p-}{i}
-				  ->  PrelBase.True{-5E,p-}{i}
-    AbsBinds [] [] [([], >_aW7, >_aUr)]
-	>_aUr
-	    a_rJy b_rJA
-		    =   case
-			    compare_aWe
-				a_rJy b_rJA
-			of
-			  PrelBase.LT{-rc8,p-}{i}
-				  ->  PrelBase.False{-58,p-}{i}
-			  PrelBase.EQ{-r4C,p-}{i}
-				  ->  PrelBase.False{-58,p-}{i}
-			  PrelBase.GT{-rc9,p-}{i}
-				  ->  PrelBase.True{-5E,p-}{i}
-    AbsBinds [] [] [([], max_aW6, max_aUD)]
-	max_aUD
-	    a_rJH b_rJJ
-		    =   case
-			    compare_aWd
-				a_rJH b_rJJ
-			of
-			  PrelBase.LT{-rc8,p-}{i}
-				  ->  b_rJJ
-			  PrelBase.EQ{-r4C,p-}{i}
-				  ->  a_rJH
-			  PrelBase.GT{-rc9,p-}{i}
-				  ->  a_rJH
-    AbsBinds [] [] [([], min_aW5, min_aUQ)]
-	min_aUQ
-	    a_rJQ b_rJS
-		    =   case
-			    compare_aWc
-				a_rJQ b_rJS
-			of
-			  PrelBase.LT{-rc8,p-}{i}
-				  ->  a_rJQ
-			  PrelBase.EQ{-r4C,p-}{i}
-				  ->  b_rJS
-			  PrelBase.GT{-rc9,p-}{i}
-				  ->  b_rJS
-    d.Ord_aR4 =
-	({-dict-}
-	 [d.Eq_aV4]
-	 [compare_aWb, <_aWa, <=_aW9, >=_aW8, >_aW7, max_aW6, min_aW5])
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-aLh-}]
-[d.Bar_aLn]
-[([a{-aLh-}], f3d{-r4D,x-}, f3d_aL9)]
-    /////_aWr =
-	/////{-r4Q,x-}
-	    a{-aLh-}
-	    d.Bar_aLn
-    f3d_aL9
-	x_r4j y_r4l
-		=   x_r4j /////_aWr y_r4l
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-aLu-}]
-[d.Bar_aLA]
-[([a{-aLu-}], f3c{-r4E,x-}, f3c_aLp)]
-    /////_aWs =
-	/////{-r4Q,x-}
-	    a{-aLu-}
-	    d.Bar_aLA
-    f3c_aLp
-	x_r4f y_r4h
-		=   /////_aWs
-			x_r4f y_r4h
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-aLH-}]
-[d.Bar_aLN]
-[([a{-aLH-}], f3b{-r4F,x-}, f3b_aLC)]
-    meth1_aWt =
-	meth1{-r4R,x-}
-	    a{-aLH-}
-	    d.Bar_aLN
-    f3b_aLC
-	x_r4b y_r4d
-		=   x_r4b meth1_aWt y_r4d
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-aLU-}]
-[d.Bar_aM0]
-[([a{-aLU-}], f3a{-r4G,x-}, f3a_aLP)]
-    meth1_aWu =
-	meth1{-r4R,x-}
-	    a{-aLU-}
-	    d.Bar_aM0
-    f3a_aLP
-	x_r47 y_r49
-		=   meth1_aWu
-			x_r47 y_r49
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[c{-aMk-}, a{-aMn-}, b{-aMo-}]
-[]
-[([c{-aMk-}, a{-aMn-}, b{-aMo-}], <<<<{-r4H,x-}, <<<<_aM2)]
-    <<<<_aM2
-	x_r3Z y_r41
-		=   :***{-ro,x-}{i}
-			[a{-aMn-}, b{-aMo-}, c{-aMk-}]
-			x_r3Z y_r41
-    <<<<_aM2
-	x_r43 y_r45
-		=   :***{-ro,x-}{i}
-			[a{-aMn-}, b{-aMo-}, c{-aMk-}]
-			x_r43 y_r45
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[b{-aMw-}, a{-aMA-}, c{-aMC-}]
-[]
-[([b{-aMw-}, a{-aMA-}, c{-aMC-}], .....{-r4I,x-}, ....._aMq)]
-    ....._aMq
-	x_r3V y_r3X
-		=   MkFoo3{-rm,x-}{i}
-			[a{-aMA-}, b{-aMw-}, c{-aMC-}]
-			x_r3V y_r3X
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[b{-aMK-}, a{-aMO-}, c{-aMQ-}]
-[]
-[([b{-aMK-}, a{-aMO-}, c{-aMQ-}], ....{-r4J,x-}, ...._aME)]
-    ...._aME
-	x_r3R y_r3T
-		=   MkFoo3{-rm,x-}{i}
-			[a{-aMO-}, b{-aMK-}, c{-aMQ-}]
-			x_r3R y_r3T
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[b{-aMY-}, c{-aN1-}, a{-aN4-}]
-[]
-[([b{-aMY-}, c{-aN1-}, a{-aN4-}], f2a{-r4K,x-}, f2a_aMS)]
-    f2a_aMS
-	x_r3N y_r3P
-		=   :##{-rj,x-}{i}
-			[a{-aN4-}, b{-aMY-}, c{-aN1-}]
-			x_r3N y_r3P
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[b{-aNc-}, c{-aNf-}, a{-aNi-}]
-[]
-[([b{-aNc-}, c{-aNf-}, a{-aNi-}], f2{-r4L,x-}, f2_aN6)]
-    f2_aN6
-	x_r3J y_r3L
-		=   :##{-rj,x-}{i}
-			[a{-aNi-}, b{-aNc-}, c{-aNf-}]
-			x_r3J y_r3L
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-aNp-}, b{-aNu-}, c{-aNw-}]
-[]
-[([a{-aNp-}, b{-aNu-}, c{-aNw-}], f1a{-r4M,x-}, f1a_aNk)]
-    f1a_aNk
-	x_r3F y_r3H
-		=   MkFoo1{-rk,x-}{i}
-			[a{-aNp-}, b{-aNu-}, c{-aNw-}]
-			x_r3F y_r3H
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[a{-aND-}, b{-aNI-}, c{-aNK-}]
-[]
-[([a{-aND-}, b{-aNI-}, c{-aNK-}], f1{-r4N,x-}, f1_aNy)]
-    f1_aNy
-	x_r3B y_r3D
-		=   MkFoo1{-rk,x-}{i}
-			[a{-aND-}, b{-aNI-}, c{-aNK-}]
-			x_r3B y_r3D
-{- nonrec -}
-{- nonrec -}
-AbsBinds
-[c{-aOo-}, a{-aOr-}, b{-aOs-}]
-[]
-[([c{-aOo-}, a{-aOr-}, b{-aOs-}],
-  con2tag_Foo#_rIm,
-  con2tag_Foo#_aNM)]
-    con2tag_Foo#_aNM
-	(MkFoo1{-rk,x-}{i} _ _)
-		=   0#
-    con2tag_Foo#_aNM
-	(:##{-rj,x-}{i} _ _)
-		=   1#
-    con2tag_Foo#_aNM
-	(MkFoo3{-rm,x-}{i} _ _)
-		=   2#
-    con2tag_Foo#_aNM
-	(:***{-ro,x-}{i} _ _)
-		=   3#
-{- nonrec -}
-Print002.hs:35: 
-    Warning: Pattern match(es) completely overlapped
-	in the definition of function `<<<<'
-ghc: module version changed to 1; reason: no old .hi file
-_interface_ Print002 1
-_instance_modules_
-ArrBase IO PrelNum
-_usages_
-PrelBase 1 :: $d14 1 $d15 1 $d32 1 $d34 1 $d37 1 $d39 1 $d41 1 $d45 1 $d46 1 $d49 1 $d51 1 $d6 1 $d7 1 $m/= 1 $m< 1 $m<= 1 $m== 1 $m> 1 $m>= 1 $mcompare 1 $mmax 1 $mmin 1 && 1 . 1 not 1 Eq 1 Eval 1 Ord 1 Ordering 1;
-PrelNum 1 :: $d17 1 $d18 1;
-_exports_
-Print002 .... ..... <<<< f1 f1a f2 f2a f3a f3b f3c f3d Bar(meth1 ///// meth2) Bar2 Foo(MkFoo1 :## MkFoo3 :***);
-_instances_
-instance _forall_ [a b c] {PrelBase.Eq a, PrelBase.Eq b, PrelBase.Eq c} => {PrelBase.Eq (Foo a b c)} = $d1;
-instance _forall_ [a b c] => {PrelBase.Eval (Foo a b c)} = $d2;
-instance _forall_ [a b c] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Ord c} => {PrelBase.Ord (Foo a b c)} = $d3;
-_declarations_
-1 $d1 _:_ _forall_ [a b c] {PrelBase.Eq a, PrelBase.Eq b, PrelBase.Eq c} => {PrelBase.Eq (Foo a b c)} ;;
-1 $d2 _:_ _forall_ [a b c] => {PrelBase.Eval (Foo a b c)} ;;
-1 $d3 _:_ _forall_ [a b c] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Ord c, PrelBase.Eq (Foo a b c)} => {PrelBase.Ord (Foo a b c)} ;;
-1 $m///// _:_ _forall_ [a] {Bar a} => a -> a -> PrelBase.Bool ;;
-1 $mmeth1 _:_ _forall_ [a] {Bar a} => a -> a -> PrelBase.Bool ;;
-1 $mmeth2 _:_ _forall_ [a] {Bar a} => _forall_ [b] => a -> b -> PrelBase.Bool ;;
-1 .... _:_ _forall_ [a b c] => a -> a -> Foo b a c ;;
-1 ..... _:_ _forall_ [a b c] => a -> a -> Foo b a c ;;
-1 <<<< _:_ _forall_ [a b c] => a -> a -> Foo b c a ;;
-1 class Bar r4q where {meth1 :: r4q -> r4q -> PrelBase.Bool; ///// :: r4q -> r4q -> PrelBase.Bool; meth2 :: _forall_ [r4w] => r4q -> r4w -> PrelBase.Bool} ;
-class {Bar r4n} => Bar2 r4n ;
-1 data Foo r4z r4A r4B = MkFoo1 r4z r4z |  :## r4A r4B |  MkFoo3 r4A r4A |  :*** r4B r4B ;
-1 f1 _:_ _forall_ [a b c] => a -> a -> Foo a b c ;;
-1 f1a _:_ _forall_ [a b c] => a -> a -> Foo a b c ;;
-1 f2 _:_ _forall_ [a b c] => a -> b -> Foo c a b ;;
-1 f2a _:_ _forall_ [a b c] => a -> b -> Foo c a b ;;
-1 f3a _:_ _forall_ [a] {Bar a} => a -> a -> PrelBase.Bool ;;
-1 f3b _:_ _forall_ [a] {Bar a} => a -> a -> PrelBase.Bool ;;
-1 f3c _:_ _forall_ [a] {Bar a} => a -> a -> PrelBase.Bool ;;
-1 f3d _:_ _forall_ [a] {Bar a} => a -> a -> PrelBase.Bool ;;
diff --git a/ghc/tests/printing/Print003.stderr b/ghc/tests/printing/Print003.stderr
deleted file mode 100644
index 7ad6eeab03b30569a01d2f16a25ec27cdaa17d26..0000000000000000000000000000000000000000
--- a/ghc/tests/printing/Print003.stderr
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-================================================================================
-Typechecked:
-{- nonrec -}
-bitRsh{-r3h,x-} =
-    _/\_ a{-r3f-} -> \ tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
-bitLsh{-r3g,x-} =
-    _/\_ a{-r3f-} -> \ tpl_B1 ->
-	case tpl_B1 of { PrelTup.(,){-62,p-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
-{- nonrec -}
-AbsBinds
-[a{-anm-}]
-[d.Bits_anf]
-[([a{-anm-}], $mbitRsh{-rnw,x-}, bitRsh_anh)]
-    AbsBinds [] [] [([], bitRsh_anh, bitRsh_anj)]
-	bitRsh_anj
-	    =   GHCerr.noDefaultMethodError{-8k,p-}
-		    (a{-anm-} -> PrelBase.Int{-3g,p-} -> a{-anm-})
-		    "Class Bits Method bitRsh"
-AbsBinds
-[a{-anm-}]
-[d.Bits_anp]
-[([a{-anm-}], $mbitLsh{-rnx,x-}, bitLsh_anr)]
-    AbsBinds [] [] [([], bitLsh_anr, bitLsh_ant)]
-	bitLsh_ant
-	    =   GHCerr.noDefaultMethodError{-8k,p-}
-		    (a{-anm-} -> PrelBase.Int{-3g,p-} -> a{-anm-})
-		    "Class Bits Method bitLsh"
-{- nonrec -}
-ghc: module version changed to 1; reason: no old .hi file
-_interface_ Word 1
-_instance_modules_
-ArrBase IO PrelNum
-_exports_
-Word Bits(bitRsh bitLsh);
-_fixities_
-infixl 8 bitLsh;
-infixl 8 bitRsh;
-_declarations_
-1 $mbitLsh _:_ _forall_ [a] {Bits a} => a -> PrelBase.Int -> a ;;
-1 $mbitRsh _:_ _forall_ [a] {Bits a} => a -> PrelBase.Int -> a ;;
-1 class Bits r3f where {bitRsh :: r3f -> PrelBase.Int -> r3f; bitLsh :: r3f -> PrelBase.Int -> r3f} ;
diff --git a/ghc/tests/printing/Print004.stderr b/ghc/tests/printing/Print004.stderr
deleted file mode 100644
index be79adbe6cc52dd0a31b75222e608b5f0975074f..0000000000000000000000000000000000000000
--- a/ghc/tests/printing/Print004.stderr
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-================================================================================
-Typechecked:
-{- nonrec -}
-{- nonrec -}
-Con{-r6v,l-}{i} =
-    _/\_ a{-r6C-} -> \ tpl_B1 ->
-	Con{-r6v,l-}{i}
-	    {_@_ a{-r6C-} tpl_B1}
-{- nonrec -}
-Junk11{-r4,l-}{i} =
-    _/\_ a{-r6A-} ->
-	Junk11{-r4,l-}{i}
-	    {_@_ a{-r6A-}}
-Junk2{-r3,l-}{i} =
-    _/\_ a{-r6A-} ->
-	Junk2{-r3,l-}{i}
-	    {_@_ a{-r6A-}}
-{- rec -}
-AbsBinds [a{-aLt-}] [] [([a{-aLt-}], $d2{-rLv,x-}, d.Eval_aJU)]
-    d.Eval_aJU =
-	({-dict-} [] [])
-{- rec -}
-AbsBinds [a{-aLu-}] [] [([a{-aLu-}], $d3{-rLD,x-}, d.Eval_aK0)]
-    d.Eval_aK0 =
-	({-dict-} [] [])
-{- rec -}
-AbsBinds
-[a{-aKf-}]
-[d.Ord_aKF]
-[([a{-aKf-}], $d4{-rLE,x-}, d.Show_aK6)]
-    d.Ord_aKR =
-	d.Ord_aKF
-    d.Show_aKP =
-	$d1{-rLJ,x-}
-	    a{-aKf-}
-	    d.Ord_aKR
-    showsPrec_aLI =
-	PrelBase.showsPrec{-r5t,p-}
-	    (FunnyInternalType{-r6u,l-} a{-aKf-})
-	    d.Show_aKP
-    showsPrec_aLH =
-	showsPrec_aLG
-    AbsBinds [] [] [([], showsPrec_aLG, showsPrec_aK9)]
-	lit_aLK =
-	    lit_aLA
-	showsPrec_aK9
-	    a_rJ8 (Con{-r6v,l-}{i} b1_rJa)
-		    =   PrelBase.showParen{-r61,p-}
-			    a_rJ8 >=_aLC lit_aLA
-			    PrelBase..{-r6d,p-}
-				[PrelBase.String{-r5q,p-}, PrelBase.String{-r5q,p-}, PrelBase.String{-r5q,p-}]
-				PrelBase.showString{-r60,p-}
-				    "Con "
-				showsPrec_aLI
-				    lit_aLK b1_rJa
-    AbsBinds [] [] [([], showList_aLF, showList_aKA)]
-	showList_aKA
-		    =   PrelBase.showList__{-r6F,p-}
-			    (OpaqueType{-r6,x-} a{-aKf-})
-			    showsPrec_aLH
-				lit_aLw
-    d.Show_aK6 =
-	({-dict-} [] [showsPrec_aLG, showList_aLF])
-{- rec -}
-AbsBinds
-[a{-aL6-}]
-[d.Ord_aLf]
-[([a{-aL6-}], $d1{-rLJ,x-}, d.Show_aKZ)]
-    d.Show_aLj =
-	d.Show_aKZ
-    $mshowsPrec_aLM =
-	PrelBase.$mshowsPrec{-rfh,p-}
-	    (FunnyInternalType{-r6u,l-} a{-aL6-})
-	    d.Show_aLj
-    d.Show_aLl =
-	d.Show_aKZ
-    $mshowList_aLL =
-	PrelBase.$mshowList{-rfg,p-}
-	    (FunnyInternalType{-r6u,l-} a{-aL6-})
-	    d.Show_aLl
-    AbsBinds [] [] [([], showsPrec_aL1, showsPrec_aL3)]
-	showsPrec_aL3
-	    =   $mshowsPrec_aLM
-    AbsBinds [] [] [([], showList_aLa, showList_aLc)]
-	showList_aLc
-	    =   $mshowList_aLL
-    d.Show_aKZ =
-	({-dict-} [] [showsPrec_aL1, showList_aLa])
-{- nonrec -}
-d.Ord_aLo =
-    PrelBase.$d6{-reK,p-}
->=_aLC =
-    PrelBase.>={-8Z,p-}
-	PrelBase.Int{-3g,p-}
-	d.Ord_aLo
-d.Num_aLs =
-    PrelBase.$d3{-ref,p-}
-fromInt_aLB =
-    PrelBase.fromInt{-8R,p-}
-	PrelBase.Int{-3g,p-}
-	d.Num_aLs
-lit_aLA =
-    fromInt_aLB
-	PrelBase.I#{-5b,p-}{i}
-	    10#
-fromInt_aLz =
-    fromInt_aLB
-lit_aLw =
-    fromInt_aLz
-	PrelBase.I#{-5b,p-}{i}
-	    0#
-ghc: module version changed to 1; reason: no old .hi file
-_interface_ ExportOpaque 1
-_instance_modules_
-ArrBase IO PrelNum
-_usages_
-PrelBase 1 :: $d1 1 $d11 1 $d14 1 $d15 1 $d2 1 $d21 1 $d26 1 $d27 1 $d3 1 $d32 1 $d33 1 $d34 1 $d37 1 $d38 1 $d39 1 $d41 1 $d42 1 $d44 1 $d45 1 $d46 1 $d49 1 $d50 1 $d51 1 $d54 1 $d55 1 $d6 1 $d7 1 $d8 1 $m* 1 $m+ 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m== 1 $m> 1 $m>= 1 $mabs 1 $mcompare 1 $mfromInt 1 $mfromInteger 1 $mmax 1 $mmin 1 $mnegate 1 $mshowList 1 $mshowsPrec 1 $msignum 1 . 1 showList__ 1 showParen 1 showSpace 1 showString 1 Eq 1 Eval 1 Num 1 Ord 1 Ordering 1 Show 1 ShowS 1 String 1;
-PrelNum 1 :: $d10 1 $d16 1 $d17 1 $d18 1 $d29 1 $d33 1 $d34 1 $d35 1;
-_exports_
-ExportOpaque OpaqueType;
-_instances_
-instance _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (FunnyInternalType a)} = $d1;
-instance _forall_ [a] => {PrelBase.Eval (OpaqueType a)} = $d2;
-instance _forall_ [a] => {PrelBase.Eval (FunnyInternalType a)} = $d3;
-instance _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (OpaqueType a)} = $d4;
-_declarations_
-1 $d1 _:_ _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (FunnyInternalType a)} ;;
-1 $d2 _:_ _forall_ [a] => {PrelBase.Eval (OpaqueType a)} ;;
-1 $d3 _:_ _forall_ [a] => {PrelBase.Eval (FunnyInternalType a)} ;;
-1 $d4 _:_ _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (OpaqueType a)} ;;
-1 data FunnyInternalType r6A = Junk11 |  Junk2 ;
-1 data OpaqueType r6C = Con (FunnyInternalType r6C) ;
diff --git a/ghc/tests/printing/should_compile/Makefile b/ghc/tests/printing/should_compile/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..48fc0b9dba831d03e8975f7c906c4b58c3688f1f
--- /dev/null
+++ b/ghc/tests/printing/should_compile/Makefile
@@ -0,0 +1,10 @@
+TOP = ../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
+
+HC_OPTS += -noC -ddump-tc -dcore-lint -hi
+
+print002_HC_OPTS = -fno-implicit-prelude -dppr-user -ddump-rdr
+
+include $(TOP)/mk/target.mk
+
diff --git a/ghc/tests/printing/Print001.hs b/ghc/tests/printing/should_compile/Print001.hs
similarity index 100%
rename from ghc/tests/printing/Print001.hs
rename to ghc/tests/printing/should_compile/Print001.hs
diff --git a/ghc/tests/printing/should_compile/Print001.stderr b/ghc/tests/printing/should_compile/Print001.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6ed7dd4aa705c1b96f45ab4a98ac04024095b29b
--- /dev/null
+++ b/ghc/tests/printing/should_compile/Print001.stderr
@@ -0,0 +1,64 @@
+
+
+================================================================================
+Typechecked:
+BarNil{-r8,x-}{i} = _/\_ a_tr4F -> BarNil{-r8,x-}{i} {_@_ a_tr4F}
+BarCon{-r7,x-}{i} =
+    _/\_ a_tr4F -> \ tpl_B1 tpl_B2 ->
+	BarCon{-r7,x-}{i} {_@_ a_tr4F tpl_B1 tpl_B2}
+MkFoo{-r4M,x-}{i} =
+    _/\_ d_tr4H e_tr4I f_tr4J -> \ tpl_B1 tpl_B2 tpl_B3 ->
+	MkFoo{-r4M,x-}{i}
+	    {_@_ d_tr4H _@_ e_tr4I _@_ f_tr4J tpl_B1 tpl_B2 tpl_B3}
+AbsBinds [taYe, taYf] [] [([taYf, taYe], g{-r4w,x-}, g_aYb)]
+    g_aYb x_r4D = lit_aZr
+AbsBinds
+[taYt, taYu, taYv]
+[d.Eq_aYx, d.Ord_aYy, d.Ix_aYz]
+[([taYt, taYu, taYv], f2{-r4v,x-}, f2_aYq)]
+    f2_aYq x_r4B = x_r4B
+AbsBinds
+[taYK, taYL, taYM]
+[d.Eq_aYO]
+[([taYK, taYL, taYM], f{-r4u,x-}, f_aYH)]
+    f_aYH x_r4z = x_r4z
+AbsBinds
+[taYU, taYW, taYY]
+[]
+[([taYU, taYW, taYY], mkFoo{-r4x,x-}, mkFoo_aYQ)]
+    mkFoo_aYQ = MkFoo{-r4M,x-}{i} [taYU, taYW, taYY]
+AbsBinds [taZg] [] [([taZg], $d1{-rZn,x-}, d.Eval_aZ4)]
+    d.Eval_aZ4 = ({-dict-} [] [])
+AbsBinds
+[taZh, taZi, taZj]
+[]
+[([taZh, taZi, taZj], $d2{-rZp,x-}, d.Eval_aZc)]
+    d.Eval_aZc = ({-dict-} [] [])
+d.Fractional_aZf = PrelNum.$d23{-rES,p-}
+fromRational_aZq =
+    PrelNum.fromRational{-8T,p-} PrelBase.Float{-3c,W-}
+	d.Fractional_aZf
+lit_aZr = fromRational_aZq 2.0000000000000000
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ Print001 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+Ix 1 :: $d3 1 $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $d9 1 Ix 1;
+PrelBase 1 :: $d1 1 $d11 1 $d12 1 $d14 1 $d15 1 $d16 1 $d2 1 $d22 1 $d27 1 $d28 1 $d3 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d41 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d6 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $menumFromThenTo 1 $menumFromTo 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 Enum 1 Eq 1 Eval 1 Num 1 Ord 1 Ordering 1 Show 1 String 1;
+PrelNum 1 :: $d1 1 $d10 1 $d14 1 $d15 1 $d16 1 $d17 1 $d18 1 $d19 1 $d2 1 $d23 1 $d24 1 $d25 1 $d26 1 $d27 1 $d28 1 $d29 1 $d30 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d36 1 $d37 1 $d38 1 $d39 1 $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $d9 1 $mdiv 1 $mdivMod 1 $mmod 1 $mquot 1 $mrecip 1 $mrem 1 Fractional 1 Integral 1 Ratio 1 Rational 1 Real 1;
+PrelTup 1 :: $d10 1 $d13 1 $d14 1 $d3 1 $d4 1 $d49 1 $d50 1 $d9 1;
+_exports_
+Print001 f f2 g mkFoo Bar(BarNil BarCon) Foo(MkFoo);
+_instances_
+instance _forall_ [a] => {PrelBase.Eval (Bar a)} = $d1;
+instance _forall_ [d e f] => {PrelBase.Eval (Foo d e f)} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] => {PrelBase.Eval (Bar a)} ;;
+1 $d2 _:_ _forall_ [d e f] => {PrelBase.Eval (Foo d e f)} ;;
+1 data Bar a = BarNil |  BarCon (Foo a a a) (Bar a) ;
+1 data Foo d e f = MkFoo [((d -> PrelBase.Int) -> d) -> e] (d -> e, e -> e) PrelBase.() ;
+1 f _:_ _forall_ [ta tb tc] {PrelBase.Eq ta} => (ta -> tb -> tc) -> ta -> tb -> tc ;;
+1 f2 _:_ _forall_ [ta tb tc] {PrelBase.Eq ta, PrelBase.Ord ta, Ix.Ix tc} => (ta -> tb -> tc) -> ta -> tb -> tc ;;
+1 g _:_ _forall_ [ta tb] => Foo PrelBase.Int (tb -> ta) (tb -> [(tb, PrelBase.Double, PrelBase.Int)]) -> PrelBase.Float ;;
+1 mkFoo _:_ _forall_ [ta tb tc] => [((ta -> PrelBase.Int) -> ta) -> tb] -> (ta -> tb, tb -> tb) -> PrelBase.() -> Foo ta tb tc ;;
diff --git a/ghc/tests/printing/Print002.hs b/ghc/tests/printing/should_compile/Print002.hs
similarity index 100%
rename from ghc/tests/printing/Print002.hs
rename to ghc/tests/printing/should_compile/Print002.hs
diff --git a/ghc/tests/printing/should_compile/Print002.stderr b/ghc/tests/printing/should_compile/Print002.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..0847ddb349407250d03291e0fabd7227e105b03f
--- /dev/null
+++ b/ghc/tests/printing/should_compile/Print002.stderr
@@ -0,0 +1,300 @@
+
+
+================================================================================
+Typechecked:
+MkFoo1{-rk,x-}{i} =
+    _/\_ a_tr4k b_tr4l c_tr4m -> \ tpl_B1 tpl_B2 ->
+	MkFoo1{-rk,x-}{i} {_@_ a_tr4k _@_ b_tr4l _@_ c_tr4m tpl_B1 tpl_B2}
+:##{-rj,x-}{i} =
+    _/\_ a_tr4k b_tr4l c_tr4m -> \ tpl_B1 tpl_B2 ->
+	:##{-rj,x-}{i} {_@_ a_tr4k _@_ b_tr4l _@_ c_tr4m tpl_B1 tpl_B2}
+MkFoo3{-rm,x-}{i} =
+    _/\_ a_tr4k b_tr4l c_tr4m -> \ tpl_B1 tpl_B2 ->
+	MkFoo3{-rm,x-}{i} {_@_ a_tr4k _@_ b_tr4l _@_ c_tr4m tpl_B1 tpl_B2}
+:***{-ro,x-}{i} =
+    _/\_ a_tr4k b_tr4l c_tr4m -> \ tpl_B1 tpl_B2 ->
+	:***{-ro,x-}{i} {_@_ a_tr4k _@_ b_tr4l _@_ c_tr4m tpl_B1 tpl_B2}
+AbsBinds [taFI] [d.Bar_aFL] [([taFI], f3d{-r4o,x-}, f3d_aFv)]
+    /////_aQY = /////{-r4C,x-} taFI d.Bar_aFL
+    f3d_aFv x_r48 y_r49 = x_r48 /////_aQY y_r49
+AbsBinds [taG0] [d.Bar_aG3] [([taG0], f3c{-r4p,x-}, f3c_aFN)]
+    /////_aR3 = /////{-r4C,x-} taG0 d.Bar_aG3
+    f3c_aFN x_r45 y_r46 = /////_aR3 x_r45 y_r46
+AbsBinds [taGi] [d.Bar_aGl] [([taGi], f3b{-r4q,x-}, f3b_aG5)]
+    meth1_aR4 = meth1{-r4B,x-} taGi d.Bar_aGl
+    f3b_aG5 x_r42 y_r43 = x_r42 meth1_aR4 y_r43
+AbsBinds [taGA] [d.Bar_aGD] [([taGA], f3a{-r4r,x-}, f3a_aGn)]
+    meth1_aR5 = meth1{-r4B,x-} taGA d.Bar_aGD
+    f3a_aGn x_r3Z y_r40 = meth1_aR5 x_r3Z y_r40
+AbsBinds
+[taH3, taH5, taH7]
+[]
+[([taH3, taH5, taH7], <<<<{-r4s,x-}, <<<<_aGF)]
+    <<<<_aGF x_r3T y_r3U
+	     = :***{-ro,x-}{i} [taH3, taH5, taH7] x_r3T y_r3U
+    <<<<_aGF x_r3W y_r3X
+	     = :***{-ro,x-}{i} [taH3, taH5, taH7] x_r3W y_r3X
+AbsBinds
+[taHn, taHp, taHr]
+[]
+[([taHn, taHp, taHr], .....{-r4t,x-}, ....._aH9)]
+    ....._aH9 x_r3Q y_r3R
+	      = MkFoo3{-rm,x-}{i} [taHn, taHp, taHr] x_r3Q y_r3R
+AbsBinds
+[taHH, taHJ, taHL]
+[]
+[([taHH, taHJ, taHL], ....{-r4u,x-}, ...._aHt)]
+    ...._aHt x_r3N y_r3O
+	     = MkFoo3{-rm,x-}{i} [taHH, taHJ, taHL] x_r3N y_r3O
+AbsBinds
+[taI1, taI3, taI5]
+[]
+[([taI1, taI3, taI5], f2a{-r4v,x-}, f2a_aHN)]
+    f2a_aHN x_r3K y_r3L = :##{-rj,x-}{i} [taI1, taI3, taI5] x_r3K y_r3L
+AbsBinds
+[taIl, taIn, taIp]
+[]
+[([taIl, taIn, taIp], f2{-r4w,x-}, f2_aI7)]
+    f2_aI7 x_r3H y_r3I = :##{-rj,x-}{i} [taIl, taIn, taIp] x_r3H y_r3I
+AbsBinds
+[taIF, taIH, taIJ]
+[]
+[([taIF, taIH, taIJ], f1a{-r4x,x-}, f1a_aIr)]
+    f1a_aIr x_r3E y_r3F
+	    = MkFoo1{-rk,x-}{i} [taIF, taIH, taIJ] x_r3E y_r3F
+AbsBinds
+[taIZ, taJ1, taJ3]
+[]
+[([taIZ, taJ1, taJ3], f1{-r4y,x-}, f1_aIL)]
+    f1_aIL x_r3B y_r3C
+	   = MkFoo1{-rk,x-}{i} [taIZ, taJ1, taJ3] x_r3B y_r3C
+AbsBinds
+[taJJ, taJM, taJN]
+[]
+[([taJJ, taJM, taJN], con2tag_Foo#_rCX, con2tag_Foo#_aJ5)]
+    con2tag_Foo#_aJ5 (MkFoo1{-rk,x-}{i} _ _) = 0#
+    con2tag_Foo#_aJ5 (:##{-rj,x-}{i} _ _) = 1#
+    con2tag_Foo#_aJ5 (MkFoo3{-rm,x-}{i} _ _) = 2#
+    con2tag_Foo#_aJ5 (:***{-ro,x-}{i} _ _) = 3#
+AbsBinds
+[taK6, taK9, taKc]
+[d.Eq_aLY, d.Eq_aLZ, d.Eq_aM0]
+[([taK6, taK9, taKc], $d1{-rQZ,x-}, d.Eq_aJV)]
+    d.Eq_aM4 = d.Eq_aLY
+    ==_aR6 = PrelBase.=={-8Y,p-} taK6 d.Eq_aM4
+    d.Eq_aM6 = d.Eq_aLZ
+    ==_aR7 = PrelBase.=={-8Y,p-} taK9 d.Eq_aM6
+    d.Eq_aM8 = d.Eq_aM0
+    ==_aR8 = PrelBase.=={-8Y,p-} taKc d.Eq_aM8
+    ==_aR9 = ==_aRa
+    AbsBinds [] [] [([], ==_aRa, ==_aJZ)]
+	==_aRc = ==_aR6
+	==_aRd = ==_aR7
+	==_aRe = ==_aR7
+	==_aRf = ==_aR8
+	==_aRg = ==_aR8
+	==_aJZ (MkFoo1{-rk,x-}{i} a1_rD6 a2_rD7)
+	       (MkFoo1{-rk,x-}{i} b1_rD8 b2_rD9)
+	       = (a1_rD6 ==_aR6 b1_rD8)
+		 PrelBase.&&{-rgs,p-} (a2_rD7 ==_aRc b2_rD9)
+	==_aJZ (:##{-rj,x-}{i} a1_rDb a2_rDc)
+	       (:##{-rj,x-}{i} b1_rDd b2_rDe)
+	       = (a1_rDb ==_aR7 b1_rDd)
+		 PrelBase.&&{-rgs,p-} (a2_rDc ==_aR8 b2_rDe)
+	==_aJZ (MkFoo3{-rm,x-}{i} a1_rDg a2_rDh)
+	       (MkFoo3{-rm,x-}{i} b1_rDi b2_rDj)
+	       = (a1_rDg ==_aRd b1_rDi)
+		 PrelBase.&&{-rgs,p-} (a2_rDh ==_aRe b2_rDj)
+	==_aJZ (:***{-ro,x-}{i} a1_rDl a2_rDm)
+	       (:***{-ro,x-}{i} b1_rDn b2_rDo)
+	       = (a1_rDl ==_aRf b1_rDn)
+		 PrelBase.&&{-rgs,p-} (a2_rDm ==_aRg b2_rDo)
+	==_aJZ a_rDq b_rDr = PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], /=_aRb, /=_aLR)]
+	/=_aLR a_rDv b_rDw = PrelBase.not{-rhq,p-} ==_aR9 a_rDv b_rDw
+    d.Eq_aJV = ({-dict-} [] [==_aRa, /=_aRb])
+AbsBinds
+[taQT, taQU, taQV]
+[]
+[([taQT, taQU, taQV], $d2{-rR0,x-}, d.Eval_aMj)]
+    d.Eval_aMj = ({-dict-} [] [])
+AbsBinds
+[taMy, taMz, taMA]
+[d.Ord_aQx, d.Ord_aQy, d.Ord_aQz, d.Eq_aQA]
+[([taMy, taMz, taMA], $d3{-rR1,x-}, d.Ord_aMr)]
+    d.Eq_aQw = d.Eq_aQA
+    d.Ord_aPe = d.Ord_aQx
+    d.Ord_aPf = d.Ord_aQy
+    d.Ord_aPg = d.Ord_aQz
+    compare_aRh = compare_aRn
+    compare_aRi = compare_aRn
+    compare_aRj = compare_aRn
+    compare_aRk = compare_aRn
+    compare_aRl = compare_aRn
+    compare_aRm = compare_aRn
+    AbsBinds [] [] [([], compare_aRn, compare_aMv)]
+	compare_aMv a_rEo b_rEp
+		    = case con2tag_Foo#_rCX [taMA, taMy, taMz] a_rEo of
+			a#_rFc
+			-> case con2tag_Foo#_rCX [taMA, taMy, taMz] b_rEp of
+			     b#_rFe
+			     -> if a#_rFc GHC.==#{-79,w-}{I} b#_rFe then
+				    case cmp_eq_aRu a_rEo b_rEp of
+				      PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+				      PrelBase.EQ{-r4n,p-}{i} -> PrelBase.EQ{-r4n,p-}{i}
+				      PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+				else
+				    if a#_rFc GHC.<#{-7b,w-}{I} b#_rFe then
+					PrelBase.LT{-rb5,p-}{i}
+				    else
+					PrelBase.GT{-rb6,p-}{i}
+		    where
+			{- nonrec -}
+			AbsBinds
+			[taOq, taOr, taOy]
+			[d.Ord_aOG, d.Ord_aOI, d.Ord_aOK]
+			[([taOq, taOr, taOy], cmp_eq_rEr, cmp_eq_aME)]
+			    compare_aRv = PrelBase.compare{-rgH,p-} taOq d.Ord_aOG
+			    compare_aRw = compare_aRv
+			    compare_aRx = PrelBase.compare{-rgH,p-} taOr d.Ord_aOI
+			    compare_aRy = PrelBase.compare{-rgH,p-} taOy d.Ord_aOK
+			    compare_aRz = compare_aRx
+			    compare_aRA = compare_aRx
+			    compare_aRB = compare_aRy
+			    compare_aRC = compare_aRy
+			    cmp_eq_aME (MkFoo1{-rk,x-}{i} a1_rEt a2_rEu)
+				       (MkFoo1{-rk,x-}{i} b1_rEv b2_rEw)
+				       = case compare_aRv a1_rEt b1_rEv of
+					   PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+					   PrelBase.EQ{-r4n,p-}{i}
+					   -> case compare_aRw a2_rEu b2_rEw of
+						PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+						PrelBase.EQ{-r4n,p-}{i} -> PrelBase.EQ{-r4n,p-}{i}
+						PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+					   PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+			    cmp_eq_aME (:##{-rj,x-}{i} a1_rEE a2_rEF)
+				       (:##{-rj,x-}{i} b1_rEG b2_rEH)
+				       = case compare_aRx a1_rEE b1_rEG of
+					   PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+					   PrelBase.EQ{-r4n,p-}{i}
+					   -> case compare_aRy a2_rEF b2_rEH of
+						PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+						PrelBase.EQ{-r4n,p-}{i} -> PrelBase.EQ{-r4n,p-}{i}
+						PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+					   PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+			    cmp_eq_aME (MkFoo3{-rm,x-}{i} a1_rEP a2_rEQ)
+				       (MkFoo3{-rm,x-}{i} b1_rER b2_rES)
+				       = case compare_aRz a1_rEP b1_rER of
+					   PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+					   PrelBase.EQ{-r4n,p-}{i}
+					   -> case compare_aRA a2_rEQ b2_rES of
+						PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+						PrelBase.EQ{-r4n,p-}{i} -> PrelBase.EQ{-r4n,p-}{i}
+						PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+					   PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+			    cmp_eq_aME (:***{-ro,x-}{i} a1_rF0 a2_rF1)
+				       (:***{-ro,x-}{i} b1_rF2 b2_rF3)
+				       = case compare_aRB a1_rF0 b1_rF2 of
+					   PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+					   PrelBase.EQ{-r4n,p-}{i}
+					   -> case compare_aRC a2_rF1 b2_rF3 of
+						PrelBase.LT{-rb5,p-}{i} -> PrelBase.LT{-rb5,p-}{i}
+						PrelBase.EQ{-r4n,p-}{i} -> PrelBase.EQ{-r4n,p-}{i}
+						PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+					   PrelBase.GT{-rb6,p-}{i} -> PrelBase.GT{-rb6,p-}{i}
+			    cmp_eq_aME _ _
+				       = IOBase.error{-87,w-}
+					     PrelBase.Ordering{-3o,p-} "Urk! in TcGenDeriv"
+			{- nonrec -}
+			cmp_eq_aRu =
+			    cmp_eq_rEr [taMy, taMz, taMA] [d.Ord_aPe, d.Ord_aPf, d.Ord_aPg]
+			{- nonrec -}
+    AbsBinds [] [] [([], <_aRo, <_aPl)]
+	<_aPl a_rDC b_rDD
+	      = case compare_aRh a_rDC b_rDD of
+		  PrelBase.LT{-rb5,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		  PrelBase.EQ{-r4n,p-}{i} -> PrelBase.False{-58,w-}{i}
+		  PrelBase.GT{-rb6,p-}{i} -> PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], <=_aRp, <=_aPy)]
+	<=_aPy a_rDK b_rDL
+	       = case compare_aRi a_rDK b_rDL of
+		   PrelBase.LT{-rb5,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.EQ{-r4n,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.GT{-rb6,p-}{i} -> PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], >=_aRq, >=_aPL)]
+	>=_aPL a_rDS b_rDT
+	       = case compare_aRj a_rDS b_rDT of
+		   PrelBase.LT{-rb5,p-}{i} -> PrelBase.False{-58,w-}{i}
+		   PrelBase.EQ{-r4n,p-}{i} -> PrelBase.True{-5E,w-}{i}
+		   PrelBase.GT{-rb6,p-}{i} -> PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], >_aRr, >_aPY)]
+	>_aPY a_rE0 b_rE1
+	      = case compare_aRk a_rE0 b_rE1 of
+		  PrelBase.LT{-rb5,p-}{i} -> PrelBase.False{-58,w-}{i}
+		  PrelBase.EQ{-r4n,p-}{i} -> PrelBase.False{-58,w-}{i}
+		  PrelBase.GT{-rb6,p-}{i} -> PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], max_aRs, max_aQb)]
+	max_aQb a_rE8 b_rE9
+		= case compare_aRl a_rE8 b_rE9 of
+		    PrelBase.LT{-rb5,p-}{i} -> b_rE9
+		    PrelBase.EQ{-r4n,p-}{i} -> a_rE8
+		    PrelBase.GT{-rb6,p-}{i} -> a_rE8
+    AbsBinds [] [] [([], min_aRt, min_aQo)]
+	min_aQo a_rEg b_rEh
+		= case compare_aRm a_rEg b_rEh of
+		    PrelBase.LT{-rb5,p-}{i} -> a_rEg
+		    PrelBase.EQ{-r4n,p-}{i} -> b_rEh
+		    PrelBase.GT{-rb6,p-}{i} -> b_rEh
+    d.Ord_aMr =
+	({-dict-}
+	 [d.Eq_aQw]
+	 [compare_aRn, <_aRo, <=_aRp, >=_aRq, >_aRr, max_aRs, min_aRt])
+scsel_Bar2Print002Bar{-aR2,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taQW] [d.Bar2_aQP] []
+meth1{-r4B,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,,){-63,w-}{i} tpl_B1 tpl_B2 tpl_B3  ->
+	tpl_B1;}
+/////{-r4C,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,,){-63,w-}{i} tpl_B1 tpl_B2 tpl_B3  ->
+	tpl_B2;}
+meth2{-r4D,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,,){-63,w-}{i} tpl_B1 tpl_B2 tpl_B3  ->
+	tpl_B3;}
+AbsBinds [taQX] [d.Bar_aQS] []
+Print002.hs:35: 
+    Warning: Pattern match(es) completely overlapped
+	in the definition of function `<<<<'
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ Print002 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d15 1 $d16 1 $d2 1 $d33 1 $d35 1 $d38 1 $d40 1 $d42 1 $d46 1 $d47 1 $d50 1 $d52 1 $d7 1 $d8 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $mmax 1 $mmin 1 && 1 . 1 not 1 Eq 1 Eval 1 Ord 1 Ordering 1;
+PrelNum 1 :: $d17 1 $d18 1;
+_exports_
+Print002 .... ..... <<<< f1 f1a f2 f2a f3a f3b f3c f3d Bar(meth1 ///// meth2) Bar2 Foo(MkFoo1 :## MkFoo3 :***);
+_instances_
+instance _forall_ [a b c] {PrelBase.Eq a, PrelBase.Eq b, PrelBase.Eq c} => {PrelBase.Eq (Foo a b c)} = $d1;
+instance _forall_ [a b c] => {PrelBase.Eval (Foo a b c)} = $d2;
+instance _forall_ [a b c] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Ord c} => {PrelBase.Ord (Foo a b c)} = $d3;
+_declarations_
+1 $d1 _:_ _forall_ [a b c] {PrelBase.Eq a, PrelBase.Eq b, PrelBase.Eq c} => {PrelBase.Eq (Foo a b c)} ;;
+1 $d2 _:_ _forall_ [a b c] => {PrelBase.Eval (Foo a b c)} ;;
+1 $d3 _:_ _forall_ [a b c] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Ord c, PrelBase.Eq (Foo a b c)} => {PrelBase.Ord (Foo a b c)} ;;
+1 .... _:_ _forall_ [ta tb tc] => tb -> tb -> Foo ta tb tc ;;
+1 ..... _:_ _forall_ [ta tb tc] => tb -> tb -> Foo ta tb tc ;;
+1 <<<< _:_ _forall_ [ta tb tc] => tc -> tc -> Foo ta tb tc ;;
+1 class Bar a where {meth1 :: a -> a -> PrelBase.Bool; ///// :: a -> a -> PrelBase.Bool; meth2 :: _forall_ [b] => a -> b -> PrelBase.Bool} ;
+1 class {Bar a} => Bar2 a ;
+1 data Foo a b c = MkFoo1 a a |  :## b c |  MkFoo3 b b |  :*** c c ;
+1 f1 _:_ _forall_ [ta tb tc] => ta -> ta -> Foo ta tb tc ;;
+1 f1a _:_ _forall_ [ta tb tc] => ta -> ta -> Foo ta tb tc ;;
+1 f2 _:_ _forall_ [ta tb tc] => tb -> tc -> Foo ta tb tc ;;
+1 f2a _:_ _forall_ [ta tb tc] => tb -> tc -> Foo ta tb tc ;;
+1 f3a _:_ _forall_ [ta] {Bar ta} => ta -> ta -> PrelBase.Bool ;;
+1 f3b _:_ _forall_ [ta] {Bar ta} => ta -> ta -> PrelBase.Bool ;;
+1 f3c _:_ _forall_ [ta] {Bar ta} => ta -> ta -> PrelBase.Bool ;;
+1 f3d _:_ _forall_ [ta] {Bar ta} => ta -> ta -> PrelBase.Bool ;;
diff --git a/ghc/tests/printing/Print003.hs b/ghc/tests/printing/should_compile/Print003.hs
similarity index 100%
rename from ghc/tests/printing/Print003.hs
rename to ghc/tests/printing/should_compile/Print003.hs
diff --git a/ghc/tests/printing/should_compile/Print003.stderr b/ghc/tests/printing/should_compile/Print003.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..aa767cc59bff2a6c1195daa879c971f40855f7e2
--- /dev/null
+++ b/ghc/tests/printing/should_compile/Print003.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+bitRsh{-r3h,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+bitLsh{-r3i,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [takE] [d.Bits_akD] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ Word 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+Word Bits(bitRsh bitLsh);
+_fixities_
+infixl 8 bitLsh;
+infixl 8 bitRsh;
+_declarations_
+1 class Bits a where {bitRsh :: a -> PrelBase.Int -> a; bitLsh :: a -> PrelBase.Int -> a} ;
diff --git a/ghc/tests/printing/Print004.hs b/ghc/tests/printing/should_compile/Print004.hs
similarity index 100%
rename from ghc/tests/printing/Print004.hs
rename to ghc/tests/printing/should_compile/Print004.hs
diff --git a/ghc/tests/printing/should_compile/Print004.stderr b/ghc/tests/printing/should_compile/Print004.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..5eb6c1e6a943bc62e3bfeaaaf4b55fbd63363be9
--- /dev/null
+++ b/ghc/tests/printing/should_compile/Print004.stderr
@@ -0,0 +1,72 @@
+ 
+Print004.hs:18: No explicit method nor default method for `PrelBase.showsPrec'
+		in an instance declaration for `PrelBase.Show'
+
+
+================================================================================
+Typechecked:
+Con{-r6u,l-}{i} =
+    _/\_ a_tr6C -> \ tpl_B1 -> Con{-r6u,l-}{i} {_@_ a_tr6C tpl_B1}
+Junk11{-r4,l-}{i} = _/\_ a_tr6A -> Junk11{-r4,l-}{i} {_@_ a_tr6A}
+Junk2{-r3,l-}{i} = _/\_ a_tr6A -> Junk2{-r3,l-}{i} {_@_ a_tr6A}
+AbsBinds [taFM] [] [([taFM], $d2{-rFO,x-}, d.Eval_aEr)]
+    d.Eval_aEr = ({-dict-} [] [])
+AbsBinds [taFN] [] [([taFN], $d3{-rFP,x-}, d.Eval_aEx)]
+    d.Eval_aEx = ({-dict-} [] [])
+AbsBinds [taEN] [d.Ord_aF8] [([taEN], $d4{-rFQ,x-}, d.Show_aED)]
+    d.Ord_aFg = d.Ord_aF8
+    d.Show_aFe = $d1{-rFR,x-} taEN d.Ord_aFg
+    showsPrec_aFU =
+	PrelBase.showsPrec{-r2c,p-} (FunnyInternalType{-r6v,l-} taEN)
+	    d.Show_aFe
+    showsPrec_aFV = showsPrec_aFW
+    AbsBinds [] [] [([], showsPrec_aFW, showsPrec_aEH)]
+	showsPrec_aEH a_rDK (Con{-r6u,l-}{i} b1_rDL)
+		      = PrelBase.showParen{-r16,p-} a_rDK >=_aFS lit_aFT
+						    PrelBase..{-rI,p-}
+							[PrelBase.String{-r2i,p-}, PrelBase.String{-r2i,p-}, PrelBase.String{-r2i,p-}] PrelBase.showString{-r18,p-} "Con "
+																       showsPrec_aFU PrelBase.I#{-5b,w-}{i} 10#
+																		     b1_rDL
+    AbsBinds [] [] [([], showList_aFX, showList_aF3)]
+	showList_aF3 = PrelBase.showList__{-r6F,p-}
+			   (OpaqueType{-r6,x-} taEN) showsPrec_aFV PrelBase.I#{-5b,w-}{i} 0#
+    d.Show_aED = ({-dict-} [] [showsPrec_aFW, showList_aFX])
+AbsBinds [taFv] [d.Ord_aFE] [([taFv], $d1{-rFR,x-}, d.Show_aFn)]
+    d.Show_aFI = d.Show_aFn
+    $mshowList_aFY =
+	PrelBase.$mshowList{-rif,p-} (FunnyInternalType{-r6v,l-} taFv)
+	    d.Show_aFI
+    AbsBinds [] [] [([], showsPrec_aFZ, showsPrec_aFs)]
+	showsPrec_aFs
+	    = GHCerr.noDefaultMethodError{-8k,w-}
+		  (PrelBase.Int{-3g,W-}
+		   -> FunnyInternalType{-r6v,l-} taFv
+		   -> PrelBase.String{-r2i,p-}
+		   -> PrelBase.String{-r2i,p-}) "<NoSrcLoc>|PrelBase.showsPrec"
+    AbsBinds [] [] [([], showList_aG0, showList_aFB)]
+	showList_aFB = $mshowList_aFY
+    d.Show_aFn = ({-dict-} [] [showsPrec_aFZ, showList_aG0])
+d.Ord_aFL = PrelBase.$d7{-rdY,p-}
+>=_aFS = PrelBase.>={-8Z,p-} PrelBase.Int{-3g,W-} d.Ord_aFL
+lit_aFT = PrelBase.I#{-5b,w-}{i} 10#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ExportOpaque 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d15 1 $d16 1 $d2 1 $d22 1 $d27 1 $d28 1 $d3 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 . 1 showList__ 1 showParen 1 showSpace 1 showString 1 Eq 1 Eval 1 Num 1 Ord 1 Ordering 1 Show 1 ShowS 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d17 1 $d18 1 $d29 1 $d33 1 $d34 1 $d35 1;
+_exports_
+ExportOpaque OpaqueType;
+_instances_
+instance _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (FunnyInternalType a)} = $d1;
+instance _forall_ [a] => {PrelBase.Eval (OpaqueType a)} = $d2;
+instance _forall_ [a] => {PrelBase.Eval (FunnyInternalType a)} = $d3;
+instance _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (OpaqueType a)} = $d4;
+_declarations_
+1 $d1 _:_ _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (FunnyInternalType a)} ;;
+1 $d2 _:_ _forall_ [a] => {PrelBase.Eval (OpaqueType a)} ;;
+1 $d3 _:_ _forall_ [a] => {PrelBase.Eval (FunnyInternalType a)} ;;
+1 $d4 _:_ _forall_ [a] {PrelBase.Ord a} => {PrelBase.Show (OpaqueType a)} ;;
+1 data FunnyInternalType a = Junk11 |  Junk2 ;
+1 data OpaqueType a = Con (FunnyInternalType a) ;
diff --git a/ghc/tests/programs/10queens/Makefile b/ghc/tests/programs/10queens/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/10queens/Makefile
+++ b/ghc/tests/programs/10queens/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/Makefile b/ghc/tests/programs/Makefile
index 8d16d4412ae134d3ad14f12ee005caa3c018eef7..2a57051c9d416343ada49a4c0c9610290150894b 100644
--- a/ghc/tests/programs/Makefile
+++ b/ghc/tests/programs/Makefile
@@ -1,4 +1,4 @@
-TOP = ..
+TOP = .
 include $(TOP)/mk/boilerplate.mk
 
 NOT_THESE = Makefile ipoole_spec_class areid_pass
diff --git a/ghc/tests/programs/andre_monad/Makefile b/ghc/tests/programs/andre_monad/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/andre_monad/Makefile
+++ b/ghc/tests/programs/andre_monad/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/andy_cherry/Makefile b/ghc/tests/programs/andy_cherry/Makefile
index 9e090111db51d73d93ca8b294e82d676025d5659..2ac9f1490cba9af0091e0e438e4dc4cc9d2f0511 100644
--- a/ghc/tests/programs/andy_cherry/Makefile
+++ b/ghc/tests/programs/andy_cherry/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -cpp
diff --git a/ghc/tests/programs/areid_pass/Makefile b/ghc/tests/programs/areid_pass/Makefile
index 5b9af210e54d6d5af5abb288b382f1cc5a20528b..c85f52d136cc7b15ddc24b0e728cca336252d015 100644
--- a/ghc/tests/programs/areid_pass/Makefile
+++ b/ghc/tests/programs/areid_pass/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -fglasgow-exts
diff --git a/ghc/tests/programs/barton-mangler-bug/Makefile b/ghc/tests/programs/barton-mangler-bug/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/barton-mangler-bug/Makefile
+++ b/ghc/tests/programs/barton-mangler-bug/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/cholewo-eval/Makefile b/ghc/tests/programs/cholewo-eval/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/cholewo-eval/Makefile
+++ b/ghc/tests/programs/cholewo-eval/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/cvh_unboxing/Makefile b/ghc/tests/programs/cvh_unboxing/Makefile
index 5b9af210e54d6d5af5abb288b382f1cc5a20528b..c85f52d136cc7b15ddc24b0e728cca336252d015 100644
--- a/ghc/tests/programs/cvh_unboxing/Makefile
+++ b/ghc/tests/programs/cvh_unboxing/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -fglasgow-exts
diff --git a/ghc/tests/programs/dmgob_native1/Makefile b/ghc/tests/programs/dmgob_native1/Makefile
index fc4b4553422acb9e207d9972c00f1e338bba3231..4e94ecb2e227ce87d2f21d443c700cf5f0a08100 100644
--- a/ghc/tests/programs/dmgob_native1/Makefile
+++ b/ghc/tests/programs/dmgob_native1/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_RUNTEST_OPTS += test_data 
diff --git a/ghc/tests/programs/dmgob_native2/Makefile b/ghc/tests/programs/dmgob_native2/Makefile
index c28f624899f0f98d9c3df21c8b9d7adaa018511e..5e846e0b8526d749ffcf50c6ad06f775336198a6 100644
--- a/ghc/tests/programs/dmgob_native2/Makefile
+++ b/ghc/tests/programs/dmgob_native2/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -cpp -syslib hbc
diff --git a/ghc/tests/programs/fast2haskell/Makefile b/ghc/tests/programs/fast2haskell/Makefile
index 5b9af210e54d6d5af5abb288b382f1cc5a20528b..c85f52d136cc7b15ddc24b0e728cca336252d015 100644
--- a/ghc/tests/programs/fast2haskell/Makefile
+++ b/ghc/tests/programs/fast2haskell/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -fglasgow-exts
diff --git a/ghc/tests/programs/fun_insts/Makefile b/ghc/tests/programs/fun_insts/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/fun_insts/Makefile
+++ b/ghc/tests/programs/fun_insts/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/hill_stk_oflow/Makefile b/ghc/tests/programs/hill_stk_oflow/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/hill_stk_oflow/Makefile
+++ b/ghc/tests/programs/hill_stk_oflow/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/ipoole_spec_class/Makefile b/ghc/tests/programs/ipoole_spec_class/Makefile
index a62acb14ce954d2b78ec7145ea31403a9a5dfc72..fa26d6562d3f8e4c5aa6db7948bfa9d24f9699d2 100644
--- a/ghc/tests/programs/ipoole_spec_class/Makefile
+++ b/ghc/tests/programs/ipoole_spec_class/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -cpp
diff --git a/ghc/tests/programs/jl_defaults/Makefile b/ghc/tests/programs/jl_defaults/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/jl_defaults/Makefile
+++ b/ghc/tests/programs/jl_defaults/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/jq_readsPrec/Makefile b/ghc/tests/programs/jq_readsPrec/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/jq_readsPrec/Makefile
+++ b/ghc/tests/programs/jq_readsPrec/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/jtod_circint/Makefile b/ghc/tests/programs/jtod_circint/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/jtod_circint/Makefile
+++ b/ghc/tests/programs/jtod_circint/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/jules_xref/Makefile b/ghc/tests/programs/jules_xref/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/jules_xref/Makefile
+++ b/ghc/tests/programs/jules_xref/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/jules_xref2/Makefile b/ghc/tests/programs/jules_xref2/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/jules_xref2/Makefile
+++ b/ghc/tests/programs/jules_xref2/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/launchbury/Makefile b/ghc/tests/programs/launchbury/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/launchbury/Makefile
+++ b/ghc/tests/programs/launchbury/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/lennart_array/Makefile b/ghc/tests/programs/lennart_array/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/lennart_array/Makefile
+++ b/ghc/tests/programs/lennart_array/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/lennart_range/Makefile b/ghc/tests/programs/lennart_range/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/lennart_range/Makefile
+++ b/ghc/tests/programs/lennart_range/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/lex/Makefile b/ghc/tests/programs/lex/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/lex/Makefile
+++ b/ghc/tests/programs/lex/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/life_space_leak/Makefile b/ghc/tests/programs/life_space_leak/Makefile
index 2c16a81208b6a58c5f188740c4fe6882f991120c..cc14abc6b2b9b91fb1df47d1fc1c99eee9317230 100644
--- a/ghc/tests/programs/life_space_leak/Makefile
+++ b/ghc/tests/programs/life_space_leak/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_RUNTEST_OPTS += -prescript ./life.test
diff --git a/ghc/tests/programs/north_array/Makefile b/ghc/tests/programs/north_array/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/north_array/Makefile
+++ b/ghc/tests/programs/north_array/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/north_lias/Makefile b/ghc/tests/programs/north_lias/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/north_lias/Makefile
+++ b/ghc/tests/programs/north_lias/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/record_upd/Makefile b/ghc/tests/programs/record_upd/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/record_upd/Makefile
+++ b/ghc/tests/programs/record_upd/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/rittri/Makefile b/ghc/tests/programs/rittri/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/rittri/Makefile
+++ b/ghc/tests/programs/rittri/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/sanders_array/Makefile b/ghc/tests/programs/sanders_array/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/sanders_array/Makefile
+++ b/ghc/tests/programs/sanders_array/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/seward-space-leak/Makefile b/ghc/tests/programs/seward-space-leak/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/seward-space-leak/Makefile
+++ b/ghc/tests/programs/seward-space-leak/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/strict_anns/Makefile b/ghc/tests/programs/strict_anns/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/strict_anns/Makefile
+++ b/ghc/tests/programs/strict_anns/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/waugh_neural/Makefile b/ghc/tests/programs/waugh_neural/Makefile
index de6e7e0cc0e09c50290a8cc2d0f243bcf0f20e34..39dc227faa9c66b9e63658ba0ece9799c834613e 100644
--- a/ghc/tests/programs/waugh_neural/Makefile
+++ b/ghc/tests/programs/waugh_neural/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 all :: runtest
diff --git a/ghc/tests/programs/zhang_ccall/Makefile b/ghc/tests/programs/zhang_ccall/Makefile
index 5b9af210e54d6d5af5abb288b382f1cc5a20528b..c85f52d136cc7b15ddc24b0e728cca336252d015 100644
--- a/ghc/tests/programs/zhang_ccall/Makefile
+++ b/ghc/tests/programs/zhang_ccall/Makefile
@@ -1,4 +1,4 @@
-TOP = ../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
 SRC_HC_OPTS += -fglasgow-exts
diff --git a/ghc/tests/reader/Makefile b/ghc/tests/reader/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..af2657823ea5a59eb07449cec396dfbeec046a3b
--- /dev/null
+++ b/ghc/tests/reader/Makefile
@@ -0,0 +1,7 @@
+TOP = ..
+include $(TOP)/mk/boilerplate.mk
+
+SUBDIRS = should_compile should_fail
+
+include $(TOP)/mk/target.mk
+
diff --git a/ghc/tests/reader/should_compile/Makefile b/ghc/tests/reader/should_compile/Makefile
index fe5fca9c887e21611adc1c65ad02486a7023cdf1..4aebe1d16250b2dcb4916ff8d0183ba6fa1b455f 100644
--- a/ghc/tests/reader/should_compile/Makefile
+++ b/ghc/tests/reader/should_compile/Makefile
@@ -1,22 +1,9 @@
-TOP = ../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
+HC_OPTS += -noC -dcore-lint -ddump-rdr
 
-HS_SRCS = $(wildcard *.hs)
-SRC_RUNTEST_OPTS += -accept-output -o1 $*.stdout -o2 $*.stderr -x 1
-HC_OPTS += -noC -dcore-lint
-
-read002_RUNTEST_OPTS = -x 0
-
-%.o : %.hs
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
-
-all :: $(HS_OBJS)
-
-read001_HC_OPTS = -noC -ddump-rdr
-read002_HC_OPTS = -noC -ddump-rdr
-read004_HC_OPTS = -noC -fno-implicit-prelude -ddump-rdr
+read004_HC_OPTS = -fno-implicit-prelude
 
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/reader/should_compile/expr001.stderr b/ghc/tests/reader/should_compile/expr001.stderr
deleted file mode 100644
index 3701c351b659ba8838af275e01dd59b63921aff3..0000000000000000000000000000000000000000
--- a/ghc/tests/reader/should_compile/expr001.stderr
+++ /dev/null
@@ -1,6 +0,0 @@
- 
-expr001.hs:10:
-    Value not in scope: `c'
-
-
-Compilation had errors
diff --git a/ghc/tests/reader/should_compile/read001.stderr b/ghc/tests/reader/should_compile/read001.stderr
deleted file mode 100644
index 4a188c3a41b2514aca30b2bfbcec6b85ff89be67..0000000000000000000000000000000000000000
--- a/ghc/tests/reader/should_compile/read001.stderr
+++ /dev/null
@@ -1 +0,0 @@
-read001.hs:13:9: parse error on input: "OneC.."
diff --git a/ghc/tests/reader/should_compile/read002.stderr b/ghc/tests/reader/should_compile/read002.stderr
index aeb88ae08638680c069f0ca1765eec28cdf84e28..22f85810cc5fffaf18789bef78436c4eea149823 100644
--- a/ghc/tests/reader/should_compile/read002.stderr
+++ b/ghc/tests/reader/should_compile/read002.stderr
@@ -8,9 +8,7 @@ infixr 2 \\\
 infix 3 :==>
 infix 4 MkFoo
 {- rec -}
-\\\ ::
-    _forall_ [] {Eq a} => [a] -> [a] -> [a]
-f   x y     =   x
-\\\ xs ys   =   xs
-data Foo =
-    MkFoo Int | Float :==> Double
+\\\ :: _forall_ [] (Eq a) => [a] -> [a] -> [a]
+f x y = x
+\\\ xs ys = xs
+data Foo = MkFoo Int | Float :==> Double
diff --git a/ghc/tests/reader/should_compile/read003.stderr b/ghc/tests/reader/should_compile/read003.stderr
deleted file mode 100644
index 9a2e662220a03882460e0ff47315cb971108e395..0000000000000000000000000000000000000000
--- a/ghc/tests/reader/should_compile/read003.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
- 
-read003.hs:8: Cannot construct the infinite type (occur check)
-		  `t{-aK8-}' = `(t{-aK8-}, t{-aKb-}, t{-aKe-})'
-    Expected: `(t{-aK8-}, [a{-aKm-}], [a{-aKo-}])'
-    Inferred: `t{-aK8-}'
-    In a pattern binding:
-	~(`a', `b', `c')
-	    | [`nullity
-		    b'] =
-		`a'
-	    | [`nullity
-		    c'] =
-		`a'
-	    | [`PrelBase.otherwise'] =
-		`a'
-	    where
-		`nullity'
-		    =   `PrelList.null'
-
-
-Compilation had errors
diff --git a/ghc/tests/reader/should_compile/read005.stderr b/ghc/tests/reader/should_compile/read005.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..09fd145c78fbe35fb6012d69faf2faa670247078
--- /dev/null
+++ b/ghc/tests/reader/should_compile/read005.stderr
@@ -0,0 +1,7 @@
+
+
+================================================================================
+Reader:
+module Main where
+{- rec -}
+main = print "Hello"
diff --git a/ghc/tests/reader/should_fail/Makefile b/ghc/tests/reader/should_fail/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..73fc3ffc70b0dc2c34238ac2b9b9251e4ef52074
--- /dev/null
+++ b/ghc/tests/reader/should_fail/Makefile
@@ -0,0 +1,7 @@
+TOP = ../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_fail.mk
+
+HC_OPTS += -noC -ddump-rdr
+
+include $(TOP)/mk/target.mk
diff --git a/ghc/tests/reader/should_compile/expr001.hs b/ghc/tests/reader/should_fail/expr001.hs
similarity index 100%
rename from ghc/tests/reader/should_compile/expr001.hs
rename to ghc/tests/reader/should_fail/expr001.hs
diff --git a/ghc/tests/reader/should_fail/expr001.stderr b/ghc/tests/reader/should_fail/expr001.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..3d44bd2dd6aede52a9012d3270b78acb1e17a264
--- /dev/null
+++ b/ghc/tests/reader/should_fail/expr001.stderr
@@ -0,0 +1,13 @@
+
+
+================================================================================
+Reader:
+module Main where
+{- rec -}
+f x = x + (if c then 1 else 2)
+f x = x + 1 :: Int
+ 
+expr001.hs:10: Value not in scope: `c'
+
+
+Compilation had errors
diff --git a/ghc/tests/reader/should_compile/read001.hs b/ghc/tests/reader/should_fail/read001.hs
similarity index 93%
rename from ghc/tests/reader/should_compile/read001.hs
rename to ghc/tests/reader/should_fail/read001.hs
index dc434eb49aa58034974ae0d39e22c46560b4b78a..cc188fdbd3363786944fbb9644abbff722b19a99 100644
--- a/ghc/tests/reader/should_compile/read001.hs
+++ b/ghc/tests/reader/should_fail/read001.hs
@@ -10,14 +10,14 @@ module OneOfEverything (
 	EqTree(EqLeaf, EqBranch),
 	EqClass(..),
 	OrdClass(orda, ordb),
-	OneC.. ,
-	OneOfEverything..
+	module OneC ,
+	module OneOfEverything
     ) where
 
-import OneA renaming	( fA to renamedA )
+import qualified OneA 
 import OneB		( fB )
 import OneC hiding	( fC )
-import OneC hiding	( fC ) renaming ( fc to renamedC )
+import OneC hiding	( fC )
 
 -- HsDecls stuff
 
diff --git a/ghc/tests/reader/should_fail/read001.stderr b/ghc/tests/reader/should_fail/read001.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..b036121e70cdcfb8b1325b8b41c48cba4f658471
--- /dev/null
+++ b/ghc/tests/reader/should_fail/read001.stderr
@@ -0,0 +1,110 @@
+
+
+================================================================================
+Reader:
+module OneOfEverything (
+	fixn, FooData, FooDataB(..), FooDataC(..), EqTree(EqLeaf,
+							  EqBranch), EqClass(..), OrdClass(orda,
+											   ordb), module OneC, module OneOfEverything
+    ) where
+import qualified OneA
+import OneB (fB)
+import OneC hiding (fC)
+import OneC hiding (fC)
+infix 6 fixn
+infixl 7 +#
+infixr 8 fixr
+{- rec -}
+bindwith :: _forall_ [] (OrdClass a, OrdClass b) => a -> b -> b
+g :: _forall_ [] (Num a, Eq b) => Foo a -> [b] -> (a, a, a) -> b
+fixn x y = x
+fixl x y = x
+fixr x y = x
+singlebind x = x
+bindwith a b = b
+reca a = recb a
+recb a = reca a
+(~(a, b, c))
+    | nullity b = a
+    | nullity c = a
+    | otherwise = a
+    where
+	{- rec -}
+	nullity = null
+mat a b c d
+    | foof a b = d
+    | foof a c = d
+    | foof b c = d
+    where
+	{- rec -}
+	foof a b = a == b
+expr a b c d
+     = ((((((((a + (: a b)) + (a : b))
+	     + (((1 - 'c') - "abc") - 1.2929999999999999))
+	    + ((\ x y z -> x) 42))
+	   + ((9 *)))
+	  + ((* 8)))
+	 + (case x of
+	      []
+	      | null x -> 99
+	      | otherwise -> 98
+	      | True -> 97
+	      where
+		  {- rec -}
+		  null x = False))
+	+ ([z | z <- c, isSpace z]))
+       + (let
+	    {- rec -}
+	    y = foo
+	  in
+	    (((((((y + [1, 2, 3, 4]) + (4, 3, 2, 1))
+		 + (4 :: _forall_ [] (Num a) => a))
+		+ (if 42 == 42.000000000000000 then 1 else 4))
+	       + ([1 .. ]))
+	      + ([2, 4 .. ]))
+	     + ([3 .. 5]))
+	    + ([4, 8 .. 999]))
+f _
+  x
+  1
+  1.9299999999999999
+  'c'
+  "dog"
+  ~y
+  (z@(Foo a b))
+  (c Bar d)
+  [1, 2]
+  (3, 4)
+  ((n+42))
+  = y
+g x y z = head y
+default (Integer, Rational)
+instance _forall_ [] (Eq a) => EqClass (EqTree a) where
+    []
+    eqc x = 'a'
+class (Ord a) => OrdClass a where {
+    orda :: a -> Char; ordb :: a -> Char; ordc :: a -> Char;
+    }
+class (Eq a) => EqClass a where {
+    eqc :: a -> Char;
+    eqc x = '?'
+    }
+data (Eq a) => EqTree a = EqLeaf a | EqBranch (EqLeaf a) (EqLeaf a)
+data FooDataB = FooConB Double
+data FooData = FooCon Int
+type Pair a b = (a, b)
+ 
+read001.hs:17: Could not find valid interface file `OneA'
+ 
+read001.hs:18: Could not find valid interface file `OneB'
+ 
+read001.hs:18: Module OneB does not export `fB'
+ 
+read001.hs:19: Could not find valid interface file `OneC'
+ 
+read001.hs:19: Module OneC does not export `fC'
+ 
+read001.hs:20: Module OneC does not export `fC'
+
+
+Compilation had errors
diff --git a/ghc/tests/reader/should_compile/read003.hs b/ghc/tests/reader/should_fail/read003.hs
similarity index 100%
rename from ghc/tests/reader/should_compile/read003.hs
rename to ghc/tests/reader/should_fail/read003.hs
diff --git a/ghc/tests/reader/should_fail/read003.stderr b/ghc/tests/reader/should_fail/read003.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..021a5c09291a59e57fc4e4900f337d087188e50e
--- /dev/null
+++ b/ghc/tests/reader/should_fail/read003.stderr
@@ -0,0 +1,28 @@
+
+
+================================================================================
+Reader:
+module Read003 where
+{- rec -}
+~(a, b, c)
+    | nullity b = a
+    | nullity c = a
+    | otherwise = a
+    where
+	{- rec -}
+	nullity = null
+ 
+read003.hs:8: Cannot construct the infinite type (occur check)
+		  `taGH' = `(taGH, taGK, taGN)'
+    Expected: `taGH'
+    Inferred: `(taGH, [taGW], taGN)'
+    In a pattern binding:
+	`~(a, b, c)
+	     | nullity b = a
+	     | nullity c = a
+	     | PrelBase.otherwise = a
+	     where
+		 nullity = PrelList.null'
+
+
+Compilation had errors
diff --git a/ghc/tests/reader/should_compile/read004.hs b/ghc/tests/reader/should_fail/read004.hs
similarity index 100%
rename from ghc/tests/reader/should_compile/read004.hs
rename to ghc/tests/reader/should_fail/read004.hs
diff --git a/ghc/tests/reader/should_compile/read004.stderr b/ghc/tests/reader/should_fail/read004.stderr
similarity index 100%
rename from ghc/tests/reader/should_compile/read004.stderr
rename to ghc/tests/reader/should_fail/read004.stderr
diff --git a/ghc/tests/rename/should_compile/Makefile b/ghc/tests/rename/should_compile/Makefile
index e1bca8d06311c484ffe13dd7ddb51a53c6b622b6..212553c7cdc3024fd4e879fcf9e91087796760f4 100644
--- a/ghc/tests/rename/should_compile/Makefile
+++ b/ghc/tests/rename/should_compile/Makefile
@@ -1,18 +1,11 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
 HC_OPTS += -noC -dcore-lint
 
 rn017_HC_OPTS = -hi
 
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
-
-all :: $(HS_OBJS)
-
 include $(TOP)/mk/target.mk
 
 
diff --git a/ghc/tests/rename/should_fail/Makefile b/ghc/tests/rename/should_fail/Makefile
index fb0a5f379d4bac6c3c5bf44646461e7bdc80b57d..5d88d1e1ed1ca958f63b85033ec15aa91784575d 100644
--- a/ghc/tests/rename/should_fail/Makefile
+++ b/ghc/tests/rename/should_fail/Makefile
@@ -1,14 +1,7 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_fail.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 1
 HC_OPTS += -noC
 
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
-
-all :: $(HS_OBJS)
-
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/simplCore/should_compile/Makefile b/ghc/tests/simplCore/should_compile/Makefile
index ee2596f5ce3a2ed0c888372a25d9c0d3ef039813..33d237f323056ccfc37bc4ba9cc9dc255c5be08f 100644
--- a/ghc/tests/simplCore/should_compile/Makefile
+++ b/ghc/tests/simplCore/should_compile/Makefile
@@ -1,16 +1,9 @@
-TOP = ../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.hs)
+HC_OPTS += -noC -dcore-lint -ddump-simpl
 
-SRC_RUNTEST_OPTS += -accept-output -o1 $*.stdout -o2 $*.stderr -x 0
-HC_OPTS += -noC -O -ddump-simpl -dcore-lint
-
-%.o : %.hs
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
+include $(TOP)/mk/target.mk
 
-all :: $(HS_OBJS)
 
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/simplCore/should_compile/simpl001.stderr b/ghc/tests/simplCore/should_compile/simpl001.stderr
index b1ee08d3d8da9242d58eb29b2cba55c519237b83..299cfe71c9581e9b3000fd4d8bd7a644a4533f70 100644
--- a/ghc/tests/simplCore/should_compile/simpl001.stderr
+++ b/ghc/tests/simplCore/should_compile/simpl001.stderr
@@ -2,110 +2,97 @@
 
 ================================================================================
 Simplified:
-++++{-r3h,x-}  :: 
-    _forall_
-    [a{-auX-} b{-auY-}]
-    =>
-    (a{-auX-} -> (b{-auY-} -> a{-auX-}) -> b{-auY-})
-    -> (a{-auX-} -> (b{-auY-} -> a{-auX-}) -> b{-auY-})
-    -> a{-auX-}
-    -> (b{-auY-} -> a{-auX-})
-    -> b{-auY-}
+++++{-r3h,x-}  ::  _forall_
+		   [tark tarl]
+		   =>
+		   (tark -> (tarl -> tark) -> tarl)
+		   -> (tark -> (tarl -> tark) -> tarl)
+		   -> tark
+		   -> (tarl -> tark)
+		   -> tarl
 _A>_ 2 {-# L #-}
 ++++{-r3h,x-} =
-    _/\_ a{-sE8-} b{-sE9-} -> \ x_sDl  :: 
-				    a{-sE8-} -> (b{-sE9-} -> a{-sE8-}) -> b{-sE9-}
+    _/\_ $x0_tsEh $x1_tsEi -> \ $x2_sDp  ::  $x0_tsEh
+					     -> ($x1_tsEi -> $x0_tsEh)
+					     -> $x1_tsEi
 				{-# L #-}
-				x_sDl y_sCR  :: 
-					  a{-sE8-} -> (b{-sE9-} -> a{-sE8-}) -> b{-sE9-}
-				      {-# L #-}
-				      y_sCR ->
-	y_sCR
-g{-r3j,x-}  :: 
-    _forall_
-    [a{-avh-} b{-avi-} rk0{-avq-}]
-    =>
-    {PrelBase.Functor{-2b,p-} rk0{-avq-}}
-    -> (a{-avh-} -> (b{-avi-} -> a{-avh-}) -> b{-avi-})
-    -> rk0{-avq-} (a{-avh-} -> (b{-avi-} -> a{-avh-}) -> b{-avi-})
-    -> rk0{-avq-} (a{-avh-} -> (b{-avi-} -> a{-avh-}) -> b{-avi-})
+				$x2_sDp $x3_sCV  ::  $x0_tsEh -> ($x1_tsEi -> $x0_tsEh) -> $x1_tsEi
+					{-# L #-}
+					$x3_sCV ->
+	$x3_sCV
+g{-r3i,x-}  ::  _forall_
+		[aarD tarO tarQ]
+		=>
+		{PrelBase.Functor{-2b,p-} aarD}
+		-> (tarO -> (tarQ -> tarO) -> tarQ)
+		-> aarD (tarO -> (tarQ -> tarO) -> tarQ)
+		-> aarD (tarO -> (tarQ -> tarO) -> tarQ)
 _A>_ 3 {-# L #-}
-g{-r3j,x-} =
-    _/\_ a{-sEd-} b{-sEe-} rk0{-sEf-} -> \ d.Functor_sDp  :: 
-					       {PrelBase.Functor{-2b,p-} rk0{-sEf-}}
-					   {-# L #-}
-					   d.Functor_sDp a_sDk  :: 
-							     a{-sEd-}
-							     -> (b{-sEe-} -> a{-sEd-})
-							     -> b{-sEe-}
+g{-r3i,x-} =
+    _/\_ $x0_asEl $x1_tsEj $x2_tsEk -> \ $x3_sDt  ::  {PrelBase.Functor{-2b,p-} $x0_asEl}
+					 {-# L #-}
+					 $x3_sDt $x4_sDo  ::  $x1_tsEj
+							      -> ($x2_tsEk -> $x1_tsEj)
+							      -> $x2_tsEk
+						 {-# L #-}
+						 $x4_sDo $x5_sE2  ::  $x0_asEl ($x1_tsEj
+										-> ($x2_tsEk
+										    -> $x1_tsEj)
+										-> $x2_tsEk)
 							 {-# L #-}
-							 a_sDk xs_sDV  :: 
-								   rk0{-sEf-} (a{-sEd-}
-									       -> (b{-sEe-}
-										   -> a{-sEd-})
-									       -> b{-sEe-})
-							       {-# L #-}
-							       xs_sDV ->
+							 $x5_sE2 ->
 	let {
-	  ds_sDr  :: 
-	      (a{-sEd-} -> (b{-sEe-} -> a{-sEd-}) -> b{-sEe-})
-	      -> a{-sEd-}
-	      -> (b{-sEe-} -> a{-sEd-})
-	      -> b{-sEe-}
+	  $x7_sDv  ::  ($x1_tsEj -> ($x2_tsEk -> $x1_tsEj) -> $x2_tsEk)
+		       -> $x1_tsEj
+		       -> ($x2_tsEk -> $x1_tsEj)
+		       -> $x2_tsEk
 	  _A>_ 1 {-# L #-}
-	  ds_sDr =
-	      \ ds_sDq  :: 
-		    a{-sEd-} -> (b{-sEe-} -> a{-sEd-}) -> b{-sEe-}
+	  $x7_sDv =
+	      \ $x6_sDu  ::  $x1_tsEj -> ($x2_tsEk -> $x1_tsEj) -> $x2_tsEk
 		{-# L #-}
-		ds_sDq ->
-		  a_sDk
+		$x6_sDu ->
+		  $x4_sDo
 	} in 
-	  d.Functor_sDp
-	      _@_ (a{-sEd-} -> (b{-sEe-} -> a{-sEd-}) -> b{-sEe-})
-	      _@_ (a{-sEd-} -> (b{-sEe-} -> a{-sEd-}) -> b{-sEe-})
-	      ds_sDr
-	      xs_sDV
-h{-r3i,x-}  :: 
-    _forall_
-    [a{-avI-} b{-avK-} rk0{-avT-}]
-    =>
-    {PrelBase.Functor{-2b,p-} rk0{-avT-}}
-    -> (a{-avI-} -> (b{-avK-} -> a{-avI-}) -> b{-avK-})
-    -> rk0{-avT-} (a{-avI-} -> (b{-avK-} -> a{-avI-}) -> b{-avK-})
-    -> rk0{-avT-} (a{-avI-} -> (b{-avK-} -> a{-avI-}) -> b{-avK-})
+	  $x3_sDt
+	      _@_ ($x1_tsEj -> ($x2_tsEk -> $x1_tsEj) -> $x2_tsEk)
+	      _@_ ($x1_tsEj -> ($x2_tsEk -> $x1_tsEj) -> $x2_tsEk)
+	      $x7_sDv
+	      $x5_sE2
+h{-r3j,x-}  ::  _forall_
+		[aas8 task tasm]
+		=>
+		{PrelBase.Functor{-2b,p-} aas8}
+		-> (task -> (tasm -> task) -> tasm)
+		-> aas8 (task -> (tasm -> task) -> tasm)
+		-> aas8 (task -> (tasm -> task) -> tasm)
 _A>_ 3 {-# L #-}
-h{-r3i,x-} =
-    _/\_ a{-sEl-} b{-sEm-} rk0{-sEn-} -> \ d.Functor_sDZ  :: 
-					       {PrelBase.Functor{-2b,p-} rk0{-sEn-}}
-					   {-# L #-}
-					   d.Functor_sDZ b_sEg  :: 
-							     a{-sEl-}
-							     -> (b{-sEm-} -> a{-sEl-})
-							     -> b{-sEm-}
+h{-r3j,x-} =
+    _/\_ $x0_asEu $x1_tsEs $x2_tsEt -> \ $x3_sE6  ::  {PrelBase.Functor{-2b,p-} $x0_asEu}
+					 {-# L #-}
+					 $x3_sE6 $x4_sEm  ::  $x1_tsEs
+							      -> ($x2_tsEt -> $x1_tsEs)
+							      -> $x2_tsEt
+						 {-# L #-}
+						 $x4_sEm $x5_sEn  ::  $x0_asEu ($x1_tsEs
+										-> ($x2_tsEt
+										    -> $x1_tsEs)
+										-> $x2_tsEt)
 							 {-# L #-}
-							 b_sEg xs_sEh  :: 
-								   rk0{-sEn-} (a{-sEl-}
-									       -> (b{-sEm-}
-										   -> a{-sEl-})
-									       -> b{-sEm-})
-							       {-# L #-}
-							       xs_sEh ->
+							 $x5_sEn ->
 	let {
-	  ds_sE0  :: 
-	      (a{-sEl-} -> (b{-sEm-} -> a{-sEl-}) -> b{-sEm-})
-	      -> a{-sEl-}
-	      -> (b{-sEm-} -> a{-sEl-})
-	      -> b{-sEm-}
+	  $x7_sE7  ::  ($x1_tsEs -> ($x2_tsEt -> $x1_tsEs) -> $x2_tsEt)
+		       -> $x1_tsEs
+		       -> ($x2_tsEt -> $x1_tsEs)
+		       -> $x2_tsEt
 	  _A>_ 1 {-# L #-}
-	  ds_sE0 =
-	      \ ds_sDU  :: 
-		    a{-sEl-} -> (b{-sEm-} -> a{-sEl-}) -> b{-sEm-}
+	  $x7_sE7 =
+	      \ $x6_sDY  ::  $x1_tsEs -> ($x2_tsEt -> $x1_tsEs) -> $x2_tsEt
 		{-# L #-}
-		ds_sDU ->
-		  ds_sDU
+		$x6_sDY ->
+		  $x6_sDY
 	} in 
-	  d.Functor_sDZ
-	      _@_ (a{-sEl-} -> (b{-sEm-} -> a{-sEl-}) -> b{-sEm-})
-	      _@_ (a{-sEl-} -> (b{-sEm-} -> a{-sEl-}) -> b{-sEm-})
-	      ds_sE0
-	      xs_sEh
+	  $x3_sE6
+	      _@_ ($x1_tsEs -> ($x2_tsEt -> $x1_tsEs) -> $x2_tsEt)
+	      _@_ ($x1_tsEs -> ($x2_tsEt -> $x1_tsEs) -> $x2_tsEt)
+	      $x7_sE7
+	      $x5_sEn
diff --git a/ghc/tests/simplCore/should_compile/simpl002.stderr b/ghc/tests/simplCore/should_compile/simpl002.stderr
index 49ad874d187a6feb8989a240d4d4bc80a491bd46..b43ee5cd3c55dffdc32cda0005b846b037f6fb45 100644
--- a/ghc/tests/simplCore/should_compile/simpl002.stderr
+++ b/ghc/tests/simplCore/should_compile/simpl002.stderr
@@ -2,137 +2,89 @@
 
 ================================================================================
 Simplified:
-nrlit_sMT  :: 
-    [PrelBase.Char{-38,p-}]
+$g0_g0  ::  [PrelBase.Char{-38,W-}]
 {-# L #-}
-nrlit_sMT =
-    PackedString.unpackCString#{-8F,p-}
-	"xxx"
-$d1{-rJ7,x-}  :: 
-    _forall_
-    [a{-r3g-} b{-r3h-} c{-r3i-}]
-    =>
-    {Foo{-r3j,x-} a{-r3g-}}
-    -> {Foo{-r3j,x-} b{-r3h-}}
-    -> {Foo{-r3j,x-} c{-r3i-}}
-    -> {Foo{-r3j,x-} (Wibble{-r3y,x-} a{-r3g-} b{-r3h-} c{-r3i-})}
+$g0_g0 =
+    PackBase.unpackCString#{-8F,w-} "xxx"
+$d1{-rE0,x-}  ::  _forall_
+		  [a_tr3g b_tr3h c_tr3i]
+		  =>
+		  {Foo{-r3j,x-} a_tr3g}
+		  -> {Foo{-r3j,x-} b_tr3h}
+		  -> {Foo{-r3j,x-} c_tr3i}
+		  -> {Foo{-r3j,x-} (Wibble{-r3w,x-} a_tr3g b_tr3h c_tr3i)}
 _A>_ 3 {-# L #-}
-$d1{-rJ7,x-} =
-    _/\_ a{-sMG-} b{-sMH-} c{-sMI-} -> \ d.Foo_sLN  :: 
-					     {Foo{-r3j,x-} a{-sMG-}}
+$d1{-rE0,x-} =
+    _/\_ $x0_tsGS $x1_tsGT $x2_tsGU -> \ $x3_sGV  ::  {Foo{-r3j,x-} $x0_tsGS}
 					 {-# L #-}
-					 d.Foo_sLN d.Foo_sLM  :: 
-						       {Foo{-r3j,x-} b{-sMH-}}
-						   {-# L #-}
-						   d.Foo_sLM d.Foo_sLL  :: 
-								 {Foo{-r3j,x-} c{-sMI-}}
-							     {-# L #-}
-							     d.Foo_sLL ->
+					 $x3_sGV $x4_sGW  ::  {Foo{-r3j,x-} $x1_tsGT}
+						 {-# L #-}
+						 $x4_sGW $x5_sGX  ::  {Foo{-r3j,x-} $x2_tsGU}
+							 {-# L #-}
+							 $x5_sGX ->
 	let {
-	  op_sLp  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> Wibble{-r3y,x-} a{-sMG-} b{-sMH-} c{-sMI-}
-	      -> PrelBase.Bool{-34,p-}
+	  $x8_sFS  ::  PrelBase.Int{-3g,W-}
+		       -> Wibble{-r3w,x-} $x0_tsGS $x1_tsGT $x2_tsGU
+		       -> PrelBase.Bool{-34,W-}
 	  _A>_ 2 {-# L #-}
-	  op_sLp =
-	      \ x_sLs  :: 
-		    PrelBase.Int{-3g,p-}
+	  $x8_sFS =
+	      \ $x6_sH5  ::  PrelBase.Int{-3g,W-}
 		{-# L #-}
-		x_sLs y_sLq  :: 
-			  Wibble{-r3y,x-} a{-sMG-} b{-sMH-} c{-sMI-}
-		      {-# L #-}
-		      y_sLq ->
-		  IOBase.error{-87,p-}
-		      _@_ PrelBase.Bool{-34,p-} nrlit_sMT } in
+		$x6_sH5 $x7_sH4  ::  Wibble{-r3w,x-} $x0_tsGS $x1_tsGT $x2_tsGU
+			{-# L #-}
+			$x7_sH4 ->
+		  IOBase.error{-87,w-} _@_ PrelBase.Bool{-34,W-} $g0_g0 } in
 	let {
-	  op_sLO  :: 
-	      PrelBase.Int{-3g,p-}
-	      -> Wibble{-r3y,x-} a{-sMG-} b{-sMH-} c{-sMI-}
-	      -> PrelBase.Bool{-34,p-}
+	  $x9_sGY  ::  PrelBase.Int{-3g,W-}
+		       -> Wibble{-r3w,x-} $x0_tsGS $x1_tsGT $x2_tsGU
+		       -> PrelBase.Bool{-34,W-}
 	  _A>_ 2 {-# L #-}
-	  op_sLO =
-	      op_sLp } in
+	  $x9_sGY =
+	      $x8_sFS } in
 	let {
-	  d.Foo_sLP  :: 
-	      {Foo{-r3j,x-} (Wibble{-r3y,x-} a{-sMG-} b{-sMH-} c{-sMI-})}
+	  $xa_sGZ  ::  {Foo{-r3j,x-} (Wibble{-r3w,x-} $x0_tsGS $x1_tsGT $x2_tsGU)}
 	  _A>_ 2 {-# L #-}
-	  d.Foo_sLP =
-	      op_sLp
-	} in 
-	  op_sLp
-$d2{-rJ2,x-}  :: 
-    _forall_
-    [a{-r3s-} b{-r3t-} c{-r3u-}]
-    =>
-    {PrelBase.Eval{-24,p-} (Wibble{-r3y,x-} a{-r3s-} b{-r3t-} c{-r3u-})}
+	  $xa_sGZ =
+	      $x8_sFS
+	} in  $x8_sFS
+$d2{-rDV,x-}  ::  _forall_
+		  [a_tr3r b_tr3s c_tr3t]
+		  =>
+		  {PrelBase.Eval{-24,p-} (Wibble{-r3w,x-} a_tr3r b_tr3s c_tr3t)}
 _A>_ 0 {-# L #-}
-$d2{-rJ2,x-} =
-    _/\_ a{-sMV-} b{-sMW-} c{-sMX-} ->
+$d2{-rDV,x-} =
+    _/\_ $x0_tsH8 $x1_tsH7 $x2_tsH6 ->
 	let {
-	  d.Eval_sM2  :: 
-	      {PrelBase.Eval{-24,p-} (Wibble{-r3y,x-} a{-sMV-} b{-sMW-} c{-sMX-})}
+	  $x3_sGM  ::  {PrelBase.Eval{-24,p-} (Wibble{-r3w,x-} $x0_tsH8 $x1_tsH7 $x2_tsH6)}
 	  {-# L #-}
-	  d.Eval_sM2 =
-	      PrelBase.void{-8G,p-}
-	} in 
-	  PrelBase.void{-8G,p-}
-nrlit_sMU  :: 
-    [PrelBase.Char{-38,p-}]
-{-# L #-}
-nrlit_sMU =
-    PackedString.unpackCString#{-8F,p-}
-	"Class Foo Method op"
-$mop{-rIV,x-}  :: 
-    _forall_
-    [a{-r3w-}]
-    =>
-    {Foo{-r3j,x-} a{-r3w-}}
-    -> PrelBase.Int{-3g,p-}
-    -> a{-r3w-}
-    -> PrelBase.Bool{-34,p-}
+	  $x3_sGM =
+	      PrelBase.void{-8G,w-}
+	} in  PrelBase.void{-8G,w-}
+MkWibble{-r3y,x-}{i}  ::  _forall_
+			  [a_tr3r b_tr3s c_tr3t]
+			  =>
+			  a_tr3r -> b_tr3s -> c_tr3t -> Wibble{-r3w,x-} a_tr3r b_tr3s c_tr3t
 _A>_ 3 {-# L #-}
-$mop{-rIV,x-} =
-    _/\_ a{-sMJ-} -> \ d.Foo_sMg  :: 
-			   {Foo{-r3j,x-} a{-sMJ-}}
-		       {-# L #-}
-		       d.Foo_sMg ->
-	GHCerr.noDefaultMethodError{-8k,p-}
-	    _@_ (PrelBase.Int{-3g,p-} -> a{-sMJ-} -> PrelBase.Bool{-34,p-})
-	    nrlit_sMU
-op{-r3z,x-}  :: 
-    _forall_
-    [a{-r3w-}]
-    =>
-    {Foo{-r3j,x-} a{-r3w-}}
-    -> PrelBase.Int{-3g,p-}
-    -> a{-r3w-}
-    -> PrelBase.Bool{-34,p-}
-_A>_ 1 {-# L #-}
-op{-r3z,x-} =
-    _/\_ a{-sMK-} -> \ tpl_sMf  :: 
-			   {Foo{-r3j,x-} a{-sMK-}}
-		       {-# L #-}
-		       tpl_sMf ->
-	tpl_sMf
-MkWibble{-r3x,x-}{i}  :: 
-    _forall_
-    [a{-r3s-} b{-r3t-} c{-r3u-}]
-    =>
-    a{-r3s-}
-    -> b{-r3t-}
-    -> c{-r3u-}
-    -> Wibble{-r3y,x-} a{-r3s-} b{-r3t-} c{-r3u-}
-_A>_ 3 {-# L #-}
-MkWibble{-r3x,x-}{i} =
-    _/\_ a{-sMO-} b{-sMP-} c{-sMQ-} -> \ tpl_sML  :: 
-					     a{-sMO-}
+MkWibble{-r3y,x-}{i} =
+    _/\_ $x0_tsH0 $x1_tsH1 $x2_tsH2 -> \ $x3_sGL  ::  $x0_tsH0
 					 {-# L #-}
-					 tpl_sML tpl_sMM  :: 
-						     b{-sMP-}
+					 $x3_sGL $x4_sGK  ::  $x1_tsH1
 						 {-# L #-}
-						 tpl_sMM tpl_sMN  :: 
-							     c{-sMQ-}
+						 $x4_sGK $x5_sGJ  ::  $x2_tsH2
 							 {-# L #-}
-							 tpl_sMN ->
-	MkWibble{-r3x,x-}{i}
-	    {_@_ a{-sMO-} _@_ b{-sMP-} _@_ c{-sMQ-} tpl_sML tpl_sMM tpl_sMN}
+							 $x5_sGJ ->
+	MkWibble{-r3y,x-}{i}
+	    {_@_ $x0_tsH0 _@_ $x1_tsH1 _@_ $x2_tsH2 $x3_sGL $x4_sGK $x5_sGJ}
+op{-r3x,x-}  ::  _forall_
+		 [a_tr3v]
+		 =>
+		 {Foo{-r3j,x-} a_tr3v}
+		 -> PrelBase.Int{-3g,W-}
+		 -> a_tr3v
+		 -> PrelBase.Bool{-34,W-}
+_A>_ 1 {-# L #-}
+op{-r3x,x-} =
+    _/\_ $x0_tsH3 -> \ $x1_sGI  ::  {Foo{-r3j,x-} $x0_tsH3}
+		       {-# L #-}
+		       $x1_sGI ->
+	$x1_sGI
diff --git a/ghc/tests/simplCore/should_compile/simpl003.stderr b/ghc/tests/simplCore/should_compile/simpl003.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..214ab086c2bc7cd0d98d3f9d4aa8ecf0e5026dde
--- /dev/null
+++ b/ghc/tests/simplCore/should_compile/simpl003.stderr
@@ -0,0 +1,195 @@
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+
+
+================================================================================
+Simplified:
+$d1{-rOe,x-}  ::  _forall_
+		  [a_tr41]
+		  =>
+		  {PrelBase.Eval{-24,p-} (IMonadReturn{-r45,x-} a_tr41)}
+_A>_ 0 {-# L #-}
+$d1{-rOe,x-} =
+    _/\_ $x0_ts1mQ -> PrelBase.void{-8G,w-}
+IMonadOk{-ra,x-}{i}  ::  _forall_
+			 [a_tr41]
+			 =>
+			 IMonadState{-r44,x-} -> a_tr41 -> IMonadReturn{-r45,x-} a_tr41
+_A>_ 2 {-# L #-}
+IMonadOk{-ra,x-}{i} =
+    _/\_ $x0_ts1mb -> \ $x1_s1ix  ::  IMonadState{-r44,x-}
+			{-# L #-}
+			$x1_s1ix $x2_s1iw  ::  $x0_ts1mb
+				 {-# L #-}
+				 $x2_s1iw ->
+	IMonadOk{-ra,x-}{i} {_@_ $x0_ts1mb $x1_s1ix $x2_s1iw}
+returnI{-rf,x-}{i}  ::  _forall_
+			[taEj]
+			=>
+			taEj -> IMonadState{-r44,x-} -> IMonadReturn{-r45,x-} taEj
+_A>_ 2 {-# L #-}
+returnI{-rf,x-}{i} =
+    _/\_ $x0_ts1mf -> \ $x1_s1iv  ::  $x0_ts1mf
+			{-# L #-}
+			$x1_s1iv $x2_s1iu  ::  IMonadState{-r44,x-}
+				 {-# L #-}
+				 $x2_s1iu ->
+	IMonadOk{-ra,x-}{i} {_@_ $x0_ts1mf $x2_s1iu $x1_s1iv}
+IMonadFail{-r9,x-}{i}  ::  _forall_
+			   [a_tr41]
+			   =>
+			   IMonadState{-r44,x-}
+			   -> PrelBase.String{-rgk,p-}
+			   -> IMonadReturn{-r45,x-} a_tr41
+_A>_ 2 {-# L #-}
+IMonadFail{-r9,x-}{i} =
+    _/\_ $x0_ts1mj -> \ $x1_s1it  ::  IMonadState{-r44,x-}
+			{-# L #-}
+			$x1_s1it $x2_s1is  ::  PrelBase.String{-rgk,p-}
+				 {-# L #-}
+				 $x2_s1is ->
+	IMonadFail{-r9,x-}{i} {_@_ $x0_ts1mj $x1_s1it $x2_s1is}
+thenI{-rd,x-}{i}  ::  _forall_
+		      [taDN taDA taDE]
+		      =>
+		      (taDN -> IMonadReturn{-r45,x-} taDE)
+		      -> (taDE -> IMonadState{-r44,x-} -> IMonadReturn{-r45,x-} taDA)
+		      -> taDN
+		      -> IMonadReturn{-r45,x-} taDA
+_A>_ 3 {-# L #-}
+thenI{-rd,x-}{i} =
+    _/\_ $x0_ts1mt $x1_ts1mv $x2_ts1mu -> \ $x3_s1hN  ::  $x0_ts1mt
+							  -> IMonadReturn{-r45,x-} $x2_ts1mu
+					    {-# L #-}
+					    $x3_s1hN $x4_s1i5  ::  $x2_ts1mu
+								   -> IMonadState{-r44,x-}
+								   -> IMonadReturn{-r45,x-} $x1_ts1mv
+						     {-# L #-}
+						     $x4_s1i5 $x5_s1ir  ::  $x0_ts1mt
+							      {-# L #-}
+							      $x5_s1ir ->
+	case $x3_s1hN $x5_s1ir of {
+	  IMonadFail{-r9,x-}{i} $x6_s1iz $x7_s1iy ->
+	      IMonadFail{-r9,x-}{i} {_@_ $x1_ts1mv $x6_s1iz $x7_s1iy};
+	  IMonadOk{-ra,x-}{i} $x8_s1iB $x9_s1iA ->
+	      $x4_s1i5 $x9_s1iA $x8_s1iB;
+	}
+Rec {
+$g0_s11s{n}  ::  _forall_
+		 [tsXl tsXm]
+		 =>
+		 (tsXl -> IMonadState{-r44,x-} -> IMonadReturn{-r45,x-} tsXm)
+		 -> [tsXl]
+		 -> IMonadState{-r44,x-}
+		 -> IMonadReturn{-r45,x-} [tsXm]
+_A>_ 2 {-# L #-}
+$g0_s11s{n} =
+    _/\_ $x0_ts1iP $x1_ts1iQ -> \ $x2_s1jb  ::  $x0_ts1iP
+						-> IMonadState{-r44,x-}
+						-> IMonadReturn{-r45,x-} $x1_ts1iQ
+				  {-# L #-}
+				  $x2_s1jb $x3_s1iq  ::  [$x0_ts1iP]
+					   {-# L #-}
+					   $x3_s1iq ->
+	case $x3_s1iq of {
+	  PrelBase.[]{-5i,w-}{i} ->
+	      let {
+		$x4_s1mx  ::  [$x1_ts1iQ]
+		_A>_ 0 {-# L #-}
+		$x4_s1mx =
+		    PrelBase.[]{-5i,w-}{i} {_@_ $x1_ts1iQ}
+	      } in 
+		\ $x5_s1mw  ::  IMonadState{-r44,x-}
+		  {-# L #-}
+		  $x5_s1mw ->
+		    IMonadOk{-ra,x-}{i} {_@_ [$x1_ts1iQ] $x5_s1mw $x4_s1mx};
+	  PrelBase.:{-55,w-}{i} $x6_s1jc $x7_s1jd ->
+	      let {
+		$x8_s1jn  ::  IMonadState{-r44,x-}
+			      -> IMonadReturn{-r45,x-} $x1_ts1iQ
+		_A>_ 0 {-# L #-}
+		$x8_s1jn =
+		    $x2_s1jb $x6_s1jc
+	      } in 
+		\ $x9_s1my  ::  IMonadState{-r44,x-}
+		  {-# L #-}
+		  $x9_s1my ->
+		    case $x8_s1jn $x9_s1my of {
+		      IMonadFail{-r9,x-}{i} $xa_s1mz $xb_s1mA ->
+			  IMonadFail{-r9,x-}{i} {_@_ [$x1_ts1iQ] $xa_s1mz $xb_s1mA};
+		      IMonadOk{-ra,x-}{i} $xc_s1mB $xd_s1kg ->
+			  let {
+			    $xe_s1jP  ::  IMonadState{-r44,x-}
+					  -> IMonadReturn{-r45,x-} [$x1_ts1iQ]
+			    _A>_ 0 {-# L #-}
+			    $xe_s1jP =
+				$g0_s11s{n} _@_ $x0_ts1iP _@_ $x1_ts1iQ $x2_s1jb $x7_s1jd
+			  } in 
+			    case
+				$g0_s11s{n} _@_ $x0_ts1iP _@_ $x1_ts1iQ $x2_s1jb $x7_s1jd $xc_s1mB
+			    of {
+			      IMonadFail{-r9,x-}{i} $xf_s1mC $xg_s1mD ->
+				  IMonadFail{-r9,x-}{i} {_@_ [$x1_ts1iQ] $xf_s1mC $xg_s1mD};
+			      IMonadOk{-ra,x-}{i} $xh_s1mE $xi_s1mF ->
+				  let {
+				    $xj_s1mG  ::  [$x1_ts1iQ]
+				    _A>_ 0 {-# L #-}
+				    $xj_s1mG =
+					PrelBase.:{-55,w-}{i} {_@_ $x1_ts1iQ $xd_s1kg $xi_s1mF}
+				  } in  IMonadOk{-ra,x-}{i} {_@_ [$x1_ts1iQ] $xh_s1mE $xj_s1mG};
+			    };
+		    };
+	}
+end Rec }
+mapI{-rb,x-}{i}  ::  _forall_
+		     [taEH taF6]
+		     =>
+		     (taEH -> IMonadState{-r44,x-} -> IMonadReturn{-r45,x-} taF6)
+		     -> [taEH]
+		     -> IMonadState{-r44,x-}
+		     -> IMonadReturn{-r45,x-} [taF6]
+_A>_ 2 {-# L #-}
+mapI{-rb,x-}{i} =
+    _/\_ $x0_ts1mH $x1_ts1mI -> $g0_s11s{n} _@_ $x0_ts1mH _@_ $x1_ts1mI
+failI{-re,x-}{i}  ::  _forall_
+		      [taE3]
+		      =>
+		      PrelBase.String{-rgk,p-}
+		      -> IMonadState{-r44,x-}
+		      -> IMonadReturn{-r45,x-} taE3
+_A>_ 2 {-# L #-}
+failI{-re,x-}{i} =
+    _/\_ $x0_ts1mM -> \ $x1_s1l0  ::  PrelBase.String{-rgk,p-}
+			{-# L #-}
+			$x1_s1l0 $x2_s1kZ  ::  IMonadState{-r44,x-}
+				 {-# L #-}
+				 $x2_s1kZ ->
+	IMonadFail{-r9,x-}{i} {_@_ $x0_ts1mM $x2_s1kZ $x1_s1l0}
+$g1_aOn  ::  IMonadState{-r44,x-}
+	     -> IMonadState{-r44,x-}
+	     -> IMonadState{-r44,x-}
+_A>_ 0 {-# L #-}
+$g1_aOn =
+    case
+	PrelBase.$d4{-rbh,p-}
+    of {
+    PrelTup.(,,,,,,,,,,){-6b,w-}{i} $x0_s1lt $x1_s1lu $x2_s1lv $x3_s1ls $x4_s1lw $x5_s1lx $x6_s1ly $x7_s1lz $x8_s1lA $x9_s1lB $xa_s1lC  ->
+    $x3_s1ls;}
+tickI{-rc,x-}  ::  IMonadState{-r44,x-}
+		   -> IMonadState{-r44,x-}
+		   -> IMonadReturn{-r45,x-} PrelBase.(){-40,W-}
+_A>_ 2 {-# L #-}
+tickI{-rc,x-} =
+    \ $x0_s1mN  ::  IMonadState{-r44,x-}
+      {-# L #-}
+      $x0_s1mN $x1_s1mO  ::  IMonadState{-r44,x-}
+	       {-# L #-}
+	       $x1_s1mO ->
+	let {
+	  $x2_s1mP  ::  IMonadState{-r44,x-}
+	  _A>_ 0 {-# L #-}
+	  $x2_s1mP =
+	      $g1_aOn $x1_s1mO $x0_s1mN
+	} in 
+	  IMonadOk{-ra,x-}{i}
+	      {_@_ PrelBase.(){-40,W-} $x2_s1mP PrelBase.(){-60,w-}{i}}
diff --git a/ghc/tests/specialise/Makefile b/ghc/tests/specialise/Makefile
index 95f62e1ede823683579db2cf390ec02f3d68be6a..cc4724f438b2b6e890ed0b51139c164354e7650d 100644
--- a/ghc/tests/specialise/Makefile
+++ b/ghc/tests/specialise/Makefile
@@ -1,5 +1,6 @@
-TOP = ../../..
+TOP = ..
 include $(TOP)/mk/boilerplate.mk
+
 SUBDIRS = $(wildcard spec* code* clausify*)
-include $(TARGET_MK)
 
+include $(TOP)/mk/target.mk
diff --git a/ghc/tests/stranal/Makefile b/ghc/tests/stranal/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..5268832ad4a75e41f4d135d235defca8d9f818bb
--- /dev/null
+++ b/ghc/tests/stranal/Makefile
@@ -0,0 +1,7 @@
+TOP = ..
+include $(TOP)/mk/boilerplate.mk
+
+SUBDIRS = should_compile
+
+include $(TOP)/mk/target.mk
+
diff --git a/ghc/tests/stranal/should_compile/Makefile b/ghc/tests/stranal/should_compile/Makefile
index 4cecde8dd51731b9c47556d76023248972b5931d..525335c25de4017d604d3a074314137f31712d01 100644
--- a/ghc/tests/stranal/should_compile/Makefile
+++ b/ghc/tests/stranal/should_compile/Makefile
@@ -1,16 +1,7 @@
-TOP = ../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.lhs)
-
-SRC_RUNTEST_OPTS += -accept-output -o1 $*.stdout -o2 $*.stderr -x 0
 HC_OPTS += -noC -O -ddump-simpl -dcore-lint -dppr-user
 
-%.o : %.lhs
-
-%.o : %.lhs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
-
-all :: $(HS_OBJS)
-
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/stranal/should_compile/default.stderr b/ghc/tests/stranal/should_compile/default.stderr
index 1b195587619fb45eb2ef613681fdf42a90e456bf..7f471e09737253244b251b649dab9e54e24e4519 100644
--- a/ghc/tests/stranal/should_compile/default.stderr
+++ b/ghc/tests/stranal/should_compile/default.stderr
@@ -1,133 +1,84 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`$d5'  :: 
-    `{PrelBase.Eval (Pair a{-r3U-} b{-r3V-})}'
+`$d5'  ::  `{PrelBase.Eval (Pair a b)}'
 `$d5' =
-    _/\_ `a{-s1gp-}' `b{-s1gq-}' ->
-	`PrelBase.void'
-`$d4'  :: 
-    `{PrelBase.Eval (LList alpha{-r3S-})}'
+    _/\_ `$x0' `$x1' -> `PrelBase.void'
+`$d4'  ::  `{PrelBase.Eval (LList alpha)}'
 `$d4' =
-    _/\_ `alpha{-s1gr-}' ->
-	`PrelBase.void'
-`$d2'  :: 
-    `{PrelBase.Eval (Tree x{-r3P-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d2'  ::  `{PrelBase.Eval (Tree x)}'
 `$d2' =
-    _/\_ `x{-s1gs-}' ->
-	`PrelBase.void'
-`$d1'  :: 
-    `{PrelBase.Eval (A a{-r3N-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (A a)}'
 `$d1' =
-    _/\_ `a{-s1gt-}' ->
-	`PrelBase.void'
-`MkPair'  :: 
-    `a{-r3U-} -> b{-r3V-} -> Pair a{-r3U-} b{-r3V-}'
-`MkPair' =
-    _/\_ `a{-s1gc-}' `b{-s1gd-}' -> \ `tpl'  :: 
-					  `a{-s1gc-}'
-				      `tpl' `tpl'  :: 
-						`b{-s1gd-}'
-					    `tpl' ->
-	`MkPair'
-	    {_@_ `a{-s1gc-}' _@_ `b{-s1gd-}' `tpl' `tpl'}
-`MkA'  :: 
-    `a{-r3N-} -> A a{-r3N-} -> A a{-r3N-}'
+    _/\_ `$x0' -> `PrelBase.void'
+`MkA'  ::  `a -> A a -> A a'
 `MkA' =
-    _/\_ `a{-s1ge-}' -> \ `tpl'  :: 
-			      `a{-s1ge-}'
-			  `tpl' `tpl'  :: 
-				    `A a{-s1ge-}'
-				`tpl' ->
-	`MkA'
-	    {_@_ `a{-s1ge-}' `tpl' `tpl'}
-`FF'  :: 
-    `Boolean'
-`FF' =
-    `FF'
-	{}
-`TT'  :: 
-    `Boolean'
-`TT' =
-    `TT'
-	{}
-`Nill'  :: 
-    `LList alpha{-r3S-}'
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `A $x0'
+			  `$x2' ->
+	`MkA' {_@_ `$x0' `$x1' `$x2'}
+`MkPair'  ::  `a -> b -> Pair a b'
+`MkPair' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0'
+			  `$x2' `$x3'  ::  `$x1'
+				`$x3' ->
+	`MkPair' {_@_ `$x0' _@_ `$x1' `$x2' `$x3'}
+`Leaf'  ::  `x -> Tree x'
+`Leaf' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' ->
+	`Leaf' {_@_ `$x0' `$x1'}
+`Node'  ::  `Tree x -> Tree x -> Tree x'
+`Node' =
+    _/\_ `$x0' -> \ `$x1'  ::  `Tree $x0'
+		    `$x1' `$x2'  ::  `Tree $x0'
+			  `$x2' ->
+	`Node' {_@_ `$x0' `$x1' `$x2'}
+`Zero'  ::  `Nat'
+`Zero' =
+    `Zero' {}
+`Succ'  ::  `Nat -> Nat'
+`Succ' =
+    \ `$x0'  ::  `Nat'
+      `$x0' ->
+	`Succ' {`$x0'}
+`Nill'  ::  `LList alpha'
 `Nill' =
-    _/\_ `alpha{-s1gf-}' ->
-	`Nill'
-	    {_@_ `alpha{-s1gf-}'}
-`Conss'  :: 
-    `alpha{-r3S-} -> LList alpha{-r3S-} -> LList alpha{-r3S-}'
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `alpha -> LList alpha -> LList alpha'
 `Conss' =
-    _/\_ `alpha{-s1gg-}' -> \ `tpl'  :: 
-				  `alpha{-s1gg-}'
-			      `tpl' `tpl'  :: 
-					`LList alpha{-s1gg-}'
-				    `tpl' ->
-	`Conss'
-	    {_@_ `alpha{-s1gg-}' `tpl' `tpl'}
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
 Rec {
-`append'  :: 
-    `LList a{-aH9-} -> LList a{-aH9-} -> LList a{-aH9-}'
+`append'  ::  `LList taC4 -> LList taC4 -> LList taC4'
 `append' =
-    _/\_ `a{-s1gh-}' -> \ `xs'  :: 
-			      `LList a{-s1gh-}'
-			  `xs' `ys'  :: 
-				   `LList a{-s1gh-}'
-			       `ys' ->
-	case `xs' of {
-	  `Nill' ->
-	      `ys';
-	  `Conss' `z' `zs' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `LList $x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	case `$x1' of {
+	  `Nill' -> `$x2';
+	  `Conss' `$x3' `$x4' ->
 	      let {
-		`ds'  :: 
-		    `LList a{-s1gh-}'
-		`ds' =
-		    `append'
-			_@_ `a{-s1gh-}' `zs' `ys'
-	      } in 
-		`Conss'
-		    {_@_ `a{-s1gh-}' `z' `ds'};
+		`$x5'  ::  `LList $x0'
+		`$x5' =
+		    `append' _@_ `$x0' `$x4' `$x2'
+	      } in  `Conss' {_@_ `$x0' `$x3' `$x5'};
 	}
 end Rec }
-`Zero'  :: 
-    `Nat'
-`Zero' =
-    `Zero'
-	{}
-`Succ'  :: 
-    `Nat -> Nat'
-`Succ' =
-    \ `tpl'  :: 
-	  `Nat'
-      `tpl' ->
-	`Succ'
-	    {`tpl'}
-`Leaf'  :: 
-    `x{-r3P-} -> Tree x{-r3P-}'
-`Leaf' =
-    _/\_ `x{-s1gl-}' -> \ `tpl'  :: 
-			      `x{-s1gl-}'
-			  `tpl' ->
-	`Leaf'
-	    {_@_ `x{-s1gl-}' `tpl'}
-`Node'  :: 
-    `Tree x{-r3P-} -> Tree x{-r3P-} -> Tree x{-r3P-}'
-`Node' =
-    _/\_ `x{-s1go-}' -> \ `tpl'  :: 
-			      `Tree x{-s1go-}'
-			  `tpl' `tpl'  :: 
-				    `Tree x{-s1go-}'
-				`tpl' ->
-	`Node'
-	    {_@_ `x{-s1go-}' `tpl' `tpl'}
-`$d6'  :: 
-    `{PrelBase.Eval Boolean}'
+`FF'  ::  `Boolean'
+`FF' =
+    `FF' {}
+`TT'  ::  `Boolean'
+`TT' =
+    `TT' {}
+`$d6'  ::  `{PrelBase.Eval Boolean}'
 `$d6' =
     `PrelBase.void'
-`$d3'  :: 
-    `{PrelBase.Eval Nat}'
+`$d3'  ::  `{PrelBase.Eval Nat}'
 `$d3' =
     `PrelBase.void'
diff --git a/ghc/tests/stranal/should_compile/fact.stderr b/ghc/tests/stranal/should_compile/fact.stderr
index d4f4b0f1822b4a581cb844b2bb6a167a6c646824..4b4d5fc1c2c83a9afb3ae32fd19e5fe3f8f4a700 100644
--- a/ghc/tests/stranal/should_compile/fact.stderr
+++ b/ghc/tests/stranal/should_compile/fact.stderr
@@ -1,35 +1,21 @@
 
 
---================================================================================
+================================================================================
 Simplified:
 Rec {
-`s1BQ'  :: 
-    `GHC.Int# -> PrelBase.Int'
-`s1BQ' =
-    \ `ww'  :: 
-	  `GHC.Int#'
-      `ww' ->
-	case# `ww' of {
-	  0 ->
-	      `PrelBase.I#'
-		  {2};
-	  `s' ->
-	      case
-		  `s1BQ'
-		      `ww'
-	      of {
-	      `PrelBase.I#' `s1tCY'  ->
-	      case# *#! `s1tCY' `ww' of { `s1tDv' ->
-	      `PrelBase.I#'
-		  {`s1tDv'};};};
+`$g0'  ::  `GHC.Int# -> PrelBase.Int'
+`$g0' =
+    \ `$x0'  ::  `GHC.Int#'
+      `$x0' ->
+	case# `$x0' of {
+	  0 -> `PrelBase.I#' {2};
+	  `$x1' ->
+	      case `$g0' `$x0' of { `PrelBase.I#' `$x2'  ->
+	      case# *#! `$x2' `$x0' of { `$x3' -> `PrelBase.I#' {`$x3'};};};
 	}
 end Rec }
-`fact'  :: 
-    `PrelBase.Int -> PrelBase.Int'
+`fact'  ::  `PrelBase.Int -> PrelBase.Int'
 `fact' =
-    \ `n'  :: 
-	  `PrelBase.Int'
-      `n' ->
-	case `n' of { `PrelBase.I#' `ww'  ->
-	`s1BQ'
-	    `ww';}
+    \ `$x0'  ::  `PrelBase.Int'
+      `$x0' ->
+	case `$x0' of { `PrelBase.I#' `$x1'  -> `$g0' `$x1';}
diff --git a/ghc/tests/stranal/should_compile/fun.hs b/ghc/tests/stranal/should_compile/fun.hs
new file mode 100644
index 0000000000000000000000000000000000000000..5bab460f3fe460f136ec9845ca4c19edb4d616fb
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/fun.hs
@@ -0,0 +1,6 @@
+module Test where
+data Fun = MkFun (Fun -> Fun)
+data LList a = Nill | Conss a (LList a)
+
+g :: Fun -> Fun
+g f = f
diff --git a/ghc/tests/stranal/should_compile/fun.lhs b/ghc/tests/stranal/should_compile/fun.lhs
deleted file mode 100644
index 8ab08329633e9589667aaed16dd32cc0b79b87f7..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/fun.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> module Test where
-> data Fun = MkFun (Fun -> Fun)
-> data LList a = Nill | Conss a (LList a)
-
-> id :: Fun -> Fun
-> id f = f
diff --git a/ghc/tests/stranal/should_compile/fun.stderr b/ghc/tests/stranal/should_compile/fun.stderr
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..df85b425a929a773beb949a21c7cf023116de682 100644
--- a/ghc/tests/stranal/should_compile/fun.stderr
+++ b/ghc/tests/stranal/should_compile/fun.stderr
@@ -0,0 +1,29 @@
+
+
+================================================================================
+Simplified:
+`$d1'  ::  `{PrelBase.Eval (LList a)}'
+`$d1' =
+    _/\_ `$x0' -> `PrelBase.void'
+`MkFun'  ::  `(Fun -> Fun) -> Fun'
+`MkFun' =
+    \ `$x0'  ::  `Fun -> Fun'
+      `$x0' ->
+	`MkFun' {`$x0'}
+`Nill'  ::  `LList a'
+`Nill' =
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `a -> LList a -> LList a'
+`Conss' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
+`$d2'  ::  `{PrelBase.Eval Fun}'
+`$d2' =
+    `PrelBase.void'
+`g'  ::  `Fun -> Fun'
+`g' =
+    \ `$x0'  ::  `Fun'
+      `$x0' ->
+	`$x0'
diff --git a/ghc/tests/stranal/should_compile/goo.hs b/ghc/tests/stranal/should_compile/goo.hs
new file mode 100644
index 0000000000000000000000000000000000000000..00282bb79e5ecb96ce143fd33e45cd04e9dd228d
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/goo.hs
@@ -0,0 +1,10 @@
+module Test where
+data Goo a = Gsimpl | Gcompl ([Goo a]) 
+data Moo a b = Msimple | Mcompl (Moo b a)
+
+
+idGoo :: Goo a -> Goo a
+idGoo x = x
+
+idMoo :: Moo a b -> Moo a b
+idMoo x = x
diff --git a/ghc/tests/stranal/should_compile/goo.lhs b/ghc/tests/stranal/should_compile/goo.lhs
deleted file mode 100644
index c58b9987613e5fa554f805f5d1528edec3292d2a..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/goo.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> module Test where
-> data Goo a = Gsimpl | Gcompl ([Goo a]) 
-> data Moo a b = Msimple | Mcompl (Moo b a)
-
-
-> idGoo :: Goo a -> Goo a
-> idGoo x = x
-
-> idMoo :: Moo a -> Moo a
-> idMoo x = x
diff --git a/ghc/tests/stranal/should_compile/goo.stderr b/ghc/tests/stranal/should_compile/goo.stderr
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7a750e5caeed2333b4145e96b2eaa3b835e5d47c 100644
--- a/ghc/tests/stranal/should_compile/goo.stderr
+++ b/ghc/tests/stranal/should_compile/goo.stderr
@@ -0,0 +1,36 @@
+
+
+================================================================================
+Simplified:
+`$d2'  ::  `{PrelBase.Eval (Goo a)}'
+`$d2' =
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (Moo a b)}'
+`$d1' =
+    _/\_ `$x0' `$x1' -> `PrelBase.void'
+`idMoo'  ::  `Moo taBA taBB -> Moo taBA taBB'
+`idMoo' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `Moo $x0 $x1'
+			  `$x2' ->
+	`$x2'
+`idGoo'  ::  `Goo taBL -> Goo taBL'
+`idGoo' =
+    _/\_ `$x0' -> \ `$x1'  ::  `Goo $x0'
+		    `$x1' ->
+	`$x1'
+`Msimple'  ::  `Moo a b'
+`Msimple' =
+    _/\_ `$x0' `$x1' -> `Msimple' {_@_ `$x0' _@_ `$x1'}
+`Mcompl'  ::  `Moo b a -> Moo a b'
+`Mcompl' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `Moo $x1 $x0'
+			  `$x2' ->
+	`Mcompl' {_@_ `$x0' _@_ `$x1' `$x2'}
+`Gsimpl'  ::  `Goo a'
+`Gsimpl' =
+    _/\_ `$x0' -> `Gsimpl' {_@_ `$x0'}
+`Gcompl'  ::  `[Goo a] -> Goo a'
+`Gcompl' =
+    _/\_ `$x0' -> \ `$x1'  ::  `[Goo $x0]'
+		    `$x1' ->
+	`Gcompl' {_@_ `$x0' `$x1'}
diff --git a/ghc/tests/stranal/should_compile/ins.hs b/ghc/tests/stranal/should_compile/ins.hs
new file mode 100644
index 0000000000000000000000000000000000000000..8f61d07b01c12030932b1d526a565112c3ad5226
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/ins.hs
@@ -0,0 +1,27 @@
+--!! TEST OF DEFACTORISATION FOR FUNCTIONS THAT DROP 
+--!!             POLYMORPHIC VARIABLES
+
+module Test where
+data Boolean = FF | TT
+data Pair a b = MkPair a b
+data LList alpha = Nill | Conss alpha (LList alpha) 
+data Nat = Zero | Succ Nat
+data Tree x = Leaf x | Node (Tree x) (Tree x) 
+data A a = MkA a (A a) 
+
+append :: LList a -> LList a -> LList a
+append  xs ys  = case xs of
+                  Nill -> ys 
+                  Conss z zs  -> Conss z (append zs ys) 
+
+-- The following function drops @b@.
+
+flat :: Tree (Pair a b) -> LList a
+flat t =  case t of
+              Leaf (MkPair a b) -> Conss a Nill 
+              Node l r -> append (flat l) (flat r)
+
+fl :: Boolean -> LList Boolean
+fl x = flat (Leaf (MkPair TT Zero)) 
+
+
diff --git a/ghc/tests/stranal/should_compile/ins.lhs b/ghc/tests/stranal/should_compile/ins.lhs
deleted file mode 100644
index 71f8ce23ab3e27752ed02bb0d0fc68e218329939..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/ins.lhs
+++ /dev/null
@@ -1,27 +0,0 @@
-TEST OF DEFACTORISATION FOR FUNCTIONS THAT DROP 
-             POLYMORPHIC VARIABLES
-
-> module Test where
-> data Boolean = FF | TT
-> data Pair a b = MkPair a b
-> data LList alpha = Nill | Conss alpha (LList alpha) 
-> data Nat = Zero | Succ Nat
-> data Tree x = Leaf x | Node (Tree x) (Tree x) 
-> data A a = MkA a (A a) 
->
-> append :: LList a -> LList a -> LList a
-> append  xs ys  = case xs of
->                   Nill -> ys 
->                   Conss z zs  -> Conss z (append zs ys) 
-
-The following function drops @b@.
-
-> flat :: Tree (Pair a b) -> LList a
-> flat t =  case t of
->               Leaf (MkPair a b) -> Conss a Nill 
->               Node l r -> append (flat l) (flat r)
->
-> fl :: Boolean -> LList Boolean
-> fl x = flat (Leaf (MkPair TT Zero)) 
->
-
diff --git a/ghc/tests/stranal/should_compile/ins.stderr b/ghc/tests/stranal/should_compile/ins.stderr
index 641eda7fc0c441b08d56cbf358dc82c61a4c4b6c..5216818f733ae53f0e7fb4d7beba986ce9ac0d45 100644
--- a/ghc/tests/stranal/should_compile/ins.stderr
+++ b/ghc/tests/stranal/should_compile/ins.stderr
@@ -1,191 +1,121 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`$d5'  :: 
-    `{PrelBase.Eval (Pair a{-r4b-} b{-r4c-})}'
+`$d5'  ::  `{PrelBase.Eval (Pair a b)}'
 `$d5' =
-    _/\_ `a{-s1NX-}' `b{-s1NY-}' ->
-	`PrelBase.void'
-`$d4'  :: 
-    `{PrelBase.Eval (LList alpha{-r49-})}'
+    _/\_ `$x0' `$x1' -> `PrelBase.void'
+`$d4'  ::  `{PrelBase.Eval (LList alpha)}'
 `$d4' =
-    _/\_ `alpha{-s1NZ-}' ->
-	`PrelBase.void'
-`$d2'  :: 
-    `{PrelBase.Eval (Tree x{-r46-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d2'  ::  `{PrelBase.Eval (Tree x)}'
 `$d2' =
-    _/\_ `x{-s1O0-}' ->
-	`PrelBase.void'
-`$d1'  :: 
-    `{PrelBase.Eval (A a{-r44-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (A a)}'
 `$d1' =
-    _/\_ `a{-s1O1-}' ->
-	`PrelBase.void'
-`MkPair'  :: 
-    `a{-r4b-} -> b{-r4c-} -> Pair a{-r4b-} b{-r4c-}'
-`MkPair' =
-    _/\_ `a{-s1NI-}' `b{-s1NJ-}' -> \ `tpl'  :: 
-					  `a{-s1NI-}'
-				      `tpl' `tpl'  :: 
-						`b{-s1NJ-}'
-					    `tpl' ->
-	`MkPair'
-	    {_@_ `a{-s1NI-}' _@_ `b{-s1NJ-}' `tpl' `tpl'}
-`MkA'  :: 
-    `a{-r44-} -> A a{-r44-} -> A a{-r44-}'
+    _/\_ `$x0' -> `PrelBase.void'
+`MkA'  ::  `a -> A a -> A a'
 `MkA' =
-    _/\_ `a{-s1NK-}' -> \ `tpl'  :: 
-			      `a{-s1NK-}'
-			  `tpl' `tpl'  :: 
-				    `A a{-s1NK-}'
-				`tpl' ->
-	`MkA'
-	    {_@_ `a{-s1NK-}' `tpl' `tpl'}
-`FF'  :: 
-    `Boolean'
-`FF' =
-    `FF'
-	{}
-`TT'  :: 
-    `Boolean'
-`TT' =
-    `TT'
-	{}
-`Nill'  :: 
-    `LList alpha{-r49-}'
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `A $x0'
+			  `$x2' ->
+	`MkA' {_@_ `$x0' `$x1' `$x2'}
+`MkPair'  ::  `a -> b -> Pair a b'
+`MkPair' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0'
+			  `$x2' `$x3'  ::  `$x1'
+				`$x3' ->
+	`MkPair' {_@_ `$x0' _@_ `$x1' `$x2' `$x3'}
+`Leaf'  ::  `x -> Tree x'
+`Leaf' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' ->
+	`Leaf' {_@_ `$x0' `$x1'}
+`Node'  ::  `Tree x -> Tree x -> Tree x'
+`Node' =
+    _/\_ `$x0' -> \ `$x1'  ::  `Tree $x0'
+		    `$x1' `$x2'  ::  `Tree $x0'
+			  `$x2' ->
+	`Node' {_@_ `$x0' `$x1' `$x2'}
+`Zero'  ::  `Nat'
+`Zero' =
+    `Zero' {}
+`Succ'  ::  `Nat -> Nat'
+`Succ' =
+    \ `$x0'  ::  `Nat'
+      `$x0' ->
+	`Succ' {`$x0'}
+`Nill'  ::  `LList alpha'
 `Nill' =
-    _/\_ `alpha{-s1NL-}' ->
-	`Nill'
-	    {_@_ `alpha{-s1NL-}'}
-`Conss'  :: 
-    `alpha{-r49-} -> LList alpha{-r49-} -> LList alpha{-r49-}'
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `alpha -> LList alpha -> LList alpha'
 `Conss' =
-    _/\_ `alpha{-s1NM-}' -> \ `tpl'  :: 
-				  `alpha{-s1NM-}'
-			      `tpl' `tpl'  :: 
-					`LList alpha{-s1NM-}'
-				    `tpl' ->
-	`Conss'
-	    {_@_ `alpha{-s1NM-}' `tpl' `tpl'}
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
 Rec {
-`append'  :: 
-    `LList a{-aHq-} -> LList a{-aHq-} -> LList a{-aHq-}'
+`append'  ::  `LList taCl -> LList taCl -> LList taCl'
 `append' =
-    _/\_ `a{-s1NN-}' -> \ `xs'  :: 
-			      `LList a{-s1NN-}'
-			  `xs' `ys'  :: 
-				   `LList a{-s1NN-}'
-			       `ys' ->
-	case `xs' of {
-	  `Nill' ->
-	      `ys';
-	  `Conss' `z' `zs' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `LList $x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	case `$x1' of {
+	  `Nill' -> `$x2';
+	  `Conss' `$x3' `$x4' ->
 	      let {
-		`ds'  :: 
-		    `LList a{-s1NN-}'
-		`ds' =
-		    `append'
-			_@_ `a{-s1NN-}' `zs' `ys'
-	      } in 
-		`Conss'
-		    {_@_ `a{-s1NN-}' `z' `ds'};
+		`$x5'  ::  `LList $x0'
+		`$x5' =
+		    `append' _@_ `$x0' `$x4' `$x2'
+	      } in  `Conss' {_@_ `$x0' `$x3' `$x5'};
 	}
 end Rec }
 Rec {
-`flat'  :: 
-    `Tree (Pair a{-aHT-} b{-aHU-}) -> LList a{-aHT-}'
+`flat'  ::  `Tree (Pair taCO taCP) -> LList taCO'
 `flat' =
-    _/\_ `b{-s1NQ-}' `a{-s1NP-}' -> \ `s'  :: 
-					  `Tree (Pair a{-s1NP-} b{-s1NQ-})'
-				      `s' ->
-	case `s' of {
-	  `Leaf' `ds' ->
-	      case `ds' of { `MkPair' `a' `b'  ->
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `Tree (Pair $x1 $x0)'
+			  `$x2' ->
+	case `$x2' of {
+	  `Leaf' `$x3' ->
+	      case `$x3' of { `MkPair' `$x4' `$x5'  ->
 	      let {
-		`ds'  :: 
-		    `LList a{-s1NP-}'
-		`ds' =
-		    `Nill'
-			{_@_ `a{-s1NP-}'}
-	      } in 
-		`Conss'
-		    {_@_ `a{-s1NP-}' `a' `ds'};};
-	  `Node' `l' `r' ->
-	      case
-		  `flat'
-		      _@_ `b{-s1NQ-}' _@_ `a{-s1NP-}' `l'
-	      of {
-	      `ds' ->
+		`$x6'  ::  `LList $x1'
+		`$x6' =
+		    `Nill' {_@_ `$x1'}
+	      } in  `Conss' {_@_ `$x1' `$x4' `$x6'};};
+	  `Node' `$x7' `$x8' ->
 	      let {
-		`ds'  :: 
-		    `LList a{-s1NP-}'
-		`ds' =
-		    `flat'
-			_@_ `b{-s1NQ-}' _@_ `a{-s1NP-}' `r'
+		`$x9'  ::  `LList $x1'
+		`$x9' =
+		    `flat' _@_ `$x0' _@_ `$x1' `$x8'
 	      } in 
-		`append'
-		    _@_ `a{-s1NP-}' `ds' `ds';};
+		case `flat' _@_ `$x0' _@_ `$x1' `$x7' of { `$xa' ->
+		`append' _@_ `$x1' `$xa' `$x9';};
 	}
 end Rec }
-`Zero'  :: 
-    `Nat'
-`Zero' =
-    `Zero'
-	{}
-`Succ'  :: 
-    `Nat -> Nat'
-`Succ' =
-    \ `tpl'  :: 
-	  `Nat'
-      `tpl' ->
-	`Succ'
-	    {`tpl'}
-`Leaf'  :: 
-    `x{-r46-} -> Tree x{-r46-}'
-`Leaf' =
-    _/\_ `x{-s1NU-}' -> \ `tpl'  :: 
-			      `x{-s1NU-}'
-			  `tpl' ->
-	`Leaf'
-	    {_@_ `x{-s1NU-}' `tpl'}
-`Node'  :: 
-    `Tree x{-r46-} -> Tree x{-r46-} -> Tree x{-r46-}'
-`Node' =
-    _/\_ `x{-s1NV-}' -> \ `tpl'  :: 
-			      `Tree x{-s1NV-}'
-			  `tpl' `tpl'  :: 
-				    `Tree x{-s1NV-}'
-				`tpl' ->
-	`Node'
-	    {_@_ `x{-s1NV-}' `tpl' `tpl'}
-`$d6'  :: 
-    `{PrelBase.Eval Boolean}'
+`FF'  ::  `Boolean'
+`FF' =
+    `FF' {}
+`TT'  ::  `Boolean'
+`TT' =
+    `TT' {}
+`$d6'  ::  `{PrelBase.Eval Boolean}'
 `$d6' =
     `PrelBase.void'
-`$d3'  :: 
-    `{PrelBase.Eval Nat}'
+`$d3'  ::  `{PrelBase.Eval Nat}'
 `$d3' =
     `PrelBase.void'
-`s1h2'  :: 
-    `Pair Boolean Nat'
-`s1h2' =
-    `MkPair'
-	{_@_ `Boolean' _@_ `Nat' `TT' `Zero'}
-`s1h7'  :: 
-    `Tree (Pair Boolean Nat)'
-`s1h7' =
-    `Leaf'
-	{_@_ (`Pair' `Boolean' `Nat') `s1h2'}
-`s1l4'  :: 
-    `LList Boolean'
-`s1l4' =
-    `flat'
-	_@_ `Nat' _@_ `Boolean' `s1h7'
-`fl'  :: 
-    `Boolean -> LList Boolean'
+`$g0'  ::  `Pair Boolean Nat'
+`$g0' =
+    `MkPair' {_@_ `Boolean' _@_ `Nat' `TT' `Zero'}
+`$g1'  ::  `Tree (Pair Boolean Nat)'
+`$g1' =
+    `Leaf' {_@_ (`Pair' `Boolean' `Nat') `$g0'}
+`$g2'  ::  `LList Boolean'
+`$g2' =
+    `flat' _@_ `Nat' _@_ `Boolean' `$g1'
+`fl'  ::  `Boolean -> LList Boolean'
 `fl' =
-    \ `x'  :: 
-	  `Boolean'
-      `x' ->
-	`s1l4'
+    \ `$x0'  ::  `Boolean'
+      `$x0' ->
+	`$g2'
diff --git a/ghc/tests/stranal/should_compile/map.hs b/ghc/tests/stranal/should_compile/map.hs
new file mode 100644
index 0000000000000000000000000000000000000000..f4ec1ec769b5b25cca7ae1376c34278e8abfca82
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/map.hs
@@ -0,0 +1,32 @@
+module Test where
+data Boolean = FF | TT
+data Pair a b = MkPair a b
+data LList alpha = Nill | Conss alpha (LList alpha) 
+data Nat = Zero | Succ Nat
+data Tree x = Leaf x | Node (Tree x) (Tree x) 
+data A a = MkA a (A a) 
+
+{-
+map :: (a -> b) -> [a] -> [b]
+map f xs = case xs of
+             []     -> []
+             (y:ys) -> (f y):(map f ys)
+
+map_ide :: [[a]] -> [[a]]
+map_ide = map (\x->x)
+-}
+
+my_id :: a -> a
+my_id x = x
+
+idNat :: Nat -> Nat
+idNat x = x
+
+idBool :: Boolean -> Boolean
+idBool x = x
+
+fun :: (a->b) -> a -> b
+fun f x = g f
+ where 
+  g f   = f x
+
diff --git a/ghc/tests/stranal/should_compile/map.lhs b/ghc/tests/stranal/should_compile/map.lhs
deleted file mode 100644
index 343e36ad47aa81691d6c43adeaebc823bb583cf2..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/map.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> module Test where
-> data Boolean = FF | TT
-> data Pair a b = MkPair a b
-> data LList alpha = Nill | Conss alpha (LList alpha) 
-> data Nat = Zero | Succ Nat
-> data Tree x = Leaf x | Node (Tree x) (Tree x) 
-> data A a = MkA a (A a) 
-
-> {-
-> map :: (a -> b) -> [a] -> [b]
-> map f xs = case xs of
->              []     -> []
->              (y:ys) -> (f y):(map f ys)
-
-> map_ide :: [[a]] -> [[a]]
-> map_ide = map (\x->x)
->-}
-
-> id :: a -> a
-> id x = x
-
-> idNat :: Nat -> Nat
-> idNat x = x
-
-> idBool :: Boolean -> Boolean
-> idBool x = x
-
-> fun :: (a->b) -> a -> b
-> fun f x = g f
->  where 
->   g f   = f x
-
diff --git a/ghc/tests/stranal/should_compile/map.stderr b/ghc/tests/stranal/should_compile/map.stderr
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..92701e8d21b02ce4fb497467d04b3951023744a9 100644
--- a/ghc/tests/stranal/should_compile/map.stderr
+++ b/ghc/tests/stranal/should_compile/map.stderr
@@ -0,0 +1,89 @@
+
+
+================================================================================
+Simplified:
+`$d5'  ::  `{PrelBase.Eval (Pair a b)}'
+`$d5' =
+    _/\_ `$x0' `$x1' -> `PrelBase.void'
+`$d4'  ::  `{PrelBase.Eval (LList alpha)}'
+`$d4' =
+    _/\_ `$x0' -> `PrelBase.void'
+`$d2'  ::  `{PrelBase.Eval (Tree x)}'
+`$d2' =
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (A a)}'
+`$d1' =
+    _/\_ `$x0' -> `PrelBase.void'
+`MkA'  ::  `a -> A a -> A a'
+`MkA' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `A $x0'
+			  `$x2' ->
+	`MkA' {_@_ `$x0' `$x1' `$x2'}
+`MkPair'  ::  `a -> b -> Pair a b'
+`MkPair' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0'
+			  `$x2' `$x3'  ::  `$x1'
+				`$x3' ->
+	`MkPair' {_@_ `$x0' _@_ `$x1' `$x2' `$x3'}
+`fun'  ::  `(taCj -> taCk) -> taCj -> taCk'
+`fun' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0 -> $x1'
+			  `$x2' `$x3'  ::  `$x0'
+				`$x3' ->
+	`$x2' `$x3'
+`my_id'  ::  `taCT -> taCT'
+`my_id' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' ->
+	`$x1'
+`Leaf'  ::  `x -> Tree x'
+`Leaf' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' ->
+	`Leaf' {_@_ `$x0' `$x1'}
+`Node'  ::  `Tree x -> Tree x -> Tree x'
+`Node' =
+    _/\_ `$x0' -> \ `$x1'  ::  `Tree $x0'
+		    `$x1' `$x2'  ::  `Tree $x0'
+			  `$x2' ->
+	`Node' {_@_ `$x0' `$x1' `$x2'}
+`Zero'  ::  `Nat'
+`Zero' =
+    `Zero' {}
+`Succ'  ::  `Nat -> Nat'
+`Succ' =
+    \ `$x0'  ::  `Nat'
+      `$x0' ->
+	`Succ' {`$x0'}
+`Nill'  ::  `LList alpha'
+`Nill' =
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `alpha -> LList alpha -> LList alpha'
+`Conss' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
+`FF'  ::  `Boolean'
+`FF' =
+    `FF' {}
+`TT'  ::  `Boolean'
+`TT' =
+    `TT' {}
+`$d6'  ::  `{PrelBase.Eval Boolean}'
+`$d6' =
+    `PrelBase.void'
+`$d3'  ::  `{PrelBase.Eval Nat}'
+`$d3' =
+    `PrelBase.void'
+`idNat'  ::  `Nat -> Nat'
+`idNat' =
+    \ `$x0'  ::  `Nat'
+      `$x0' ->
+	`$x0'
+`idBool'  ::  `Boolean -> Boolean'
+`idBool' =
+    \ `$x0'  ::  `Boolean'
+      `$x0' ->
+	`$x0'
diff --git a/ghc/tests/stranal/should_compile/moo.lhs b/ghc/tests/stranal/should_compile/moo.lhs
deleted file mode 100644
index 35967ba27f3c9be249bde37b7cbe12a2de6bc329..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/moo.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> module Test where
-> data Moo a b = Msimple | Mcompl (Moo b a)
-
-
-> idMoo :: Moo a -> Moo a
-> idMoo x = x
diff --git a/ghc/tests/stranal/should_compile/sim.hs b/ghc/tests/stranal/should_compile/sim.hs
new file mode 100644
index 0000000000000000000000000000000000000000..d6de6ec09d1b680941d9ea9c0606b7b52d6ac61e
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/sim.hs
@@ -0,0 +1,103 @@
+module Test where
+data Boolean = FF | TT
+data Pair a b = MkPair a b
+data LList alpha = Nill | Conss alpha (LList alpha) 
+data Nat = Zero | Succ Nat
+data Tree x = Leaf x | Node (Tree x) (Tree x) 
+data A a = MkA a (A a) 
+{-
+id :: a -> a
+id x = x      
+
+idb :: Boolean -> Boolean
+idb b = b
+
+swap :: Pair a b -> Pair b a
+swap t = case t of 
+           MkPair x y -> MkPair y x
+
+bang :: A (A a) -> Boolean
+bang x = case x of
+           MkA y ys -> TT
+
+neg :: Boolean -> Boolean
+neg b = case b of 
+         FF -> TT 
+         TT -> FF 
+
+null :: LList x -> Boolean
+null l = case l of 
+           Nill -> TT
+           _ -> FF
+
+loop :: Boolean -> a
+loop b = loop b
+-}
+idl ::  LList a -> LList a
+idl xs  = case xs of
+           Conss y ys -> Conss y (idl ys)
+           _ -> Nill 
+{-
+idn :: Nat -> Nat
+idn n = case n of
+          Zero -> Zero 
+          Succ m -> Succ (idn m)
+
+add :: Nat -> Nat -> Nat
+add a b = case a of 
+            Zero -> b
+            Succ c -> Succ (add c b) 
+
+length :: LList a -> Nat
+length xs = case xs of 
+              Nill -> Zero
+              Conss y ys  -> Succ(length ys) 
+
+before :: LList Nat -> LList Nat
+before xs = case xs of
+              Nill -> Nill
+              Conss y ys -> case y of 
+                             Zero -> Nill
+                             Succ n -> Conss y (before ys)     
+
+reverse :: LList a -> LList a
+reverse rs = case rs of
+               Nill -> Nill
+               Conss y ys -> append (reverse ys) (Conss y Nill) 
+
+f :: Nat -> Nat
+f n = case n of
+        Zero -> Zero
+        Succ m -> Succ (g m)
+
+g :: Nat -> Nat
+g n = case n of
+       Zero -> Zero
+       Succ m -> Succ (f m)
+
+append :: LList a -> LList a -> LList a
+append  xs ys  = case xs of
+                  Nill -> ys 
+                  Conss z zs  -> Conss z (append zs ys) 
+
+flatten :: Tree alpha -> LList alpha
+flatten t = case t of
+              Leaf x   -> Conss x Nill 
+              Node l r -> append (flatten l) (flatten r)
+
+sum :: Tree Nat -> Nat
+sum t = case t of
+          Leaf t   -> t
+          Node l r -> add (sum l) (sum r) 
+
+suml :: LList Nat -> Nat
+suml Nill = Zero
+suml (Conss n ns) = add n (suml ns)
+
+map :: (a -> b) -> LList a -> LList b
+map f xs = case xs of
+             Nill -> Nill
+             Conss y ys -> Conss (f y) (map f ys)
+-}
+
+
diff --git a/ghc/tests/stranal/should_compile/sim.lhs b/ghc/tests/stranal/should_compile/sim.lhs
deleted file mode 100644
index 6c52104a9b4f8217d980cd21b97ca670da9ad944..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/sim.lhs
+++ /dev/null
@@ -1,103 +0,0 @@
-> module Test where
-> data Boolean = FF | TT
-> data Pair a b = MkPair a b
-> data LList alpha = Nill | Conss alpha (LList alpha) 
-> data Nat = Zero | Succ Nat
-> data Tree x = Leaf x | Node (Tree x) (Tree x) 
-> data A a = MkA a (A a) 
->{-
-> id :: a -> a
-> id x = x      
->
-> idb :: Boolean -> Boolean
-> idb b = b
->
-> swap :: Pair a b -> Pair b a
-> swap t = case t of 
->            MkPair x y -> MkPair y x
->
-> bang :: A (A a) -> Boolean
-> bang x = case x of
->            MkA y ys -> TT
->
-> neg :: Boolean -> Boolean
-> neg b = case b of 
->          FF -> TT 
->          TT -> FF 
->
-> null :: LList x -> Boolean
-> null l = case l of 
->            Nill -> TT
->            _ -> FF
->
-> loop :: Boolean -> a
-> loop b = loop b
->-}
-> idl ::  LList a -> LList a
-> idl xs  = case xs of
->            Conss y ys -> Conss y (idl ys)
->            _ -> Nill 
->{-
-> idn :: Nat -> Nat
-> idn n = case n of
->           Zero -> Zero 
->           Succ m -> Succ (idn m)
->
-> add :: Nat -> Nat -> Nat
-> add a b = case a of 
->             Zero -> b
->             Succ c -> Succ (add c b) 
->
-> length :: LList a -> Nat
-> length xs = case xs of 
->               Nill -> Zero
->               Conss y ys  -> Succ(length ys) 
->
-> before :: LList Nat -> LList Nat
-> before xs = case xs of
->               Nill -> Nill
->               Conss y ys -> case y of 
->                              Zero -> Nill
->                              Succ n -> Conss y (before ys)     
->
-> reverse :: LList a -> LList a
-> reverse rs = case rs of
->                Nill -> Nill
->                Conss y ys -> append (reverse ys) (Conss y Nill) 
->
-> f :: Nat -> Nat
-> f n = case n of
->         Zero -> Zero
->         Succ m -> Succ (g m)
->
-> g :: Nat -> Nat
-> g n = case n of
->        Zero -> Zero
->        Succ m -> Succ (f m)
->
-> append :: LList a -> LList a -> LList a
-> append  xs ys  = case xs of
->                   Nill -> ys 
->                   Conss z zs  -> Conss z (append zs ys) 
->
-> flatten :: Tree alpha -> LList alpha
-> flatten t = case t of
->               Leaf x   -> Conss x Nill 
->               Node l r -> append (flatten l) (flatten r)
->
-> sum :: Tree Nat -> Nat
-> sum t = case t of
->           Leaf t   -> t
->           Node l r -> add (sum l) (sum r) 
->
-> suml :: LList Nat -> Nat
-> suml Nill = Zero
-> suml (Conss n ns) = add n (suml ns)
->
-> map :: (a -> b) -> LList a -> LList b
-> map f xs = case xs of
->              Nill -> Nill
->              Conss y ys -> Conss (f y) (map f ys)
->-}
-
-
diff --git a/ghc/tests/stranal/should_compile/sim.stderr b/ghc/tests/stranal/should_compile/sim.stderr
index cd436017ebe54ee930ca5553d78864082c337f14..c61de804b43b341684ce3a7360109ccb57d6d2db 100644
--- a/ghc/tests/stranal/should_compile/sim.stderr
+++ b/ghc/tests/stranal/should_compile/sim.stderr
@@ -1,132 +1,83 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`$d5'  :: 
-    `{PrelBase.Eval (Pair a{-r3R-} b{-r3S-})}'
+`$d5'  ::  `{PrelBase.Eval (Pair a b)}'
 `$d5' =
-    _/\_ `a{-s1g3-}' `b{-s1g4-}' ->
-	`PrelBase.void'
-`$d4'  :: 
-    `{PrelBase.Eval (LList alpha{-r3P-})}'
+    _/\_ `$x0' `$x1' -> `PrelBase.void'
+`$d4'  ::  `{PrelBase.Eval (LList alpha)}'
 `$d4' =
-    _/\_ `alpha{-s1g5-}' ->
-	`PrelBase.void'
-`$d2'  :: 
-    `{PrelBase.Eval (Tree x{-r3M-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d2'  ::  `{PrelBase.Eval (Tree x)}'
 `$d2' =
-    _/\_ `x{-s1g6-}' ->
-	`PrelBase.void'
-`$d1'  :: 
-    `{PrelBase.Eval (A a{-r3K-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (A a)}'
 `$d1' =
-    _/\_ `a{-s1g7-}' ->
-	`PrelBase.void'
-`MkPair'  :: 
-    `a{-r3R-} -> b{-r3S-} -> Pair a{-r3R-} b{-r3S-}'
-`MkPair' =
-    _/\_ `a{-s1fQ-}' `b{-s1fR-}' -> \ `tpl'  :: 
-					  `a{-s1fQ-}'
-				      `tpl' `tpl'  :: 
-						`b{-s1fR-}'
-					    `tpl' ->
-	`MkPair'
-	    {_@_ `a{-s1fQ-}' _@_ `b{-s1fR-}' `tpl' `tpl'}
-`MkA'  :: 
-    `a{-r3K-} -> A a{-r3K-} -> A a{-r3K-}'
+    _/\_ `$x0' -> `PrelBase.void'
+`MkA'  ::  `a -> A a -> A a'
 `MkA' =
-    _/\_ `a{-s1fS-}' -> \ `tpl'  :: 
-			      `a{-s1fS-}'
-			  `tpl' `tpl'  :: 
-				    `A a{-s1fS-}'
-				`tpl' ->
-	`MkA'
-	    {_@_ `a{-s1fS-}' `tpl' `tpl'}
-`FF'  :: 
-    `Boolean'
-`FF' =
-    `FF'
-	{}
-`TT'  :: 
-    `Boolean'
-`TT' =
-    `TT'
-	{}
-`Nill'  :: 
-    `LList alpha{-r3P-}'
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `A $x0'
+			  `$x2' ->
+	`MkA' {_@_ `$x0' `$x1' `$x2'}
+`MkPair'  ::  `a -> b -> Pair a b'
+`MkPair' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0'
+			  `$x2' `$x3'  ::  `$x1'
+				`$x3' ->
+	`MkPair' {_@_ `$x0' _@_ `$x1' `$x2' `$x3'}
+`Leaf'  ::  `x -> Tree x'
+`Leaf' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' ->
+	`Leaf' {_@_ `$x0' `$x1'}
+`Node'  ::  `Tree x -> Tree x -> Tree x'
+`Node' =
+    _/\_ `$x0' -> \ `$x1'  ::  `Tree $x0'
+		    `$x1' `$x2'  ::  `Tree $x0'
+			  `$x2' ->
+	`Node' {_@_ `$x0' `$x1' `$x2'}
+`Zero'  ::  `Nat'
+`Zero' =
+    `Zero' {}
+`Succ'  ::  `Nat -> Nat'
+`Succ' =
+    \ `$x0'  ::  `Nat'
+      `$x0' ->
+	`Succ' {`$x0'}
+`Nill'  ::  `LList alpha'
 `Nill' =
-    _/\_ `alpha{-s1fT-}' ->
-	`Nill'
-	    {_@_ `alpha{-s1fT-}'}
-`Conss'  :: 
-    `alpha{-r3P-} -> LList alpha{-r3P-} -> LList alpha{-r3P-}'
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `alpha -> LList alpha -> LList alpha'
 `Conss' =
-    _/\_ `alpha{-s1fU-}' -> \ `tpl'  :: 
-				  `alpha{-s1fU-}'
-			      `tpl' `tpl'  :: 
-					`LList alpha{-s1fU-}'
-				    `tpl' ->
-	`Conss'
-	    {_@_ `alpha{-s1fU-}' `tpl' `tpl'}
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
 Rec {
-`idl'  :: 
-    `LList a{-aH5-} -> LList a{-aH5-}'
+`idl'  ::  `LList taC1 -> LList taC1'
 `idl' =
-    _/\_ `a{-s1fV-}' -> \ `xs'  :: 
-			      `LList a{-s1fV-}'
-			  `xs' ->
-	case `xs' of {
-	  `Nill' ->
-	      `Nill'
-		  {_@_ `a{-s1fV-}'};
-	  `Conss' `y' `ys' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `LList $x0'
+		    `$x1' ->
+	case `$x1' of {
+	  `Nill' -> `Nill' {_@_ `$x0'};
+	  `Conss' `$x2' `$x3' ->
 	      let {
-		`ds'  :: 
-		    `LList a{-s1fV-}'
-		`ds' =
-		    `idl'
-			_@_ `a{-s1fV-}' `ys'
-	      } in 
-		`Conss'
-		    {_@_ `a{-s1fV-}' `y' `ds'};
+		`$x4'  ::  `LList $x0'
+		`$x4' =
+		    `idl' _@_ `$x0' `$x3'
+	      } in  `Conss' {_@_ `$x0' `$x2' `$x4'};
 	}
 end Rec }
-`Zero'  :: 
-    `Nat'
-`Zero' =
-    `Zero'
-	{}
-`Succ'  :: 
-    `Nat -> Nat'
-`Succ' =
-    \ `tpl'  :: 
-	  `Nat'
-      `tpl' ->
-	`Succ'
-	    {`tpl'}
-`Leaf'  :: 
-    `x{-r3M-} -> Tree x{-r3M-}'
-`Leaf' =
-    _/\_ `x{-s1fZ-}' -> \ `tpl'  :: 
-			      `x{-s1fZ-}'
-			  `tpl' ->
-	`Leaf'
-	    {_@_ `x{-s1fZ-}' `tpl'}
-`Node'  :: 
-    `Tree x{-r3M-} -> Tree x{-r3M-} -> Tree x{-r3M-}'
-`Node' =
-    _/\_ `x{-s1g2-}' -> \ `tpl'  :: 
-			      `Tree x{-s1g2-}'
-			  `tpl' `tpl'  :: 
-				    `Tree x{-s1g2-}'
-				`tpl' ->
-	`Node'
-	    {_@_ `x{-s1g2-}' `tpl' `tpl'}
-`$d6'  :: 
-    `{PrelBase.Eval Boolean}'
+`FF'  ::  `Boolean'
+`FF' =
+    `FF' {}
+`TT'  ::  `Boolean'
+`TT' =
+    `TT' {}
+`$d6'  ::  `{PrelBase.Eval Boolean}'
 `$d6' =
     `PrelBase.void'
-`$d3'  :: 
-    `{PrelBase.Eval Nat}'
+`$d3'  ::  `{PrelBase.Eval Nat}'
 `$d3' =
     `PrelBase.void'
diff --git a/ghc/tests/stranal/should_compile/syn.hs b/ghc/tests/stranal/should_compile/syn.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e4b1f638faf32c97f67f36e9dd65744976a1d22f
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/syn.hs
@@ -0,0 +1,15 @@
+--!!! THIS TEST IS FOR TYPE SYNONIMS AND FACTORISATION IN THEIR PRESENCE.
+
+module Test where
+data M a = A | B a (M a)
+data L a = N | C a (Syn a)
+type Syn b = L b
+
+idL :: L (Syn c) -> L (Syn c)
+idL N       = N
+idL (C x l) = C x (idL l) 
+
+idM:: M (L (Syn x)) -> M (L (Syn x))
+idM A       = A
+idM (B x l) = B (idL x) (idM l) 
+
diff --git a/ghc/tests/stranal/should_compile/syn.lhs b/ghc/tests/stranal/should_compile/syn.lhs
deleted file mode 100644
index 59d6bacf8f1d011a742734134381499127abb260..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/syn.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-THIS TEST IS FOR TYPE SYNONIMS AND FACTORISATION IN THEIR PRESENCE.
-
-> module Test where
-> data M a = A | B a (M a)
-> data L a = N | C a (Syn a)
-> type Syn b = L b
->
-> idL :: L (Syn c) -> L (Syn c)
-> idL N       = N
-> idL (C x l) = C x (idL l) 
->
-> idM:: M (L (Syn x)) -> M (L (Syn x))
-> idM A       = A
-> idM (B x l) = B (idL x) (idM l) 
-
diff --git a/ghc/tests/stranal/should_compile/syn.stderr b/ghc/tests/stranal/should_compile/syn.stderr
index 6300c53be5de549cedc7edd5dc441eda69d7cca3..cc51a9949986b758a26b5b3bbea736456b7ed0a2 100644
--- a/ghc/tests/stranal/should_compile/syn.stderr
+++ b/ghc/tests/stranal/should_compile/syn.stderr
@@ -1,90 +1,62 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`$d2'  :: 
-    `{PrelBase.Eval (M a{-r3H-})}'
+`$d2'  ::  `{PrelBase.Eval (M a)}'
 `$d2' =
-    _/\_ `a{-s191-}' ->
-	`PrelBase.void'
-`$d1'  :: 
-    `{PrelBase.Eval (L a{-r3F-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (L a)}'
 `$d1' =
-    _/\_ `a{-s192-}' ->
-	`PrelBase.void'
-`A'  :: 
-    `M a{-r3H-}'
-`A' =
-    _/\_ `a{-s18T-}' ->
-	`A' {_@_ `a{-s18T-}'}
-`B'  :: 
-    `a{-r3H-} -> M a{-r3H-} -> M a{-r3H-}'
-`B' =
-    _/\_ `a{-s18U-}' -> \ `tpl'  :: 
-			      `a{-s18U-}'
-			  `tpl' `tpl'  :: 
-				    `M a{-s18U-}'
-				`tpl' ->
-	`B' {_@_ `a{-s18U-}' `tpl' `tpl'}
-`N'  :: 
-    `L a{-r3F-}'
+    _/\_ `$x0' -> `PrelBase.void'
+`N'  ::  `L a'
 `N' =
-    _/\_ `a{-s18V-}' ->
-	`N' {_@_ `a{-s18V-}'}
-`C'  :: 
-    `a{-r3F-} -> Syn a{-r3F-} -> L a{-r3F-}'
+    _/\_ `$x0' -> `N' {_@_ `$x0'}
+`C'  ::  `a -> Syn a -> L a'
 `C' =
-    _/\_ `a{-s18W-}' -> \ `tpl'  :: 
-			      `a{-s18W-}'
-			  `tpl' `tpl'  :: 
-				    `Syn a{-s18W-}'
-				`tpl' ->
-	`C' {_@_ `a{-s18W-}' `tpl' `tpl'}
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `Syn $x0'
+			  `$x2' ->
+	`C' {_@_ `$x0' `$x1' `$x2'}
 Rec {
-`idL'  :: 
-    `L (Syn c{-aGI-}) -> L (Syn c{-aGI-})'
+`idL'  ::  `L (Syn taBE) -> L (Syn taBE)'
 `idL' =
-    _/\_ `c{-s18X-}' -> \ `ds'  :: 
-			      `L (Syn c{-s18X-})'
-			  `ds' ->
-	case `ds' of {
-	  `N' ->
-	      `N' {_@_ (`Syn' `c{-s18X-}')};
-	  `C' `x' `l' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `L (Syn $x0)'
+		    `$x1' ->
+	case `$x1' of {
+	  `N' -> `N' {_@_ (`Syn' `$x0')};
+	  `C' `$x2' `$x3' ->
 	      let {
-		`ds'  :: 
-		    `L (Syn c{-s18X-})'
-		`ds' =
-		    `idL'
-			_@_ `c{-s18X-}' `l'
-	      } in 
-		`C' {_@_ (`Syn' `c{-s18X-}') `x' `ds'};
+		`$x4'  ::  `L (Syn $x0)'
+		`$x4' =
+		    `idL' _@_ `$x0' `$x3'
+	      } in  `C' {_@_ (`Syn' `$x0') `$x2' `$x4'};
 	}
 end Rec }
+`A'  ::  `M a'
+`A' =
+    _/\_ `$x0' -> `A' {_@_ `$x0'}
+`B'  ::  `a -> M a -> M a'
+`B' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `M $x0'
+			  `$x2' ->
+	`B' {_@_ `$x0' `$x1' `$x2'}
 Rec {
-`idM'  :: 
-    `M (L (Syn x{-aH8-})) -> M (L (Syn x{-aH8-}))'
+`idM'  ::  `M (L (Syn taC4)) -> M (L (Syn taC4))'
 `idM' =
-    _/\_ `x{-s18Z-}' -> \ `ds'  :: 
-			      `M (L (Syn x{-s18Z-}))'
-			  `ds' ->
-	case `ds' of {
-	  `A' ->
-	      `A' {_@_ (`L' (`Syn' `x{-s18Z-}'))};
-	  `B' `x' `l' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `M (L (Syn $x0))'
+		    `$x1' ->
+	case `$x1' of {
+	  `A' -> `A' {_@_ (`L' (`Syn' `$x0'))};
+	  `B' `$x2' `$x3' ->
 	      let {
-		`ds'  :: 
-		    `L (Syn x{-s18Z-})'
-		`ds' =
-		    `idL'
-			_@_ `x{-s18Z-}' `x' } in
+		`$x4'  ::  `M (L (Syn $x0))'
+		`$x4' =
+		    `idM' _@_ `$x0' `$x3' } in
 	      let {
-		`ds'  :: 
-		    `M (L (Syn x{-s18Z-}))'
-		`ds' =
-		    `idM'
-			_@_ `x{-s18Z-}' `l'
-	      } in 
-		`B' {_@_ (`L' (`Syn' `x{-s18Z-}')) `ds' `ds'};
+		`$x5'  ::  `L (Syn $x0)'
+		`$x5' =
+		    `idL' _@_ `$x0' `$x2'
+	      } in  `B' {_@_ (`L' (`Syn' `$x0')) `$x5' `$x4'};
 	}
 end Rec }
diff --git a/ghc/tests/stranal/should_compile/test.hs b/ghc/tests/stranal/should_compile/test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..c984c320d1c942d8b7e5fe3e6b11e8577585d8ce
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/test.hs
@@ -0,0 +1,6 @@
+module Test where
+data LList t = Nill | Conss t (LList t)
+data BBool = TTrue | FFalse
+
+f Nill = TTrue
+f (Conss a as) = FFalse
diff --git a/ghc/tests/stranal/should_compile/test.lhs b/ghc/tests/stranal/should_compile/test.lhs
deleted file mode 100644
index f89509ab5ed768e4a4bd5bcdf64c6837156e1f8e..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/test.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> module Test where
-> data LList t = Nill | Conss t (LList t)
-> data BBool = TTrue | FFalse
-
-> f Nill = TTrue
-> f (Conss a as) = FFalse
diff --git a/ghc/tests/stranal/should_compile/test.stderr b/ghc/tests/stranal/should_compile/test.stderr
index 6140fc17f68400ca6373d361abc686f91c205f0a..78affa4d927ca51467106d775f89484e8f870dd5 100644
--- a/ghc/tests/stranal/should_compile/test.stderr
+++ b/ghc/tests/stranal/should_compile/test.stderr
@@ -1,53 +1,33 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`$d2'  :: 
-    `{PrelBase.Eval (LList t{-r3s-})}'
+`$d2'  ::  `{PrelBase.Eval (LList t)}'
 `$d2' =
-    _/\_ `t{-sUf-}' ->
-	`PrelBase.void'
-`Nill'  :: 
-    `LList t{-r3s-}'
-`Nill' =
-    _/\_ `t{-sUc-}' ->
-	`Nill'
-	    {_@_ `t{-sUc-}'}
-`Conss'  :: 
-    `t{-r3s-} -> LList t{-r3s-} -> LList t{-r3s-}'
-`Conss' =
-    _/\_ `t{-sUd-}' -> \ `tpl'  :: 
-			     `t{-sUd-}'
-			 `tpl' `tpl'  :: 
-				   `LList t{-sUd-}'
-			       `tpl' ->
-	`Conss'
-	    {_@_ `t{-sUd-}' `tpl' `tpl'}
-`TTrue'  :: 
-    `BBool'
+    _/\_ `$x0' -> `PrelBase.void'
+`TTrue'  ::  `BBool'
 `TTrue' =
-    `TTrue'
-	{}
-`FFalse'  :: 
-    `BBool'
+    `TTrue' {}
+`FFalse'  ::  `BBool'
 `FFalse' =
-    `FFalse'
-	{}
-`f'  :: 
-    `LList t{-aGi-} -> BBool'
+    `FFalse' {}
+`f'  ::  `LList taBg -> BBool'
 `f' =
-    _/\_ `t{-sUe-}' -> \ `ds'  :: 
-			     `LList t{-sUe-}'
-			 `ds' ->
-	case `ds' of {
-	  `Nill' ->
-	      `TTrue'
-		  {};
-	  `Conss' `a' `as' ->
-	      `FFalse'
-		  {};
+    _/\_ `$x0' -> \ `$x1'  ::  `LList $x0'
+		    `$x1' ->
+	case `$x1' of {
+	  `Nill' -> `TTrue' {};
+	  `Conss' `$x2' `$x3' -> `FFalse' {};
 	}
-`$d1'  :: 
-    `{PrelBase.Eval BBool}'
+`Nill'  ::  `LList t'
+`Nill' =
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `t -> LList t -> LList t'
+`Conss' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
+`$d1'  ::  `{PrelBase.Eval BBool}'
 `$d1' =
     `PrelBase.void'
diff --git a/ghc/tests/stranal/should_compile/tst.hs b/ghc/tests/stranal/should_compile/tst.hs
new file mode 100644
index 0000000000000000000000000000000000000000..561292107b2ab5f41c8715d72920ffaff0c3a899
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/tst.hs
@@ -0,0 +1,3 @@
+module Test where
+a :: [a] -> [[a]]
+a x = [x]
diff --git a/ghc/tests/stranal/should_compile/tst.lhs b/ghc/tests/stranal/should_compile/tst.lhs
deleted file mode 100644
index edaf20dfc128989736efdd649c1495a1dc810939..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/tst.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> module Test where
-> a :: [a] -> [[a]]
-> a x = [x]
diff --git a/ghc/tests/stranal/should_compile/tst.stderr b/ghc/tests/stranal/should_compile/tst.stderr
index 7461d704f4332d31e4bb3888753fcc08b6c101eb..42ad81c9dbf3e79119771830cf8520afa1c5ce42 100644
--- a/ghc/tests/stranal/should_compile/tst.stderr
+++ b/ghc/tests/stranal/should_compile/tst.stderr
@@ -1,19 +1,13 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`a'  :: 
-    `[a{-amL-}] -> [[a{-amL-}]]'
+`a'  ::  `[takb] -> [[takb]]'
 `a' =
-    _/\_ `a{-srv-}' -> \ `s'  :: 
-			     `[a{-srv-}]'
-			 `s' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `[$x0]'
+		    `$x1' ->
 	let {
-	  `ds'  :: 
-	      `[[a{-srv-}]]'
-	  `ds' =
-	      `PrelBase.[]'
-		  {_@_ [`a{-srv-}']}
-	} in 
-	  `PrelBase.:'
-	      {_@_ [`a{-srv-}'] `s' `ds'}
+	  `$x2'  ::  `[[$x0]]'
+	  `$x2' =
+	      `PrelBase.[]' {_@_ [`$x0']}
+	} in  `PrelBase.:' {_@_ [`$x0'] `$x1' `$x2'}
diff --git a/ghc/tests/stranal/should_compile/unu.hs b/ghc/tests/stranal/should_compile/unu.hs
new file mode 100644
index 0000000000000000000000000000000000000000..54bb25e9abc2edfd2b2b1a6845bb307b821e314f
--- /dev/null
+++ b/ghc/tests/stranal/should_compile/unu.hs
@@ -0,0 +1,76 @@
+module Test where
+data Boolean = FF | TT
+data Pair a b = Mkpair a b
+data LList alpha = Nill | Conss alpha (LList alpha) 
+data Nat = Zero | Succ Nat
+data Tree t = Leaf t | Node (Tree t) (Tree t) 
+data A a = MkA a (A a) 
+data Foo baz = MkFoo (Foo (Foo baz))
+{-
+ append1 :: LList a -> LList a -> LList a
+ append1 xs ys = append2 xs
+   where
+     append2 xs = case xs of
+                    Nill -> ys
+                    Conss x xs -> Conss x (append3 xs)
+     append3 xs = case xs of
+                    Nill -> ys
+                    Conss x xs -> Conss x (append2 xs)
+
+ loop :: a -> a
+ loop x =  loop x
+
+ hd :: LList b -> b
+ hd Nill         = loop
+ hd (Conss y ys) = y
+
+ hdb :: LList (LList b) -> LList b
+ hdb = hd
+
+ append :: [a] -> [a] -> [a]
+ append [] ys     = ys
+ append (x:xs) ys = x:(append xs ys)
+ 
+ f :: [a] -> [a]
+ f y = append x (f y)
+   where  x = append x (f y)
+-}
+app :: LList a -> LList a -> LList a
+app Nill Nill = Nill
+app  xs ys  = case xs of
+                Nill -> ys 
+                Conss z zs  -> Conss z (app zs ys) 
+{-
+ app :: LList a -> LList a -> LList a
+ app  xs ys = case xs of
+               Nill -> case ys of
+                        Nill -> Nill
+                        Conss u us -> ap 
+               Conss a as -> ap 
+  where ap = case xs of
+              Nill -> ys 
+              Conss z zs  -> Conss z (app zs ys) 
+
+ app :: LList a -> LList a -> LList a
+ app  xs ys = case xs of
+               Nill -> case ys of
+                        Nill -> Nill
+                        Conss u us -> ap xs ys
+               Conss a as -> ap xs ys
+
+ ap xs ys = case xs of
+              Nill -> ys 
+              Conss z zs  -> Conss z (app zs ys) 
+
+ ap :: LList a -> LList a -> LList a
+ ap  xs ys  = case xs of
+                 Nill -> ys 
+                 Conss z zs  -> Conss z (ap zs ys) 
+
+ app :: LList a -> LList a -> LList a
+ app  xs ys = case xs of
+               Nill -> case ys of
+                        Nill -> Nill
+                        Conss u us -> ap xs ys
+               Conss a as -> ap xs ys
+-}
diff --git a/ghc/tests/stranal/should_compile/unu.lhs b/ghc/tests/stranal/should_compile/unu.lhs
deleted file mode 100644
index da6370cdc3f9902aec452a7e9847f74c555d1483..0000000000000000000000000000000000000000
--- a/ghc/tests/stranal/should_compile/unu.lhs
+++ /dev/null
@@ -1,76 +0,0 @@
-> module Test where
-> data Boolean = FF | TT
-> data Pair a b = Mkpair a b
-> data LList alpha = Nill | Conss alpha (LList alpha) 
-> data Nat = Zero | Succ Nat
-> data Tree t = Leaf t | Node (Tree t) (Tree t) 
-> data A a = MkA a (A a) 
-> data Foo baz = MkFoo (Foo (Foo baz))
->{-
-> append1 :: LList a -> LList a -> LList a
-> append1 xs ys = append2 xs
->   where
->     append2 xs = case xs of
->                    Nill -> ys
->                    Conss x xs -> Conss x (append3 xs)
->     append3 xs = case xs of
->                    Nill -> ys
->                    Conss x xs -> Conss x (append2 xs)
->
-> loop :: a -> a
-> loop x =  loop x
->
-> hd :: LList b -> b
-> hd Nill         = loop
-> hd (Conss y ys) = y
->
-> hdb :: LList (LList b) -> LList b
-> hdb = hd
->
-> append :: [a] -> [a] -> [a]
-> append [] ys     = ys
-> append (x:xs) ys = x:(append xs ys)
-> 
-> f :: [a] -> [a]
-> f y = append x (f y)
->   where  x = append x (f y)
->-}
-> app :: LList a -> LList a -> LList a
-> app Nill Nill = Nill
-> app  xs ys  = case xs of
->                 Nill -> ys 
->                 Conss z zs  -> Conss z (app zs ys) 
->{-
-> app :: LList a -> LList a -> LList a
-> app  xs ys = case xs of
->               Nill -> case ys of
->                        Nill -> Nill
->                        Conss u us -> ap 
->               Conss a as -> ap 
->  where ap = case xs of
->              Nill -> ys 
->              Conss z zs  -> Conss z (app zs ys) 
->
-> app :: LList a -> LList a -> LList a
-> app  xs ys = case xs of
->               Nill -> case ys of
->                        Nill -> Nill
->                        Conss u us -> ap xs ys
->               Conss a as -> ap xs ys
->
-> ap xs ys = case xs of
->              Nill -> ys 
->              Conss z zs  -> Conss z (app zs ys) 
->
-> ap :: LList a -> LList a -> LList a
-> ap  xs ys  = case xs of
->                 Nill -> ys 
->                 Conss z zs  -> Conss z (ap zs ys) 
->
-> app :: LList a -> LList a -> LList a
-> app  xs ys = case xs of
->               Nill -> case ys of
->                        Nill -> Nill
->                        Conss u us -> ap xs ys
->               Conss a as -> ap xs ys
->-}
diff --git a/ghc/tests/stranal/should_compile/unu.stderr b/ghc/tests/stranal/should_compile/unu.stderr
index 6e8d06ff5ee61f150d4d09dae86009138eb57271..a5a8c1cc23dc527eb538396d40bfe873e6025e4d 100644
--- a/ghc/tests/stranal/should_compile/unu.stderr
+++ b/ghc/tests/stranal/should_compile/unu.stderr
@@ -1,153 +1,96 @@
 
 
---================================================================================
+================================================================================
 Simplified:
-`$d6'  :: 
-    `{PrelBase.Eval (Pair a{-r3Z-} b{-r40-})}'
+`$d6'  ::  `{PrelBase.Eval (Pair a b)}'
 `$d6' =
-    _/\_ `a{-s1oF-}' `b{-s1oG-}' ->
-	`PrelBase.void'
-`$d5'  :: 
-    `{PrelBase.Eval (LList alpha{-r3X-})}'
+    _/\_ `$x0' `$x1' -> `PrelBase.void'
+`$d5'  ::  `{PrelBase.Eval (LList alpha)}'
 `$d5' =
-    _/\_ `alpha{-s1oH-}' ->
-	`PrelBase.void'
-`$d3'  :: 
-    `{PrelBase.Eval (Tree t{-r3U-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d3'  ::  `{PrelBase.Eval (Tree t)}'
 `$d3' =
-    _/\_ `t{-s1oI-}' ->
-	`PrelBase.void'
-`$d2'  :: 
-    `{PrelBase.Eval (A a{-r3S-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d2'  ::  `{PrelBase.Eval (A a)}'
 `$d2' =
-    _/\_ `a{-s1oJ-}' ->
-	`PrelBase.void'
-`$d1'  :: 
-    `{PrelBase.Eval (Foo baz{-r3Q-})}'
+    _/\_ `$x0' -> `PrelBase.void'
+`$d1'  ::  `{PrelBase.Eval (Foo baz)}'
 `$d1' =
-    _/\_ `baz{-s1oK-}' ->
-	`PrelBase.void'
-`Mkpair'  :: 
-    `a{-r3Z-} -> b{-r40-} -> Pair a{-r3Z-} b{-r40-}'
-`Mkpair' =
-    _/\_ `a{-s1op-}' `b{-s1oq-}' -> \ `tpl'  :: 
-					  `a{-s1op-}'
-				      `tpl' `tpl'  :: 
-						`b{-s1oq-}'
-					    `tpl' ->
-	`Mkpair'
-	    {_@_ `a{-s1op-}' _@_ `b{-s1oq-}' `tpl' `tpl'}
-`MkA'  :: 
-    `a{-r3S-} -> A a{-r3S-} -> A a{-r3S-}'
-`MkA' =
-    _/\_ `a{-s1or-}' -> \ `tpl'  :: 
-			      `a{-s1or-}'
-			  `tpl' `tpl'  :: 
-				    `A a{-s1or-}'
-				`tpl' ->
-	`MkA'
-	    {_@_ `a{-s1or-}' `tpl' `tpl'}
-`MkFoo'  :: 
-    `Foo (Foo baz{-r3Q-}) -> Foo baz{-r3Q-}'
+    _/\_ `$x0' -> `PrelBase.void'
+`MkFoo'  ::  `Foo (Foo baz) -> Foo baz'
 `MkFoo' =
-    _/\_ `baz{-s1os-}' -> \ `tpl'  :: 
-				`Foo (Foo baz{-s1os-})'
-			    `tpl' ->
-	`MkFoo'
-	    {_@_ `baz{-s1os-}' `tpl'}
-`FF'  :: 
-    `Boolean'
-`FF' =
-    `FF'
-	{}
-`TT'  :: 
-    `Boolean'
-`TT' =
-    `TT'
-	{}
-`Nill'  :: 
-    `LList alpha{-r3X-}'
+    _/\_ `$x0' -> \ `$x1'  ::  `Foo (Foo $x0)'
+		    `$x1' ->
+	`MkFoo' {_@_ `$x0' `$x1'}
+`MkA'  ::  `a -> A a -> A a'
+`MkA' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `A $x0'
+			  `$x2' ->
+	`MkA' {_@_ `$x0' `$x1' `$x2'}
+`Mkpair'  ::  `a -> b -> Pair a b'
+`Mkpair' =
+    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0'
+			  `$x2' `$x3'  ::  `$x1'
+				`$x3' ->
+	`Mkpair' {_@_ `$x0' _@_ `$x1' `$x2' `$x3'}
+`Leaf'  ::  `t -> Tree t'
+`Leaf' =
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' ->
+	`Leaf' {_@_ `$x0' `$x1'}
+`Node'  ::  `Tree t -> Tree t -> Tree t'
+`Node' =
+    _/\_ `$x0' -> \ `$x1'  ::  `Tree $x0'
+		    `$x1' `$x2'  ::  `Tree $x0'
+			  `$x2' ->
+	`Node' {_@_ `$x0' `$x1' `$x2'}
+`Zero'  ::  `Nat'
+`Zero' =
+    `Zero' {}
+`Succ'  ::  `Nat -> Nat'
+`Succ' =
+    \ `$x0'  ::  `Nat'
+      `$x0' ->
+	`Succ' {`$x0'}
+`Nill'  ::  `LList alpha'
 `Nill' =
-    _/\_ `alpha{-s1ot-}' ->
-	`Nill'
-	    {_@_ `alpha{-s1ot-}'}
-`Conss'  :: 
-    `alpha{-r3X-} -> LList alpha{-r3X-} -> LList alpha{-r3X-}'
+    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
+`Conss'  ::  `alpha -> LList alpha -> LList alpha'
 `Conss' =
-    _/\_ `alpha{-s1ou-}' -> \ `tpl'  :: 
-				  `alpha{-s1ou-}'
-			      `tpl' `tpl'  :: 
-					`LList alpha{-s1ou-}'
-				    `tpl' ->
-	`Conss'
-	    {_@_ `alpha{-s1ou-}' `tpl' `tpl'}
+    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	`Conss' {_@_ `$x0' `$x1' `$x2'}
 Rec {
-`app'  :: 
-    `LList a{-aHn-} -> LList a{-aHn-} -> LList a{-aHn-}'
+`app'  ::  `LList taCh -> LList taCh -> LList taCh'
 `app' =
-    _/\_ `a{-s1ov-}' -> \ `ds'  :: 
-			      `LList a{-s1ov-}'
-			  `ds' `ds'  :: 
-				   `LList a{-s1ov-}'
-			       `ds' ->
-	case `ds' of {
-	  `Conss' `ds' `ds' ->
+    _/\_ `$x0' -> \ `$x1'  ::  `LList $x0'
+		    `$x1' `$x2'  ::  `LList $x0'
+			  `$x2' ->
+	case `$x1' of {
+	  `Conss' `$x3' `$x4' ->
 	      let {
-		`ds'  :: 
-		    `LList a{-s1ov-}'
-		`ds' =
-		    `app'
-			_@_ `a{-s1ov-}' `ds' `ds'
-	      } in 
-		`Conss'
-		    {_@_ `a{-s1ov-}' `ds' `ds'};
+		`$x5'  ::  `LList $x0'
+		`$x5' =
+		    `app' _@_ `$x0' `$x4' `$x2'
+	      } in  `Conss' {_@_ `$x0' `$x3' `$x5'};
 	  `Nill' ->
-	      case `ds' of {
-		`Conss' `ds' `ds' ->
-		    `Conss'
-			{_@_ `a{-s1ov-}' `ds' `ds'};
-		`Nill' ->
-		    `Nill'
-			{_@_ `a{-s1ov-}'};
+	      case `$x2' of {
+		`Conss' `$x6' `$x7' -> `Conss' {_@_ `$x0' `$x6' `$x7'};
+		`Nill' -> `Nill' {_@_ `$x0'};
 	      };
 	}
 end Rec }
-`Zero'  :: 
-    `Nat'
-`Zero' =
-    `Zero'
-	{}
-`Succ'  :: 
-    `Nat -> Nat'
-`Succ' =
-    \ `tpl'  :: 
-	  `Nat'
-      `tpl' ->
-	`Succ'
-	    {`tpl'}
-`Leaf'  :: 
-    `t{-r3U-} -> Tree t{-r3U-}'
-`Leaf' =
-    _/\_ `t{-s1oB-}' -> \ `tpl'  :: 
-			      `t{-s1oB-}'
-			  `tpl' ->
-	`Leaf'
-	    {_@_ `t{-s1oB-}' `tpl'}
-`Node'  :: 
-    `Tree t{-r3U-} -> Tree t{-r3U-} -> Tree t{-r3U-}'
-`Node' =
-    _/\_ `t{-s1oE-}' -> \ `tpl'  :: 
-			      `Tree t{-s1oE-}'
-			  `tpl' `tpl'  :: 
-				    `Tree t{-s1oE-}'
-				`tpl' ->
-	`Node'
-	    {_@_ `t{-s1oE-}' `tpl' `tpl'}
-`$d7'  :: 
-    `{PrelBase.Eval Boolean}'
+`FF'  ::  `Boolean'
+`FF' =
+    `FF' {}
+`TT'  ::  `Boolean'
+`TT' =
+    `TT' {}
+`$d7'  ::  `{PrelBase.Eval Boolean}'
 `$d7' =
     `PrelBase.void'
-`$d4'  :: 
-    `{PrelBase.Eval Nat}'
+`$d4'  ::  `{PrelBase.Eval Nat}'
 `$d4' =
     `PrelBase.void'
diff --git a/ghc/tests/typecheck/should_compile/Makefile b/ghc/tests/typecheck/should_compile/Makefile
index fc964d8676bfd0dbc7f1defd84270f10b372ab4e..0526897173e9b9aacaa227a34f47f742367abbeb 100644
--- a/ghc/tests/typecheck/should_compile/Makefile
+++ b/ghc/tests/typecheck/should_compile/Makefile
@@ -1,19 +1,10 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_compile.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
-HC_OPTS += -noC -dcore-lint
-
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@ 
-
-all :: $(HS_OBJS)
+HC_OPTS += -noC -dcore-lint -fno-warn-incomplete-patterns -hi -ddump-tc
 
 tc019_HC_OPTS = -fglasgow-exts
 tc065_HC_OPTS = -syslib ghc
 
 include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc001.stderr b/ghc/tests/typecheck/should_compile/tc001.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..590a4a79e78e1d431079bbb47bfb337e3f5ceebc
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc001.stderr
@@ -0,0 +1,31 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taC6] [d.Num_aCa] [([taC6], a{-r3h,x-}, a_aBO)]
+    +_aCe = PrelBase.+{-r3g,p-} taC6 d.Num_aCa
+    d.Num_aCd = d.Num_aCa
+    fromInt_aCf = PrelBase.fromInt{-8R,p-} taC6 d.Num_aCd
+    lit_aCg = fromInt_aCf PrelBase.I#{-5b,w-}{i} 2#
+    +_aCh = +_aCe
+    fromInt_aCj = fromInt_aCf
+    lit_aCk = fromInt_aCj PrelBase.I#{-5b,w-}{i} 3#
+    a_aBO x_r3d
+	  = y_r3f +_aCe lit_aCg
+	  where
+	      {- nonrec -}
+	      AbsBinds [] [] [([], y_r3f, y_aBW)]
+		  y_aBW = x_r3d +_aCh lit_aCk
+	      {- nonrec -}
+	      {- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed a;
+_declarations_
+1 a _:_ _forall_ [ta] {PrelBase.Num ta} => ta -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc002.stderr b/ghc/tests/typecheck/should_compile/tc002.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..86e7306cb71fdcedbdef3fd5c6a7b754df60db8d
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc002.stderr
@@ -0,0 +1,19 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], b{-r1,x-}, b_aBK)]
+    b_aBK = if PrelBase.True{-5E,w-}{i} then lit_aBW else lit_aBX
+lit_aBW = PrelBase.I#{-5b,w-}{i} 1#
+lit_aBX = PrelBase.I#{-5b,w-}{i} 2#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed b;
+_declarations_
+1 b _:_ PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc003.stderr b/ghc/tests/typecheck/should_compile/tc003.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..a0a57a58bd3bb48f54c02ff3cb0764d5423d6c5b
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc003.stderr
@@ -0,0 +1,33 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[]
+[]
+[([], c{-r5,x-}, c_aRg), ([], d{-r4,x-}, d_aRh), ([],
+						  e{-r3,x-},
+						  e_aRi)]
+    lit_aRS = lit_aRT
+    (c_aRg@(d_aRh, e_aRi))
+	= if PrelBase.True{-5E,w-}{i} then
+	      (lit_aRT, lit_aRU)
+	  else
+	      (lit_aRS, lit_aRV)
+lit_aRT = PrelBase.I#{-5b,w-}{i} 1#
+lit_aRU = PrelBase.I#{-5b,w-}{i} 2#
+lit_aRV = PrelBase.I#{-5b,w-}{i} 3#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d9 1;
+_exports_
+ShouldSucceed c d e;
+_declarations_
+1 c _:_ (PrelBase.Int, PrelBase.Int) ;;
+1 d _:_ PrelBase.Int ;;
+1 e _:_ PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc004.stderr b/ghc/tests/typecheck/should_compile/tc004.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..4eb6f2d03a10cadc31a601c79635c55ff99aa915
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc004.stderr
@@ -0,0 +1,17 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], f{-r3e,x-}, f_aku)]
+    f_aku x_r3d
+	  = case x_r3d of
+	      PrelBase.True{-5E,w-}{i} -> PrelBase.True{-5E,w-}{i}
+	      PrelBase.False{-58,w-}{i} -> x_r3d
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ PrelBase.Bool -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc005.stderr b/ghc/tests/typecheck/should_compile/tc005.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..66650440bea338ab4e4bac236c69b0e057370a96
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc005.stderr
@@ -0,0 +1,24 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taRr, taRH]
+[d.Num_aRM]
+[([taRr, taRH], g{-r3j,x-}, g_aRj)]
+    fromInt_aRN = PrelBase.fromInt{-8R,p-} taRr d.Num_aRM
+    lit_aRO = fromInt_aRN PrelBase.I#{-5b,w-}{i} 2#
+    g_aRj ((x_r3d PrelBase.:{-55,w-}{i} z_r3e), y_r3f) = x_r3d
+    g_aRj (x_r3h, y_r3i) = lit_aRO
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d9 1;
+_exports_
+ShouldSucceed g;
+_declarations_
+1 g _:_ _forall_ [ta tb] {PrelBase.Num ta} => ([ta], tb) -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc006.stderr b/ghc/tests/typecheck/should_compile/tc006.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..08906408cc951898436160c03f209bf7be742a0c
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc006.stderr
@@ -0,0 +1,18 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], h{-r1,x-}, h_aBK)]
+    h_aBK = PrelBase.:{-55,w-}{i} PrelBase.Int{-3g,W-} lit_aBW h_aBK
+lit_aBW = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed h;
+_declarations_
+1 h _:_ [PrelBase.Int] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc007.stderr b/ghc/tests/typecheck/should_compile/tc007.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..2547cd0a4069db8a23cabf0a74808fa94e2c488e
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc007.stderr
@@ -0,0 +1,33 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], j{-rY,x-}, j_aBQ)]
+    j_aBQ = lit_aCv
+AbsBinds [] [] [([], k{-rX,x-}, k_aBY), ([], l{-rW,x-}, l_aBZ)]
+    k_aBY
+	= PrelBase.:{-55,w-}{i} PrelBase.Int{-3g,W-}
+	      lit_aCt
+	      (PrelBase.:{-55,w-}{i} PrelBase.Int{-3g,W-} j{-rY,x-} l_aBZ)
+    l_aBZ = PrelBase.:{-55,w-}{i} PrelBase.Int{-3g,W-} lit_aCu k_aBY
+AbsBinds [] [] [([], m{-rV,x-}, m_aCd)]
+    m_aCd = j{-rY,x-} +_aCs j{-rY,x-}
+d.Num_aCr = PrelBase.$d4{-rau,p-}
++_aCs = PrelBase.+{-rU,p-} PrelBase.Int{-3g,W-} d.Num_aCr
+lit_aCt = PrelBase.I#{-5b,w-}{i} 1#
+lit_aCu = PrelBase.I#{-5b,w-}{i} 0#
+lit_aCv = PrelBase.I#{-5b,w-}{i} 2#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed j k l m;
+_declarations_
+1 j _:_ PrelBase.Int ;;
+1 k _:_ [PrelBase.Int] ;;
+1 l _:_ [PrelBase.Int] ;;
+1 m _:_ PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc008.stderr b/ghc/tests/typecheck/should_compile/tc008.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7ffc6b295396a65dd6744262e5db278434fbf072
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc008.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taBU] [d.Num_aBX] [([taBU], n{-r1,x-}, n_aBM)]
+    fromInt_aBY = PrelBase.fromInt{-8R,p-} taBU d.Num_aBX
+    lit_aBZ = fromInt_aBY PrelBase.I#{-5b,w-}{i} 1#
+    fromInt_aC1 = fromInt_aBY
+    lit_aC2 = fromInt_aC1 PrelBase.I#{-5b,w-}{i} 0#
+    n_aBM PrelBase.True{-5E,w-}{i} = lit_aBZ
+    n_aBM PrelBase.False{-58,w-}{i} = lit_aC2
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed n;
+_declarations_
+1 n _:_ _forall_ [ta] {PrelBase.Num ta} => PrelBase.Bool -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc009.stderr b/ghc/tests/typecheck/should_compile/tc009.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..1058b2ec41c98c7bcffd4a97c84dc0fb13b375ff
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc009.stderr
@@ -0,0 +1,23 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taRx] [d.Num_aRB] [([taRx], o{-r3h,x-}, o_aRg)]
+    +_aRF = PrelBase.+{-r3g,p-} taRx d.Num_aRB
+    d.Num_aRE = d.Num_aRB
+    fromInt_aRG = PrelBase.fromInt{-8R,p-} taRx d.Num_aRE
+    lit_aRH = fromInt_aRG PrelBase.I#{-5b,w-}{i} 1#
+    o_aRg (PrelBase.True{-5E,w-}{i}, x_r3d) = x_r3d
+    o_aRg (PrelBase.False{-58,w-}{i}, y_r3f) = y_r3f +_aRF lit_aRH
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d9 1;
+_exports_
+ShouldSucceed o;
+_declarations_
+1 o _:_ _forall_ [ta] {PrelBase.Num ta} => (PrelBase.Bool, ta) -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc010.stderr b/ghc/tests/typecheck/should_compile/tc010.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..457a9baf3d2c9767ab02cee2d57a5726d661eff8
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc010.stderr
@@ -0,0 +1,30 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], p{-r3e,x-}, p_aRZ)]
+    lit_aT1 = lit_aT3
+    p_aRZ
+	= [(y_r3d +_aT4 lit_aT1, PrelBase.True{-5E,w-}{i}) |
+	       y_r3d <- [lit_aT2, lit_aT3] (PrelBase.Int{-3g,W-})]
+lit_aT2 = PrelBase.I#{-5b,w-}{i} 1#
+lit_aT3 = PrelBase.I#{-5b,w-}{i} 2#
+d.Num_aSR = PrelBase.$d4{-raq,p-}
++_aT4 = PrelBase.+{-r9G,p-} PrelBase.Int{-3g,W-} d.Num_aSR
+d.Monad_aSU = PrelBase.$d25{-raa,p-}
+>>=_aT5 = PrelBase.>>={-811,p-} PrelBase.[]{-3j,W-} d.Monad_aSU
+d.Monad_aSX = d.Monad_aSU
+return_aT6 =
+    PrelBase.return{-816,p-} PrelBase.[]{-3j,W-} d.Monad_aSX
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d24 1 $d25 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m>> 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Monad 1 MonadZero 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d9 1;
+_exports_
+ShouldSucceed p;
+_declarations_
+1 p _:_ [(PrelBase.Int, PrelBase.Bool)] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc011.stderr b/ghc/tests/typecheck/should_compile/tc011.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..90ec9b8646c20e717305857798e695268387d303
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc011.stderr
@@ -0,0 +1,14 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taks] [] [([taks], x{-r1,x-}, x_akq)]
+    (x_akq@_) = x_akq
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed x;
+_declarations_
+1 x _:_ _forall_ [ta] => ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc012.stderr b/ghc/tests/typecheck/should_compile/tc012.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..f78cd0387c313f4dbb1363bf6d56b33699a38697
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc012.stderr
@@ -0,0 +1,14 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takB] [] [([takB], q{-r3e,x-}, q_aks)]
+    q_aks = \ y_r3d -> y_r3d
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed q;
+_declarations_
+1 q _:_ _forall_ [ta] => ta -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc013.stderr b/ghc/tests/typecheck/should_compile/tc013.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..c2320268f2581d50202bff4658c8c97f62021e6d
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc013.stderr
@@ -0,0 +1,20 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], r{-r3,x-}, r_aRe), ([], s{-r2,x-}, s_aRf)]
+    (r_aRe, s_aRf) = (lit_aRz, 'a')
+lit_aRz = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d9 1;
+_exports_
+ShouldSucceed r s;
+_declarations_
+1 r _:_ PrelBase.Int ;;
+1 s _:_ PrelBase.Char ;;
diff --git a/ghc/tests/typecheck/should_compile/tc014.stderr b/ghc/tests/typecheck/should_compile/tc014.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..449aadb3f72180f4d4485e8d43dfeeb6dcdc924a
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc014.stderr
@@ -0,0 +1,20 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], t{-rS,x-}, t_aBK)]
+    t_aBK = lit_aC4 +_aC3 t_aBK
+d.Num_aC2 = PrelBase.$d4{-rao,p-}
++_aC3 = PrelBase.+{-rR,p-} PrelBase.Int{-3g,W-} d.Num_aC2
+lit_aC4 = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed t;
+_declarations_
+1 t _:_ PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc015.stderr b/ghc/tests/typecheck/should_compile/tc015.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..8e3776d253f77aa3ebe3a44498551367510b4c79
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc015.stderr
@@ -0,0 +1,17 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[tayE, tayH, tayM]
+[]
+[([tayE, tayH, tayM], u{-r3h,x-}, u_ays)]
+    u_ays x_r3d = \ (y_r3f, z_r3g) -> x_r3d
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed u;
+_declarations_
+1 u _:_ _forall_ [ta tb tc] => tc -> (ta, tb) -> tc ;;
diff --git a/ghc/tests/typecheck/should_compile/tc016.stderr b/ghc/tests/typecheck/should_compile/tc016.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..5a6dd72e082fa7af6ad9d865b0e256a0d534c261
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc016.stderr
@@ -0,0 +1,14 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takL, takN] [] [([takL, takN], f{-r3f,x-}, f_akt)]
+    f_akt (x_r3d@_) (y_r3e@_) = x_r3d
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta tb] => tb -> ta -> tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc017.stderr b/ghc/tests/typecheck/should_compile/tc017.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..3c92bbef681d9a9c509dc1a488e1066990641b98
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc017.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], v{-r1,x-}, v_aBK)]
+    v_aBK
+	| PrelBase.True{-5E,w-}{i} = v_aBK +_aC5 lit_aC6
+	| PrelBase.False{-58,w-}{i} = v_aBK
+d.Num_aC4 = PrelBase.$d4{-rao,p-}
++_aC5 = PrelBase.+{-r9E,p-} PrelBase.Int{-3g,W-} d.Num_aC4
+lit_aC6 = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed v;
+_declarations_
+1 v _:_ PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc018.stderr b/ghc/tests/typecheck/should_compile/tc018.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7b5d2d0c2e3e3b5c717a4d2059ad682da3c34f26
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc018.stderr
@@ -0,0 +1,30 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], w{-r3f,x-}, w_aBQ)]
+    w_aBQ
+	= a_r3d
+	where
+	    {- nonrec -}
+	    AbsBinds [] [] [([], y_r3e, y_aBP)]
+		y_aBP = lit_aC8
+	    {- nonrec -}
+	    {- nonrec -}
+	    {- nonrec -}
+	    AbsBinds [] [] [([], a_r3d, a_aBZ)]
+		a_aBZ = y_r3e
+	    {- nonrec -}
+	    {- nonrec -}
+lit_aC8 = PrelBase.I#{-5b,w-}{i} 2#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed w;
+_declarations_
+1 w _:_ PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc019.stderr b/ghc/tests/typecheck/should_compile/tc019.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..d99d75fa336e68a347ad11c9aa44ec2830dc4eeb
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc019.stderr
@@ -0,0 +1,35 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[]
+[]
+[([], al{-r3i,x-}, al_aS2), ([], am{-r3h,x-}, am_aS3)]
+    lit_aTo = lit_aTp
+    (al_aS2 PrelBase.:{-55,w-}{i} am_aS3)
+	= [y_r3e +_aTr lit_aTo |
+	       (y_r3e, z_r3f) <- [(lit_aTp,
+				   lit_aTq)] ((PrelBase.Int{-3g,W-}, PrelBase.Int{-3g,W-}))]
+lit_aTp = PrelBase.I#{-5b,w-}{i} 1#
+lit_aTq = PrelBase.I#{-5b,w-}{i} 2#
+d.Num_aTe = PrelBase.$d4{-rat,p-}
++_aTr = PrelBase.+{-r3g,p-} PrelBase.Int{-3g,W-} d.Num_aTe
+d.Monad_aTh = PrelBase.$d25{-rad,p-}
+>>=_aTs = PrelBase.>>={-811,p-} PrelBase.[]{-3j,W-} d.Monad_aTh
+d.Monad_aTk = d.Monad_aTh
+return_aTt =
+    PrelBase.return{-816,p-} PrelBase.[]{-3j,W-} d.Monad_aTk
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d24 1 $d25 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m>> 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Monad 1 MonadZero 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d9 1;
+_exports_
+ShouldSucceed al am;
+_declarations_
+1 al _:_ PrelBase.Int ;;
+1 am _:_ [PrelBase.Int] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc020.stderr b/ghc/tests/typecheck/should_compile/tc020.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7ec7b1d5c9b71078a680c97a023fc75faba1ebe8
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc020.stderr
@@ -0,0 +1,21 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takG] [] [([takG], f{-r3g,x-}, f_aku)]
+    f_aku x_r3d
+	  = a_r3f
+	  where
+	      {- rec -}
+	      AbsBinds [] [] [([], a_r3f, a_akC)]
+		  a_akC = PrelBase.:{-55,w-}{i} takG x_r3d a_akC
+	      {- nonrec -}
+	      {- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta] => ta -> [ta] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc021.stderr b/ghc/tests/typecheck/should_compile/tc021.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..78737601835452827be0638a73f8663ac403e1a9
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc021.stderr
@@ -0,0 +1,23 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [tayv] [] [([tayv], x{-r3g,x-}, x_ayt)]
+    x_ayt = x_ayt
+AbsBinds [tayB, tayD] [] [([tayB, tayD], a{-r3h,x-}, a_ayx)]
+    a_ayx = (x{-r3g,x-} tayB, x{-r3g,x-} tayD)
+AbsBinds
+[tayW, tayS, tayU]
+[]
+[([tayW, tayS, tayU], f{-r3i,x-}, f_ayJ)]
+    f_ayJ x_r3f = a{-r3h,x-} [tayS, tayU]
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed a f x;
+_declarations_
+1 a _:_ _forall_ [ta tb] => (ta, tb) ;;
+1 f _:_ _forall_ [ta tb tc] => ta -> (tb, tc) ;;
+1 x _:_ _forall_ [ta] => ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc022.stderr b/ghc/tests/typecheck/should_compile/tc022.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..4b409ded70911b2f66ce3decee94feaa9c4fac41
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc022.stderr
@@ -0,0 +1,17 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takD] [] [([takD], iD{-r3f,x-}, iD_aku)]
+    iD_aku x_r3e = x_r3e
+AbsBinds [takL] [] [([takL], main{-r3g,x-}, main_akF)]
+    main_akF = iD{-r3f,x-} (takL -> takL) iD{-r3f,x-} takL
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed iD main;
+_declarations_
+1 iD _:_ _forall_ [ta] => ta -> ta ;;
+1 main _:_ _forall_ [ta] => ta -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc023.stderr b/ghc/tests/typecheck/should_compile/tc023.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..1e7a98f5c2e3f79b625fb65a0adc29fb3d1ae3d1
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc023.stderr
@@ -0,0 +1,26 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takP, takR] [] [([takP, takR], k{-r3l,x-}, k_akB)]
+    k_akB x_r3j y_r3k = x_r3j
+AbsBinds
+[taln, talp, talr]
+[]
+[([taln, talp, talr], s{-r3m,x-}, s_akT)]
+    s_akT f_r3f g_r3g x_r3h = f_r3f x_r3h g_r3g x_r3h
+AbsBinds [talA] [] [([talA], main{-r3n,x-}, main_alt)]
+    main_alt
+	= s{-r3m,x-} [talA, GHC.Void{-3T,W-} -> talA, talA] k{-r3l,x-}
+								[GHC.Void{-3T,W-} -> talA, talA]
+							    k{-r3l,x-} [GHC.Void{-3T,W-}, talA]
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed k main s;
+_declarations_
+1 k _:_ _forall_ [ta tb] => tb -> ta -> tb ;;
+1 main _:_ _forall_ [ta] => ta -> ta ;;
+1 s _:_ _forall_ [ta tb tc] => (tc -> tb -> ta) -> (tc -> tb) -> tc -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc024.stderr b/ghc/tests/typecheck/should_compile/tc024.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..58c7fd9a215e0baa9b62d6eba14d8b3f1df8e0d0
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc024.stderr
@@ -0,0 +1,28 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takR, takT] [] [([takR, takT], k{-r3n,x-}, k_akD)]
+    k_akD x_r3l y_r3m = x_r3l
+AbsBinds
+[talp, talr, talt]
+[]
+[([talp, talr, talt], s{-r3o,x-}, s_akV)]
+    s_akV f_r3h g_r3i x_r3j = f_r3h x_r3j g_r3i x_r3j
+AbsBinds [talE] [] [([talE], main{-r3p,x-}, main_alv)]
+    main_alv x_r3f
+	     = s{-r3o,x-} [talE, GHC.Void{-3T,W-} -> talE, talE] k{-r3n,x-}
+								     [GHC.Void{-3T,W-}
+								      -> talE, talE]
+								 k{-r3n,x-} [GHC.Void{-3T,W-}, talE]
+								 x_r3f
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed k main s;
+_declarations_
+1 k _:_ _forall_ [ta tb] => tb -> ta -> tb ;;
+1 main _:_ _forall_ [ta] => ta -> ta ;;
+1 s _:_ _forall_ [ta tb tc] => (tc -> tb -> ta) -> (tc -> tb) -> tc -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc025.stderr b/ghc/tests/typecheck/should_compile/tc025.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..98ba08fb09869dc41fe14b723858087a6e6b39f5
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc025.stderr
@@ -0,0 +1,23 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], g{-r3j,x-}, g_akx)]
+    g_akx x_r3d
+	  = f_r3f PrelBase.Bool{-34,W-} f_r3f
+					    PrelBase.Bool{-34,W-} PrelBase.True{-5E,w-}{i} x_r3d
+					x_r3d
+	  where
+	      {- rec -}
+	      AbsBinds [takV] [] [([takV], f_r3f, f_akF)]
+		  f_akF x_r3h y_r3i = if x_r3h then y_r3i else f_akF x_r3h y_r3i
+	      {- nonrec -}
+	      {- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed g;
+_declarations_
+1 g _:_ PrelBase.Bool -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc026.stderr b/ghc/tests/typecheck/should_compile/tc026.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..00bfdbb89718d7ba478c447d80254a1ebb1176ce
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc026.stderr
@@ -0,0 +1,21 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takL] [] [([takL], f{-r3i,x-}, f_akx)]
+    f_akx x_r3g y_r3h = if x_r3g then y_r3h else f_akx x_r3g y_r3h
+AbsBinds [] [] [([], g{-r3j,x-}, g_akN)]
+    g_akN x_r3e
+	  = f{-r3i,x-} PrelBase.Bool{-34,W-} f{-r3i,x-}
+						 PrelBase.Bool{-34,W-} PrelBase.True{-5E,w-}{i}
+								       x_r3e
+					     x_r3e
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f g;
+_declarations_
+1 f _:_ _forall_ [ta] => PrelBase.Bool -> ta -> ta ;;
+1 g _:_ PrelBase.Bool -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc027.stderr b/ghc/tests/typecheck/should_compile/tc027.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..57f4917fb0ec078696ae841562f11be57a06c9b6
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc027.stderr
@@ -0,0 +1,28 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[tal1]
+[]
+[([tal1], f{-r3n,x-}, f_akC), ([tal1], g{-r3m,x-}, g_akD)]
+    f_akC x_r3h y_r3i = if x_r3h then y_r3i else g_akD y_r3i x_r3h
+    g_akD y_r3k x_r3l = if x_r3l then y_r3k else f_akC x_r3l y_r3k
+AbsBinds [] [] [([], h{-r3o,x-}, h_al3)]
+    h_al3 x_r3f
+	  = f{-r3n,x-} PrelBase.Bool{-34,W-} f{-r3n,x-}
+						 PrelBase.Bool{-34,W-} PrelBase.True{-5E,w-}{i}
+								       x_r3f
+					     x_r3f
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f g h;
+_declarations_
+1 f _:_ _forall_ [ta] => PrelBase.Bool -> ta -> ta ;;
+1 g _:_ _forall_ [ta] => ta -> PrelBase.Bool -> ta ;;
+1 h _:_ PrelBase.Bool -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc028.stderr b/ghc/tests/typecheck/should_compile/tc028.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..802f82cf2baee369d1de9f0416aec18a51e9a2fd
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc028.stderr
@@ -0,0 +1,13 @@
+
+
+================================================================================
+Typechecked:
+
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed H;
+_declarations_
+1 type H = (PrelBase.Int, PrelBase.Bool) ;
diff --git a/ghc/tests/typecheck/should_compile/tc029.stderr b/ghc/tests/typecheck/should_compile/tc029.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7c6ec519627981535618e45f6d39b18157e2d5dc
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc029.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+H{-r4,x-}{i} = \ tpl_B1 -> H{-r4,x-}{i} {tpl_B1}
+M{-r3,x-}{i} = \ tpl_B1 -> M{-r3,x-}{i} {tpl_B1}
+AbsBinds [] [] [([], $d1{-rB5,x-}, d.Eval_aB2)]
+    d.Eval_aB2 = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d45 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed G K(H M);
+_instances_
+instance {PrelBase.Eval K} = $d1;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval K} ;;
+1 type G = [PrelBase.Int] ;
+1 data K = H PrelBase.Bool |  M G ;
diff --git a/ghc/tests/typecheck/should_compile/tc030.stderr b/ghc/tests/typecheck/should_compile/tc030.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..f5cf2fffed5ddb3e38d106eae049fac354e3d318
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc030.stderr
@@ -0,0 +1,14 @@
+
+
+================================================================================
+Typechecked:
+
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed G H;
+_declarations_
+1 type G = (H, PrelBase.Char) ;
+1 type H = [PrelBase.Bool] ;
diff --git a/ghc/tests/typecheck/should_compile/tc031.stderr b/ghc/tests/typecheck/should_compile/tc031.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..dbbb2105bdf06e2294ba299df95da688df90c25f
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc031.stderr
@@ -0,0 +1,21 @@
+
+
+================================================================================
+Typechecked:
+Node{-r3,x-}{i} =
+    \ tpl_B1 tpl_B2 -> Node{-r3,x-}{i} {tpl_B1 tpl_B2}
+AbsBinds [] [] [([], $d1{-rAT,x-}, d.Eval_aAQ)]
+    d.Eval_aAQ = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed Rec(Node);
+_instances_
+instance {PrelBase.Eval Rec} = $d1;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval Rec} ;;
+1 data Rec = Node PrelBase.Int Rec ;
diff --git a/ghc/tests/typecheck/should_compile/tc032.stderr b/ghc/tests/typecheck/should_compile/tc032.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..4e64be8bc0c03d45cfc5b658e0faa90a2b19e881
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc032.stderr
@@ -0,0 +1,25 @@
+
+
+================================================================================
+Typechecked:
+Node{-r4,x-}{i} =
+    _/\_ b_tr3h -> \ tpl_B1 tpl_B2 ->
+	Node{-r4,x-}{i} {_@_ b_tr3h tpl_B1 tpl_B2}
+Other{-r3,x-}{i} =
+    _/\_ b_tr3h -> \ tpl_B1 -> Other{-r3,x-}{i} {_@_ b_tr3h tpl_B1}
+AbsBinds [taQa] [] [([taQa], $d1{-rQd,x-}, d.Eval_aQ9)]
+    d.Eval_aQ9 = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d39 1 $d40 1 $d42 1 $d45 1 $d47 1 Eval 1;
+PrelTup 1 :: $d13 1;
+_exports_
+ShouldSucceed AList(Node Other);
+_instances_
+instance _forall_ [b] => {PrelBase.Eval (AList b)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [b] => {PrelBase.Eval (AList b)} ;;
+1 data AList b = Node b [b] |  Other (b, PrelBase.Char) ;
diff --git a/ghc/tests/typecheck/should_compile/tc033.stderr b/ghc/tests/typecheck/should_compile/tc033.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..3c28282d3fab348e2da08e14ec73be15f25d0c26
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc033.stderr
@@ -0,0 +1,27 @@
+
+
+================================================================================
+Typechecked:
+Twist2{-r9,x-}{i} = \ tpl_B1 -> Twist2{-r9,x-}{i} {tpl_B1}
+Twine2{-r8,x-}{i} = \ tpl_B1 -> Twine2{-r8,x-}{i} {tpl_B1}
+AbsBinds [] [] [([], $d1{-rBa,x-}, d.Eval_aB2)]
+    d.Eval_aB2 = ({-dict-} [] [])
+AbsBinds [] [] [([], $d2{-rBc,x-}, d.Eval_aB7)]
+    d.Eval_aB7 = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed F Twine(Twine2) Twist(Twist2);
+_instances_
+instance {PrelBase.Eval Twist} = $d1;
+instance {PrelBase.Eval Twine} = $d2;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval Twist} ;;
+1 $d2 _:_ {PrelBase.Eval Twine} ;;
+1 type F = Twine ;
+1 data Twine = Twine2 Twist ;
+1 data Twist = Twist2 Twine ;
diff --git a/ghc/tests/typecheck/should_compile/tc034.stderr b/ghc/tests/typecheck/should_compile/tc034.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..cb2d6c455b823e922877b374362d88ba8559f25b
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc034.stderr
@@ -0,0 +1,37 @@
+
+
+================================================================================
+Typechecked:
+ANull{-r6,x-}{i} = _/\_ a_tr3p -> ANull{-r6,x-}{i} {_@_ a_tr3p}
+ANode{-r5,x-}{i} =
+    _/\_ a_tr3p -> \ tpl_B1 tpl_B2 ->
+	ANode{-r5,x-}{i} {_@_ a_tr3p tpl_B1 tpl_B2}
+AbsBinds [taCx] [d.Num_aCA] [([taCx], g{-r3q,x-}, g_aC9)]
+    fromInt_aCK = PrelBase.fromInt{-8R,p-} taCx d.Num_aCA
+    lit_aCO = fromInt_aCK PrelBase.I#{-5b,w-}{i} 2#
+    fromInt_aCP = fromInt_aCK
+    lit_aCQ = fromInt_aCP PrelBase.I#{-5b,w-}{i} 3#
+    fromInt_aCR = fromInt_aCK
+    lit_aCS = fromInt_aCR PrelBase.I#{-5b,w-}{i} 4#
+    g_aC9 ANull{-r6,x-}{i} = lit_aCO
+    g_aC9 (ANode{-r5,x-}{i} b_r3k (ANode{-r5,x-}{i} c_r3l d_r3m))
+	  | b_r3k = lit_aCQ
+	  | PrelBase.True{-5E,w-}{i} = lit_aCS
+AbsBinds [taCJ] [] [([taCJ], $d1{-rCN,x-}, d.Eval_aCI)]
+    d.Eval_aCI = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed g AList(ANull ANode) IntList;
+_instances_
+instance _forall_ [a] => {PrelBase.Eval (AList a)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a] => {PrelBase.Eval (AList a)} ;;
+1 data AList a = ANull |  ANode a (AList a) ;
+1 type IntList = AList PrelBase.Int ;
+1 g _:_ _forall_ [ta] {PrelBase.Num ta} => AList PrelBase.Bool -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc035.stderr b/ghc/tests/typecheck/should_compile/tc035.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6d6362805366cb49279ede5612ae8089b5690c6b
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc035.stderr
@@ -0,0 +1,34 @@
+
+
+================================================================================
+Typechecked:
+Var{-r5,x-}{i} =
+    _/\_ a_tr3q -> \ tpl_B1 -> Var{-r5,x-}{i} {_@_ a_tr3q tpl_B1}
+App{-r4,x-}{i} =
+    _/\_ a_tr3q -> \ tpl_B1 tpl_B2 ->
+	App{-r4,x-}{i} {_@_ a_tr3q tpl_B1 tpl_B2}
+AbsBinds [taRI] [] [([taRI], g{-r3t,x-}, g_aRm)]
+    g_aRm (a_r3j, (Var{-r5,x-}{i} name_r3k))
+	  = [name_r3k] ([PrelBase.Char{-38,W-}])
+    g_aRm (a_r3m, (App{-r4,x-}{i} e1_r3n e2_r3o))
+	  = ++_aS9 [PrelBase.Char{-38,W-}] (g_aRm e1_r3n) (g_aRm e2_r3o)
+AbsBinds [taS5] [] [([taS5], $d1{-rS8,x-}, d.Eval_aS2)]
+    d.Eval_aS2 = ({-dict-} [] [])
+d.MonadPlus_aS4 = PrelBase.$d23{-rpi,p-}
+++_aS9 = PrelBase.++{-ruo,p-} PrelBase.[]{-3j,W-} d.MonadPlus_aS4
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d23 1 $d24 1 $d25 1 $d38 1 $d39 1 $d40 1 $d42 1 $d45 1 $d47 1 $m>> 1 Eval 1 Monad 1 MonadPlus 1 MonadZero 1;
+PrelTup 1 :: $d13 1;
+_exports_
+ShouldSucceed g AnnExpr Expr(Var App);
+_instances_
+instance _forall_ [a] => {PrelBase.Eval (Expr a)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a] => {PrelBase.Eval (Expr a)} ;;
+1 type AnnExpr a = (a, Expr a) ;
+1 data Expr a = Var [PrelBase.Char] |  App (AnnExpr a) (AnnExpr a) ;
+1 g _:_ _forall_ [ta] => (ta, Expr ta) -> [[PrelBase.Char]] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc036.stderr b/ghc/tests/typecheck/should_compile/tc036.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..f7d8d4bc967860033d2b8b782c8487c39d5f7524
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc036.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+scsel_APrelBaseEq{-aAP,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op1{-r3g,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taAO] [d.A_aAN] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d16 1 $d33 1 $d8 1 $m/= 1 Eq 1;
+PrelNum 1 :: $d18 1;
+_exports_
+ShouldSucceed A(op1);
+_declarations_
+1 class {PrelBase.Eq a} => A a where {op1 :: a -> a} ;
diff --git a/ghc/tests/typecheck/should_compile/tc037.hi b/ghc/tests/typecheck/should_compile/tc037.hi
deleted file mode 100644
index 026e6c2b5cd8e9c104ba616a3541a21628ffcba2..0000000000000000000000000000000000000000
--- a/ghc/tests/typecheck/should_compile/tc037.hi
+++ /dev/null
@@ -1,6 +0,0 @@
-interface ShouldSucceed where {
-class Eq' a where {
-    deq :: a -> a -> Bool
-    };
-instance (Eq' a) => Eq' [a] {-# FROMMODULE ShouldSucceed #-}
-}
diff --git a/ghc/tests/typecheck/should_compile/tc037.stderr b/ghc/tests/typecheck/should_compile/tc037.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..61a9612289f8668cf73a2319530e5f3fbb2ecf3c
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc037.stderr
@@ -0,0 +1,32 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takZ] [d.Eq'_alo] [([takZ], $d1{-rlx,x-}, d.Eq'_akS)]
+    d.Eq'_alr = d.Eq'_alo
+    deq_aly = deq{-r3u,x-} takZ d.Eq'_alr
+    deq_alz = deq_alA
+    AbsBinds [] [] [([], deq_alA, deq_akW)]
+	deq_akW PrelBase.[]{-5i,w-}{i} PrelBase.[]{-5i,w-}{i}
+		= PrelBase.True{-5E,w-}{i}
+	deq_akW (x_r3k PrelBase.:{-55,w-}{i} xs_r3l)
+		(y_r3m PrelBase.:{-55,w-}{i} ys_r3n)
+		= if x_r3k deq_aly y_r3m then
+		      deq_alz xs_r3l ys_r3n
+		  else
+		      PrelBase.False{-58,w-}{i}
+	deq_akW other1_r3p other2_r3q = PrelBase.False{-58,w-}{i}
+    d.Eq'_akS = ({-dict-} [] [deq_alA])
+deq{-r3u,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [talw] [d.Eq'_alv] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed Eq'(deq);
+_instances_
+instance _forall_ [a] {Eq' a} => {Eq' [a]} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq' a} => {Eq' [a]} ;;
+1 class Eq' a where {deq :: a -> a -> PrelBase.Bool} ;
diff --git a/ghc/tests/typecheck/should_compile/tc038.stderr b/ghc/tests/typecheck/should_compile/tc038.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..22d0fa4fe0155667545fecda8cf8a61c943e7e5f
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc038.stderr
@@ -0,0 +1,24 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taC6] [d.Num_aCa] [([taC6], f{-r3f,x-}, f_aBN)]
+    d.Eq_aC8 = PrelBase.scsel_NumPrelBaseEq{-aCd,p-} taC6 d.Num_aCa
+    ==_aCb = PrelBase.=={-8Y,p-} taC6 d.Eq_aC8
+    fromInteger_aCc = PrelBase.fromInteger{-8S,p-} taC6 d.Num_aCa
+    f_aBN (x_r3d PrelBase.:{-55,w-}{i} xs_r3e)
+	  = if x_r3d ==_aCb (fromInteger_aCc 2) then
+		xs_r3e
+	    else
+		PrelBase.[]{-5i,w-}{i} taC6
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta] {PrelBase.Num ta} => [ta] -> [ta] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc039.hs b/ghc/tests/typecheck/should_compile/tc039.hs
index 0e5bd9518cebd20ccc9f8f7fbfd3256527f6adc0..05b87846aca15ed96e1d567bccc314420c57fe56 100644
--- a/ghc/tests/typecheck/should_compile/tc039.hs
+++ b/ghc/tests/typecheck/should_compile/tc039.hs
@@ -1,4 +1,4 @@
-module ShouldSucc where
+module ShouldSucceed where
 
 class (Eq a) => A a where
  op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_compile/tc039.stderr b/ghc/tests/typecheck/should_compile/tc039.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..f7d8d4bc967860033d2b8b782c8487c39d5f7524
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc039.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+scsel_APrelBaseEq{-aAP,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op1{-r3g,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taAO] [d.A_aAN] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d16 1 $d33 1 $d8 1 $m/= 1 Eq 1;
+PrelNum 1 :: $d18 1;
+_exports_
+ShouldSucceed A(op1);
+_declarations_
+1 class {PrelBase.Eq a} => A a where {op1 :: a -> a} ;
diff --git a/ghc/tests/typecheck/should_compile/tc040.hi b/ghc/tests/typecheck/should_compile/tc040.hi
deleted file mode 100644
index 41d1ee57b36dedae5cc64bb61e3547bbf543bf19..0000000000000000000000000000000000000000
--- a/ghc/tests/typecheck/should_compile/tc040.hi
+++ /dev/null
@@ -1,4 +0,0 @@
-interface ShouldSucceed where {
-import PreludeCore(Eq)
-f  ::  Eq a => a -> [a]
-}
diff --git a/ghc/tests/typecheck/should_compile/tc040.stderr b/ghc/tests/typecheck/should_compile/tc040.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..054a10bb1d99d94cd19b4a6d6de6791c01b40bdb
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc040.stderr
@@ -0,0 +1,30 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taAV] [d.Eq_aBd] [([taAV], f{-r3e,x-}, f_aAS)]
+    d.Eq_aBf = d.Eq_aBd
+    ==_aBg = PrelBase.=={-8Y,p-} taAV d.Eq_aBf
+    f_aAS x_r3g
+	  = g_r3i x_r3g
+	  where
+	      {- nonrec -}
+	      AbsBinds [] [] [([], g_r3i, g_aAX)]
+		  g_aAX y_r3k
+			= if y_r3k ==_aBg x_r3g then
+			      PrelBase.[]{-5i,w-}{i} taAV
+			  else
+			      [y_r3k] (taAV)
+	      {- nonrec -}
+	      {- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d16 1 $d28 1 $d33 1 $d8 1 $m/= 1 Eq 1;
+PrelNum 1 :: $d18 1;
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta] {PrelBase.Eq ta} => ta -> [ta] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc041.stderr b/ghc/tests/typecheck/should_compile/tc041.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e0e415f2183dbfc8bf63f860b7c2262df6c12bf6
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc041.stderr
@@ -0,0 +1,26 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], f{-r1,x-}, f_akM)]
+    f_akM x_r3h y_r3i = op1_ald x_r3h x_r3h
+AbsBinds [] [] [([], $d1{-rlc,x-}, d.H_akY)]
+    AbsBinds [] [] [([], op1_ale, op1_al2)]
+	op1_al2 x_r3n y_r3o = y_r3o
+    d.H_akY = ({-dict-} [] [op1_ale])
+op1{-r3t,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [talb] [d.H_al8] []
+d.H_ala = $d1{-rlc,x-}
+op1_ald = op1{-r3t,x-} PrelBase.Bool{-34,W-} d.H_ala
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f H(op1);
+_instances_
+instance {H PrelBase.Bool} = $d1;
+_declarations_
+1 $d1 _:_ {H PrelBase.Bool} ;;
+1 class H a where {op1 :: a -> a -> a} ;
+1 f _:_ PrelBase.Bool -> PrelBase.Int -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc042.stderr b/ghc/tests/typecheck/should_compile/tc042.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6af74cd4a35537144c9075f9cc67dfab1511f22a
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc042.stderr
@@ -0,0 +1,137 @@
+
+
+================================================================================
+Typechecked:
+Leaf{-rx,x-}{i} =
+    _/\_ t_tr5p -> \ tpl_B1 -> Leaf{-rx,x-}{i} {_@_ t_tr5p tpl_B1}
+Node{-rw,x-}{i} =
+    _/\_ t_tr5p -> \ tpl_B1 tpl_B2 ->
+	Node{-rw,x-}{i} {_@_ t_tr5p tpl_B1 tpl_B2}
+Zero{-rv,x-}{i} = Zero{-rv,x-}{i} {}
+Succ{-ru,x-}{i} = \ tpl_B1 -> Succ{-ru,x-}{i} {tpl_B1}
+Nil{-rt,x-}{i} = _/\_ alpha_tr5s -> Nil{-rt,x-}{i} {_@_ alpha_tr5s}
+Cons{-rs,x-}{i} =
+    _/\_ alpha_tr5s -> \ tpl_B1 tpl_B2 ->
+	Cons{-rs,x-}{i} {_@_ alpha_tr5s tpl_B1 tpl_B2}
+Mkpair{-r5B,x-}{i} =
+    _/\_ a_tr5u b_tr5v -> \ tpl_B1 tpl_B2 ->
+	Mkpair{-r5B,x-}{i} {_@_ a_tr5u _@_ b_tr5v tpl_B1 tpl_B2}
+FF{-rr,x-}{i} = FF{-rr,x-}{i} {}
+TT{-rq,x-}{i} = TT{-rq,x-}{i} {}
+AbsBinds [] [] [([], before{-r4a,x-}, before_aDu)]
+    before_aDu xs_r4W
+	       = case xs_r4W of
+		   Nil{-rt,x-}{i} -> Nil{-rt,x-}{i} Nat{-r5x,x-}
+		   (Cons{-rs,x-}{i} y_r4Z ys_r50)
+		   -> case y_r4Z of
+			Zero{-rv,x-}{i} -> Nil{-rt,x-}{i} Nat{-r5x,x-}
+			(Succ{-ru,x-}{i} n_r53)
+			-> Cons{-rs,x-}{i} Nat{-r5x,x-} y_r4Z before{-r4a,x-} ys_r50
+AbsBinds [taDR] [] [([taDR], lEngth{-r49,x-}, lEngth_aDO)]
+    lEngth_aDO xs_r4Q
+	       = case xs_r4Q of
+		   Nil{-rt,x-}{i} -> Zero{-rv,x-}{i}
+		   (Cons{-rs,x-}{i} y_r4T ys_r4U)
+		   -> Succ{-ru,x-}{i} lEngth{-r49,x-} taDR ys_r4U
+AbsBinds [taEe] [] [([taEe], app{-r48,x-}, app_aEb)]
+    app_aEb xs_r4J zs_r4K
+	    = case xs_r4J of
+		Nil{-rt,x-}{i} -> zs_r4K
+		(Cons{-rs,x-}{i} y_r4N ys_r4O)
+		-> Cons{-rs,x-}{i} taEe y_r4N app{-r48,x-} taEe ys_r4O zs_r4K
+AbsBinds [taEE] [] [([taEE], rEverse{-r4b,x-}, rEverse_aEB)]
+    rEverse_aEB rs_r55
+		= case rs_r55 of
+		    Nil{-rt,x-}{i} -> Nil{-rt,x-}{i} taEE
+		    (Cons{-rs,x-}{i} y_r58 ys_r59)
+		    -> app{-r48,x-} taEE rEverse{-r4b,x-} taEE ys_r59
+					 Cons{-rs,x-}{i} taEE y_r58 Nil{-rt,x-}{i} taEE
+AbsBinds [taF8] [] [([taF8], flatten{-r4c,x-}, flatten_aF5)]
+    flatten_aF5 t_r5b
+		= case t_r5b of
+		    (Leaf{-rx,x-}{i} x_r5d)
+		    -> Cons{-rs,x-}{i} taF8 x_r5d Nil{-rt,x-}{i} taF8
+		    (Node{-rw,x-}{i} l_r5f r_r5g)
+		    -> app{-r48,x-} taF8 flatten{-r4c,x-} taF8 l_r5f
+					 flatten{-r4c,x-} taF8 r_r5g
+AbsBinds [] [] [([], add{-r47,x-}, add_aFx)]
+    add_aFx a_r4D b_r4E
+	    = case a_r4D of
+		Zero{-rv,x-}{i} -> b_r4E
+		(Succ{-ru,x-}{i} c_r4H) -> Succ{-ru,x-}{i} add{-r47,x-} c_r4H b_r4E
+AbsBinds [] [] [([], sUm{-r4d,x-}, sUm_aFF)]
+    sUm_aFF t_r5i
+	    = case t_r5i of
+		(Leaf{-rx,x-}{i} t_r5k) -> t_r5k
+		(Node{-rw,x-}{i} l_r5m r_r5n)
+		-> add{-r47,x-} sUm{-r4d,x-} l_r5m sUm{-r4d,x-} r_r5n
+AbsBinds [taG1] [] [([taG1], idl{-r46,x-}, idl_aFY)]
+    idl_aFY xs_r4x
+	    = case xs_r4x of
+		Nil{-rt,x-}{i} -> Nil{-rt,x-}{i} taG1
+		(Cons{-rs,x-}{i} y_r4A ys_r4B)
+		-> Cons{-rs,x-}{i} taG1 y_r4A idl{-r46,x-} taG1 ys_r4B
+AbsBinds [taGq] [] [([taGq], nUll{-r45,x-}, nUll_aGn)]
+    nUll_aGn l_r4r
+	     = case l_r4r of
+		 Nil{-rt,x-}{i} -> TT{-rq,x-}{i}
+		 (Cons{-rs,x-}{i} y_r4u ys_r4v) -> FF{-rr,x-}{i}
+AbsBinds [] [] [([], neg{-r44,x-}, neg_aGD)]
+    neg_aGD b_r4n
+	    = case b_r4n of
+		FF{-rr,x-}{i} -> TT{-rq,x-}{i}
+		TT{-rq,x-}{i} -> FF{-rr,x-}{i}
+AbsBinds [taGR, taGS] [] [([taGS, taGR], swap{-r43,x-}, swap_aGO)]
+    swap_aGO t_r4i
+	     = case t_r4i of
+		 (Mkpair{-r5B,x-}{i} x_r4k y_r4l)
+		 -> Mkpair{-r5B,x-}{i} [taGS, taGR] y_r4l x_r4k
+AbsBinds [] [] [([], idb{-r42,x-}, idb_aH9)]
+    idb_aH9 x_r4g = x_r4g
+AbsBinds [taHF] [] [([taHF], $d1{-rHL,x-}, d.Eval_aHh)]
+    d.Eval_aHh = ({-dict-} [] [])
+AbsBinds [] [] [([], $d2{-rHN,x-}, d.Eval_aHm)]
+    d.Eval_aHm = ({-dict-} [] [])
+AbsBinds [taHG] [] [([taHG], $d3{-rHP,x-}, d.Eval_aHs)]
+    d.Eval_aHs = ({-dict-} [] [])
+AbsBinds [taHH, taHI] [] [([taHH, taHI], $d4{-rHR,x-}, d.Eval_aHz)]
+    d.Eval_aHz = ({-dict-} [] [])
+AbsBinds [] [] [([], $d5{-rHT,x-}, d.Eval_aHE)]
+    d.Eval_aHE = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed add app before flatten idb idl lEngth nUll neg rEverse sUm swap Boolean(FF TT) List(Nil Cons) Nat(Zero Succ) Pair(Mkpair) Tree(Leaf Node);
+_instances_
+instance _forall_ [t] => {PrelBase.Eval (Tree t)} = $d1;
+instance {PrelBase.Eval Nat} = $d2;
+instance _forall_ [alpha] => {PrelBase.Eval (List alpha)} = $d3;
+instance _forall_ [a b] => {PrelBase.Eval (Pair a b)} = $d4;
+instance {PrelBase.Eval Boolean} = $d5;
+_declarations_
+1 $d1 _:_ _forall_ [t] => {PrelBase.Eval (Tree t)} ;;
+1 $d2 _:_ {PrelBase.Eval Nat} ;;
+1 $d3 _:_ _forall_ [alpha] => {PrelBase.Eval (List alpha)} ;;
+1 $d4 _:_ _forall_ [a b] => {PrelBase.Eval (Pair a b)} ;;
+1 $d5 _:_ {PrelBase.Eval Boolean} ;;
+1 data Boolean = FF |  TT ;
+1 data List alpha = Nil |  Cons alpha (List alpha) ;
+1 data Nat = Zero |  Succ Nat ;
+1 data Pair a b = Mkpair a b ;
+1 data Tree t = Leaf t |  Node (Tree t) (Tree t) ;
+1 add _:_ Nat -> Nat -> Nat ;;
+1 app _:_ _forall_ [ta] => List ta -> List ta -> List ta ;;
+1 before _:_ List Nat -> List Nat ;;
+1 flatten _:_ _forall_ [ta] => Tree ta -> List ta ;;
+1 idb _:_ Boolean -> Boolean ;;
+1 idl _:_ _forall_ [ta] => List ta -> List ta ;;
+1 lEngth _:_ _forall_ [ta] => List ta -> Nat ;;
+1 nUll _:_ _forall_ [ta] => List ta -> Boolean ;;
+1 neg _:_ Boolean -> Boolean ;;
+1 rEverse _:_ _forall_ [ta] => List ta -> List ta ;;
+1 sUm _:_ Tree Nat -> Nat ;;
+1 swap _:_ _forall_ [ta tb] => Pair tb ta -> Pair ta tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc043.stderr b/ghc/tests/typecheck/should_compile/tc043.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..fc2e71754484ecf10dfcb4daa336cbe71c4676be
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc043.stderr
@@ -0,0 +1,43 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taCy, taCu] [d.A_aCA] [([taCy, taCu], f{-r3B,x-}, f_aCm)]
+    op1_aDr = op1{-r3D,x-} taCu d.A_aCA
+    f_aCm x_r3h = op1_aDr
+AbsBinds [taCN] [d.B_aD3] [([taCN], $d1{-rDs,x-}, d.B_aCG)]
+    op2_aDw = op2_aDx
+    AbsBinds [] [] [([], op2_aDx, op2_aCK)]
+	op2_aCK PrelBase.[]{-5i,w-}{i} = PrelBase.I#{-5b,w-}{i} 0#
+	op2_aCK (x_r3p PrelBase.:{-55,w-}{i} xs_r3q)
+		= lit_aDv +_aDu (op2_aDw xs_r3q)
+    d.B_aCG = ({-dict-} [] [op2_aDx])
+AbsBinds [] [] [([], $d2{-rDt,x-}, d.A_aDb)]
+    AbsBinds [] [] [([], op1_aDy, op1_aDf)]
+	op1_aDf = PrelBase.I#{-5b,w-}{i} 2#
+    d.A_aDb = ({-dict-} [] [op1_aDy])
+op2{-r3E,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDp] [d.B_aDj] []
+op1{-r3D,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDq] [d.A_aDm] []
+d.Num_aDo = PrelBase.$d4{-raQ,p-}
++_aDu = PrelBase.+{-rfF,p-} PrelBase.Int{-3g,W-} d.Num_aDo
+lit_aDv = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f A(op1) B(op2);
+_instances_
+instance _forall_ [a] {B a} => {B [a]} = $d1;
+instance {A PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {B a} => {B [a]} ;;
+1 $d2 _:_ {A PrelBase.Int} ;;
+1 class A a where {op1 :: a} ;
+1 class B b where {op2 :: b -> PrelBase.Int} ;
+1 f _:_ _forall_ [ta tb] {A tb} => ta -> tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc044.hs b/ghc/tests/typecheck/should_compile/tc044.hs
index 9f98989bb11695d584aff99474db5652e4f3db34..84c91d19fd22b7defff0f406afb85c841bd17a00 100644
--- a/ghc/tests/typecheck/should_compile/tc044.hs
+++ b/ghc/tests/typecheck/should_compile/tc044.hs
@@ -1,6 +1,6 @@
 -- once produced a bug, here as regression test
 
-module P where
+module ShouldSucceed where
 
 f _ | otherwise = ()
 
diff --git a/ghc/tests/typecheck/should_compile/tc044.stderr b/ghc/tests/typecheck/should_compile/tc044.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6ee2d5c8ed0f8ec138b70401362b9e5eba3ee5d4
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc044.stderr
@@ -0,0 +1,16 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [tar6] [] [([tar6], f{-r1,x-}, f_aqX)]
+    f_aqX _ | PrelBase.otherwise{-818,p-} = PrelBase.(){-60,w-}{i}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: otherwise 1;
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta] => ta -> PrelBase.() ;;
diff --git a/ghc/tests/typecheck/should_compile/tc045.hs b/ghc/tests/typecheck/should_compile/tc045.hs
index fc6a72ea979aa66daf7efbb137feccb0f01cf6f3..4ff376667322ff0fd2c3251996d5e02e890d89e2 100644
--- a/ghc/tests/typecheck/should_compile/tc045.hs
+++ b/ghc/tests/typecheck/should_compile/tc045.hs
@@ -1,4 +1,4 @@
-module H where
+module ShouldSucceed where
 
 class C a where
  op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_compile/tc045.stderr b/ghc/tests/typecheck/should_compile/tc045.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..879c88916d969975392d2128ed52f52c4343a77e
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc045.stderr
@@ -0,0 +1,39 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [tald] [] [([tald], $d1{-rlI,x-}, d.C_al6)]
+    AbsBinds [] [] [([], op1_alJ, op1_ala)]
+	op1_ala xs_r3k = xs_r3k
+    d.C_al6 = ({-dict-} [] [op1_alJ])
+AbsBinds
+[talr]
+[d.B_alv, d.C_alw]
+[([talr], $d2{-rlK,x-}, d.B_alk)]
+    d.C_alu = d.C_alw
+    AbsBinds [] [] [([], op2_alM, op2_alo)]
+	op2_alo xs_r3s ys_r3t = xs_r3s
+    d.B_alk = ({-dict-} [d.C_alu] [op2_alM])
+scsel_BShouldSucceedC{-alL,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op2{-r3C,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [talG] [d.B_alC] []
+op1{-r3B,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [talH] [d.C_alF] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed B(op2) C(op1);
+_instances_
+instance _forall_ [a] => {C [a]} = $d1;
+instance _forall_ [a] {B a} => {B [a]} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] => {C [a]} ;;
+1 $d2 _:_ _forall_ [a] {B a, C [a]} => {B [a]} ;;
+1 class {C a} => B a where {op2 :: a -> a -> a} ;
+1 class C a where {op1 :: a -> a} ;
diff --git a/ghc/tests/typecheck/should_compile/tc046.hs b/ghc/tests/typecheck/should_compile/tc046.hs
index dbbf3a176a5ac1eba86875daaebdbf2b1880dfa3..c1ae30c96cad5596ad9542087aa12cf04de0d535 100644
--- a/ghc/tests/typecheck/should_compile/tc046.hs
+++ b/ghc/tests/typecheck/should_compile/tc046.hs
@@ -1,4 +1,4 @@
-module H where
+module ShouldSucceed where
 
 class C a where
  op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_compile/tc046.stderr b/ghc/tests/typecheck/should_compile/tc046.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..18c2be9fbad839fd16d4b782977ea9d70a9939d8
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc046.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+scsel_BShouldSucceedC{-akS,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op2{-r3n,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [takQ] [d.B_akM] []
+op1{-r3m,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [takR] [d.C_akP] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed B(op2) C(op1);
+_declarations_
+1 class {C a} => B a where {op2 :: a -> a -> a} ;
+1 class C a where {op1 :: a -> a} ;
diff --git a/ghc/tests/typecheck/should_compile/tc047.stderr b/ghc/tests/typecheck/should_compile/tc047.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..756d497503a4b54d259201a45f6aaa6a20fe8d5d
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc047.stderr
@@ -0,0 +1,34 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [tayV, tayY] [] [([tayV, tayY], sd{-r3w,x-}, sd_ayO)]
+    sd_ayO (f_r3s, s_r3t) = s_r3t
+AbsBinds [tazn, tazr] [] [([tazn, tazr], mp{-r3x,x-}, mp_az3)]
+    mp_az3 f_r3m PrelBase.[]{-5i,w-}{i} = PrelBase.[]{-5i,w-}{i} tazr
+    mp_az3 f_r3o (x_r3p PrelBase.:{-55,w-}{i} xs_r3q)
+	   = PrelBase.:{-55,w-}{i} tazr (f_r3o x_r3p) (mp_az3 f_r3o xs_r3q)
+AbsBinds
+[taA2, tazZ, taA0]
+[]
+[([taA2, tazZ, taA0], f{-r3y,x-}, f_azx)]
+    f_azx x_r3g
+	  = ranOAL_r3i [taA0, tazZ]
+	  where
+	      {- nonrec -}
+	      AbsBinds [tazP, tazS] [] [([tazP, tazS], ranOAL_r3i, ranOAL_azF)]
+		  ranOAL_azF xs_r3k
+			     = mp{-r3x,x-} [(tazS, tazP), tazP] sd{-r3w,x-} [tazS, tazP] xs_r3k
+	      {- nonrec -}
+	      {- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f mp sd OL;
+_declarations_
+1 type OL a = [a] ;
+1 f _:_ _forall_ [ta tb tc] => ta -> [(tb, tc)] -> [tc] ;;
+1 mp _:_ _forall_ [ta tb] => (ta -> tb) -> [ta] -> [tb] ;;
+1 sd _:_ _forall_ [ta tb] => (ta, tb) -> tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc048.stderr b/ghc/tests/typecheck/should_compile/tc048.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..d4227e73975e3a71a9e0ebc128d2358807b31e43
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc048.stderr
@@ -0,0 +1,64 @@
+
+
+================================================================================
+Typechecked:
+MkAFE{-r3X,x-}{i} =
+    _/\_ n_tr3K a_tr3L b_tr3M -> \ tpl_B1 ->
+	MkAFE{-r3X,x-}{i} {_@_ n_tr3K _@_ a_tr3L _@_ b_tr3M tpl_B1}
+MkFG{-r3W,x-}{i} =
+    _/\_ a_tr3O b_tr3P -> \ tpl_B1 ->
+	MkFG{-r3W,x-}{i} {_@_ a_tr3O _@_ b_tr3P tpl_B1}
+MkOL{-r3V,x-}{i} =
+    _/\_ a_tr3R -> \ tpl_B1 -> MkOL{-r3V,x-}{i} {_@_ a_tr3R tpl_B1}
+AbsBinds [taR8, taRb] [] [([taR8, taRb], sNd{-r3v,x-}, sNd_aR1)]
+    sNd_aR1 (f_r3F, s_r3G) = s_r3G
+AbsBinds [taRA, taRE] [] [([taRA, taRE], mAp{-r3u,x-}, mAp_aRg)]
+    mAp_aRg f_r3z PrelBase.[]{-5i,w-}{i} = PrelBase.[]{-5i,w-}{i} taRE
+    mAp_aRg f_r3B (x_r3C PrelBase.:{-55,w-}{i} xs_r3D)
+	    = PrelBase.:{-55,w-}{i} taRE (f_r3B x_r3C) (mAp_aRg f_r3B xs_r3D)
+AbsBinds
+[taRU, taRV]
+[]
+[([taRU, taRV], ranOAL{-r3s,x-}, ranOAL_aRP)]
+    ranOAL_aRP (MkOL{-r3V,x-}{i} xs_r3x)
+	       = mAp{-r3u,x-} [(taRU, taRV), taRV] sNd{-r3v,x-} [taRU, taRV]
+						   xs_r3x
+AbsBinds
+[taSn, taSo, taSp]
+[]
+[([taSn, taSo, taSp], ranAFE{-r3t,x-}, ranAFE_aSe)]
+    ranAFE_aSe (MkAFE{-r3X,x-}{i} nfs_r3I)
+	       = ranOAL{-r3s,x-} [taSn, FG{-r3T,x-} taSo taSp] nfs_r3I
+AbsBinds
+[taSQ, taSR, taSS]
+[]
+[([taSQ, taSR, taSS], $d1{-rSY,x-}, d.Eval_aSC)]
+    d.Eval_aSC = ({-dict-} [] [])
+AbsBinds [taST, taSU] [] [([taST, taSU], $d2{-rT0,x-}, d.Eval_aSJ)]
+    d.Eval_aSJ = ({-dict-} [] [])
+AbsBinds [taSV] [] [([taSV], $d3{-rT2,x-}, d.Eval_aSP)]
+    d.Eval_aSP = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d45 1 $d47 1 Eval 1;
+PrelTup 1 :: $d13 1;
+_exports_
+ShouldSucceed mAp ranAFE ranOAL sNd AFE(MkAFE) FG(MkFG) OL(MkOL);
+_instances_
+instance _forall_ [n a b] => {PrelBase.Eval (AFE n a b)} = $d1;
+instance _forall_ [a b] => {PrelBase.Eval (FG a b)} = $d2;
+instance _forall_ [a] => {PrelBase.Eval (OL a)} = $d3;
+_declarations_
+1 $d1 _:_ _forall_ [n a b] => {PrelBase.Eval (AFE n a b)} ;;
+1 $d2 _:_ _forall_ [a b] => {PrelBase.Eval (FG a b)} ;;
+1 $d3 _:_ _forall_ [a] => {PrelBase.Eval (OL a)} ;;
+1 data AFE n a b = MkAFE (OL (n, FG a b)) ;
+1 data FG a b = MkFG (OL (a, b)) ;
+1 data OL a = MkOL [a] ;
+1 mAp _:_ _forall_ [ta tb] => (ta -> tb) -> [ta] -> [tb] ;;
+1 ranAFE _:_ _forall_ [ta tb tc] => AFE ta tb tc -> [FG tb tc] ;;
+1 ranOAL _:_ _forall_ [ta tb] => OL (ta, tb) -> [tb] ;;
+1 sNd _:_ _forall_ [ta tb] => (ta, tb) -> tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc049.stderr b/ghc/tests/typecheck/should_compile/tc049.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7c8776464a9ba24c240105d69a9df5191c968aca
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc049.stderr
@@ -0,0 +1,129 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], main3{-r3W,x-}, main3_aSS)]
+    main3_aSS
+	= [[lit_aXD] (PrelBase.Int{-3g,W-}),
+	   [lit_aXE] (PrelBase.Int{-3g,W-})] ([PrelBase.Int{-3g,W-}])
+	  ==_aXC [[lit_aXF] (PrelBase.Int{-3g,W-})] ([PrelBase.Int{-3g,W-}])
+AbsBinds [] [] [([], main2{-r3X,x-}, main2_aTq)]
+    main2_aTq = "Hello" ==_aXB "Goodbye"
+AbsBinds [] [] [([], main1{-r3Y,x-}, main1_aTz)]
+    main1_aTz
+	= [[(lit_aXz,
+	     PrelBase.True{-5E,w-}{i})] ((PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-}))] ([(PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-})])
+	  ==_aXy [[(lit_aXA,
+		    PrelBase.False{-58,w-}{i})] ((PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-}))] ([(PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-})])
+AbsBinds
+[taUG]
+[d.Eq_aUY]
+[([taUG], mem3{-r40,x-}, mem3_aUe), ([taUG],
+				     mem4{-r3Z,x-},
+				     mem4_aUf)]
+    d.Eq_aUW = PrelBase.$d28{-rb4,p-} taUG d.Eq_aUY
+    ==_aXG = PrelBase.=={-8Y,p-} [taUG] d.Eq_aUW
+    mem3_aUe x_r3N PrelBase.[]{-5i,w-}{i} = PrelBase.False{-58,w-}{i}
+    mem3_aUe x_r3P (y_r3Q PrelBase.:{-55,w-}{i} ys_r3R)
+	     = if [x_r3P] (taUG) ==_aXG [y_r3Q] (taUG) then
+		   mem4_aUf x_r3P ys_r3R
+	       else
+		   PrelBase.False{-58,w-}{i}
+    mem4_aUf y_r3T (x_r3U PrelBase.:{-55,w-}{i} xs_r3V)
+	     = mem3_aUe y_r3T xs_r3V
+AbsBinds [] [] [([], oR1{-r42,x-}, oR1_aV0)]
+    oR1_aV0 a_r3E b_r3F
+	    = if a_r3E then PrelBase.True{-5E,w-}{i} else b_r3F
+AbsBinds [] [] [([], oR{-r44,x-}, oR_aVe)]
+    oR_aVe a_r3v b_r3w
+	   = if a_r3v then PrelBase.True{-5E,w-}{i} else b_r3w
+AbsBinds
+[taWa]
+[d.Eq_aWd]
+[([taWa], mem2{-r41,x-}, mem2_aVs), ([taWa],
+				     mem1{-r43,x-},
+				     mem1_aVt)]
+    ==_aXH = PrelBase.=={-8Y,p-} taWa d.Eq_aWd
+    ==_aXI = ==_aXH
+    mem2_aVs x_r3H PrelBase.[]{-5i,w-}{i} = PrelBase.False{-58,w-}{i}
+    mem2_aVs x_r3J (y_r3K PrelBase.:{-55,w-}{i} ys_r3L)
+	     = (x_r3J ==_aXH y_r3K) oR{-r44,x-} (mem1_aVt x_r3J ys_r3L)
+    mem1_aVt x_r3y PrelBase.[]{-5i,w-}{i} = PrelBase.False{-58,w-}{i}
+    mem1_aVt x_r3A (y_r3B PrelBase.:{-55,w-}{i} ys_r3C)
+	     = (x_r3A ==_aXI y_r3B) oR1{-r42,x-} (mem2_aVs x_r3A ys_r3C)
+AbsBinds [taWA] [d.Eq_aWD] [([taWA], mem{-r45,x-}, mem_aWf)]
+    ==_aXJ = PrelBase.=={-8Y,p-} taWA d.Eq_aWD
+    mem_aWf x_r3p PrelBase.[]{-5i,w-}{i} = PrelBase.False{-58,w-}{i}
+    mem_aWf x_r3r (y_r3s PrelBase.:{-55,w-}{i} ys_r3t)
+	    = (x_r3r ==_aXJ y_r3s) oR{-r44,x-} (mem_aWf x_r3r ys_r3t)
+AbsBinds
+[taWZ]
+[d.Ord_aX3, d.Num_aX6]
+[([taWZ], fib{-r46,x-}, fib_aWF)]
+    <=_aXK = PrelBase.<={-rgd,p-} taWZ d.Ord_aX3
+    fromInt_aXL = PrelBase.fromInt{-8R,p-} taWZ d.Num_aX6
+    lit_aXM = fromInt_aXL PrelBase.I#{-5b,w-}{i} 2#
+    d.Num_aX8 = d.Num_aX6
+    +_aXN = PrelBase.+{-rg6,p-} taWZ d.Num_aX8
+    d.Num_aXa = d.Num_aX6
+    -_aXO = PrelBase.-{-817,p-} taWZ d.Num_aXa
+    fromInt_aXP = fromInt_aXL
+    lit_aXQ = fromInt_aXP PrelBase.I#{-5b,w-}{i} 1#
+    -_aXR = -_aXO
+    lit_aXS = lit_aXM
+    fib_aWF n_r3n
+	    = if n_r3n <=_aXK lit_aXM then
+		  n_r3n
+	      else
+		  (fib_aWF n_r3n -_aXO lit_aXQ) +_aXN (fib_aWF n_r3n -_aXR lit_aXS)
+d.Eq_aXj = PrelBase.$d8{-rbE,p-}
+d.Eq_aXk = PrelBase.$d33{-rba,p-}
+d.Eq_aXh =
+    PrelTup.$d9{-rwm,p-} [PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-}]
+	[d.Eq_aXj, d.Eq_aXk]
+d.Eq_aXf =
+    PrelBase.$d28{-rb4,p-}
+	(PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-})
+	d.Eq_aXh
+d.Eq_aXd =
+    PrelBase.$d28{-rb4,p-}
+	[(PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-})]
+	d.Eq_aXf
+==_aXy =
+    PrelBase.=={-8Y,p-}
+	[[(PrelBase.Int{-3g,W-}, PrelBase.Bool{-34,W-})]]
+	d.Eq_aXd
+lit_aXz = PrelBase.I#{-5b,w-}{i} 1#
+lit_aXA = PrelBase.I#{-5b,w-}{i} 2#
+d.Eq_aXq = PrelBase.$d34{-rbb,p-}
+d.Eq_aXo = PrelBase.$d28{-rb4,p-} PrelBase.Char{-38,W-} d.Eq_aXq
+==_aXB = PrelBase.=={-8Y,p-} [PrelBase.Char{-38,W-}] d.Eq_aXo
+d.Eq_aXx = d.Eq_aXj
+d.Eq_aXv = PrelBase.$d28{-rb4,p-} PrelBase.Int{-3g,W-} d.Eq_aXx
+d.Eq_aXt = PrelBase.$d28{-rb4,p-} [PrelBase.Int{-3g,W-}] d.Eq_aXv
+==_aXC = PrelBase.=={-8Y,p-} [[PrelBase.Int{-3g,W-}]] d.Eq_aXt
+lit_aXD = lit_aXz
+lit_aXE = lit_aXA
+lit_aXF = PrelBase.I#{-5b,w-}{i} 3#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d15 1 $d16 1 $d2 1 $d22 1 $d27 1 $d28 1 $d3 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 Eq 1 Eval 1 Num 1 Ord 1 Ordering 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d17 1 $d18 1 $d29 1 $d33 1 $d34 1 $d35 1;
+PrelTup 1 :: $d13 1 $d4 1 $d49 1 $d9 1;
+_exports_
+ShouldSucceed fib main1 main2 main3 mem mem1 mem2 mem3 mem4 oR oR1;
+_declarations_
+1 fib _:_ _forall_ [ta] {PrelBase.Ord ta, PrelBase.Num ta} => ta -> ta ;;
+1 main1 _:_ PrelBase.Bool ;;
+1 main2 _:_ PrelBase.Bool ;;
+1 main3 _:_ PrelBase.Bool ;;
+1 mem _:_ _forall_ [ta] {PrelBase.Eq ta} => ta -> [ta] -> PrelBase.Bool ;;
+1 mem1 _:_ _forall_ [ta] {PrelBase.Eq ta} => ta -> [ta] -> PrelBase.Bool ;;
+1 mem2 _:_ _forall_ [ta] {PrelBase.Eq ta} => ta -> [ta] -> PrelBase.Bool ;;
+1 mem3 _:_ _forall_ [ta] {PrelBase.Eq ta} => ta -> [ta] -> PrelBase.Bool ;;
+1 mem4 _:_ _forall_ [ta] {PrelBase.Eq ta} => ta -> [ta] -> PrelBase.Bool ;;
+1 oR _:_ PrelBase.Bool -> PrelBase.Bool -> PrelBase.Bool ;;
+1 oR1 _:_ PrelBase.Bool -> PrelBase.Bool -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc050.stderr b/ghc/tests/typecheck/should_compile/tc050.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e5f1f50d9260175b787add6dfc9fe672b304f5c1
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc050.stderr
@@ -0,0 +1,60 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taCD, taCz]
+[d.Foo_aCF, d.Num_aCI]
+[([taCD, taCz], g{-r3F,x-}, g_aCl)]
+    o_and_aDR = o_and{-r3I,x-} taCz d.Foo_aCF
+    fromInt_aDY = PrelBase.fromInt{-8R,p-} taCz d.Num_aCI
+    lit_aDZ = fromInt_aDY PrelBase.I#{-5b,w-}{i} 1#
+    g_aCl x_r3j y_r3k = o_and_aDR x_r3j lit_aDZ
+AbsBinds [taD1] [] [([taD1], f{-r3G,x-}, f_aCK)]
+    f_aCK x_r3g y_r3h = o_and_aDU x_r3g PrelBase.False{-58,w-}{i}
+AbsBinds [] [] [([], $d1{-rDS,x-}, d.Foo_aD8)]
+    AbsBinds [] [] [([], o_and_aE0, o_and_aDc)]
+	lit_aE1 = lit_aDV
+	==_aE2 = ==_aDW
+	==_aE3 = ==_aDW
+	lit_aE4 = lit_aDX
+	==_aE5 = ==_aDW
+	o_and_aDc x_r3p 0 = PrelBase.I#{-5b,w-}{i} 0#
+	o_and_aDc 0 x_r3r = PrelBase.I#{-5b,w-}{i} 0#
+	o_and_aDc 1 1 = PrelBase.I#{-5b,w-}{i} 1#
+    d.Foo_aD8 = ({-dict-} [] [o_and_aE0])
+AbsBinds [] [] [([], $d2{-rDT,x-}, d.Foo_aDA)]
+    AbsBinds [] [] [([], o_and_aE6, o_and_aDE)]
+	o_and_aDE PrelBase.False{-58,w-}{i} x_r3y
+		  = PrelBase.False{-58,w-}{i}
+	o_and_aDE x_r3A PrelBase.False{-58,w-}{i}
+		  = PrelBase.False{-58,w-}{i}
+	o_and_aDE PrelBase.True{-5E,w-}{i} PrelBase.True{-5E,w-}{i}
+		  = PrelBase.True{-5E,w-}{i}
+    d.Foo_aDA = ({-dict-} [] [o_and_aE6])
+o_and{-r3I,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDQ] [d.Foo_aDK] []
+d.Foo_aDM = $d2{-rDT,x-}
+o_and_aDU = o_and{-r3I,x-} PrelBase.Bool{-34,W-} d.Foo_aDM
+lit_aDV = PrelBase.I#{-5b,w-}{i} 0#
+d.Eq_aDP = PrelBase.$d8{-rbh,p-}
+==_aDW = PrelBase.=={-8Y,p-} PrelBase.Int{-3g,W-} d.Eq_aDP
+lit_aDX = PrelBase.I#{-5b,w-}{i} 1#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f g Foo(o_and);
+_instances_
+instance {Foo PrelBase.Int} = $d1;
+instance {Foo PrelBase.Bool} = $d2;
+_declarations_
+1 $d1 _:_ {Foo PrelBase.Int} ;;
+1 $d2 _:_ {Foo PrelBase.Bool} ;;
+1 class Foo a where {o_and :: a -> a -> a} ;
+1 f _:_ _forall_ [ta] => PrelBase.Bool -> ta -> PrelBase.Bool ;;
+1 g _:_ _forall_ [ta tb] {Foo tb, PrelBase.Num tb} => tb -> ta -> tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc051.stderr b/ghc/tests/typecheck/should_compile/tc051.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..25ad280ed330e5f3301bb8820df809efca9672be
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc051.stderr
@@ -0,0 +1,42 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], $d1{-rlY,x-}, d.Ord'_alb)]
+    d.Eq'_alg = $d3{-rm0,x-}
+    AbsBinds [] [] [([], lt_am2, lt_alf)]
+	lt_alf x_r3j y_r3k = PrelBase.True{-5E,w-}{i}
+    d.Ord'_alb = ({-dict-} [d.Eq'_alg] [lt_am2])
+AbsBinds [taly] [d.Eq'_alB] [([taly], $d2{-rlZ,x-}, d.Eq'_alr)]
+    AbsBinds [] [] [([], doubleeq_am3, doubleeq_alv)]
+	doubleeq_alv x_r3s y_r3t = PrelBase.True{-5E,w-}{i}
+    d.Eq'_alr = ({-dict-} [] [doubleeq_am3])
+AbsBinds [] [] [([], $d3{-rm0,x-}, d.Eq'_alI)]
+    AbsBinds [] [] [([], doubleeq_am4, doubleeq_alM)]
+	doubleeq_alM x_r3z y_r3A = PrelBase.True{-5E,w-}{i}
+    d.Eq'_alI = ({-dict-} [] [doubleeq_am4])
+scsel_Ord'ShouldSucceedEq'{-am1,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+lt{-r3J,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [talW] [d.Ord'_alS] []
+doubleeq{-r3I,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [talX] [d.Eq'_alV] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed Eq'(doubleeq) Ord'(lt);
+_instances_
+instance {Ord' PrelBase.Int} = $d1;
+instance _forall_ [a] {Eq' a} => {Eq' [a]} = $d2;
+instance {Eq' PrelBase.Int} = $d3;
+_declarations_
+1 $d1 _:_ {Ord' PrelBase.Int} ;;
+1 $d2 _:_ _forall_ [a] {Eq' a} => {Eq' [a]} ;;
+1 $d3 _:_ {Eq' PrelBase.Int} ;;
+1 class Eq' a where {doubleeq :: a -> a -> PrelBase.Bool} ;
+1 class {Eq' a} => Ord' a where {lt :: a -> a -> PrelBase.Bool} ;
diff --git a/ghc/tests/typecheck/should_compile/tc052.stderr b/ghc/tests/typecheck/should_compile/tc052.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..5f5659798f0ce1db0aa8677f2a188b90ac4f36c2
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc052.stderr
@@ -0,0 +1,15 @@
+
+
+================================================================================
+Typechecked:
+
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed A B C;
+_declarations_
+1 type A a = B a ;
+1 type B c = C ;
+1 type C = PrelBase.Int ;
diff --git a/ghc/tests/typecheck/should_compile/tc053.stderr b/ghc/tests/typecheck/should_compile/tc053.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..1746c5bdc1a8b8d6516fc84d4d0142fc7c71d2f3
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc053.stderr
@@ -0,0 +1,48 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taCq]
+[d.Eq'_aCv, d.Num_aCy]
+[([taCq], f{-r3A,x-}, f_aCf)]
+    d.Eq'_aCt = $d1{-rDn,x-} taCq d.Eq'_aCv
+    deq_aDp = deq{-r3B,x-} [taCq] d.Eq'_aCt
+    fromInt_aDq = PrelBase.fromInt{-8R,p-} taCq d.Num_aCy
+    lit_aDr = fromInt_aDq PrelBase.I#{-5b,w-}{i} 1#
+    f_aCf x_r3f = deq_aDp x_r3f [lit_aDr] (taCq)
+AbsBinds [taCP] [d.Eq'_aD1] [([taCP], $d1{-rDn,x-}, d.Eq'_aCE)]
+    d.Eq'_aD5 = d.Eq'_aD1
+    deq_aDs = deq{-r3B,x-} taCP d.Eq'_aD5
+    deq_aDt = deq_aDu
+    AbsBinds [] [] [([], deq_aDu, deq_aCI)]
+	deq_aCI (a_r3m PrelBase.:{-55,w-}{i} as_r3n)
+		(b_r3o PrelBase.:{-55,w-}{i} bs_r3p)
+		= if deq_aDs a_r3m b_r3o then
+		      deq_aDt as_r3n bs_r3p
+		  else
+		      PrelBase.False{-58,w-}{i}
+    d.Eq'_aCE = ({-dict-} [] [deq_aDu])
+AbsBinds [] [] [([], $d2{-rDo,x-}, d.Eq'_aDb)]
+    AbsBinds [] [] [([], deq_aDv, deq_aDf)]
+	deq_aDf x_r3v y_r3w = PrelBase.True{-5E,w-}{i}
+    d.Eq'_aDb = ({-dict-} [] [deq_aDv])
+deq{-r3B,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDm] [d.Eq'_aDl] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f Eq'(deq);
+_instances_
+instance _forall_ [a] {Eq' a} => {Eq' [a]} = $d1;
+instance {Eq' PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq' a} => {Eq' [a]} ;;
+1 $d2 _:_ {Eq' PrelBase.Int} ;;
+1 class Eq' a where {deq :: a -> a -> PrelBase.Bool} ;
+1 f _:_ _forall_ [ta] {Eq' ta, PrelBase.Num ta} => [ta] -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc054.stderr b/ghc/tests/typecheck/should_compile/tc054.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..2924ab665a3d7d20618a11cd162d844ddb8c735f
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc054.stderr
@@ -0,0 +1,50 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taCH, taCC]
+[d.Ord'_aCJ, d.Num_aCM]
+[([taCH, taCC], f{-r3D,x-}, f_aCo)]
+    lt_aDm = lt{-r3G,x-} taCC d.Ord'_aCJ
+    fromInt_aDq = PrelBase.fromInt{-8R,p-} taCC d.Num_aCM
+    lit_aDr = fromInt_aDq PrelBase.I#{-5b,w-}{i} 1#
+    f_aCo x_r3h y_r3i
+	  | lt_aDm x_r3h lit_aDr = PrelBase.True{-5E,w-}{i}
+	  | PrelBase.otherwise{-818,p-} = PrelBase.False{-58,w-}{i}
+AbsBinds [] [] [([], $d1{-rDn,x-}, d.Ord'_aCR)]
+    d.Eq'_aCW = $d2{-rDo,x-}
+    AbsBinds [] [] [([], lt_aDs, lt_aCV)]
+	lt_aCV x_r3n y_r3o = PrelBase.True{-5E,w-}{i}
+    d.Ord'_aCR = ({-dict-} [d.Eq'_aCW] [lt_aDs])
+AbsBinds [] [] [([], $d2{-rDo,x-}, d.Eq'_aD6)]
+    AbsBinds [] [] [([], doubleeq_aDt, doubleeq_aDa)]
+	doubleeq_aDa x_r3u y_r3v = PrelBase.True{-5E,w-}{i}
+    d.Eq'_aD6 = ({-dict-} [] [doubleeq_aDt])
+scsel_Ord'ShouldSucceedEq'{-aDp,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+lt{-r3G,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taDk] [d.Ord'_aDg] []
+doubleeq{-r3F,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDl] [d.Eq'_aDj] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 otherwise 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f Eq'(doubleeq) Ord'(lt);
+_instances_
+instance {Ord' PrelBase.Int} = $d1;
+instance {Eq' PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ {Ord' PrelBase.Int} ;;
+1 $d2 _:_ {Eq' PrelBase.Int} ;;
+1 class Eq' a where {doubleeq :: a -> a -> PrelBase.Bool} ;
+1 class {Eq' a} => Ord' a where {lt :: a -> a -> PrelBase.Bool} ;
+1 f _:_ _forall_ [ta tb] {Ord' tb, PrelBase.Num tb} => tb -> ta -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc055.stderr b/ghc/tests/typecheck/should_compile/tc055.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..15e043001a6584ad74eacae6e6370858a6bfd3f0
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc055.stderr
@@ -0,0 +1,22 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[tayU, tayW]
+[]
+[([tayU, tayW], x{-r3i,x-}, x_ayt), ([tayU, tayW],
+				     y{-r3h,x-},
+				     y_ayu)]
+    (x_ayt, y_ayu) = (\ p_r3e -> p_r3e, \ q_r3g -> q_r3g)
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed x y;
+_declarations_
+1 x _:_ _forall_ [ta tb] => ta -> ta ;;
+1 y _:_ _forall_ [ta tb] => tb -> tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc056.stderr b/ghc/tests/typecheck/should_compile/tc056.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..032b701387f547628094d091532d87bc653ac06b
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc056.stderr
@@ -0,0 +1,55 @@
+ 
+tc056.hs:15:warning:
+    Duplicated class assertion `Eq' a' in context: `(Eq' a, Eq' a)'
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taCJ, taCG]
+[d.Eq'_aCN, d.Num_aCR]
+[([taCJ, taCG], f{-r3E,x-}, f_aCq)]
+    d.Eq'_aCO = d.Eq'_aCN
+    d.Eq'_aCL = $d1{-rDw,x-} taCG [d.Eq'_aCN, d.Eq'_aCO]
+    doubleeq_aDz = doubleeq{-r3G,x-} [taCG] d.Eq'_aCL
+    fromInt_aDA = PrelBase.fromInt{-8R,p-} taCG d.Num_aCR
+    lit_aDB = fromInt_aDA PrelBase.I#{-5b,w-}{i} 1#
+    f_aCq x_r3h y_r3i = doubleeq_aDz x_r3h [lit_aDB] (taCG)
+AbsBinds
+[taD4]
+[d.Eq'_aD7, d.Eq'_aD8]
+[([taD4], $d1{-rDw,x-}, d.Eq'_aCX)]
+    AbsBinds [] [] [([], doubleeq_aDC, doubleeq_aD1)]
+	doubleeq_aD1 x_r3p y_r3q = PrelBase.True{-5E,w-}{i}
+    d.Eq'_aCX = ({-dict-} [] [doubleeq_aDC])
+AbsBinds [] [] [([], $d2{-rDx,x-}, d.Eq'_aDg)]
+    AbsBinds [] [] [([], doubleeq_aDD, doubleeq_aDk)]
+	doubleeq_aDk x_r3w y_r3x = PrelBase.True{-5E,w-}{i}
+    d.Eq'_aDg = ({-dict-} [] [doubleeq_aDD])
+scsel_Ord'ShouldSucceedEq'{-aDy,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+lt{-r3H,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taDu] [d.Ord'_aDq] []
+doubleeq{-r3G,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDv] [d.Eq'_aDt] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f Eq'(doubleeq) Ord'(lt);
+_instances_
+instance _forall_ [a] {Eq' a, Eq' a} => {Eq' [a]} = $d1;
+instance {Eq' PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq' a, Eq' a} => {Eq' [a]} ;;
+1 $d2 _:_ {Eq' PrelBase.Int} ;;
+1 class Eq' a where {doubleeq :: a -> a -> PrelBase.Bool} ;
+1 class {Eq' a} => Ord' a where {lt :: a -> a -> PrelBase.Bool} ;
+1 f _:_ _forall_ [ta tb] {Eq' tb, PrelBase.Num tb} => [tb] -> ta -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc057.hi b/ghc/tests/typecheck/should_compile/tc057.hi
deleted file mode 100644
index 3613dfacb6086edf6c6fbbc3b573cecd04026cec..0000000000000000000000000000000000000000
--- a/ghc/tests/typecheck/should_compile/tc057.hi
+++ /dev/null
@@ -1,7 +0,0 @@
-interface ShouldSucceed where {
-class Eq' a where { deq }
-instance <Eq' Int>
-instance Eq' a => <Eq' [a]>
-dand  ::  Bool -> Bool -> Bool
-f  ::  Eq' t93 => t93 -> t93 -> Bool
-}
diff --git a/ghc/tests/typecheck/should_compile/tc057.stderr b/ghc/tests/typecheck/should_compile/tc057.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..bbc303f309ba538280805bdf94e25b7b69e6ebe9
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc057.stderr
@@ -0,0 +1,55 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], dand{-r3j,x-}, dand_aCq)]
+    dand_aCq PrelBase.True{-5E,w-}{i} PrelBase.True{-5E,w-}{i}
+	     = PrelBase.True{-5E,w-}{i}
+    dand_aCq x_r3m y_r3n = PrelBase.False{-58,w-}{i}
+AbsBinds [taCI] [d.Eq'_aCY] [([taCI], f{-r3i,x-}, f_aCF)]
+    d.Eq'_aD0 = d.Eq'_aCY
+    deq_aE1 = deq{-r3M,x-} taCI d.Eq'_aD0
+    f_aCF p_r3p q_r3q
+	  = dand{-r3j,x-} deq_aE1 p_r3p q_r3q
+			  deq_aDZ [lit_aE0] (PrelBase.Int{-3g,W-})
+				  [PrelBase.I#{-5b,w-}{i} 2#] (PrelBase.Int{-3g,W-})
+AbsBinds [taDj] [d.Eq'_aDv] [([taDj], $d1{-rDX,x-}, d.Eq'_aD8)]
+    d.Eq'_aDz = d.Eq'_aDv
+    f_aE2 = f{-r3i,x-} taDj d.Eq'_aDz
+    d.Eq'_aDB = d.Eq'_aD8
+    f_aE3 = f{-r3i,x-} [taDj] d.Eq'_aDB
+    AbsBinds [] [] [([], deq_aE4, deq_aDc)]
+	deq_aDc (a_r3y PrelBase.:{-55,w-}{i} as_r3z)
+		(b_r3A PrelBase.:{-55,w-}{i} bs_r3B)
+		= dand{-r3j,x-} f_aE2 a_r3y b_r3A f_aE3 as_r3z bs_r3B
+    d.Eq'_aD8 = ({-dict-} [] [deq_aE4])
+AbsBinds [] [] [([], $d2{-rDY,x-}, d.Eq'_aDH)]
+    AbsBinds [] [] [([], deq_aE5, deq_aDL)]
+	deq_aDL x_r3H y_r3I = PrelBase.True{-5E,w-}{i}
+    d.Eq'_aDH = ({-dict-} [] [deq_aE5])
+deq{-r3M,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDW] [d.Eq'_aDR] []
+d.Eq'_aDV = $d2{-rDY,x-}
+d.Eq'_aDT = $d1{-rDX,x-} PrelBase.Int{-3g,W-} d.Eq'_aDV
+deq_aDZ = deq{-r3M,x-} [PrelBase.Int{-3g,W-}] d.Eq'_aDT
+lit_aE0 = PrelBase.I#{-5b,w-}{i} 1#
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed dand f Eq'(deq);
+_instances_
+instance _forall_ [a] {Eq' a} => {Eq' [a]} = $d1;
+instance {Eq' PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq' a} => {Eq' [a]} ;;
+1 $d2 _:_ {Eq' PrelBase.Int} ;;
+1 class Eq' a where {deq :: a -> a -> PrelBase.Bool} ;
+1 dand _:_ PrelBase.Bool -> PrelBase.Bool -> PrelBase.Bool ;;
+1 f _:_ _forall_ [ta] {Eq' ta} => ta -> ta -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc058.stderr b/ghc/tests/typecheck/should_compile/tc058.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..c3d731c5846708aca8931bc04ddd3c9fd7ab0684
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc058.stderr
@@ -0,0 +1,59 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taCQ, taCN]
+[d.Ord2_aCV, d.Num_aCY]
+[([taCQ, taCN], f{-r3M,x-}, f_aCx)]
+    d.Eq2_aCU = scsel_Ord2ShouldSucceedEq2{-aDW,x-} taCN d.Ord2_aCV
+    d.Eq2_aCS = $d1{-rDT,x-} taCN [d.Eq2_aCU, d.Ord2_aCV]
+    doubleeq_aDX = doubleeq{-r3N,x-} [taCN] d.Eq2_aCS
+    fromInt_aDY = PrelBase.fromInt{-8R,p-} taCN d.Num_aCY
+    lit_aDZ = fromInt_aDY PrelBase.I#{-5b,w-}{i} 1#
+    f_aCx x_r3h y_r3i = doubleeq_aDX x_r3h [lit_aDZ] (taCN)
+AbsBinds
+[taDc]
+[d.Eq2_aDf, d.Ord2_aDg]
+[([taDc], $d1{-rDT,x-}, d.Eq2_aD5)]
+    AbsBinds [] [] [([], doubleeq_aE0, doubleeq_aD9)]
+	doubleeq_aD9 xs_r3q ys_r3r = PrelBase.True{-5E,w-}{i}
+    d.Eq2_aD5 = ({-dict-} [] [doubleeq_aE0])
+AbsBinds [] [] [([], $d2{-rDU,x-}, d.Ord2_aDo)]
+    d.Eq2_aDt = $d3{-rDV,x-}
+    AbsBinds [] [] [([], lt_aE1, lt_aDs)]
+	lt_aDs x_r3x y_r3y = PrelBase.True{-5E,w-}{i}
+    d.Ord2_aDo = ({-dict-} [d.Eq2_aDt] [lt_aE1])
+AbsBinds [] [] [([], $d3{-rDV,x-}, d.Eq2_aDD)]
+    AbsBinds [] [] [([], doubleeq_aE2, doubleeq_aDH)]
+	doubleeq_aDH x_r3E y_r3F = PrelBase.True{-5E,w-}{i}
+    d.Eq2_aDD = ({-dict-} [] [doubleeq_aE2])
+scsel_Ord2ShouldSucceedEq2{-aDW,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+lt{-r3O,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taDR] [d.Ord2_aDN] []
+doubleeq{-r3N,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taDS] [d.Eq2_aDQ] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f Eq2(doubleeq) Ord2(lt);
+_instances_
+instance _forall_ [a] {Eq2 a, Ord2 a} => {Eq2 [a]} = $d1;
+instance {Ord2 PrelBase.Int} = $d2;
+instance {Eq2 PrelBase.Int} = $d3;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq2 a, Ord2 a} => {Eq2 [a]} ;;
+1 $d2 _:_ {Ord2 PrelBase.Int} ;;
+1 $d3 _:_ {Eq2 PrelBase.Int} ;;
+1 class Eq2 a where {doubleeq :: a -> a -> PrelBase.Bool} ;
+1 class {Eq2 a} => Ord2 a where {lt :: a -> a -> PrelBase.Bool} ;
+1 f _:_ _forall_ [ta tb] {Ord2 tb, PrelBase.Num tb} => [tb] -> ta -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc059.stderr b/ghc/tests/typecheck/should_compile/tc059.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..1efc33c38da82177d120de5f6a4ed1beb69b50b5
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc059.stderr
@@ -0,0 +1,60 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taCB]
+[d.Eq2_aCG, d.Num_aCJ]
+[([taCB], f{-r3J,x-}, f_aCq)]
+    d.Eq2_aCE = $d1{-rDT,x-} taCB d.Eq2_aCG
+    deq_aDV = deq{-r3K,x-} [taCB] d.Eq2_aCE
+    fromInt_aDW = PrelBase.fromInt{-8R,p-} taCB d.Num_aCJ
+    lit_aDX = fromInt_aDW PrelBase.I#{-5b,w-}{i} 1#
+    f_aCq x_r3g = deq_aDV x_r3g [lit_aDX] (taCB)
+AbsBinds [taD0] [d.Eq2_aDq] [([taD0], $d1{-rDT,x-}, d.Eq2_aCP)]
+    d.Eq2_aDt = d.Eq2_aDq
+    deq_aDY = deq{-r3K,x-} taD0 d.Eq2_aDt
+    d.Eq2_aDv = d.Eq2_aDq
+    foo_aDZ = foo{-r3L,x-} taD0 d.Eq2_aDv
+    deq_aE0 = deq_aE2
+    foo_aE1 = foo_aE3
+    AbsBinds [] [] [([], deq_aE2, deq_aCT)]
+	deq_aCT (a_r3n PrelBase.:{-55,w-}{i} as_r3o)
+		(b_r3p PrelBase.:{-55,w-}{i} bs_r3q)
+		= if deq_aDY a_r3n foo_aDZ b_r3p then
+		      deq_aE0 as_r3o foo_aE1 bs_r3q
+		  else
+		      PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], foo_aE3, foo_aDn)]
+	foo_aDn x_r3u = x_r3u
+    d.Eq2_aCP = ({-dict-} [] [deq_aE2, foo_aE3])
+AbsBinds [] [] [([], $d2{-rDU,x-}, d.Eq2_aDB)]
+    AbsBinds [] [] [([], deq_aE4, deq_aDF)]
+	deq_aDF x_r3A y_r3B = PrelBase.True{-5E,w-}{i}
+    AbsBinds [] [] [([], foo_aE5, foo_aDM)]
+	foo_aDM x_r3F = x_r3F
+    d.Eq2_aDB = ({-dict-} [] [deq_aE4, foo_aE5])
+deq{-r3K,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+foo{-r3L,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taDS] [d.Eq2_aDR] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f Eq2(deq foo);
+_instances_
+instance _forall_ [a] {Eq2 a} => {Eq2 [a]} = $d1;
+instance {Eq2 PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq2 a} => {Eq2 [a]} ;;
+1 $d2 _:_ {Eq2 PrelBase.Int} ;;
+1 class Eq2 a where {deq :: a -> a -> PrelBase.Bool; foo :: a -> a} ;
+1 f _:_ _forall_ [ta] {Eq2 ta, PrelBase.Num ta} => [ta] -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc060.stderr b/ghc/tests/typecheck/should_compile/tc060.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..fcb4cedac2e4c27d6f56a0558227b63650cb167d
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc060.stderr
@@ -0,0 +1,35 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], $d1{-rlE,x-}, d.Eq2_akU)]
+    AbsBinds [] [] [([], deq_alF, deq_akY)]
+	deq_akY x_r3h y_r3i = PrelBase.True{-5E,w-}{i}
+    d.Eq2_akU = ({-dict-} [] [deq_alF])
+AbsBinds [tali] [d.Eq2_alu] [([tali], $d2{-rlG,x-}, d.Eq2_al7)]
+    d.Eq2_aly = d.Eq2_alu
+    deq_alH = deq{-r3x,x-} tali d.Eq2_aly
+    deq_alI = deq_alJ
+    AbsBinds [] [] [([], deq_alJ, deq_alb)]
+	deq_alb (a_r3q PrelBase.:{-55,w-}{i} as_r3r)
+		(b_r3s PrelBase.:{-55,w-}{i} bs_r3t)
+		= if deq_alH a_r3q b_r3s then
+		      deq_alI as_r3r bs_r3t
+		  else
+		      PrelBase.False{-58,w-}{i}
+    d.Eq2_al7 = ({-dict-} [] [deq_alJ])
+deq{-r3x,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [talD] [d.Eq2_alC] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed Eq2(deq);
+_instances_
+instance {Eq2 PrelBase.Int} = $d1;
+instance _forall_ [a] {Eq2 a} => {Eq2 [a]} = $d2;
+_declarations_
+1 $d1 _:_ {Eq2 PrelBase.Int} ;;
+1 $d2 _:_ _forall_ [a] {Eq2 a} => {Eq2 [a]} ;;
+1 class Eq2 a where {deq :: a -> a -> PrelBase.Bool} ;
diff --git a/ghc/tests/typecheck/should_compile/tc061.stderr b/ghc/tests/typecheck/should_compile/tc061.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6d1544a2d80e597acf64ce8b61973e1339ba00d5
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc061.stderr
@@ -0,0 +1,31 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], $d1{-rlB,x-}, d.Eq1_akU)]
+    AbsBinds [] [] [([], deq_alC, deq_akY)]
+	deq_akY x_r3h y_r3i = PrelBase.True{-5E,w-}{i}
+    d.Eq1_akU = ({-dict-} [] [deq_alC])
+AbsBinds [tali] [d.Eq1_alr] [([tali], $d2{-rlD,x-}, d.Eq1_al7)]
+    d.Eq1_alv = d.Eq1_alr
+    deq_alE = deq{-r3x,x-} tali d.Eq1_alv
+    AbsBinds [] [] [([], deq_alF, deq_alb)]
+	deq_alb (a_r3q PrelBase.:{-55,w-}{i} as_r3r)
+		(b_r3s PrelBase.:{-55,w-}{i} bs_r3t)
+		= deq_alE a_r3q b_r3s
+    d.Eq1_al7 = ({-dict-} [] [deq_alF])
+deq{-r3x,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [talA] [d.Eq1_alz] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed Eq1(deq);
+_instances_
+instance {Eq1 PrelBase.Int} = $d1;
+instance _forall_ [a] {Eq1 a} => {Eq1 [a]} = $d2;
+_declarations_
+1 $d1 _:_ {Eq1 PrelBase.Int} ;;
+1 $d2 _:_ _forall_ [a] {Eq1 a} => {Eq1 [a]} ;;
+1 class Eq1 a where {deq :: a -> a -> PrelBase.Bool} ;
diff --git a/ghc/tests/typecheck/should_compile/tc062.stderr b/ghc/tests/typecheck/should_compile/tc062.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..5c14f52323dd5a548bd6fd05784b9f963b79b581
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc062.stderr
@@ -0,0 +1,41 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [tal9] [d.Eq1_alj] [([tal9], f{-r3C,x-}, f_akX)]
+    d.Eq1_alh = $d1{-rm8,x-} tal9 d.Eq1_alj
+    deq_ama = deq{-r3D,x-} [tal9] d.Eq1_alh
+    f_akX x_r3f (y_r3g PrelBase.:{-55,w-}{i} ys_r3h)
+	  = deq_ama x_r3f ys_r3h
+AbsBinds [talA] [d.Eq1_alM] [([talA], $d1{-rm8,x-}, d.Eq1_alp)]
+    d.Eq1_alQ = d.Eq1_alM
+    deq_amb = deq{-r3D,x-} talA d.Eq1_alQ
+    deq_amc = deq_amd
+    AbsBinds [] [] [([], deq_amd, deq_alt)]
+	deq_alt (a_r3o PrelBase.:{-55,w-}{i} as_r3p)
+		(b_r3q PrelBase.:{-55,w-}{i} bs_r3r)
+		= if deq_amb a_r3o b_r3q then
+		      deq_amc as_r3p bs_r3r
+		  else
+		      PrelBase.False{-58,w-}{i}
+    d.Eq1_alp = ({-dict-} [] [deq_amd])
+AbsBinds [] [] [([], $d2{-rm9,x-}, d.Eq1_alW)]
+    AbsBinds [] [] [([], deq_ame, deq_am0)]
+	deq_am0 x_r3x y_r3y = PrelBase.True{-5E,w-}{i}
+    d.Eq1_alW = ({-dict-} [] [deq_ame])
+deq{-r3D,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [tam7] [d.Eq1_am6] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f Eq1(deq);
+_instances_
+instance _forall_ [a] {Eq1 a} => {Eq1 [a]} = $d1;
+instance {Eq1 PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Eq1 a} => {Eq1 [a]} ;;
+1 $d2 _:_ {Eq1 PrelBase.Int} ;;
+1 class Eq1 a where {deq :: a -> a -> PrelBase.Bool} ;
+1 f _:_ _forall_ [ta] {Eq1 ta} => [ta] -> [ta] -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc063.stderr b/ghc/tests/typecheck/should_compile/tc063.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..bf0069967e38d03edee4cedaea3bbccf1f425bcc
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc063.stderr
@@ -0,0 +1,42 @@
+
+
+================================================================================
+Typechecked:
+Tag{-r3G,x-}{i} =
+    _/\_ a_tr3C -> \ tpl_B1 -> Tag{-r3G,x-}{i} {_@_ a_tr3C tpl_B1}
+AbsBinds [taBx] [d.Reps_aBA] [([taBx], g{-r3D,x-}, g_aBo)]
+    f_aCe = f{-r3H,x-} taBx d.Reps_aBA
+    g_aBo x_r3h = f_aCe x_r3h x_r3h
+AbsBinds [taCc] [] [([taCc], $d3{-rCh,x-}, d.Eval_aBG)]
+    d.Eval_aBG = ({-dict-} [] [])
+AbsBinds [] [] [([], $d1{-rCi,x-}, d.Reps_aBL)]
+    AbsBinds [] [] [([], f_aCk, f_aBP)]
+	f_aBP PrelBase.True{-5E,w-}{i} PrelBase.True{-5E,w-}{i}
+	      = PrelBase.True{-5E,w-}{i}
+	f_aBP x_r3n y_r3o = PrelBase.False{-58,w-}{i}
+    d.Reps_aBL = ({-dict-} [] [f_aCk])
+AbsBinds [taC5] [] [([taC5], $d2{-rCj,x-}, d.Reps_aBY)]
+    AbsBinds [] [] [([], f_aCl, f_aC2)]
+	f_aC2 x_r3v y_r3w = y_r3w
+    d.Reps_aBY = ({-dict-} [] [f_aCl])
+f{-r3H,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taCd] [d.Reps_aCb] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed g Reps(f) X(Tag);
+_instances_
+instance {Reps PrelBase.Bool} = $d1;
+instance _forall_ [q] => {Reps (X q)} = $d2;
+instance _forall_ [a] => {PrelBase.Eval (X a)} = $d3;
+_declarations_
+1 $d1 _:_ {Reps PrelBase.Bool} ;;
+1 $d2 _:_ _forall_ [q] => {Reps (X q)} ;;
+1 $d3 _:_ _forall_ [a] => {PrelBase.Eval (X a)} ;;
+1 class Reps r where {f :: r -> r -> r} ;
+1 data X a = Tag a ;
+1 g _:_ _forall_ [ta] {Reps ta} => ta -> ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc064.stderr b/ghc/tests/typecheck/should_compile/tc064.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..1cf473dbc3f3040e4a5a19fd46fd6e9c90d4e030
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc064.stderr
@@ -0,0 +1,24 @@
+
+
+================================================================================
+Typechecked:
+FF{-r5,x-}{i} = FF{-r5,x-}{i} {}
+TT{-r4,x-}{i} = TT{-r4,x-}{i} {}
+AbsBinds [] [] [([], idb{-r6,x-}, idb_aAU)]
+    idb_aAU x_r3k = x_r3k
+AbsBinds [] [] [([], $d1{-rB4,x-}, d.Eval_aB1)]
+    d.Eval_aB1 = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed idb Boolean(FF TT);
+_instances_
+instance {PrelBase.Eval Boolean} = $d1;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval Boolean} ;;
+1 data Boolean = FF |  TT ;
+1 idb _:_ Boolean -> Boolean ;;
diff --git a/ghc/tests/typecheck/should_compile/tc065.hs b/ghc/tests/typecheck/should_compile/tc065.hs
index 14de5930512f7da097750b40acc0e5f39951dc77..1cc308eee92131a5ba992a1f70cc43c4fb6f40c6 100644
--- a/ghc/tests/typecheck/should_compile/tc065.hs
+++ b/ghc/tests/typecheck/should_compile/tc065.hs
@@ -1,4 +1,4 @@
-module Digraphs where
+module ShouldSucceed where
 
 import TheUtils
 import Set
diff --git a/ghc/tests/typecheck/should_compile/tc065.stderr b/ghc/tests/typecheck/should_compile/tc065.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e7bd19f135c69e1653bf1720263651ff8998d6f8
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc065.stderr
@@ -0,0 +1,310 @@
+
+
+================================================================================
+Typechecked:
+Succeeded{-rd,x-}{i} =
+    _/\_ a_tr8i b_tr8j -> \ tpl_B1 ->
+	Succeeded{-rd,x-}{i} {_@_ a_tr8i _@_ b_tr8j tpl_B1}
+Failed{-rc,x-}{i} =
+    _/\_ a_tr8i b_tr8j -> \ tpl_B1 ->
+	Failed{-rc,x-}{i} {_@_ a_tr8i _@_ b_tr8j tpl_B1}
+MkDigraph{-r8z,x-}{i} =
+    _/\_ vertex_tr8t -> \ tpl_B1 ->
+	MkDigraph{-r8z,x-}{i} {_@_ vertex_tr8t tpl_B1}
+AbsBinds
+[ta14c]
+[d.Eq_a14r]
+[([ta14c], isRecursiveCycle{-r6D,x-}, isRecursiveCycle_a147)]
+    d.Eq_a14v = d.Eq_a14r
+    d.Eq_a14w = d.Eq_a14r
+    d.Eq_a14t =
+	PrelTup.$d9{-rDa,p-} [ta14c, ta14c] [d.Eq_a14v, d.Eq_a14w]
+    elem_a1gA = PrelList.elem{-rDi,p-} (ta14c, ta14c) d.Eq_a14t
+    isRecursiveCycle_a147 [vertex_r8c] edges_r8d
+			  = (vertex_r8c, vertex_r8c) elem_a1gA edges_r8d
+    isRecursiveCycle_a147 cycle_r8f edges_r8g
+			  = PrelBase.True{-5E,w-}{i}
+AbsBinds
+[ta14I, ta14J, ta14K]
+[d.Eq_a15B, d.Ord_a15C]
+[([ta14J, ta14I, ta14K], lookupVertex{-r6C,x-}, lookupVertex_a14F)]
+    d.Eq_a15E = d.Eq_a15B
+    ==_a1gB = PrelBase.=={-8Y,p-} ta14I d.Eq_a15E
+    lookupVertex_a14F flat_info_r84 vertex_r85
+		      = PrelList.head{-rEs,p-} ta14K code_list_r87
+		      where
+			  {- nonrec -}
+			  AbsBinds [] [] [([], code_list_r87, code_list_a14O)]
+			      code_list_a14O
+				  = [code_r8a |
+					 (vertex'_r89, _, _, code_r8a) <- flat_info_r84, vertex_r85
+											 ==_a1gB vertex'_r89]
+			  {- nonrec -}
+			  {- nonrec -}
+AbsBinds
+[ta15X, ta160, ta161]
+[d.Eq_a17I, d.Ord_a17J]
+[([ta160, ta161, ta15X], mkEdges{-r6B,x-}, mkEdges_a15U)]
+    d.Ord_a17F = d.Ord_a17J
+    d.MonadZero_a17G = PrelBase.$d24{-ri3,p-}
+    mkEdges_a15U vertices_r7M flat_info_r7N
+		 = [(source_vertex_r7X, target_vertex_r82) |
+			(source_vertex_r7X, _, used_names_r7Y, _) <- flat_info_r7N, target_name_r80 <- Set.setToList{-rge,p-}
+													   ta160 used_names_r7Y, target_vertex_r82 <- vertices_defining_a1gC target_name_r80
+																					     flat_info_r7N]
+		 where
+		     {- nonrec -}
+		     AbsBinds
+		     [ta16m, ta16r, ta16u, aa16w, ta16z]
+		     [d.Ord_a16M, d.MonadZero_a16S]
+		     [([ta16m, ta16r, ta16u, aa16w, ta16z],
+		       vertices_defining_r7P,
+		       vertices_defining_a163)]
+			 d.Monad_a16O =
+			     PrelBase.scsel_MonadZeroPrelBaseMonad{-a1gH,p-} aa16w
+				 d.MonadZero_a16S
+			 elementOf_a1gD = Set.elementOf{-rg7,p-} ta16z d.Ord_a16M
+			 >>=_a1gE = PrelBase.>>={-811,p-} aa16w d.Monad_a16O
+			 d.Monad_a16Q = d.Monad_a16O
+			 return_a1gF = PrelBase.return{-816,p-} aa16w d.Monad_a16Q
+			 zero_a1gG = PrelBase.zero{-810,p-} aa16w d.MonadZero_a16S
+			 vertices_defining_a163 name_r7R flat_info_r7S
+						= [vertex_r7U |
+						       (vertex_r7U, names_defined_r7V, _, _) <- flat_info_r7S, name_r7R
+													       elementOf_a1gD names_defined_r7V]
+		     {- nonrec -}
+		     vertices_defining_a1gC =
+			 vertices_defining_r7P
+			     [ta15X, Set.Set{-rg4,p-} ta160, ta161, PrelBase.[]{-3j,W-}, ta160]
+			     [d.Ord_a17F, d.MonadZero_a17G]
+		     {- nonrec -}
+AbsBinds
+[ta180, ta181, ta182]
+[]
+[([ta181, ta182, ta180], mkVertices{-r6A,x-}, mkVertices_a17X)]
+    mkVertices_a17X info_r7I
+		    = [vertex_r7K | (vertex_r7K, _, _, _) <- info_r7I]
+AbsBinds
+[ta18F]
+[d.Eq_a18W]
+[([ta18F], isCyclic{-r6y,x-}, isCyclic_a18C)]
+    d.Eq_a190 = d.Eq_a18W
+    d.Eq_a191 = d.Eq_a18W
+    d.Eq_a18Y =
+	PrelTup.$d9{-rDa,p-} [ta18F, ta18F] [d.Eq_a190, d.Eq_a191]
+    elem_a1gI = PrelList.elem{-rDi,p-} (ta18F, ta18F) d.Eq_a18Y
+    isCyclic_a18C edges_r7r [v_r7s]
+		  = (v_r7s, v_r7s) elem_a1gI edges_r7r
+    isCyclic_a18C edges_r7u vs_r7v = PrelBase.True{-5E,w-}{i}
+AbsBinds [ta1au] [d.Eq_a1aw] [([ta1au], dfs{-r6F,x-}, dfs_a193)]
+    elem_a1gJ = PrelList.elem{-rDi,p-} ta1au d.Eq_a1aw
+    dfs_a193 r_r7e (vs_r7f, ns_r7g) PrelBase.[]{-5i,w-}{i}
+	     = (vs_r7f, ns_r7g)
+    dfs_a193 r_r7i
+	     (vs_r7j, ns_r7k)
+	     (x_r7l PrelBase.:{-55,w-}{i} xs_r7m)
+	     | x_r7l elem_a1gJ vs_r7j = dfs_a193 r_r7i (vs_r7j, ns_r7k) xs_r7m
+	     | PrelBase.otherwise{-818,p-}
+	     = dfs_a193 r_r7i
+			(vs'_r7o,
+			 ++_a1gs ta1au (PrelBase.:{-55,w-}{i} ta1au x_r7l ns'_r7p) ns_r7k)
+			xs_r7m
+	     where
+		 {- nonrec -}
+		 AbsBinds [] [] [([], vs'_r7o, vs'_a19M), ([], ns'_r7p, ns'_a19N)]
+		     (vs'_a19M, ns'_a19N)
+			 = dfs_a193 r_r7i
+				    (PrelBase.:{-55,w-}{i} ta1au x_r7l vs_r7j,
+				     PrelBase.[]{-5i,w-}{i} ta1au)
+				    r_r7i x_r7l
+		 {- nonrec -}
+		 {- nonrec -}
+AbsBinds
+[ta1aG]
+[d.Eq_a1eb]
+[([ta1aG], stronglyConnComp{-r6x,x-}, stronglyConnComp_a1aD)]
+    d.Eq_a1e9 = d.Eq_a1eb
+    d.Eq_a1e6 = d.Eq_a1eb
+    d.Eq_a1ed = d.Eq_a1eb
+    dfs_a1gK = dfs{-r6F,x-} ta1aG d.Eq_a1ed
+    d.Eq_a1e7 = d.Eq_a1eb
+    stronglyConnComp_a1aD es_r6H vs_r6I
+			  = PrelTup.snd{-rDg,p-}
+				[[ta1aG], [[ta1aG]]] span_tree_a1gL new_range_a1gM reversed_edges_r6K
+								    (PrelBase.[]{-5i,w-}{i} ta1aG,
+								     PrelBase.[]{-5i,w-}{i} [ta1aG])
+								    PrelTup.snd{-rDg,p-}
+									[[ta1aG], [ta1aG]] dfs_a1gK new_range_a1gN es_r6H
+												    (PrelBase.[]{-5i,w-}{i}
+													 ta1aG,
+												     PrelBase.[]{-5i,w-}{i}
+													 ta1aG)
+												    vs_r6I
+			  where
+			      {- rec -}
+			      AbsBinds
+			      [ta1c5]
+			      [d.Eq_a1c7]
+			      [([ta1c5], span_tree_r6N, span_tree_a1aK)]
+				  elem_a1gO = PrelList.elem{-rDi,p-} ta1c5 d.Eq_a1c7
+				  d.Eq_a1c9 = d.Eq_a1c7
+				  dfs_a1gP = dfs{-r6F,x-} ta1c5 d.Eq_a1c9
+				  span_tree_a1aK r_r71 (vs_r72, ns_r73) PrelBase.[]{-5i,w-}{i}
+						 = (vs_r72, ns_r73)
+				  span_tree_a1aK r_r75
+						 (vs_r76, ns_r77)
+						 (x_r78 PrelBase.:{-55,w-}{i} xs_r79)
+						 | x_r78 elem_a1gO vs_r76
+						 = span_tree_a1aK r_r75 (vs_r76, ns_r77) xs_r79
+						 | PrelBase.otherwise{-818,p-}
+						 = span_tree_a1aK r_r75
+								  (vs'_r7b,
+								   PrelBase.:{-55,w-}{i} [ta1c5]
+								       (PrelBase.:{-55,w-}{i} ta1c5
+									    x_r78 ns'_r7c)
+								       ns_r77)
+								  xs_r79
+						 where
+						     {- nonrec -}
+						     AbsBinds
+						     []
+						     []
+						     [([], vs'_r7b, vs'_a1bt), ([],
+										ns'_r7c,
+										ns'_a1bu)]
+							 (vs'_a1bt, ns'_a1bu)
+							     = dfs_a1gP r_r75
+									(PrelBase.:{-55,w-}{i} ta1c5
+									     x_r78 vs_r76,
+									 PrelBase.[]{-5i,w-}{i}
+									     ta1c5)
+									r_r75 x_r78
+						     {- nonrec -}
+						     {- nonrec -}
+			      {- nonrec -}
+			      span_tree_a1gL = span_tree_r6N ta1aG d.Eq_a1e9
+			      {- nonrec -}
+			      {- rec -}
+			      AbsBinds
+			      [ta1cF, ta1cI]
+			      [d.Eq_a1cK]
+			      [([ta1cF, ta1cI], new_range_r6M, new_range_a1cb)]
+				  ==_a1gQ = PrelBase.=={-8Y,p-} ta1cF d.Eq_a1cK
+				  new_range_a1cb PrelBase.[]{-5i,w-}{i} w_r6U
+						 = PrelBase.[]{-5i,w-}{i} ta1cI
+				  new_range_a1cb ((x_r6W, y_r6X) PrelBase.:{-55,w-}{i} xys_r6Y)
+						 w_r6Z
+						 = if x_r6W ==_a1gQ w_r6Z then
+						       PrelBase.:{-55,w-}{i} ta1cI
+							   y_r6X (new_range_a1cb xys_r6Y w_r6Z)
+						   else
+						       new_range_a1cb xys_r6Y w_r6Z
+			      {- nonrec -}
+			      new_range_a1gM = new_range_r6M [ta1aG, ta1aG] d.Eq_a1e6
+			      new_range_a1gN = new_range_r6M [ta1aG, ta1aG] d.Eq_a1e7
+			      {- nonrec -}
+			      {- nonrec -}
+			      AbsBinds [ta1cZ] [] [([ta1cZ], swap_r6L, swap_a1cQ)]
+				  swap_a1cQ (x_r6R, y_r6S) = (y_r6S, x_r6R)
+			      {- nonrec -}
+			      {- nonrec -}
+			      {- nonrec -}
+			      AbsBinds [] [] [([], reversed_edges_r6K, reversed_edges_a1d6)]
+				  reversed_edges_a1d6
+				      = map_a1gr [Edge{-r8x,x-} ta1aG, Edge{-r8x,x-} ta1aG] swap_r6L
+												ta1aG
+											    es_r6H
+			      {- nonrec -}
+			      {- nonrec -}
+AbsBinds
+[ta1eo]
+[d.Eq_a1fh]
+[([ta1eo], topSort{-r6z,x-}, topSort_a1el)]
+    d.Eq_a1fp = d.Eq_a1fh
+    isCyclic_a1gR = isCyclic{-r6y,x-} ta1eo d.Eq_a1fp
+    d.Eq_a1fr = d.Eq_a1fh
+    stronglyConnComp_a1gS = stronglyConnComp{-r6x,x-} ta1eo d.Eq_a1fr
+    topSort_a1el edges_r7x vertices_r7y
+		 = case cycles_r7B of
+		     PrelBase.[]{-5i,w-}{i}
+		     -> Succeeded{-rd,x-}{i} [[ta1eo], [[ta1eo]]] [v_r7F |
+								       [v_r7F] <- singletons_r7C]
+		     _ -> Failed{-rc,x-}{i} [[ta1eo], [[ta1eo]]] cycles_r7B
+		 where
+		     {- nonrec -}
+		     AbsBinds [] [] [([], sccs_r7A, sccs_a1es)]
+			 sccs_a1es = stronglyConnComp_a1gS edges_r7x vertices_r7y
+		     {- nonrec -}
+		     {- nonrec -}
+		     {- nonrec -}
+		     AbsBinds
+		     []
+		     []
+		     [([], cycles_r7B, cycles_a1ez), ([],
+						      singletons_r7C,
+						      singletons_a1eA)]
+			 (cycles_a1ez, singletons_a1eA)
+			     = List.partition{-rhs,p-} [ta1eo] isCyclic_a1gR edges_r7x sccs_r7A
+		     {- nonrec -}
+		     {- nonrec -}
+AbsBinds [ta1fx] [] [([ta1fx], mkDigraph{-r6E,x-}, mkDigraph_a1ft)]
+    mkDigraph_a1ft = MkDigraph{-r8z,x-}{i} ta1fx
+AbsBinds
+[ta1g2, ta1g3]
+[]
+[([ta1g2, ta1g3], $d1{-r1gl,x-}, d.Eval_a1fE)]
+    d.Eval_a1fE = ({-dict-} [] [])
+AbsBinds [ta1g4] [] [([ta1g4], $d2{-r1gn,x-}, d.Eval_a1fK)]
+    d.Eval_a1fK = ({-dict-} [] [])
+d.Monad_a1fM = PrelBase.$d25{-ri4,p-}
+>>=_a1go = PrelBase.>>={-811,p-} PrelBase.[]{-3j,W-} d.Monad_a1fM
+d.Monad_a1fP = d.Monad_a1fM
+return_a1gp =
+    PrelBase.return{-816,p-} PrelBase.[]{-3j,W-} d.Monad_a1fP
+d.MonadZero_a1fR = PrelBase.$d24{-ri3,p-}
+zero_a1gq =
+    PrelBase.zero{-810,p-} PrelBase.[]{-3j,W-} d.MonadZero_a1fR
+d.Functor_a1fU = PrelBase.$d26{-ri5,p-}
+map_a1gr = PrelBase.map{-rn5,p-} PrelBase.[]{-3j,W-} d.Functor_a1fU
+d.MonadPlus_a1fX = PrelBase.$d23{-ri2,p-}
+++_a1gs = PrelBase.++{-rn8,p-} PrelBase.[]{-3j,W-} d.MonadPlus_a1fX
+>>=_a1gt = >>=_a1go
+return_a1gu = return_a1gp
+>>=_a1gv = >>=_a1go
+return_a1gw = return_a1gp
+>>=_a1gx = >>=_a1go
+return_a1gy = return_a1gp
+zero_a1gz = zero_a1gq
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+List 1 :: partition 1;
+PrelBase 1 :: $d15 1 $d16 1 $d2 1 $d23 1 $d24 1 $d25 1 $d26 1 $d27 1 $d28 1 $d33 1 $d35 1 $d38 1 $d40 1 $d42 1 $d45 1 $d46 1 $d47 1 $d50 1 $d52 1 $d7 1 $d8 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $m>> 1 $mcompare 1 $mmax 1 $mmin 1 otherwise 1 Eq 1 Eval 1 Functor 1 Monad 1 MonadPlus 1 MonadZero 1 Ord 1 Ordering 1;
+PrelList 1 :: elem 1 head 1;
+PrelNum 1 :: $d17 1 $d18 1;
+PrelTup 1 :: $d11 1 $d13 1 $d15 1 $d49 1 $d51 1 $d9 1 snd 1;
+Set 1 :: $d1 1 $d2 1 elementOf 1 setToList 1 Set 1;
+_exports_
+ShouldSucceed dfs isCyclic isRecursiveCycle lookupVertex mkDigraph mkEdges mkVertices stronglyConnComp topSort Cycle Digraph(MkDigraph) Edge FlattenedDependencyInfo MaybeErr(Succeeded Failed);
+_instances_
+instance _forall_ [a b] => {PrelBase.Eval (MaybeErr a b)} = $d1;
+instance _forall_ [vertex] => {PrelBase.Eval (Digraph vertex)} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a b] => {PrelBase.Eval (MaybeErr a b)} ;;
+1 $d2 _:_ _forall_ [vertex] => {PrelBase.Eval (Digraph vertex)} ;;
+1 type Cycle vertex = [vertex] ;
+1 data Digraph vertex = MkDigraph [vertex] ;
+1 type Edge vertex = (vertex, vertex) ;
+1 type FlattenedDependencyInfo vertex name code = [(vertex, Set.Set name, Set.Set name, code)] ;
+1 data MaybeErr a b = Succeeded a |  Failed b ;
+1 dfs _:_ _forall_ [ta] {PrelBase.Eq ta} => (ta -> [ta]) -> ([ta], [ta]) -> [ta] -> ([ta], [ta]) ;;
+1 isCyclic _:_ _forall_ [ta] {PrelBase.Eq ta} => [Edge ta] -> [ta] -> PrelBase.Bool ;;
+1 isRecursiveCycle _:_ _forall_ [ta] {PrelBase.Eq ta} => Cycle ta -> [Edge ta] -> PrelBase.Bool ;;
+1 lookupVertex _:_ _forall_ [ta tb tc] {PrelBase.Eq tb, PrelBase.Ord ta} => FlattenedDependencyInfo tb ta tc -> tb -> tc ;;
+1 mkDigraph _:_ _forall_ [ta] => [ta] -> Digraph ta ;;
+1 mkEdges _:_ _forall_ [ta tb tc] {PrelBase.Eq tc, PrelBase.Ord ta} => [tc] -> FlattenedDependencyInfo tc ta tb -> [Edge tc] ;;
+1 mkVertices _:_ _forall_ [ta tb tc] => FlattenedDependencyInfo tc ta tb -> [tc] ;;
+1 stronglyConnComp _:_ _forall_ [ta] {PrelBase.Eq ta} => [Edge ta] -> [ta] -> [[ta]] ;;
+1 topSort _:_ _forall_ [ta] {PrelBase.Eq ta} => [Edge ta] -> [ta] -> MaybeErr [ta] [[ta]] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc066.stderr b/ghc/tests/typecheck/should_compile/tc066.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..a3091ef5aa0a4e112e6376393371503409a654bd
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc066.stderr
@@ -0,0 +1,31 @@
+
+
+================================================================================
+Typechecked:
+MkPair{-r3o,x-}{i} =
+    _/\_ a_tr3k b_tr3l -> \ tpl_B1 tpl_B2 ->
+	MkPair{-r3o,x-}{i} {_@_ a_tr3k _@_ b_tr3l tpl_B1 tpl_B2}
+AbsBinds
+[taBY, taC1, aaC2]
+[d.Monad_aCe]
+[([taBY, taC1, aaC2], f{-r3m,x-}, f_aBM)]
+    >>=_aCt = PrelBase.>>={-811,p-} aaC2 d.Monad_aCe
+    d.Monad_aCg = d.Monad_aCe
+    return_aCx = PrelBase.return{-816,p-} aaC2 d.Monad_aCg
+    f_aBM x_r3f = [a_r3i | (MkPair{-r3o,x-}{i} c_r3h a_r3i) <- x_r3f]
+AbsBinds [taCr, taCs] [] [([taCr, taCs], $d1{-rCw,x-}, d.Eval_aCn)]
+    d.Eval_aCn = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 $m>> 1 Eval 1 Monad 1 MonadZero 1;
+_exports_
+ShouldSucceed f Pair(MkPair);
+_instances_
+instance _forall_ [a b] => {PrelBase.Eval (Pair a b)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a b] => {PrelBase.Eval (Pair a b)} ;;
+1 data Pair a b = MkPair a b ;
+1 f _:_ _forall_ [ta tb ac :: (* -> *)] {PrelBase.Monad ac} => ac (Pair ta tb) -> ac tb ;;
diff --git a/ghc/tests/typecheck/should_compile/tc067.hs b/ghc/tests/typecheck/should_compile/tc067.hs
index 59df10316cdcde55743013e7216ef9630ce30c09..853caf308f7bb8b524decdec5ee2fa59af1ccbde 100644
--- a/ghc/tests/typecheck/should_compile/tc067.hs
+++ b/ghc/tests/typecheck/should_compile/tc067.hs
@@ -1,4 +1,4 @@
-module ShouldSucc where
+module ShouldSucceed where
 
 f [] = []
 f (x:xs) = x : (f xs)
diff --git a/ghc/tests/typecheck/should_compile/tc067.stderr b/ghc/tests/typecheck/should_compile/tc067.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e0528c1e7a4a73f7d8f1028afe14a4153e48ad84
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc067.stderr
@@ -0,0 +1,16 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takL] [] [([takL], f{-r3g,x-}, f_aku)]
+    f_aku PrelBase.[]{-5i,w-}{i} = PrelBase.[]{-5i,w-}{i} takL
+    f_aku (x_r3e PrelBase.:{-55,w-}{i} xs_r3f)
+	  = PrelBase.:{-55,w-}{i} takL x_r3e (f_aku xs_r3f)
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta] => [ta] -> [ta] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc068.hs b/ghc/tests/typecheck/should_compile/tc068.hs
index 01f2d872e6ccd2a092d4a96af82d857d72da8b02..f455d41b6ed72b5cdcfe8cc8028126978ac4969f 100644
--- a/ghc/tests/typecheck/should_compile/tc068.hs
+++ b/ghc/tests/typecheck/should_compile/tc068.hs
@@ -1,4 +1,4 @@
-module ShouldSucc where
+module ShouldSucceed where
 
 data T a = D (B a) | C
 data B b = X | Y b
diff --git a/ghc/tests/typecheck/should_compile/tc068.stderr b/ghc/tests/typecheck/should_compile/tc068.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..80cafb3d2db9b6cdc374a0a40dc8fe47321752bf
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc068.stderr
@@ -0,0 +1,60 @@
+
+
+================================================================================
+Typechecked:
+X{-r9,x-}{i} = _/\_ b_tr3U -> X{-r9,x-}{i} {_@_ b_tr3U}
+Y{-r8,x-}{i} =
+    _/\_ b_tr3U -> \ tpl_B1 -> Y{-r8,x-}{i} {_@_ b_tr3U tpl_B1}
+D{-r7,x-}{i} =
+    _/\_ a_tr3W -> \ tpl_B1 -> D{-r7,x-}{i} {_@_ a_tr3W tpl_B1}
+C{-r6,x-}{i} = _/\_ a_tr3W -> C{-r6,x-}{i} {_@_ a_tr3W}
+AbsBinds [taDA] [] [([taDA], $d3{-rDE,x-}, d.Eval_aBV)]
+    d.Eval_aBV = ({-dict-} [] [])
+AbsBinds [taDB] [] [([taDB], $d4{-rDG,x-}, d.Eval_aC1)]
+    d.Eval_aC1 = ({-dict-} [] [])
+AbsBinds [taCe] [d.Eq_aCH] [([taCe], $d1{-rDH,x-}, d.Eq_aC7)]
+    d.Eq_aCL = d.Eq_aCH
+    ==_aDJ = PrelBase.=={-8Y,p-} taCe d.Eq_aCL
+    ==_aDK = ==_aDL
+    AbsBinds [] [] [([], ==_aDL, ==_aCb)]
+	==_aCb X{-r9,x-}{i} X{-r9,x-}{i} = PrelBase.True{-5E,w-}{i}
+	==_aCb (Y{-r8,x-}{i} a_r3r) (Y{-r8,x-}{i} b_r3s)
+	       = a_r3r ==_aDJ b_r3s
+	==_aCb a_r3u b_r3v = PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], /=_aDM, /=_aCA)]
+	/=_aCA a_r3z b_r3A = PrelBase.not{-rgM,p-} a_r3z ==_aDK b_r3A
+    d.Eq_aC7 = ({-dict-} [] [==_aDL, /=_aDM])
+AbsBinds [taD1] [d.Eq_aDs] [([taD1], $d2{-rDI,x-}, d.Eq_aCS)]
+    d.Eq_aDy = d.Eq_aDs
+    d.Eq_aDw = $d1{-rDH,x-} taD1 d.Eq_aDy
+    ==_aDN = PrelBase.=={-8Y,p-} (B{-r3X,x-} taD1) d.Eq_aDw
+    ==_aDO = ==_aDP
+    AbsBinds [] [] [([], ==_aDP, ==_aCW)]
+	==_aCW (D{-r7,x-}{i} x_r3H) (D{-r7,x-}{i} y_r3I)
+	       = x_r3H ==_aDN y_r3I
+	==_aCW C{-r6,x-}{i} C{-r6,x-}{i} = PrelBase.True{-5E,w-}{i}
+	==_aCW a_r3L b_r3M = PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], /=_aDQ, /=_aDl)]
+	/=_aDl a_r3Q b_r3R = PrelBase.not{-rgM,p-} a_r3Q ==_aDO b_r3R
+    d.Eq_aCS = ({-dict-} [] [==_aDP, /=_aDQ])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d16 1 $d2 1 $d33 1 $d38 1 $d40 1 $d42 1 $d47 1 $d8 1 $m/= 1 not 1 Eq 1 Eval 1;
+PrelNum 1 :: $d18 1;
+_exports_
+ShouldSucceed B(X Y) T(D C);
+_instances_
+instance _forall_ [b] {PrelBase.Eq b} => {PrelBase.Eq (B b)} = $d1;
+instance _forall_ [a] {PrelBase.Eq a} => {PrelBase.Eq (T a)} = $d2;
+instance _forall_ [b] => {PrelBase.Eval (B b)} = $d3;
+instance _forall_ [a] => {PrelBase.Eval (T a)} = $d4;
+_declarations_
+1 $d1 _:_ _forall_ [b] {PrelBase.Eq b} => {PrelBase.Eq (B b)} ;;
+1 $d2 _:_ _forall_ [a] {PrelBase.Eq a} => {PrelBase.Eq (T a)} ;;
+1 $d3 _:_ _forall_ [b] => {PrelBase.Eval (B b)} ;;
+1 $d4 _:_ _forall_ [a] => {PrelBase.Eval (T a)} ;;
+1 data B b = X |  Y b ;
+1 data T a = D (B a) |  C ;
diff --git a/ghc/tests/typecheck/should_compile/tc069.stderr b/ghc/tests/typecheck/should_compile/tc069.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..bad9079a41bd5292ddcc3301834b0771ca6f74dd
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc069.stderr
@@ -0,0 +1,25 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], x{-r3i,x-}, x_akw)]
+    x_akw = 'a'
+AbsBinds [] [] [([], y{-r3h,x-}, y_akz), ([], ys{-r3g,x-}, ys_akA)]
+    (y_akz PrelBase.:{-55,w-}{i} ys_akA)
+	= ['a', 'b', 'c'] (PrelBase.Char{-38,W-})
+	where
+	    {- nonrec -}
+	    AbsBinds [] [] [([], p_r3f, p_akI)]
+		p_akI = x{-r3i,x-}
+	    {- nonrec -}
+	    {- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed x y ys;
+_declarations_
+1 x _:_ PrelBase.Char ;;
+1 y _:_ PrelBase.Char ;;
+1 ys _:_ [PrelBase.Char] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc070.stderr b/ghc/tests/typecheck/should_compile/tc070.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..1cf473dbc3f3040e4a5a19fd46fd6e9c90d4e030
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc070.stderr
@@ -0,0 +1,24 @@
+
+
+================================================================================
+Typechecked:
+FF{-r5,x-}{i} = FF{-r5,x-}{i} {}
+TT{-r4,x-}{i} = TT{-r4,x-}{i} {}
+AbsBinds [] [] [([], idb{-r6,x-}, idb_aAU)]
+    idb_aAU x_r3k = x_r3k
+AbsBinds [] [] [([], $d1{-rB4,x-}, d.Eval_aB1)]
+    d.Eval_aB1 = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ShouldSucceed idb Boolean(FF TT);
+_instances_
+instance {PrelBase.Eval Boolean} = $d1;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval Boolean} ;;
+1 data Boolean = FF |  TT ;
+1 idb _:_ Boolean -> Boolean ;;
diff --git a/ghc/tests/typecheck/should_compile/tc073.hs b/ghc/tests/typecheck/should_compile/tc073.hs
index ea4cb74675cd37584df9192188e4dd1be8439f2a..44e4129f6a8f773dded783b04293a61b5742baab 100644
--- a/ghc/tests/typecheck/should_compile/tc073.hs
+++ b/ghc/tests/typecheck/should_compile/tc073.hs
@@ -1,5 +1,5 @@
 
-module ShouldSucc where
+module ShouldSucceed where
 
 f [] = []
 f (x:xs) = x : (f xs)
diff --git a/ghc/tests/typecheck/should_compile/tc073.stderr b/ghc/tests/typecheck/should_compile/tc073.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e0528c1e7a4a73f7d8f1028afe14a4153e48ad84
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc073.stderr
@@ -0,0 +1,16 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [takL] [] [([takL], f{-r3g,x-}, f_aku)]
+    f_aku PrelBase.[]{-5i,w-}{i} = PrelBase.[]{-5i,w-}{i} takL
+    f_aku (x_r3e PrelBase.:{-55,w-}{i} xs_r3f)
+	  = PrelBase.:{-55,w-}{i} takL x_r3e (f_aku xs_r3f)
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed f;
+_declarations_
+1 f _:_ _forall_ [ta] => [ta] -> [ta] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc074.hs b/ghc/tests/typecheck/should_compile/tc074.hs
index 01f2d872e6ccd2a092d4a96af82d857d72da8b02..f455d41b6ed72b5cdcfe8cc8028126978ac4969f 100644
--- a/ghc/tests/typecheck/should_compile/tc074.hs
+++ b/ghc/tests/typecheck/should_compile/tc074.hs
@@ -1,4 +1,4 @@
-module ShouldSucc where
+module ShouldSucceed where
 
 data T a = D (B a) | C
 data B b = X | Y b
diff --git a/ghc/tests/typecheck/should_compile/tc074.stderr b/ghc/tests/typecheck/should_compile/tc074.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..80cafb3d2db9b6cdc374a0a40dc8fe47321752bf
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc074.stderr
@@ -0,0 +1,60 @@
+
+
+================================================================================
+Typechecked:
+X{-r9,x-}{i} = _/\_ b_tr3U -> X{-r9,x-}{i} {_@_ b_tr3U}
+Y{-r8,x-}{i} =
+    _/\_ b_tr3U -> \ tpl_B1 -> Y{-r8,x-}{i} {_@_ b_tr3U tpl_B1}
+D{-r7,x-}{i} =
+    _/\_ a_tr3W -> \ tpl_B1 -> D{-r7,x-}{i} {_@_ a_tr3W tpl_B1}
+C{-r6,x-}{i} = _/\_ a_tr3W -> C{-r6,x-}{i} {_@_ a_tr3W}
+AbsBinds [taDA] [] [([taDA], $d3{-rDE,x-}, d.Eval_aBV)]
+    d.Eval_aBV = ({-dict-} [] [])
+AbsBinds [taDB] [] [([taDB], $d4{-rDG,x-}, d.Eval_aC1)]
+    d.Eval_aC1 = ({-dict-} [] [])
+AbsBinds [taCe] [d.Eq_aCH] [([taCe], $d1{-rDH,x-}, d.Eq_aC7)]
+    d.Eq_aCL = d.Eq_aCH
+    ==_aDJ = PrelBase.=={-8Y,p-} taCe d.Eq_aCL
+    ==_aDK = ==_aDL
+    AbsBinds [] [] [([], ==_aDL, ==_aCb)]
+	==_aCb X{-r9,x-}{i} X{-r9,x-}{i} = PrelBase.True{-5E,w-}{i}
+	==_aCb (Y{-r8,x-}{i} a_r3r) (Y{-r8,x-}{i} b_r3s)
+	       = a_r3r ==_aDJ b_r3s
+	==_aCb a_r3u b_r3v = PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], /=_aDM, /=_aCA)]
+	/=_aCA a_r3z b_r3A = PrelBase.not{-rgM,p-} a_r3z ==_aDK b_r3A
+    d.Eq_aC7 = ({-dict-} [] [==_aDL, /=_aDM])
+AbsBinds [taD1] [d.Eq_aDs] [([taD1], $d2{-rDI,x-}, d.Eq_aCS)]
+    d.Eq_aDy = d.Eq_aDs
+    d.Eq_aDw = $d1{-rDH,x-} taD1 d.Eq_aDy
+    ==_aDN = PrelBase.=={-8Y,p-} (B{-r3X,x-} taD1) d.Eq_aDw
+    ==_aDO = ==_aDP
+    AbsBinds [] [] [([], ==_aDP, ==_aCW)]
+	==_aCW (D{-r7,x-}{i} x_r3H) (D{-r7,x-}{i} y_r3I)
+	       = x_r3H ==_aDN y_r3I
+	==_aCW C{-r6,x-}{i} C{-r6,x-}{i} = PrelBase.True{-5E,w-}{i}
+	==_aCW a_r3L b_r3M = PrelBase.False{-58,w-}{i}
+    AbsBinds [] [] [([], /=_aDQ, /=_aDl)]
+	/=_aDl a_r3Q b_r3R = PrelBase.not{-rgM,p-} a_r3Q ==_aDO b_r3R
+    d.Eq_aCS = ({-dict-} [] [==_aDP, /=_aDQ])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d16 1 $d2 1 $d33 1 $d38 1 $d40 1 $d42 1 $d47 1 $d8 1 $m/= 1 not 1 Eq 1 Eval 1;
+PrelNum 1 :: $d18 1;
+_exports_
+ShouldSucceed B(X Y) T(D C);
+_instances_
+instance _forall_ [b] {PrelBase.Eq b} => {PrelBase.Eq (B b)} = $d1;
+instance _forall_ [a] {PrelBase.Eq a} => {PrelBase.Eq (T a)} = $d2;
+instance _forall_ [b] => {PrelBase.Eval (B b)} = $d3;
+instance _forall_ [a] => {PrelBase.Eval (T a)} = $d4;
+_declarations_
+1 $d1 _:_ _forall_ [b] {PrelBase.Eq b} => {PrelBase.Eq (B b)} ;;
+1 $d2 _:_ _forall_ [a] {PrelBase.Eq a} => {PrelBase.Eq (T a)} ;;
+1 $d3 _:_ _forall_ [b] => {PrelBase.Eval (B b)} ;;
+1 $d4 _:_ _forall_ [a] => {PrelBase.Eval (T a)} ;;
+1 data B b = X |  Y b ;
+1 data T a = D (B a) |  C ;
diff --git a/ghc/tests/typecheck/should_compile/tc076.stderr b/ghc/tests/typecheck/should_compile/tc076.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7ab74884aa0c7a23208acbfd5796b9e999689d60
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc076.stderr
@@ -0,0 +1,25 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], x{-r3,x-}, x_aBl)]
+    x_aBl
+	= [[PrelBase.True{-5E,w-}{i}] (PrelBase.Bool{-34,W-})] ([PrelBase.Bool{-34,W-}])
+AbsBinds [] [] [([], xs{-r2,x-}, xs_aBt)]
+    xs_aBt = [x_r3j | x_r3h <- x{-r3,x-}, x_r3j <- x_r3h]
+d.Monad_aBL = PrelBase.$d25{-rae,p-}
+>>=_aBS = PrelBase.>>={-811,p-} PrelBase.[]{-3j,W-} d.Monad_aBL
+d.Monad_aBO = d.Monad_aBL
+return_aBT =
+    PrelBase.return{-816,p-} PrelBase.[]{-3j,W-} d.Monad_aBO
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d24 1 $d25 1 $m>> 1 Monad 1 MonadZero 1;
+_exports_
+ShouldSucceed x xs;
+_declarations_
+1 x _:_ [[PrelBase.Bool]] ;;
+1 xs _:_ [PrelBase.Bool] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc077.hs b/ghc/tests/typecheck/should_compile/tc077.hs
index c9bb8d53a8864d5f4e75d1eec08fc999d3110f8d..45e4d116b3779b92d3279f3e9b172c79faacd69a 100644
--- a/ghc/tests/typecheck/should_compile/tc077.hs
+++ b/ghc/tests/typecheck/should_compile/tc077.hs
@@ -1,6 +1,6 @@
 --!!! make sure context of EQ is minimised in interface file.
 --
-module M where
+module ShouldSucceed where
 
 data NUM = ONE | TWO
 class (Num a) => ORD a
diff --git a/ghc/tests/typecheck/should_compile/tc077.stderr b/ghc/tests/typecheck/should_compile/tc077.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6ae92867219c39c42dae0eae8277f020c1976f9f
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc077.stderr
@@ -0,0 +1,39 @@
+
+
+================================================================================
+Typechecked:
+ONE{-r7,x-}{i} = ONE{-r7,x-}{i} {}
+TWO{-r6,x-}{i} = TWO{-r6,x-}{i} {}
+AbsBinds [] [] [([], $d1{-rCq,x-}, d.Eval_aCf)]
+    d.Eval_aCf = ({-dict-} [] [])
+scsel_EQShouldSucceedORD{-aCr,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,,){-63,w-}{i} tpl_B1 tpl_B2 tpl_B3  ->
+	tpl_B1;}
+scsel_EQPrelBaseShow{-aCs,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,,){-63,w-}{i} tpl_B1 tpl_B2 tpl_B3  ->
+	tpl_B2;}
+==={-r3r,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,,){-63,w-}{i} tpl_B1 tpl_B2 tpl_B3  ->
+	tpl_B3;}
+AbsBinds [taCm] [d.EQ_aCi] []
+scsel_ORDPrelBaseNum{-aCt,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [taCn] [d.ORD_aCl] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed EQ(===) NUM(ONE TWO) ORD;
+_instances_
+instance {PrelBase.Eval NUM} = $d1;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval NUM} ;;
+1 class {ORD a, PrelBase.Show a} => EQ a where {=== :: a -> a -> PrelBase.Bool} ;
+1 data NUM = ONE |  TWO ;
+1 class {PrelBase.Num a} => ORD a ;
diff --git a/ghc/tests/typecheck/should_compile/tc078.stderr b/ghc/tests/typecheck/should_compile/tc078.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..c1826d7eec01b9ff35c200d4e4c3c1190f09d5e5
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc078.stderr
@@ -0,0 +1,80 @@
+ 
+tc078.hs:7: No explicit method nor default method for `PrelBase.=='
+	    in an instance declaration for `PrelBase.Eq'
+
+
+================================================================================
+Typechecked:
+MkBar{-r3m,x-}{i} =
+    _/\_ a_tr3k -> \ tpl_B1 tpl_B2 ->
+	MkBar{-r3m,x-}{i} {_@_ a_tr3k tpl_B1 tpl_B2}
+AbsBinds [taDD] [] [([taDD], $d3{-rDH,x-}, d.Eval_aBH)]
+    d.Eval_aBH = ({-dict-} [] [])
+AbsBinds
+[taBV]
+[d.Ord_aCP, d.Eq_aCQ]
+[([taBV], $d1{-rDI,x-}, d.Ord_aBN)]
+    d.Eq_aCO = d.Eq_aCQ
+    d.Ord_aCU = d.Ord_aBN
+    $mcompare_aDK =
+	PrelBase.$mcompare{-rf4,p-} (Bar{-r3l,x-} taBV) d.Ord_aCU
+    d.Ord_aCW = d.Ord_aBN
+    $m<_aDL = PrelBase.$m<{-reZ,p-} (Bar{-r3l,x-} taBV) d.Ord_aCW
+    d.Ord_aCY = d.Ord_aBN
+    $m<=_aDM = PrelBase.$m<={-rf0,p-} (Bar{-r3l,x-} taBV) d.Ord_aCY
+    d.Ord_aD0 = d.Ord_aBN
+    $m>=_aDN = PrelBase.$m>={-rf2,p-} (Bar{-r3l,x-} taBV) d.Ord_aD0
+    d.Ord_aD2 = d.Ord_aBN
+    $m>_aDO = PrelBase.$m>{-rf1,p-} (Bar{-r3l,x-} taBV) d.Ord_aD2
+    d.Ord_aD4 = d.Ord_aBN
+    $mmax_aDP = PrelBase.$mmax{-rf8,p-} (Bar{-r3l,x-} taBV) d.Ord_aD4
+    d.Ord_aD6 = d.Ord_aBN
+    $mmin_aDQ = PrelBase.$mmin{-rf9,p-} (Bar{-r3l,x-} taBV) d.Ord_aD6
+    AbsBinds [] [] [([], compare_aDR, compare_aBS)]
+	compare_aBS = $mcompare_aDK
+    AbsBinds [] [] [([], <_aDS, <_aC2)]
+	<_aC2 = $m<_aDL
+    AbsBinds [] [] [([], <=_aDT, <=_aCb)]
+	<=_aCb = $m<=_aDM
+    AbsBinds [] [] [([], >=_aDU, >=_aCk)]
+	>=_aCk = $m>=_aDN
+    AbsBinds [] [] [([], >_aDV, >_aCt)]
+	>_aCt = $m>_aDO
+    AbsBinds [] [] [([], max_aDW, max_aCC)]
+	max_aCC = $mmax_aDP
+    AbsBinds [] [] [([], min_aDX, min_aCL)]
+	min_aCL = $mmin_aDQ
+    d.Ord_aBN =
+	({-dict-}
+	 [d.Eq_aCO]
+	 [compare_aDR, <_aDS, <=_aDT, >=_aDU, >_aDV, max_aDW, min_aDX])
+AbsBinds [taDo] [d.Eq_aDx] [([taDo], $d2{-rDJ,x-}, d.Eq_aDg)]
+    d.Eq_aDB = d.Eq_aDg
+    $m/=_aDY = PrelBase.$m/={-reY,p-} (Bar{-r3l,x-} taDo) d.Eq_aDB
+    AbsBinds [] [] [([], ==_aDZ, ==_aDl)]
+	==_aDl
+	    = GHCerr.noDefaultMethodError{-8k,w-}
+		  (Bar{-r3l,x-} taDo
+		   -> Bar{-r3l,x-} taDo
+		   -> PrelBase.Bool{-34,W-}) "<NoSrcLoc>|PrelBase.=="
+    AbsBinds [] [] [([], /=_aE0, /=_aDu)]
+	/=_aDu = $m/=_aDY
+    d.Eq_aDg = ({-dict-} [] [==_aDZ, /=_aE0])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldFail 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d15 1 $d16 1 $d2 1 $d33 1 $d35 1 $d38 1 $d40 1 $d42 1 $d46 1 $d47 1 $d50 1 $d52 1 $d7 1 $d8 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $mmax 1 $mmin 1 Eq 1 Eval 1 Ord 1 Ordering 1;
+PrelNum 1 :: $d17 1 $d18 1;
+_exports_
+ShouldFail Bar(MkBar);
+_instances_
+instance _forall_ [a] {PrelBase.Ord a} => {PrelBase.Ord (Bar a)} = $d1;
+instance _forall_ [a] {PrelBase.Eq a} => {PrelBase.Eq (Bar a)} = $d2;
+instance _forall_ [a] => {PrelBase.Eval (Bar a)} = $d3;
+_declarations_
+1 $d1 _:_ _forall_ [a] {PrelBase.Ord a, PrelBase.Eq (Bar a)} => {PrelBase.Ord (Bar a)} ;;
+1 $d2 _:_ _forall_ [a] {PrelBase.Eq a} => {PrelBase.Eq (Bar a)} ;;
+1 $d3 _:_ _forall_ [a] => {PrelBase.Eval (Bar a)} ;;
+1 data Bar a = MkBar PrelBase.Int a ;
diff --git a/ghc/tests/typecheck/should_compile/tc079.hs b/ghc/tests/typecheck/should_compile/tc079.hs
index d49f4ce43a6bca853b49e36775cecf28173af78a..99a73cc8830f9593e3d458a36207e362c7b69e3e 100644
--- a/ghc/tests/typecheck/should_compile/tc079.hs
+++ b/ghc/tests/typecheck/should_compile/tc079.hs
@@ -2,7 +2,7 @@
 --!!! "easy" to check default methods and such...
 --!!! (this is the example given in TcClassDcl)
 --
-module Test where
+module ShouldSucceed where
 
 class Foo a where
     op1 :: a -> Bool
diff --git a/ghc/tests/typecheck/should_compile/tc079.stderr b/ghc/tests/typecheck/should_compile/tc079.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..4f1209d9c598ec23df47778c3e657e44b20a0ab3
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc079.stderr
@@ -0,0 +1,70 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taC2] [d.Foo_aCq] [([taC2], $d1{-rDQ,x-}, d.Foo_aBS)]
+    d.Foo_aCs = d.Foo_aBS
+    $mop1_aDU = $mop1{-rBV,x-} [taC2] d.Foo_aCs
+    d.Foo_aCu = d.Foo_aBS
+    $mop2_aDV = $mop2{-rBZ,x-} [taC2] d.Foo_aCu
+    AbsBinds [] [] [([], op1_aDW, op1_aBY)]
+	op1_aBY = $mop1_aDU
+    AbsBinds [taCk] [d.Ord_aCn] [([taCk], op2_aDX, op2_aCb)]
+	d.Ord_aCp = d.Ord_aCn
+	$mop2_aDY = $mop2_aDV taCk d.Ord_aCp
+	op2_aCb = $mop2_aDY
+    d.Foo_aBS = ({-dict-} [] [op1_aDW, op2_aDX])
+AbsBinds [] [] [([], $d2{-rDR,x-}, d.Foo_aCA)]
+    AbsBinds [] [] [([], op1_aDZ, op1_aCF)]
+	op1_aCF = $mop1_aDS
+    AbsBinds [taD0] [d.Ord_aD3] [([taD0], op2_aE0, op2_aCR)]
+	d.Ord_aD7 = d.Ord_aD3
+	$mop2_aE1 = $mop2_aDT taD0 d.Ord_aD7
+	op2_aCR = $mop2_aE1
+    d.Foo_aCA = ({-dict-} [] [op1_aDZ, op2_aE0])
+op1{-r3C,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+op2{-r3D,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds
+[taDi]
+[d.Foo_aDI]
+[([taDi], $mop1{-rBV,x-}, op1_aE2), ([taDi],
+				     $mop2{-rBZ,x-},
+				     op2_aE4)]
+    d.Foo_aDK = d.Foo_aDI
+    op1_aE3 = op1{-r3C,x-} taDi d.Foo_aDK
+    AbsBinds [] [] [([], op1_aE2, op1_aDf)]
+	op1_aDf x_r3u = PrelBase.True{-5E,w-}{i}
+    AbsBinds [taDu] [d.Ord_aDE] [([taDu], op2_aE4, op2_aDo)]
+	d.Ord_aDG = d.Ord_aDE
+	<_aE5 = PrelBase.<{-rfI,p-} taDu d.Ord_aDG
+	op2_aDo x_r3y y_r3z z_r3A
+		= if (op1_aE3 x_r3y) PrelBase.&&{-r3B,p-} (y_r3z <_aE5 z_r3A) then
+		      y_r3z
+		  else
+		      z_r3A
+d.Foo_aDM = $d2{-rDR,x-}
+$mop1_aDS = $mop1{-rBV,x-} PrelBase.Int{-3g,W-} d.Foo_aDM
+d.Foo_aDP = d.Foo_aDM
+$mop2_aDT = $mop2{-rBZ,x-} PrelBase.Int{-3g,W-} d.Foo_aDP
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d15 1 $d16 1 $d27 1 $d28 1 $d33 1 $d35 1 $d50 1 $d52 1 $d7 1 $d8 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $mmax 1 $mmin 1 && 1 Eq 1 Ord 1 Ordering 1;
+PrelNum 1 :: $d17 1 $d18 1;
+_exports_
+ShouldSucceed Foo(op1 op2);
+_instances_
+instance _forall_ [a] {Foo a} => {Foo [a]} = $d1;
+instance {Foo PrelBase.Int} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Foo a} => {Foo [a]} ;;
+1 $d2 _:_ {Foo PrelBase.Int} ;;
+1 $mop1 _:_ _forall_ [a] {Foo a} => a -> PrelBase.Bool ;;
+1 $mop2 _:_ _forall_ [a] {Foo a} => _forall_ [b] {PrelBase.Ord b} => a -> b -> b -> b ;;
+1 class Foo a where {op1 = :: a -> PrelBase.Bool; op2 = :: _forall_ [b] {PrelBase.Ord b} => a -> b -> b -> b} ;
diff --git a/ghc/tests/typecheck/should_compile/tc080.hs b/ghc/tests/typecheck/should_compile/tc080.hs
index d9ad6e9902f4918d1d583f1bbe099b8bed4a8013..2f01f96adfac638d4a8497758d9fb1d4198d8c8d 100644
--- a/ghc/tests/typecheck/should_compile/tc080.hs
+++ b/ghc/tests/typecheck/should_compile/tc080.hs
@@ -1,15 +1,20 @@
 --module Parse(Parse(..),whiteSpace,seperatedBy) where
 --import StdLib
+module ShouldSucceed where
+
+import Char
+
 class Parse a where
        parseFile :: String -> [a]
+       parseLine :: String -> a
+       parseType :: String -> (a,String)
+       parse :: String -> (a,String)
+       forced :: a -> Bool
+
        parseFile string | all forced x = x
 		       where x = map parseLine (lines' string)
-       parseLine :: String -> a
        parseLine = pl.parse where pl (a,_) = a
-       parse :: String -> (a,String)
        parse = parseType.whiteSpace
-       parseType :: String -> (a,String)
-       forced :: a -> Bool
        forced x = True
 
 instance Parse Int where
diff --git a/ghc/tests/typecheck/should_compile/tc080.stderr b/ghc/tests/typecheck/should_compile/tc080.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..bbc7fcfc01e81b03034fa57aa915cc789f5b7420
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc080.stderr
@@ -0,0 +1,334 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [] [] [([], charToInt{-r3R,x-}, charToInt_aZA)]
+    charToInt_aZA x_r4E
+		  = (PrelBase.ord{-riq,p-} x_r4E) -_a1a5 (PrelBase.ord{-riq,p-} '0')
+AbsBinds [] [] [([], strToInt{-r3Q,x-}, strToInt_aZI)]
+    d.Integral_a10K = PrelNum.$d36{-rI6,p-}
+    strToInt_aZI x_r4v
+		 = strToInt'_a1ai (PrelList.length{-rz0,p-}
+				       PrelBase.Char{-38,W-} x_r4v)
+				  -_a19Z lit_a1a0
+				  x_r4v
+		 where
+		     {- rec -}
+		     AbsBinds
+		     [ta10j]
+		     [d.Integral_a10t]
+		     [([ta10j], strToInt'_r4x, strToInt'_aZL)]
+			 d.Real_a19S =
+			     PrelNum.scsel_IntegralPrelNumReal{-a1an,p-} ta10j d.Integral_a10t
+			 d.Num_a10w =
+			     PrelNum.scsel_RealPrelBaseNum{-a1ao,p-} ta10j d.Real_a19S
+			 d.Num_a10s = PrelBase.$d4{-rcO,p-}
+			 ^_a1aj =
+			     PrelNum.^{-rAz,p-} [ta10j, PrelBase.Int{-3g,W-}]
+				 [d.Num_a10s, d.Integral_a10t]
+			 -_a1ak = PrelBase.-{-817,p-} ta10j d.Num_a10w
+			 d.Num_a10z = d.Num_a10w
+			 fromInt_a1al = PrelBase.fromInt{-8R,p-} ta10j d.Num_a10z
+			 lit_a1am = fromInt_a1al PrelBase.I#{-5b,w-}{i} 1#
+			 strToInt'_aZL _ PrelBase.[]{-5i,w-}{i} = lit_a1a1
+			 strToInt'_aZL x_r4A (a_r4B PrelBase.:{-55,w-}{i} l_r4C)
+				       = ((charToInt{-r3R,x-} a_r4B) *_a1a3 (lit_a1a4 ^_a1aj x_r4A))
+					 +_a1a2 (strToInt'_aZL x_r4A -_a1ak lit_a1am l_r4C)
+		     {- nonrec -}
+		     strToInt'_a1ai = strToInt'_r4x PrelBase.Int{-3g,W-} d.Integral_a10K
+		     {- nonrec -}
+AbsBinds [ta10Z] [] [([ta10Z], span'{-r3O,x-}, span'_a10W)]
+    span'_a10W p_r49 PrelBase.[]{-5i,w-}{i}
+	       = (PrelBase.[]{-5i,w-}{i} ta10Z, PrelBase.[]{-5i,w-}{i} ta10Z)
+    span'_a10W p_r4b (x_r4c PrelBase.:{-55,w-}{i} xs'_r4d)
+	       | p_r4b x_r4c
+	       = fixLeak_r4f [[ta10Z], ta10Z] x_r4c
+					      span'{-r3O,x-} ta10Z p_r4b xs'_r4d
+	       where
+		   {- nonrec -}
+		   AbsBinds
+		   [ta11F, ta11H]
+		   []
+		   [([ta11F, ta11H], fixLeak_r4f, fixLeak_a11j)]
+		       fixLeak_a11j x_r4h (xs_r4i, ys_r4j)
+				    = (PrelBase.:{-55,w-}{i} ta11H x_r4h xs_r4i, ys_r4j)
+		   {- nonrec -}
+		   {- nonrec -}
+    span'_a10W _ xs_r4l = (PrelBase.[]{-5i,w-}{i} ta10Z, xs_r4l)
+AbsBinds [] [] [([], lines'{-r3P,x-}, lines'_a121)]
+    lines'_a121 "" = PrelBase.[]{-5i,w-}{i} [PrelBase.Char{-38,W-}]
+    lines'_a121 s_r4o
+		= plumb_r4q span'{-r3O,x-} PrelBase.Char{-38,W-} /=_a19Y '\n' s_r4o
+		where
+		    {- nonrec -}
+		    AbsBinds [] [] [([], plumb_r4q, plumb_a126)]
+			plumb_a126 (l_r4s, s'_r4t)
+				   = PrelBase.:{-55,w-}{i} [PrelBase.Char{-38,W-}]
+					 l_r4s
+					 (if PrelList.null{-rz6,p-}
+						 PrelBase.Char{-38,W-} s'_r4t then
+					      PrelBase.[]{-5i,w-}{i} [PrelBase.Char{-38,W-}]
+					  else
+					      lines'{-r3P,x-} PrelList.tail{-rzj,p-}
+								  PrelBase.Char{-38,W-} s'_r4t)
+		    {- nonrec -}
+		    {- nonrec -}
+AbsBinds [] [] [([], whiteSpace{-r3N,x-}, whiteSpace_a12C)]
+    whiteSpace_a12C
+	= PrelBase.dropWhile{-rhV,p-}
+	      PrelBase.Char{-38,W-} PrelBase.isSpace{-rig,p-}
+AbsBinds [] [] [([], seperatedBy{-r3M,x-}, seperatedBy_a12G)]
+    seperatedBy_a12G ch_r3W PrelBase.[]{-5i,w-}{i}
+		     = PrelBase.[]{-5i,w-}{i} PrelBase.String{-r5n,p-}
+    seperatedBy_a12G ch_r3Y xs_r3Z
+		     = twaddle_r41 ch_r3Y
+				   span'{-r3O,x-} PrelBase.Char{-38,W-} \ x_r47
+									  -> x_r47 /=_a19W ch_r3Y
+									xs_r3Z
+		     where
+			 {- nonrec -}
+			 AbsBinds [] [] [([], twaddle_r41, twaddle_a12N)]
+			     twaddle_a12N ch_r43 (l_r44, (_ PrelBase.:{-55,w-}{i} r_r45))
+					  = PrelBase.:{-55,w-}{i} PrelBase.String{-r5n,p-}
+						l_r44 (seperatedBy{-r3M,x-} ch_r43 r_r45)
+			 {- nonrec -}
+			 {- nonrec -}
+AbsBinds
+[ta13E]
+[d.Parse_a154]
+[([ta13E], $d1{-r19T,x-}, d.Parse_a13s)]
+    d.Parse_a158 = d.Parse_a13s
+    $mparseFile_a1ap = $mparseFile{-r13v,x-} [ta13E] d.Parse_a158
+    d.Parse_a15a = d.Parse_a13s
+    $mparseLine_a1aq = $mparseLine{-r13z,x-} [ta13E] d.Parse_a15a
+    d.Parse_a15e = d.Parse_a154
+    parseLine_a1ar = parseLine{-r4R,x-} ta13E d.Parse_a15e
+    d.Parse_a15k = d.Parse_a13s
+    $mparse_a1as = $mparse{-r13A,x-} [ta13E] d.Parse_a15k
+    d.Parse_a15m = d.Parse_a154
+    forced_a1at = forced{-r5S,x-} ta13E d.Parse_a15m
+    AbsBinds [] [] [([], parseFile_a1au, parseFile_a13y)]
+	parseFile_a13y = $mparseFile_a1ap
+    AbsBinds [] [] [([], parseLine_a1av, parseLine_a13L)]
+	parseLine_a13L = $mparseLine_a1aq
+    AbsBinds [] [] [([], parseType_a1aw, parseType_a13T)]
+	parseType_a13T more_r4L
+		       = (map_a1a6 [PrelBase.String{-r5n,p-}, ta13E] parseLine_a1ar
+								     seperatedBy{-r3M,x-} ','
+											  ++_a1a7
+											      PrelBase.Char{-38,W-}
+											      l_r4N
+											      ",",
+			  out_r4O)
+		       where
+			   {- nonrec -}
+			   AbsBinds [] [] [([], l_r4N, l_a13W), ([], out_r4O, out_a13X)]
+			       (l_a13W, (']' PrelBase.:{-55,w-}{i} out_a13X))
+				   = span'{-r3O,x-} PrelBase.Char{-38,W-} \ x_r4Q
+									    -> x_r4Q /=_a1a8 ']'
+									  PrelList.tail{-rzj,p-}
+									      PrelBase.Char{-38,W-} more_r4L
+			   {- nonrec -}
+			   {- nonrec -}
+    AbsBinds [] [] [([], parse_a1ax, parse_a14R)]
+	parse_a14R = $mparse_a1as
+    AbsBinds [] [] [([], forced_a1ay, forced_a14Z)]
+	forced_a14Z = PrelList.all{-rwP,p-} ta13E forced_a1at
+    d.Parse_a13s =
+	({-dict-}
+	 []
+	 [parseFile_a1au, parseLine_a1av, parseType_a1aw, parse_a1ax, forced_a1ay])
+AbsBinds [] [] [([], $d2{-r19U,x-}, d.Parse_a15s)]
+    AbsBinds [] [] [([], parseFile_a1az, parseFile_a15x)]
+	parseFile_a15x = $mparseFile_a1a9
+    AbsBinds [] [] [([], parseLine_a1aA, parseLine_a15H)]
+	parseLine_a15H = $mparseLine_a1aa
+    AbsBinds [] [] [([], parseType_a1aB, parseType_a15Q)]
+	parseType_a15Q (ch_r4Z PrelBase.:{-55,w-}{i} str_r50)
+		       = (ch_r4Z, str_r50)
+    AbsBinds [] [] [([], parse_a1aC, parse_a164)]
+	parse_a164 = $mparse_a1ab
+    AbsBinds [] [] [([], forced_a1aD, forced_a16d)]
+	forced_a16d n_r54 = PrelBase.True{-5E,w-}{i}
+    d.Parse_a15s =
+	({-dict-}
+	 []
+	 [parseFile_a1az, parseLine_a1aA, parseType_a1aB, parse_a1aC, forced_a1aD])
+AbsBinds [] [] [([], $d3{-r19V,x-}, d.Parse_a16q)]
+    AbsBinds [] [] [([], parseFile_a1aE, parseFile_a16v)]
+	parseFile_a16v = $mparseFile_a1ac
+    AbsBinds [] [] [([], parseLine_a1aF, parseLine_a16F)]
+	parseLine_a16F = $mparseLine_a1ad
+    AbsBinds [] [] [([], parseType_a1aG, parseType_a16O)]
+	parseType_a16O str_r5a
+		       = pl_r5c PrelBase.String{-r5n,p-} span'{-r3O,x-}
+							     PrelBase.Char{-38,W-} PrelBase.isDigit{-ria,p-}
+										   str_r5a
+		       where
+			   {- nonrec -}
+			   AbsBinds [ta178] [] [([ta178], pl_r5c, pl_a16R)]
+			       pl_a16R (l_r5e, r_r5f) = (strToInt{-r3Q,x-} l_r5e, r_r5f)
+			   {- nonrec -}
+			   {- nonrec -}
+    AbsBinds [] [] [([], parse_a1aH, parse_a17h)]
+	parse_a17h = $mparse_a1ae
+    AbsBinds [] [] [([], forced_a1aI, forced_a17q)]
+	forced_a17q n_r5j
+		    | n_r5j >=_a1af lit_a1ag = PrelBase.True{-5E,w-}{i}
+    d.Parse_a16q =
+	({-dict-}
+	 []
+	 [parseFile_a1aE, parseLine_a1aF, parseType_a1aG, parse_a1aH, forced_a1aI])
+parseFile{-r5P,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B1;}
+parseLine{-r4R,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B2;}
+parseType{-r5Q,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B3;}
+parse{-r5R,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B4;}
+forced{-r5S,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B5;}
+AbsBinds
+[ta182]
+[d.Parse_a197]
+[([ta182], $mparseFile{-r13v,x-}, parseFile_a1aJ), ([ta182],
+						    $mparseLine{-r13z,x-},
+						    parseLine_a1aO), ([ta182],
+								      $mparse{-r13A,x-},
+								      parse_a1aP), ([ta182],
+										    $mforced{-r13B,x-},
+										    forced_a1aQ)]
+    d.Parse_a199 = d.Parse_a197
+    forced_a1aK = forced{-r5S,x-} ta182 d.Parse_a199
+    d.Parse_a19d = d.Parse_a197
+    parseLine_a1aL = parseLine{-r4R,x-} ta182 d.Parse_a19d
+    d.Parse_a19f = d.Parse_a197
+    parse_a1aM = parse{-r5R,x-} ta182 d.Parse_a19f
+    d.Parse_a19h = d.Parse_a197
+    parseType_a1aN = parseType{-r5Q,x-} ta182 d.Parse_a19h
+    AbsBinds [] [] [([], parseFile_a1aJ, parseFile_a17K)]
+	parseFile_a17K string_r5A
+		       | PrelList.all{-rwP,p-} ta182 forced_a1aK x_r5C = x_r5C
+		       where
+			   {- nonrec -}
+			   AbsBinds [] [] [([], x_r5C, x_a17N)]
+			       x_a17N
+				   = map_a1ah [PrelBase.String{-r5n,p-}, ta182] parseLine_a1aL
+										lines'{-r3P,x-} string_r5A
+			   {- nonrec -}
+			   {- nonrec -}
+    AbsBinds [] [] [([], parseLine_a1aO, parseLine_a18o)]
+	parseLine_a18o
+	    = PrelBase..{-rc2,p-}
+		  [(ta182, PrelBase.String{-r5n,p-}), PrelBase.String{-r5n,p-}, ta182]
+		  (pl_r5G [ta182, PrelBase.String{-r5n,p-}]) parse_a1aM
+	    where
+		{- nonrec -}
+		AbsBinds [ta18v, ta18y] [] [([ta18v, ta18y], pl_r5G, pl_a18n)]
+		    pl_a18n (a_r5I, _) = a_r5I
+		{- nonrec -}
+		{- nonrec -}
+    AbsBinds [] [] [([], parse_a1aP, parse_a18R)]
+	parse_a18R
+	    = PrelBase..{-rc2,p-}
+		  [PrelBase.String{-r5n,p-}, PrelBase.String{-r5n,p-}, (ta182, PrelBase.String{-r5n,p-})]
+		  parseType_a1aN whiteSpace{-r3N,x-}
+    AbsBinds [] [] [([], forced_a1aQ, forced_a192)]
+	forced_a192 x_r5O = PrelBase.True{-5E,w-}{i}
+d.Eq_a19j = PrelBase.$d34{-rcI,p-}
+/=_a19W = PrelBase./={-rhx,p-} PrelBase.Char{-38,W-} d.Eq_a19j
+d.Eq_a19o = d.Eq_a19j
+d.Eq_a19m = PrelBase.$d28{-rcB,p-} PrelBase.Char{-38,W-} d.Eq_a19o
+==_a19X = PrelBase.=={-8Y,p-} [PrelBase.Char{-38,W-}] d.Eq_a19m
+/=_a19Y = /=_a19W
+d.Num_a19q = PrelBase.$d4{-rcO,p-}
+-_a19Z = PrelBase.-{-817,p-} PrelBase.Int{-3g,W-} d.Num_a19q
+lit_a1a0 = PrelBase.I#{-5b,w-}{i} 1#
+lit_a1a1 = PrelBase.I#{-5b,w-}{i} 0#
+d.Num_a19t = d.Num_a19q
++_a1a2 = PrelBase.+{-rhC,p-} PrelBase.Int{-3g,W-} d.Num_a19t
+d.Num_a19v = d.Num_a19q
+*_a1a3 = PrelBase.*{-rhD,p-} PrelBase.Int{-3g,W-} d.Num_a19v
+lit_a1a4 = PrelBase.I#{-5b,w-}{i} 10#
+-_a1a5 = -_a19Z
+d.Functor_a19x = PrelBase.$d26{-rcz,p-}
+map_a1a6 = PrelBase.map{-rhy,p-} PrelBase.[]{-3j,W-} d.Functor_a19x
+d.MonadPlus_a19A = PrelBase.$d23{-rcw,p-}
+++_a1a7 = PrelBase.++{-rhB,p-} PrelBase.[]{-3j,W-} d.MonadPlus_a19A
+/=_a1a8 = /=_a19W
+d.Parse_a19D = $d2{-r19U,x-}
+$mparseFile_a1a9 =
+    $mparseFile{-r13v,x-} PrelBase.Char{-38,W-} d.Parse_a19D
+d.Parse_a19G = d.Parse_a19D
+$mparseLine_a1aa =
+    $mparseLine{-r13z,x-} PrelBase.Char{-38,W-} d.Parse_a19G
+d.Parse_a19I = d.Parse_a19D
+$mparse_a1ab = $mparse{-r13A,x-} PrelBase.Char{-38,W-} d.Parse_a19I
+d.Parse_a19K = $d3{-r19V,x-}
+$mparseFile_a1ac =
+    $mparseFile{-r13v,x-} PrelBase.Int{-3g,W-} d.Parse_a19K
+d.Parse_a19N = d.Parse_a19K
+$mparseLine_a1ad =
+    $mparseLine{-r13z,x-} PrelBase.Int{-3g,W-} d.Parse_a19N
+d.Parse_a19P = d.Parse_a19K
+$mparse_a1ae = $mparse{-r13A,x-} PrelBase.Int{-3g,W-} d.Parse_a19P
+d.Ord_a19R = PrelBase.$d7{-rda,p-}
+>=_a1af = PrelBase.>={-8Z,p-} PrelBase.Int{-3g,W-} d.Ord_a19R
+lit_a1ag = lit_a1a1
+map_a1ah = map_a1a6
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d11 1 $d12 1 $d14 1 $d15 1 $d16 1 $d2 1 $d22 1 $d23 1 $d24 1 $d25 1 $d26 1 $d27 1 $d28 1 $d3 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d6 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $m>> 1 $mcompare 1 $menumFromThenTo 1 $menumFromTo 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 . 1 dropWhile 1 isDigit 1 isSpace 1 ord 1 Enum 1 Eq 1 Eval 1 Functor 1 Monad 1 MonadPlus 1 MonadZero 1 Num 1 Ord 1 Ordering 1 Show 1 String 1;
+PrelList 1 :: all 1 length 1 null 1 tail 1;
+PrelNum 1 :: $d1 1 $d10 1 $d15 1 $d16 1 $d17 1 $d18 1 $d2 1 $d29 1 $d30 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d36 1 $d37 1 $d38 1 $d39 1 $d5 1 $d6 1 $d7 1 $d8 1 $mdiv 1 $mdivMod 1 $mmod 1 $mquot 1 $mrem 1 ^ 1 Integral 1 Ratio 1 Rational 1 Real 1;
+PrelTup 1 :: $d13 1 $d4 1 $d49 1 $d9 1;
+_exports_
+ShouldSucceed charToInt lines' seperatedBy span' strToInt whiteSpace Parse(parseFile parseLine parseType parse forced);
+_instances_
+instance _forall_ [a] {Parse a} => {Parse [a]} = $d1;
+instance {Parse PrelBase.Char} = $d2;
+instance {Parse PrelBase.Int} = $d3;
+_declarations_
+1 $d1 _:_ _forall_ [a] {Parse a} => {Parse [a]} ;;
+1 $d2 _:_ {Parse PrelBase.Char} ;;
+1 $d3 _:_ {Parse PrelBase.Int} ;;
+1 $mforced _:_ _forall_ [a] {Parse a} => a -> PrelBase.Bool ;;
+1 $mparse _:_ _forall_ [a] {Parse a} => PrelBase.String -> (a, PrelBase.String) ;;
+1 $mparseFile _:_ _forall_ [a] {Parse a} => PrelBase.String -> [a] ;;
+1 $mparseLine _:_ _forall_ [a] {Parse a} => PrelBase.String -> a ;;
+1 class Parse a where {parseFile = :: PrelBase.String -> [a]; parseLine = :: PrelBase.String -> a; parseType :: PrelBase.String -> (a, PrelBase.String); parse = :: PrelBase.String -> (a, PrelBase.String); forced = :: a -> PrelBase.Bool} ;
+1 charToInt _:_ PrelBase.Char -> PrelBase.Int ;;
+1 lines' _:_ [PrelBase.Char] -> [[PrelBase.Char]] ;;
+1 seperatedBy _:_ PrelBase.Char -> PrelBase.String -> [PrelBase.String] ;;
+1 span' _:_ _forall_ [ta] => (ta -> PrelBase.Bool) -> [ta] -> ([ta], [ta]) ;;
+1 strToInt _:_ PrelBase.String -> PrelBase.Int ;;
+1 whiteSpace _:_ PrelBase.String -> PrelBase.String ;;
diff --git a/ghc/tests/typecheck/should_compile/tc081.hs b/ghc/tests/typecheck/should_compile/tc081.hs
deleted file mode 100644
index 6590550cf670ae95778a5c35457645eb7473e89e..0000000000000000000000000000000000000000
--- a/ghc/tests/typecheck/should_compile/tc081.hs
+++ /dev/null
@@ -1,28 +0,0 @@
---!!! an example Simon made up
---
-module ShouldSucceed where
-
-f x = (x+1, x<3, g True, g 'c')
-	where
-	g y = if x>2 then [] else [y]
-{-
-Here the type-check of g will yield an LIE with an Ord dict
-for x.  g still has type forall a. a -> [a].  The dictionary is
-free, bound by the x.
-
-It should be ok to add the signature:
--}
-
-f2 x = (x+1, x<3, g2 True, g2 'c')
-	where
-	-- NB: this sig:
-	g2 :: a -> [a]
-	g2 y = if x>2 then [] else [y]
-{-
-or to write:
--}
-
-f3 x = (x+1, x<3, g3 True, g3 'c')
-	where
-	-- NB: this line:
-	g3 = (\ y -> if x>2 then [] else [y])::(a -> [a])
diff --git a/ghc/tests/typecheck/should_compile/tc082.hs b/ghc/tests/typecheck/should_compile/tc082.hs
index f2ccb367361b60b9d0630f03de041273637bdd37..07df34b7d34c7864b3b9bc60d5239f2a41837254 100644
--- a/ghc/tests/typecheck/should_compile/tc082.hs
+++ b/ghc/tests/typecheck/should_compile/tc082.hs
@@ -1,6 +1,6 @@
 --!!! tc082: an instance for functions
 --
-module N where
+module ShouldSucceed where
 
 class Normal a
 	where
diff --git a/ghc/tests/typecheck/should_compile/tc082.stderr b/ghc/tests/typecheck/should_compile/tc082.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..ec3b65476722ad443b2c2970026d070f6b75a34d
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc082.stderr
@@ -0,0 +1,32 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [tary] [] [([tary], f{-r3p,x-}, f_arl)]
+    d.Normal_arA = $d1{-rrW,x-} [GHC.Void{-3T,W-}, GHC.Void{-3T,W-}]
+    normal_arX =
+	normal{-r3r,x-} (GHC.Void{-3T,W-} -> GHC.Void{-3T,W-}) d.Normal_arA
+    f_arl x_r3f = normal_arX PrelBase.id{-r9U,p-} GHC.Void{-3T,W-}
+AbsBinds
+[tarP, tarQ]
+[]
+[([tarP, tarQ], $d1{-rrW,x-}, d.Normal_arI)]
+    AbsBinds [] [] [([], normal_arY, normal_arM)]
+	normal_arM _ = PrelBase.True{-5E,w-}{i}
+    d.Normal_arI = ({-dict-} [] [normal_arY])
+normal{-r3r,x-} = _/\_ t12 -> \ tpl_B1 -> tpl_B1
+AbsBinds [tarV] [d.Normal_arU] []
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: id 1;
+_exports_
+ShouldSucceed f Normal(normal);
+_instances_
+instance _forall_ [a b] => {Normal (a -> b)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a b] => {Normal (a -> b)} ;;
+1 class Normal a where {normal :: a -> PrelBase.Bool} ;
+1 f _:_ _forall_ [ta] => ta -> PrelBase.Bool ;;
diff --git a/ghc/tests/typecheck/should_compile/tc083.hs b/ghc/tests/typecheck/should_compile/tc083.hs
deleted file mode 100644
index 1c5321e63115783956422bb3f130edac86d482f5..0000000000000000000000000000000000000000
--- a/ghc/tests/typecheck/should_compile/tc083.hs
+++ /dev/null
@@ -1,10 +0,0 @@
---!!! instances with no binds;
---!!! be sure we get a legit .hi file
---
-module Bar where
-
-import ClassFoo
-
-instance Foo Int
-
-instance Foo a => Foo [a]
diff --git a/ghc/tests/typecheck/should_compile/tc084.hs b/ghc/tests/typecheck/should_compile/tc084.hs
index 572bbe31dc97f6153169f869be6d9f056d3830e5..597a296f904e80024ec100f50ef45cb2e5c10a71 100644
--- a/ghc/tests/typecheck/should_compile/tc084.hs
+++ b/ghc/tests/typecheck/should_compile/tc084.hs
@@ -7,7 +7,7 @@
    Simon PJ
 -}
 
-module Foo where
+module ShouldSucceed where
 
 
 g :: Num a => Bool -> a -> b -> a
diff --git a/ghc/tests/typecheck/should_compile/tc084.stderr b/ghc/tests/typecheck/should_compile/tc084.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..5771a4f28aea75aa1cf815849cc2969f416711e9
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc084.stderr
@@ -0,0 +1,33 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taC7, taCa]
+[d.Num_aCi]
+[([taCa, taC7], g{-r3h,x-}, g_aC3)]
+    d.Num_aCk = d.Num_aCi
+    +_aCR = PrelBase.+{-rfr,p-} taC7 d.Num_aCk
+    d.Num_aCm = d.Num_aCi
+    -_aCS = PrelBase.-{-817,p-} taC7 d.Num_aCm
+    g_aC3 b_r3l x_r3m y_r3n
+	  = if b_r3l then x_r3m +_aCR x_r3m else x_r3m -_aCS x_r3m
+AbsBinds [taCu] [] [([taCu], f{-r3i,x-}, f_aCo)]
+    g_aCT = g{-r3h,x-} [taCu, PrelBase.Int{-3g,W-}] d.Num_aCz
+    f_aCo = g_aCT PrelBase.True{-5E,w-}{i}
+AbsBinds [taCQ] [] [([taCQ], h{-r3j,x-}, h_aCB)]
+    h_aCB y_r3p x_r3q = f{-r3i,x-} taCQ x_r3q y_r3p
+d.Num_aCz = PrelBase.$d4{-raC,p-}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed f g h;
+_declarations_
+1 f _:_ _forall_ [ta] => PrelBase.Int -> ta -> PrelBase.Int ;;
+1 g _:_ _forall_ [ta tb] {PrelBase.Num tb} => PrelBase.Bool -> tb -> ta -> tb ;;
+1 h _:_ _forall_ [ta] => ta -> PrelBase.Int -> PrelBase.Int ;;
diff --git a/ghc/tests/typecheck/should_compile/tc085.hs b/ghc/tests/typecheck/should_compile/tc085.hs
index fe5ad6a8ae7fa68d0d68cd116f33bb418dc2de57..ca2822f34419bfc2f3963bb48158c9becff67d04 100644
--- a/ghc/tests/typecheck/should_compile/tc085.hs
+++ b/ghc/tests/typecheck/should_compile/tc085.hs
@@ -1,6 +1,6 @@
 --!!! From a bug report from Satnam.
 --!!! To do with re-exporting importees from PreludeGla* modules.
-module Foo ( module GlaExts, module Foo ) where
+module ShouldSucceed ( module GlaExts ) where
 
 --OLD: import PreludeGlaIO
 import GlaExts
diff --git a/ghc/tests/typecheck/should_compile/tc085.stderr b/ghc/tests/typecheck/should_compile/tc085.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..2e14883196891ec0e199c4f1f6027a48756efbb0
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc085.stderr
@@ -0,0 +1,32 @@
+
+
+================================================================================
+Typechecked:
+FooData{-r5,l-}{i} = FooData{-r5,l-}{i} {}
+AbsBinds [] [] [([], $d1{-rBr,x-}, d.Eval_aBo)]
+    d.Eval_aBo = ({-dict-} [] [])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+GlaExts 1 ::;
+PrelBase 1 :: $d2 1 $d38 1 $d40 1 $d42 1 $d47 1 Eval 1;
+_exports_
+ArrBase boundsOfArray boundsOfByteArray freezeAddrArray freezeArray freezeCharArray freezeDoubleArray freezeFloatArray freezeIntArray indexAddrArray indexAddrOffAddr indexCharArray indexCharOffAddr indexDoubleArray indexDoubleOffAddr indexFloatArray indexFloatOffAddr indexIntArray indexIntOffAddr newAddrArray newArray newCharArray newDoubleArray newFloatArray newIntArray readAddrArray readArray readCharArray readDoubleArray readFloatArray readIntArray thawArray unsafeFreezeArray unsafeFreezeByteArray writeAddrArray writeArray writeCharArray writeDoubleArray writeFloatArray writeIntArray ByteArray(ByteArray) MutableArray(MutableArray) MutableByteArray(MutableByteArray);
+Foreign Addr(A#) Word(W#);
+GHC *# *## **## +# +## -# -## /## /=# /=## <# <## <=# <=## ==# ==## ># >## >=# >=## acosDouble# acosFloat# addr2Int# and# asinDouble# asinFloat# atanDouble# atanFloat# chr# cmpInteger# cosDouble# cosFloat# coshDouble# coshFloat# deRefStablePtr# decodeDouble# decodeFloat# delay# divideFloat# double2Float# double2Int# encodeDouble# encodeFloat# eqAddr# eqChar# eqFloat# eqWord# errorIO# expDouble# expFloat# float2Double# float2Int# fork# geAddr# geChar# geFloat# geWord# gtAddr# gtChar# gtFloat# gtWord# iShiftL# iShiftRA# iShiftRL# indexAddrArray# indexAddrOffAddr# indexAddrOffForeignObj# indexArray# indexCharArray# indexCharOffAddr# indexCharOffForeignObj# indexDoubleArray# indexDoubleOffAddr# indexDoubleOffForeignObj# indexFloatArray# indexFloatOffAddr# indexFloatOffForeignObj# indexIntArray# indexIntOffAddr# indexIntOffForeignObj# int2Addr# int2Double# int2Float# int2Integer# int2Word# integer2Int# leAddr# leChar# leFloat# leWord# logDouble# logFloat# ltAddr# ltChar# ltFloat# ltWord# makeForeignObj# makeStablePtr# minusFloat# minusInteger# neAddr# neChar# neFloat# neWord# negateDouble# negateFloat# negateInt# negateInteger# newAddrArray# newArray# newCharArray# newDoubleArray# newFloatArray# newIntArray# newSynchVar# not# or# ord# par# parAt# parAtForNow# parGlobal# parLocal# plusFloat# plusInteger# powerFloat# putMVar# quotInt# quotRemInteger# readAddrArray# readArray# readCharArray# readDoubleArray# readFloatArray# readIntArray# realWorld# remInt# sameMutableArray# sameMutableByteArray# seq# shiftL# shiftRA# shiftRL# sinDouble# sinFloat# sinhDouble# sinhFloat# sqrtDouble# sqrtFloat# takeMVar# tanDouble# tanFloat# tanhDouble# tanhFloat# timesFloat# timesInteger# unsafeFreezeArray# unsafeFreezeByteArray# waitRead# waitWrite# word2Int# writeAddrArray# writeArray# writeCharArray# writeDoubleArray# writeFloatArray# writeForeignObj# writeIntArray# -> Addr# All Array# ByteArray# Char# Double# Float# ForeignObj# Int# MutableArray# MutableByteArray# RealWorld StablePtr# State# SynchVar# Void Word#;
+IOBase ioToPrimIO ioToST primIOToIO seqIO_Prim stToIO thenIO_Prim trace;
+Ix Ix;
+PrelBase Char(C#) Double(D#) Float(F#) Int(I#) Integer(J#) Lift(Lift);
+STBase fixPrimIO listPrimIO mapAndUnzipPrimIO mapPrimIO returnPrimIO seqPrimIO thenPrimIO PrimIO ST;
+UnsafeST unsafeInterleavePrimIO unsafePerformPrimIO;
+_fixities_
+infixr 1 seqIO_Prim;
+infixr 1 thenIO_Prim;
+_instances_
+instance {PrelBase.Eval FooData} = $d1;
+_declarations_
+1 $d1 _:_ {PrelBase.Eval FooData} ;;
+1 data FooData = FooData ;
+1 type FooType = PrelBase.Int ;
diff --git a/ghc/tests/typecheck/should_compile/tc086.hs b/ghc/tests/typecheck/should_compile/tc086.hs
index 4d9ba6edb6461442c5572c6229841f134e87ee2e..1f0f427a0362c2baca3c0a3783894cf9fa1c903c 100644
--- a/ghc/tests/typecheck/should_compile/tc086.hs
+++ b/ghc/tests/typecheck/should_compile/tc086.hs
@@ -22,7 +22,7 @@ SPJ note: the type signature on "multiply" should be
 
 -}
 
-module Rings( Group, Ring ) where
+module ShouldSucceed( Group, Ring ) where
 
 import qualified Prelude( Ord(..), Eq(..), Num(..) )
 import Prelude hiding( Ord(..), Eq(..), Num(..), MonadZero( zero ) )
diff --git a/ghc/tests/typecheck/should_compile/tc086.stderr b/ghc/tests/typecheck/should_compile/tc086.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..35f78eb727aeb1c5f0155aea96fcdf91206b7e83
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc086.stderr
@@ -0,0 +1,124 @@
+
+
+================================================================================
+Typechecked:
+scsel_RingShouldSucceedGroup{-aFJ,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B1;}
+*{-r6D,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case tpl_B1 of { PrelTup.(,){-62,w-}{i} tpl_B1 tpl_B2  -> tpl_B2;}
+AbsBinds [taE5] [d.Ring_aFn] [([taE5], $m*{-rFK,x-}, *_aFL)]
+    d.Group_aFk = scsel_RingShouldSucceedGroup{-aFJ,x-} taE5 d.Ring_aFn
+    AbsBinds [] [] [([], *_aFL, *_aE2)]
+	*_aE2 a_r6L b_r6M
+	      = multiply_aFO a_r6L b_r6M
+	      where
+		  {- rec -}
+		  AbsBinds
+		  [taEe]
+		  [d.Group_aF3]
+		  [([taEe], multiply_r6O, multiply_aEb)]
+		      d.Group_aF5 = d.Group_aF3
+		      compare_aFP = compare{-r6w,l-} taEe d.Group_aF5
+		      d.Group_aF7 = d.Group_aF3
+		      zero_aFQ = zero{-r6A,l-} taEe d.Group_aF7
+		      zero_aFR = zero_aFQ
+		      d.Group_aF9 = d.Group_aF3
+		      -_aFS = -{-r6z,l-} taEe d.Group_aF9
+		      zero_aFT = zero_aFQ
+		      d.Group_aFb = d.Group_aF3
+		      multiply_aFU = multiply_r6O taEe d.Group_aFb
+		      -_aFV = -_aFS
+		      zero_aFW = zero_aFQ
+		      compare_aFX = compare_aFP
+		      d.Group_aFd = d.Group_aF3
+		      one_aFY = one{-r6B,l-} taEe d.Group_aFd
+		      d.Group_aFf = d.Group_aF3
+		      +_aFZ = +{-r6y,l-} taEe d.Group_aFf
+		      multiply_aG0 = multiply_aFU
+		      -_aG1 = -_aFS
+		      one_aG2 = one_aFY
+		      multiply_aEb a_r6S b_r6T
+				   = case compare_aFP a_r6S zero_aFQ of
+				       PrelBase.EQ{-r2a,p-}{i} -> zero_aFR
+				       PrelBase.LT{-r28,p-}{i}
+				       -> zero_aFT -_aFS (multiply_aFU zero_aFW -_aFV a_r6S b_r6T)
+				       PrelBase.GT{-r2c,p-}{i}
+				       -> case compare_aFX a_r6S one_aFY of
+					    PrelBase.EQ{-r2a,p-}{i} -> b_r6T
+					    _
+					    -> b_r6T +_aFZ (multiply_aG0 a_r6S -_aG1 one_aG2 b_r6T)
+		  {- nonrec -}
+		  multiply_aFO = multiply_r6O taE5 d.Group_aFk
+		  {- nonrec -}
+compare{-r6w,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,,){-66,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5 tpl_B6  ->
+	tpl_B1;}
+fromInteger{-r6x,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,,){-66,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5 tpl_B6  ->
+	tpl_B2;}
++{-r6y,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,,){-66,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5 tpl_B6  ->
+	tpl_B3;}
+-{-r6z,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,,){-66,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5 tpl_B6  ->
+	tpl_B4;}
+zero{-r6A,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,,){-66,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5 tpl_B6  ->
+	tpl_B5;}
+one{-r6B,l-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,,){-66,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5 tpl_B6  ->
+	tpl_B6;}
+AbsBinds
+[taFt]
+[d.Group_aFG]
+[([taFt], $mzero{-rFM,x-}, zero_aG3), ([taFt],
+				       $mone{-rFN,x-},
+				       one_aG6)]
+    d.Group_aFI = d.Group_aFG
+    fromInteger_aG4 = fromInteger{-r6x,l-} taFt d.Group_aFI
+    fromInteger_aG5 = fromInteger_aG4
+    AbsBinds [] [] [([], zero_aG3, zero_aFs)]
+	zero_aFs = fromInteger_aG4 0
+    AbsBinds [] [] [([], one_aG6, one_aFA)]
+	one_aFA = fromInteger_aG5 1
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d55 1 $d56 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Ordering 1 Ordering 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+ShouldSucceed Group Ring;
+_declarations_
+1 $m* _:_ _forall_ [a] {Ring a} => a -> a -> a ;;
+1 $mone _:_ _forall_ [a] {Group a} => a ;;
+1 $mzero _:_ _forall_ [a] {Group a} => a ;;
+1 class Group a where {compare :: a -> a -> PrelBase.Ordering; fromInteger :: PrelBase.Integer -> a; + :: a -> a -> a; - :: a -> a -> a; zero = :: a; one = :: a} ;
+1 class {Group a} => Ring a where {* = :: a -> a -> a} ;
diff --git a/ghc/tests/typecheck/should_compile/tc087.hs b/ghc/tests/typecheck/should_compile/tc087.hs
index 8477427e1176b7fe125736ec595f6f0c10133c1d..cb4b92566b95113b5b096c29f136faa956d59ef3 100644
--- a/ghc/tests/typecheck/should_compile/tc087.hs
+++ b/ghc/tests/typecheck/should_compile/tc087.hs
@@ -1,4 +1,4 @@
-module SOL where
+module ShouldSucceed where
 
 import GlaExts
 
diff --git a/ghc/tests/typecheck/should_compile/tc087.stderr b/ghc/tests/typecheck/should_compile/tc087.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..8e9cafef9dc991285d712b9280272352548c025d
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc087.stderr
@@ -0,0 +1,188 @@
+
+
+================================================================================
+Typechecked:
+Null{-rf,x-}{i} =
+    _/\_ t_ar59 a_tr5a -> Null{-rf,x-}{i} {_@_ t_ar59 _@_ a_tr5a}
+Cons{-re,x-}{i} =
+    _/\_ t_ar59 a_tr5a -> \ tpl_B1 tpl_B2 ->
+	Cons{-re,x-}{i} {_@_ t_ar59 _@_ a_tr5a tpl_B1 tpl_B2}
+AbsBinds [ta13I] [d.Num_a13T] [([ta13I], out{-r4v,x-}, out_a13F)]
+    d.Eq_a13V = PrelBase.scsel_NumPrelBaseEq{-a19a,p-} ta13I d.Num_a13T
+    ==_a196 = PrelBase.=={-8Y,p-} ta13I d.Eq_a13V
+    d.Num_a13X = d.Num_a13T
+    sum_a197 = PrelList.sum{-ro0,p-} ta13I d.Num_a13X
+    d.Num_a140 = d.Num_a13T
+    fromInt_a198 = PrelBase.fromInt{-8R,p-} ta13I d.Num_a140
+    lit_a199 = fromInt_a198 PrelBase.I#{-5b,w-}{i} 0#
+    out_a13F x_r4O
+	     | (sum_a197 x_r4O) ==_a196 lit_a199 = PrelIO.putStr{-riO,p-} "ok\n"
+	     | PrelBase.otherwise{-818,p-} = PrelIO.putStr{-riO,p-} "ok\n"
+out_a18N = out{-r4v,x-} PrelBase.Int{-3g,W-} d.Num_a18n
+out_a18O = out{-r4v,x-} PrelBase.Double{-3a,W-} d.Num_a18o
+AbsBinds
+[ta14p, aa14q]
+[d.PriorityQueue_a14u, d.Ord_a14w]
+[([ta14p, aa14q], insertMany{-r4x,x-}, insertMany_a143)]
+    insert_a14r = insert{-r5d,x-} aa14q d.PriorityQueue_a14u
+    insert_a19b = insert_a14r ta14p d.Ord_a14w
+    insertMany_a143 x_r4G q_r4H
+		    = PrelBase.foldr{-89,w-} [ta14p, aa14q ta14p] insert_a19b
+								  q_r4H
+								  x_r4G
+AbsBinds
+[aa153, ta155]
+[d.PriorityQueue_a158, d.Ord_a15a]
+[([aa153, ta155], toOrderedList{-r4w,x-}, toOrderedList_a14y)]
+    splitMin_a156 = splitMin{-r5f,x-} aa153 d.PriorityQueue_a158
+    splitMin_a19c = splitMin_a156 ta155 d.Ord_a15a
+    toOrderedList_a14y q_r4A
+		       = case splitMin_a19c q_r4A of
+			   Null{-rf,x-}{i} -> PrelBase.[]{-5i,w-}{i} ta155
+			   (Cons{-re,x-}{i} a_r4D q_r4E)
+			   -> PrelBase.:{-55,w-}{i} ta155 a_r4D (toOrderedList_a14y q_r4E)
+AbsBinds
+[aa15w, ta15x]
+[d.PriorityQueue_a15A, d.Ord_a15B]
+[([aa15w, ta15x], pqSort{-r4y,x-}, pqSort_a15c)]
+    toOrderedList_a19d =
+	toOrderedList{-r4w,x-} [aa15w, ta15x]
+	    [d.PriorityQueue_a15A, d.Ord_a15B]
+    d.PriorityQueue_a15D = d.PriorityQueue_a15A
+    d.Ord_a15E = d.Ord_a15B
+    insertMany_a19e =
+	insertMany{-r4x,x-} [ta15x, aa15w]
+	    [d.PriorityQueue_a15D, d.Ord_a15E]
+    pqSort_a15c q_r4J x_r4K
+		= toOrderedList_a19d insertMany_a19e x_r4K q_r4J
+AbsBinds
+[aa15R]
+[d.PriorityQueue_a16G]
+[([aa15R], check{-r4u,x-}, check_a15N)]
+    d.PriorityQueue_a17d = d.PriorityQueue_a16G
+    d.Ord_a17e = PrelBase.$d7{-rcM,p-}
+    pqSort_a19f =
+	pqSort{-r4y,x-} [aa15R, PrelBase.Int{-3g,W-}]
+	    [d.PriorityQueue_a17d, d.Ord_a17e]
+    d.Ord_a16H = d.Ord_a17e
+    d.PriorityQueue_a17l = d.PriorityQueue_a16G
+    d.Ord_a17m = PrelNum.$d17{-rwV,p-}
+    pqSort_a19g =
+	pqSort{-r4y,x-} [aa15R, PrelBase.Double{-3a,W-}]
+	    [d.PriorityQueue_a17l, d.Ord_a17m]
+    d.Ord_a16I = d.Ord_a17m
+    check_a15N empty_r4M
+	       = do
+		   PrelIO.putStr{-riO,p-} "*** sorting\n"
+		   out_a18N pqSort_a19f empty_a19h
+					[(enumFromTo_a18W) lit_a18U .. lit_a18V]
+		   out_a18O pqSort_a19g empty_a19i
+					[(enumFromThenTo_a193) lit_a18Y, lit_a190 .. lit_a192]
+	       where
+		   {- nonrec -}
+		   empty_a19h = empty_r4M PrelBase.Int{-3g,W-} d.Ord_a16H
+		   empty_a19i = empty_r4M PrelBase.Double{-3a,W-} d.Ord_a16I
+		   {- nonrec -}
+AbsBinds
+[aa18I, ta18J]
+[]
+[([aa18I, ta18J], $d1{-r18S,x-}, d.Eval_a17F)]
+    d.Eval_a17F = ({-dict-} [] [])
+empty{-r5b,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B1;}
+single{-r5c,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B2;}
+insert{-r5d,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B3;}
+meld{-r5e,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B4;}
+splitMin{-r5f,x-} =
+    _/\_ t12 -> \ tpl_B1 ->
+	case
+	    tpl_B1
+	of {
+	PrelTup.(,,,,){-65,w-}{i} tpl_B1 tpl_B2 tpl_B3 tpl_B4 tpl_B5  ->
+	tpl_B5;}
+AbsBinds
+[aa17N]
+[d.PriorityQueue_a18i]
+[([aa17N], $minsert{-r18T,x-}, insert_a19j)]
+    d.PriorityQueue_a18k = d.PriorityQueue_a18i
+    meld_a189 = meld{-r5e,x-} aa17N d.PriorityQueue_a18k
+    d.PriorityQueue_a18m = d.PriorityQueue_a18i
+    single_a188 = single{-r5c,x-} aa17N d.PriorityQueue_a18m
+    AbsBinds [ta17Q] [d.Ord_a18c] [([ta17Q], insert_a19j, insert_a17L)]
+	d.Ord_a18e = d.Ord_a18c
+	meld_a19k = meld_a189 ta17Q d.Ord_a18e
+	d.Ord_a18g = d.Ord_a18c
+	single_a19l = single_a188 ta17Q d.Ord_a18g
+	insert_a17L a_r56 q_r57 = (single_a19l a_r56) meld_a19k q_r57
+d.Num_a18n = PrelBase.$d4{-rcq,p-}
+lit_a18U = PrelBase.I#{-5b,w-}{i} 1#
+lit_a18V = PrelBase.I#{-5b,w-}{i} 99#
+d.Enum_a18r = PrelBase.$d6{-rcL,p-}
+enumFromTo_a18W =
+    PrelBase.enumFromTo{-8W,p-} PrelBase.Int{-3g,W-} d.Enum_a18r
+d.Num_a18o = PrelNum.$d16{-rwU,p-}
+d.Fractional_a18w = PrelNum.$d14{-rwS,p-}
+fromRational_a18X =
+    PrelNum.fromRational{-8T,p-} PrelBase.Double{-3a,W-}
+	d.Fractional_a18w
+lit_a18Y = fromRational_a18X 1.0000000000000000
+fromRational_a18Z = fromRational_a18X
+lit_a190 = fromRational_a18Z 1.1000000000000001
+fromRational_a191 = fromRational_a18X
+lit_a192 = fromRational_a191 99.900000000000006
+d.Enum_a18B = PrelNum.$d8{-rxr,p-}
+enumFromThenTo_a193 =
+    PrelBase.enumFromThenTo{-8X,p-} PrelBase.Double{-3a,W-} d.Enum_a18B
+d.Monad_a18E = IOBase.$d3{-rm9,p-}
+>>=_a194 = PrelBase.>>={-811,p-} IOBase.IO{-3e,p-} d.Monad_a18E
+d.Monad_a18H = d.Monad_a18E
+return_a195 =
+    PrelBase.return{-816,p-} IOBase.IO{-3e,p-} d.Monad_a18H
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+IOBase 1 :: $d2 1 $d3 1 $d7 1 IO 1;
+PrelBase 1 :: $d1 1 $d11 1 $d12 1 $d14 1 $d15 1 $d16 1 $d2 1 $d22 1 $d24 1 $d25 1 $d27 1 $d28 1 $d3 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d6 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $m>> 1 $mcompare 1 $menumFromThenTo 1 $menumFromTo 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 otherwise 1 Enum 1 Eq 1 Eval 1 Monad 1 MonadZero 1 Num 1 Ord 1 Ordering 1 Show 1 String 1;
+PrelIO 1 :: putStr 1;
+PrelList 1 :: sum 1;
+PrelNum 1 :: $d1 1 $d10 1 $d14 1 $d15 1 $d16 1 $d17 1 $d18 1 $d2 1 $d29 1 $d30 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d36 1 $d37 1 $d38 1 $d39 1 $d4 1 $d5 1 $d6 1 $d7 1 $d8 1 $mdiv 1 $mdivMod 1 $mmod 1 $mquot 1 $mrecip 1 $mrem 1 Fractional 1 Integral 1 Ratio 1 Rational 1 Real 1;
+PrelTup 1 :: $d13 1 $d4 1 $d49 1 $d9 1;
+_exports_
+ShouldSucceed check insertMany out pqSort toOrderedList PriorityQueue(empty single insert meld splitMin) SeqView(Null Cons);
+_instances_
+instance _forall_ [t :: (* -> *) a] => {PrelBase.Eval (SeqView t a)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [t :: (* -> *) a] => {PrelBase.Eval (SeqView t a)} ;;
+1 $minsert _:_ _forall_ [q :: (* -> *)] {PriorityQueue q} => _forall_ [a] {PrelBase.Ord a} => a -> q a -> q a ;;
+1 class PriorityQueue q :: (* -> *) where {empty :: _forall_ [a] {PrelBase.Ord a} => q a; single :: _forall_ [a] {PrelBase.Ord a} => a -> q a; insert = :: _forall_ [a] {PrelBase.Ord a} => a -> q a -> q a; meld :: _forall_ [a] {PrelBase.Ord a} => q a -> q a -> q a; splitMin :: _forall_ [a] {PrelBase.Ord a} => q a -> SeqView q a} ;
+1 data SeqView t :: (* -> *) a = Null |  Cons a (t a) ;
+1 check _:_ _forall_ [aa :: (* -> *)] {PriorityQueue aa} => (_forall_ [tb] {PrelBase.Ord tb} => aa tb) -> IOBase.IO PrelBase.() ;;
+1 insertMany _:_ _forall_ [ta ab :: (* -> *)] {PriorityQueue ab, PrelBase.Ord ta} => [ta] -> ab ta -> ab ta ;;
+1 out _:_ _forall_ [ta] {PrelBase.Num ta} => [ta] -> IOBase.IO PrelBase.() ;;
+1 pqSort _:_ _forall_ [aa :: (* -> *) tb] {PriorityQueue aa, PrelBase.Ord tb} => aa tb -> [tb] -> [tb] ;;
+1 toOrderedList _:_ _forall_ [aa :: (* -> *) tb] {PriorityQueue aa, PrelBase.Ord tb} => aa tb -> [tb] ;;
diff --git a/ghc/tests/typecheck/should_compile/tc088.hs b/ghc/tests/typecheck/should_compile/tc088.hs
index e1b8b88dd6eb07b0dfc43e2a55f131d6fe7570d2..5423200d1a1e1e9440f172095f67b899e049e561 100644
--- a/ghc/tests/typecheck/should_compile/tc088.hs
+++ b/ghc/tests/typecheck/should_compile/tc088.hs
@@ -1,6 +1,6 @@
 -- Check that "->" is an instance of Eval
 
-module Foo where
+module ShouldSucceed where
 
 instance (Eq b) => Eq (a -> b) where
 	(==) f g = error "attempt to compare functions"
diff --git a/ghc/tests/typecheck/should_compile/tc088.stderr b/ghc/tests/typecheck/should_compile/tc088.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..3304d5f182c7d3eb957a11ee2122e0dd7de83265
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc088.stderr
@@ -0,0 +1,74 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taD0, taD1]
+[d.Num_aEx, d.Eq_aEy, d.Show_aEz, d.Eval_aEA]
+[([taD0, taD1], $d1{-rFx,x-}, d.Num_aCT)]
+    d.Eq_aEw = d.Eq_aEy
+    d.Show_aEB = d.Show_aEz
+    d.Eval_aEC = d.Eval_aEA
+    d.Num_aEG = d.Num_aEx
+    +_aFz = PrelBase.+{-rgc,p-} taD1 d.Num_aEG
+    d.Num_aEI = d.Num_aEx
+    -_aFA = PrelBase.-{-817,p-} taD1 d.Num_aEI
+    d.Num_aEK = d.Num_aEx
+    *_aFB = PrelBase.*{-rgd,p-} taD1 d.Num_aEK
+    d.Num_aEM = d.Num_aEx
+    negate_aFC = PrelBase.negate{-rge,p-} taD1 d.Num_aEM
+    d.Num_aEO = d.Num_aEx
+    abs_aFD = PrelBase.abs{-rgf,p-} taD1 d.Num_aEO
+    d.Num_aEQ = d.Num_aEx
+    signum_aFE = PrelBase.signum{-rgg,p-} taD1 d.Num_aEQ
+    d.Num_aES = d.Num_aEx
+    fromInteger_aFF = PrelBase.fromInteger{-8S,p-} taD1 d.Num_aES
+    d.Num_aEU = d.Num_aEx
+    fromInt_aFG = PrelBase.fromInt{-8R,p-} taD1 d.Num_aEU
+    AbsBinds [] [] [([], +_aFH, +_aCX)]
+	+_aCX f_r3h g_r3i = \ a_r3k -> (f_r3h a_r3k) +_aFz (g_r3i a_r3k)
+    AbsBinds [] [] [([], -_aFI, -_aDd)]
+	-_aDd f_r3o g_r3p = \ a_r3r -> (f_r3o a_r3r) -_aFA (g_r3p a_r3r)
+    AbsBinds [] [] [([], *_aFJ, *_aDr)]
+	*_aDr f_r3v g_r3w = \ a_r3y -> (f_r3v a_r3y) *_aFB (g_r3w a_r3y)
+    AbsBinds [] [] [([], negate_aFK, negate_aDF)]
+	negate_aDF f_r3C = \ a_r3E -> negate_aFC f_r3C a_r3E
+    AbsBinds [] [] [([], abs_aFL, abs_aDR)]
+	abs_aDR f_r3I = \ a_r3K -> abs_aFD f_r3I a_r3K
+    AbsBinds [] [] [([], signum_aFM, signum_aE3)]
+	signum_aE3 f_r3O = \ a_r3Q -> signum_aFE f_r3O a_r3Q
+    AbsBinds [] [] [([], fromInteger_aFN, fromInteger_aEf)]
+	fromInteger_aEf n_r3U = \ a_r3W -> fromInteger_aFF n_r3U
+    AbsBinds [] [] [([], fromInt_aFO, fromInt_aEq)]
+	fromInt_aEq n_r40 = \ a_r42 -> fromInt_aFG n_r40
+    d.Num_aCT =
+	({-dict-}
+	 [d.Eq_aEw, d.Show_aEB, d.Eval_aEC]
+	 [+_aFH, -_aFI, *_aFJ, negate_aFK, abs_aFL, signum_aFM, fromInteger_aFN, fromInt_aFO])
+AbsBinds
+[taFe, taFf]
+[d.Eq_aFr]
+[([taFe, taFf], $d2{-rFy,x-}, d.Eq_aF7)]
+    d.Eq_aFv = d.Eq_aF7
+    $m/=_aFP = PrelBase.$m/={-rfO,p-} (taFe -> taFf) d.Eq_aFv
+    AbsBinds [] [] [([], ==_aFQ, ==_aFb)]
+	==_aFb f_r4a g_r4b
+	       = IOBase.error{-87,w-}
+		     PrelBase.Bool{-34,W-} "attempt to compare functions"
+    AbsBinds [] [] [([], /=_aFR, /=_aFo)]
+	/=_aFo = $m/=_aFP
+    d.Eq_aF7 = ({-dict-} [] [==_aFQ, /=_aFR])
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum ShouldSucceed
+_usages_
+PrelBase 1 :: $d1 1 $d12 1 $d16 1 $d2 1 $d22 1 $d28 1 $d3 1 $d33 1 $d34 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d47 1 $d55 1 $d8 1 $d9 1 $m- 1 $m/= 1 $mfromInt 1 $mshowList 1 Eq 1 Eval 1 Num 1 Show 1 String 1;
+PrelNum 1 :: $d10 1 $d16 1 $d18 1 $d29 1 $d33 1 $d35 1;
+_exports_
+_instances_
+instance _forall_ [a b] {PrelBase.Num b} => {PrelBase.Num (a -> b)} = $d1;
+instance _forall_ [a b] {PrelBase.Eq b} => {PrelBase.Eq (a -> b)} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a b] {PrelBase.Num b, PrelBase.Eq (a -> b), PrelBase.Show (a -> b), PrelBase.Eval (a -> b)} => {PrelBase.Num (a -> b)} ;;
+1 $d2 _:_ _forall_ [a b] {PrelBase.Eq b} => {PrelBase.Eq (a -> b)} ;;
diff --git a/ghc/tests/typecheck/should_compile/tc089.hs b/ghc/tests/typecheck/should_compile/tc089.hs
index 1143906507f0dbe598f25e2edc730888c4ba314a..ff787224fd0193a1a30132f3dc072379889fa2ed 100644
--- a/ghc/tests/typecheck/should_compile/tc089.hs
+++ b/ghc/tests/typecheck/should_compile/tc089.hs
@@ -1,6 +1,6 @@
 --!!! Stress test for type checker
 
-module Prims where
+module ShouldSucceed where
 
 import Prelude hiding (head)
 
diff --git a/ghc/tests/typecheck/should_compile/tc089.stderr b/ghc/tests/typecheck/should_compile/tc089.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..7e29d783cd63187e85a9dc3fd601f5df0f63126b
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc089.stderr
@@ -0,0 +1,464 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taBv, taBy, taBB]
+[]
+[([taBv, taBy, taBB], s_3_2{-r5Z,x-}, s_3_2_aBn)]
+    s_3_2_aBn (v0_r4o, v1_r4p, v2_r4q) = v2_r4q
+AbsBinds
+[taBO, taBR, taBU]
+[]
+[([taBO, taBR, taBU], s_3_1{-r60,x-}, s_3_1_aBG)]
+    s_3_1_aBG (v0_r4k, v1_r4l, v2_r4m) = v1_r4l
+AbsBinds
+[taC7, taCa, taCd]
+[]
+[([taC7, taCa, taCd], s_3_0{-r61,x-}, s_3_0_aBZ)]
+    s_3_0_aBZ (v0_r4g, v1_r4h, v2_r4i) = v0_r4g
+AbsBinds [taCr] [] [([taCr], s_1_0{-r62,x-}, s_1_0_aCi)]
+    s_1_0_aCi v0_r4e = v0_r4e
+AbsBinds
+[taCA, taCD]
+[]
+[([taCA, taCD], s_2_1{-r63,x-}, s_2_1_aCt)]
+    s_2_1_aCt (v0_r4b, v1_r4c) = v1_r4c
+AbsBinds
+[taCP, taCS]
+[]
+[([taCP, taCS], s_2_0{-r64,x-}, s_2_0_aCI)]
+    s_2_0_aCI (v0_r48, v1_r49) = v0_r48
+AbsBinds
+[taDh, taDf]
+[]
+[([taDh, taDf], f_rec{-r66,x-}, f_rec_aCX)]
+    f_rec_aCX f0_r3Y a_r3Z = f0_r3Y s_1_0{-r62,x-} taDf a_r3Z
+AbsBinds
+[taDC, taDE, taDG]
+[]
+[([taDC, taDE, taDG], absIf{-r69,x-}, absIf_aDj)]
+    absIf_aDj a_r3N b_r3O c_r3P = a_r3N
+AbsBinds [taDP] [] [([taDP], head{-r6b,x-}, head_aDI)]
+    head_aDI (x_r3K PrelBase.:{-55,w-}{i} xs_r3L) = x_r3K
+AbsBinds [taDZ] [] [([taDZ], bottom{-r6a,x-}, bottom_aDV)]
+    bottom_aDV = head{-r6b,x-} taDZ
+AbsBinds [taEf] [] [([taEf], fac_rec0{-r5T,x-}, fac_rec0_aE1)]
+    fac_rec0_aE1 n_r4H a_r4I
+		 = bottom{-r6a,x-} taEf [n_r4H, a_r4I] (taEf)
+AbsBinds [taEs] [] [([taEs], f_rec0{-r5P,x-}, f_rec0_aEj)]
+    f_rec0_aEj a_r4Q = bottom{-r6a,x-} taEs [a_r4Q] (taEs)
+AbsBinds [taEF] [] [([taEF], f_rec1{-r5Q,x-}, f_rec1_aEw)]
+    f_rec1_aEw a_r4O
+	       = f_rec{-r66,x-} [taEF, taEF] f_rec0{-r5P,x-} taEF a_r4O
+AbsBinds [taEU] [] [([taEU], f_rec2{-r5R,x-}, f_rec2_aEL)]
+    f_rec2_aEL a_r4M
+	       = f_rec{-r66,x-} [taEU, taEU] f_rec1{-r5Q,x-} taEU a_r4M
+AbsBinds [taF9] [] [([taF9], f{-r5S,x-}, f_aF0)]
+    f_aF0 a_r4K
+	  = f_rec{-r66,x-} [taF9, taF9] f_rec2{-r5R,x-} taF9 a_r4K
+AbsBinds [taFD] [] [([taFD], g_rec0{-r5F,x-}, g_rec0_aFf)]
+    g_rec0_aFf x_r5B y_r5C z_r5D p_r5E
+	       = bottom{-r6a,x-} taFD [x_r5B, y_r5C, z_r5D, p_r5E] (taFD)
+AbsBinds [taFV] [] [([taFV], absAnd{-r68,x-}, absAnd_aFH)]
+    absAnd_aFH a_r3R b_r3S = head{-r6b,x-} taFV [a_r3R, b_r3S] (taFV)
+AbsBinds [taG1] [] [([taG1], one{-r6c,x-}, one_aFZ)]
+    one_aFZ = one_aFZ
+AbsBinds
+[taGE, taH1, taH3, taH6, taH7]
+[]
+[([taGE, taH1, taH3, taH6, taH7], fac_rec{-r67,x-}, fac_rec_aG3)]
+    fac_rec_aG3 fac0_r3U n_r3V a_r3W
+		= absIf{-r69,x-} [taH7, taGE, taH1] absAnd{-r68,x-}
+							taH1 s_3_0{-r61,x-} [taH1, taH6, taH3] n_r3V
+							     one{-r6c,x-} taH1
+						    s_2_0{-r64,x-} [taH7, taH6] a_r3W
+						    fac0_r3U absAnd{-r68,x-} taH3 s_3_2{-r5Z,x-}
+										      [taH1, taH6, taH3] n_r3V
+										  one{-r6c,x-} taH3
+							     absAnd{-r68,x-} taH6 s_3_1{-r60,x-}
+										      [taH1, taH6, taH3] n_r3V
+										  s_2_1{-r63,x-}
+										      [taH7, taH6] a_r3W
+AbsBinds
+[taHo, taHw, taHx]
+[]
+[([taHo, taHw, taHx], fac_rec1{-r5U,x-}, fac_rec1_aH9)]
+    fac_rec1_aH9 n_r4E a_r4F
+		 = fac_rec{-r67,x-} [taHw, taHo, taHw, taHw, taHx] fac_rec0{-r5T,x-}
+								       taHw
+								   n_r4E
+								   a_r4F
+AbsBinds
+[taHO, taHW, taHZ, taI0, taI1]
+[]
+[([taHO, taHW, taHZ, taI0, taI1], fac_rec2{-r5V,x-}, fac_rec2_aHz)]
+    fac_rec2_aHz n_r4B a_r4C
+		 = fac_rec{-r67,x-}
+		       [taI0, taHO, (taI0, taHW, taHW), (taHZ, taHW), taI1] fac_rec1{-r5U,x-}
+										[taI0, taHW, taHZ]
+									    n_r4B
+									    a_r4C
+AbsBinds
+[taIi, taIr, taIs, taIu, taIx, taIy, taIz]
+[]
+[([taIi, taIr, taIs, taIu, taIx, taIy, taIz],
+  fac_rec3{-r5W,x-},
+  fac_rec3_aI3)]
+    fac_rec3_aI3 n_r4y a_r4z
+		 = fac_rec{-r67,x-}
+		       [taIy, taIi, (taIy, (taIr, taIs), (taIu, taIs, taIs)), (taIx, (taIr, taIs)), taIz] fac_rec2{-r5V,x-}
+													      [taIy, taIs, taIr, taIu, taIx]
+													  n_r4y
+													  a_r4z
+AbsBinds
+[taIQ, taJ1, taJ2, taJ3, taJ5, taJ6, taJ9, taJa, taJb]
+[]
+[([taIQ, taJ1, taJ2, taJ3, taJ5, taJ6, taJ9, taJa, taJb],
+  fac_rec4{-r5X,x-},
+  fac_rec4_aIB)]
+    fac_rec4_aIB n_r4v a_r4w
+		 = fac_rec{-r67,x-}
+		       [taJa, taIQ, (taJa, (taJ1, (taJ2, taJ3)), (taJ5, (taJ2, taJ3), (taJ6, taJ3, taJ3))), (taJ9, (taJ1, (taJ2, taJ3))), taJb] fac_rec3{-r5W,x-}
+																		    [taJa, taJ2, taJ3, taJ6, taJ1, taJ5, taJ9]
+																		n_r4v
+																		a_r4w
+AbsBinds
+[taJs, taJF, taJG, taJH, taJI, taJK, taJL, taJM, taJP, taJQ, taJR]
+[]
+[([taJs, taJF, taJG, taJH, taJI, taJK, taJL, taJM, taJP, taJQ,
+   taJR],
+  fac{-r5Y,x-},
+  fac_aJd)]
+    fac_aJd n_r4s a_r4t
+	    = fac_rec{-r67,x-}
+		  [taJQ, taJs, (taJQ, (taJF, (taJG, (taJH, taJI))), (taJK, (taJG, (taJH, taJI)), (taJL, (taJH, taJI), (taJM, taJI, taJI)))), (taJP, (taJF, (taJG, (taJH, taJI)))), taJR] fac_rec4{-r5X,x-}
+																							     [taJQ, taJG, taJH, taJI, taJL, taJM, taJF, taJK, taJP]
+																							 n_r4s
+																							 a_r4t
+AbsBinds
+[taKR, taL3, taL5, taL8, taLE, taLF, taLH, taLJ, taLR, taLS, taLT]
+[]
+[([taKR, taL3, taL5, taL8, taLE, taLF, taLH, taLJ, taLR, taLS,
+   taLT],
+  g_rec{-r65,x-},
+  g_rec_aJT)]
+    g_rec_aJT g0_r41 g1_r42 x_r43 y_r44 z_r45 p_r46
+	      = absIf{-r69,x-} [taLF, taKR, taLS] absAnd{-r68,x-}
+						      taLS s_3_0{-r61,x-} [taLS, taLT, taLR] p_r46
+							   one{-r6c,x-} taLS
+						  absAnd{-r68,x-} taLF s_1_0{-r62,x-} taLF x_r43
+								       s_3_0{-r61,x-}
+									   [taLF, taLE, taLH] z_r45
+						  absAnd{-r68,x-} taKR g0_r41 s_1_0{-r62,x-}
+										  taL3 y_r44
+									      one{-r6c,x-} taL5
+									      one{-r6c,x-} taL8
+									      absAnd{-r68,x-}
+										  taLT s_3_1{-r60,x-}
+											   [taLS, taLT, taLR] p_r46
+										       one{-r6c,x-}
+											   taLT
+								       g1_r42 s_3_2{-r5Z,x-}
+										  [taLF, taLE, taLH] z_r45
+									      s_3_1{-r60,x-}
+										  [taLF, taLE, taLH] z_r45
+									      one{-r6c,x-} taLJ
+									      absAnd{-r68,x-}
+										  taLR s_3_2{-r5Z,x-}
+											   [taLS, taLT, taLR] p_r46
+										       one{-r6c,x-}
+											   taLR
+AbsBinds
+[taMu, taMC, taMJ]
+[]
+[([taMu, taMC, taMJ], g_rec1{-r5G,x-}, g_rec1_aLX)]
+    g_rec1_aLX x_r5w y_r5x z_r5y p_r5z
+	       = g_rec{-r65,x-}
+		     [taMC, taMC, taMC, taMC, taMC, taMJ, taMC, taMC, taMC, taMu, taMC] g_rec0{-r5F,x-}
+											    taMC
+											g_rec0{-r5F,x-}
+											    taMC
+											x_r5w
+											y_r5x
+											z_r5y
+											p_r5z
+AbsBinds
+[taNi, taNo, taNq, taNu, taNz, taNB, taNF]
+[]
+[([taNi, taNo, taNq, taNu, taNz, taNB, taNF],
+  g_rec2{-r5H,x-},
+  g_rec2_aML)]
+    g_rec2_aML x_r5r y_r5s z_r5t p_r5u
+	       = g_rec{-r65,x-}
+		     [taNu, taNo, taNq, (taNo, taNq, taNq), taNB, taNF, taNz, (taNz, taNB, taNB), (taNu, taNB, taNB), taNi, (taNu, taNq, taNq)] g_rec1{-r5G,x-}
+																		    [taNu, taNq, taNo]
+																		g_rec1{-r5G,x-}
+																		    [taNu, taNB, taNz]
+																		x_r5r
+																		y_r5s
+																		z_r5t
+																		p_r5u
+AbsBinds
+[taOe, taOo, taOs, taOw, taOx, taOy, taOH, taOJ, taOL, taOP, taOQ, taOR]
+[]
+[([taOe, taOo, taOs, taOw, taOx, taOy, taOH, taOJ, taOL, taOP,
+   taOQ, taOR],
+  g_rec3{-r5I,x-},
+  g_rec3_aNH)]
+    g_rec3_aNH x_r5m y_r5n z_r5o p_r5p
+	       = g_rec{-r65,x-}
+		     [taOy, taOo, GHC.Void{-3T,W-}, (taOo, taOs, GHC.Void{-3T,W-}), taOJ, taOR, taOH, (taOH, taOL, GHC.Void{-3T,W-}), (taOy, (taOP, taOQ, taOQ), (taOP, taOL, taOL)), taOe, (taOy, (taOw, taOx, taOx), (taOw, taOs, taOs))] g_rec2{-r5H,x-}
+																														[taOy, GHC.Void{-3T,W-}, taOx, taOw, GHC.Void{-3T,W-}, taOs, taOo]
+																													    g_rec2{-r5H,x-}
+																														[taOy, taOJ, taOQ, taOP, GHC.Void{-3T,W-}, taOL, taOH]
+																													    x_r5m
+																													    y_r5n
+																													    z_r5o
+																													    p_r5p
+AbsBinds
+[taPq, taPF, taPN, taPO, taPP, taPQ, taPR, taPS, taPT, taPU, taQ8, taQa, taQg, taQh, taQi, taQj, taQk, taQl, taQm, taQn]
+[]
+[([taPq, taPF, taPN, taPO, taPP, taPQ, taPR, taPS, taPT, taPU,
+   taQ8, taQa, taQg, taQh, taQi, taQj, taQk, taQl, taQm, taQn],
+  g_rec4{-r5J,x-},
+  g_rec4_aOT)]
+    g_rec4_aOT x_r5h y_r5i z_r5j p_r5k
+	       = g_rec{-r65,x-}
+		     [taPU, taPF, GHC.Void{-3T,W-}, (taPF, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), taQa, taQn, taQ8, (taQ8, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), (taPU, (taQg, (taQh, taQi, taQi), (taQh, taQj, taQj)), (taQg, (taQk, taQl, taQl), (taQk, taQm, taQm))), taPq, (taPU, (taPN, (taPO, taPP, taPP), (taPO, taPQ, taPQ)), (taPN, (taPR, taPS, taPS), (taPR, taPT, taPT)))] g_rec3{-r5I,x-}
+																																															[taPU, GHC.Void{-3T,W-}, taPQ, taPO, taPP, taPN, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taPT, taPR, taPS, taPF]
+																																														    g_rec3{-r5I,x-}
+																																															[taPU, taQa, taQj, taQh, taQi, taQg, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taQm, taQk, taQl, taQ8]
+																																														    x_r5h
+																																														    y_r5i
+																																														    z_r5j
+																																														    p_r5k
+AbsBinds
+[taQW, taRj, taRr, taRs, taRt, taRu, taRv, taRw, taRx, taRy, taRz, taRA, taRB, taRC, taRD, taRE, taRF, taRG, taS2, taS4, taSa, taSb, taSc, taSd, taSe, taSf, taSg, taSh, taSi, taSj, taSk, taSl, taSm, taSn, taSo, taSp]
+[]
+[([taQW, taRj, taRr, taRs, taRt, taRu, taRv, taRw, taRx, taRy,
+   taRz, taRA, taRB, taRC, taRD, taRE, taRF, taRG, taS2, taS4, taSa,
+   taSb, taSc, taSd, taSe, taSf, taSg, taSh, taSi, taSj, taSk, taSl,
+   taSm, taSn, taSo, taSp],
+  g_rec5{-r5K,x-},
+  g_rec5_aQp)]
+    g_rec5_aQp x_r5c y_r5d z_r5e p_r5f
+	       = g_rec{-r65,x-}
+		     [taRG, taRj, GHC.Void{-3T,W-}, (taRj, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), taS4, taSp, taS2, (taS2, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), (taRG, (taSa, (taSb, (taSc, taSd, taSd), (taSc, taSe, taSe)), (taSb, (taSf, taSg, taSg), (taSf, taSh, taSh))), (taSa, (taSi, (taSj, taSk, taSk), (taSj, taSl, taSl)), (taSi, (taSm, taSn, taSn), (taSm, taSo, taSo)))), taQW, (taRG, (taRr, (taRs, (taRt, taRu, taRu), (taRt, taRv, taRv)), (taRs, (taRw, taRx, taRx), (taRw, taRy, taRy))), (taRr, (taRz, (taRA, taRB, taRB), (taRA, taRC, taRC)), (taRz, (taRD, taRE, taRE), (taRD, taRF, taRF))))] g_rec4{-r5J,x-}
+																																																																											[taRG, GHC.Void{-3T,W-}, taRs, taRt, taRu, taRv, taRw, taRx, taRy, taRr, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taRz, taRA, taRB, taRC, taRD, taRE, taRF, taRj]
+																																																																										    g_rec4{-r5J,x-}
+																																																																											[taRG, taS4, taSb, taSc, taSd, taSe, taSf, taSg, taSh, taSa, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taSi, taSj, taSk, taSl, taSm, taSn, taSo, taS2]
+																																																																										    x_r5c
+																																																																										    y_r5d
+																																																																										    z_r5e
+																																																																										    p_r5f
+AbsBinds
+[taSY, taTB, taTJ, taTK, taTL, taTM, taTN, taTO, taTP, taTQ, taTR, taTS, taTT, taTU, taTV, taTW, taTX, taTY, taTZ, taU0, taU1, taU2, taU3, taU4, taU5, taU6, taU7, taU8, taU9, taUa, taUb, taUc, taUd, taUe, taUQ, taUS, taUY, taUZ, taV0, taV1, taV2, taV3, taV4, taV5, taV6, taV7, taV8, taV9, taVa, taVb, taVc, taVd, taVe, taVf, taVg, taVh, taVi, taVj, taVk, taVl, taVm, taVn, taVo, taVp, taVq, taVr, taVs, taVt]
+[]
+[([taSY, taTB, taTJ, taTK, taTL, taTM, taTN, taTO, taTP, taTQ,
+   taTR, taTS, taTT, taTU, taTV, taTW, taTX, taTY, taTZ, taU0, taU1,
+   taU2, taU3, taU4, taU5, taU6, taU7, taU8, taU9, taUa, taUb, taUc,
+   taUd, taUe, taUQ, taUS, taUY, taUZ, taV0, taV1, taV2, taV3, taV4,
+   taV5, taV6, taV7, taV8, taV9, taVa, taVb, taVc, taVd, taVe, taVf,
+   taVg, taVh, taVi, taVj, taVk, taVl, taVm, taVn, taVo, taVp, taVq,
+   taVr, taVs, taVt],
+  g_rec6{-r5L,x-},
+  g_rec6_aSr)]
+    g_rec6_aSr x_r57 y_r58 z_r59 p_r5a
+	       = g_rec{-r65,x-}
+		     [taUe, taTB, GHC.Void{-3T,W-}, (taTB, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), taUS, taVt, taUQ, (taUQ, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), (taUe, (taUY, (taUZ, (taV0, (taV1, taV2, taV2), (taV1, taV3, taV3)), (taV0, (taV4, taV5, taV5), (taV4, taV6, taV6))), (taUZ, (taV7, (taV8, taV9, taV9), (taV8, taVa, taVa)), (taV7, (taVb, taVc, taVc), (taVb, taVd, taVd)))), (taUY, (taVe, (taVf, (taVg, taVh, taVh), (taVg, taVi, taVi)), (taVf, (taVj, taVk, taVk), (taVj, taVl, taVl))), (taVe, (taVm, (taVn, taVo, taVo), (taVn, taVp, taVp)), (taVm, (taVq, taVr, taVr), (taVq, taVs, taVs))))), taSY, (taUe, (taTJ, (taTK, (taTL, (taTM, taTN, taTN), (taTM, taTO, taTO)), (taTL, (taTP, taTQ, taTQ), (taTP, taTR, taTR))), (taTK, (taTS, (taTT, taTU, taTU), (taTT, taTV, taTV)), (taTS, (taTW, taTX, taTX), (taTW, taTY, taTY)))), (taTJ, (taTZ, (taU0, (taU1, taU2, taU2), (taU1, taU3, taU3)), (taU0, (taU4, taU5, taU5), (taU4, taU6, taU6))), (taTZ, (taU7, (taU8, taU9, taU9), (taU8, taUa, taUa)), (taU7, (taUb, taUc, taUc), (taUb, taUd, taUd)))))] g_rec5{-r5K,x-}
+																																																																																																																																			[taUe, GHC.Void{-3T,W-}, taTK, taTL, taTM, taTN, taTO, taTP, taTQ, taTR, taTS, taTT, taTU, taTV, taTW, taTX, taTY, taTJ, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taTZ, taU0, taU1, taU2, taU3, taU4, taU5, taU6, taU7, taU8, taU9, taUa, taUb, taUc, taUd, taTB]
+																																																																																																																																		    g_rec5{-r5K,x-}
+																																																																																																																																			[taUe, taUS, taUZ, taV0, taV1, taV2, taV3, taV4, taV5, taV6, taV7, taV8, taV9, taVa, taVb, taVc, taVd, taUY, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taVe, taVf, taVg, taVh, taVi, taVj, taVk, taVl, taVm, taVn, taVo, taVp, taVq, taVr, taVs, taUQ]
+																																																																																																																																		    x_r57
+																																																																																																																																		    y_r58
+																																																																																																																																		    z_r59
+																																																																																																																																		    p_r5a
+AbsBinds
+[taW2, taXb, taXj, taXk, taXl, taXm, taXn, taXo, taXp, taXq, taXr, taXs, taXt, taXu, taXv, taXw, taXx, taXy, taXz, taXA, taXB, taXC, taXD, taXE, taXF, taXG, taXH, taXI, taXJ, taXK, taXL, taXM, taXN, taXO, taXP, taXQ, taXR, taXS, taXT, taXU, taXV, taXW, taXX, taXY, taXZ, taY0, taY1, taY2, taY3, taY4, taY5, taY6, taY7, taY8, taY9, taYa, taYb, taYc, taYd, taYe, taYf, taYg, taYh, taYi, taYj, taYk, taZs, taZu, taZA, taZB, taZC, taZD, taZE, taZF, taZG, taZH, taZI, taZJ, taZK, taZL, taZM, taZN, taZO, taZP, taZQ, taZR, taZS, taZT, taZU, taZV, taZW, taZX, taZY, taZZ, ta100, ta101, ta102, ta103, ta104, ta105, ta106, ta107, ta108, ta109, ta10a, ta10b, ta10c, ta10d, ta10e, ta10f, ta10g, ta10h, ta10i, ta10j, ta10k, ta10l, ta10m, ta10n, ta10o, ta10p, ta10q, ta10r, ta10s, ta10t, ta10u, ta10v, ta10w, ta10x, ta10y, ta10z, ta10A, ta10B]
+[]
+[([taW2, taXb, taXj, taXk, taXl, taXm, taXn, taXo, taXp, taXq,
+   taXr, taXs, taXt, taXu, taXv, taXw, taXx, taXy, taXz, taXA, taXB,
+   taXC, taXD, taXE, taXF, taXG, taXH, taXI, taXJ, taXK, taXL, taXM,
+   taXN, taXO, taXP, taXQ, taXR, taXS, taXT, taXU, taXV, taXW, taXX,
+   taXY, taXZ, taY0, taY1, taY2, taY3, taY4, taY5, taY6, taY7, taY8,
+   taY9, taYa, taYb, taYc, taYd, taYe, taYf, taYg, taYh, taYi, taYj,
+   taYk, taZs, taZu, taZA, taZB, taZC, taZD, taZE, taZF, taZG, taZH,
+   taZI, taZJ, taZK, taZL, taZM, taZN, taZO, taZP, taZQ, taZR, taZS,
+   taZT, taZU, taZV, taZW, taZX, taZY, taZZ, ta100, ta101, ta102,
+   ta103, ta104, ta105, ta106, ta107, ta108, ta109, ta10a, ta10b,
+   ta10c, ta10d, ta10e, ta10f, ta10g, ta10h, ta10i, ta10j, ta10k,
+   ta10l, ta10m, ta10n, ta10o, ta10p, ta10q, ta10r, ta10s, ta10t,
+   ta10u, ta10v, ta10w, ta10x, ta10y, ta10z, ta10A, ta10B],
+  g_rec7{-r5M,x-},
+  g_rec7_aVv)]
+    g_rec7_aVv x_r52 y_r53 z_r54 p_r55
+	       = g_rec{-r65,x-}
+		     [taYk, taXb, GHC.Void{-3T,W-}, (taXb, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), taZu, ta10B, taZs, (taZs, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), (taYk, (taZA, (taZB, (taZC, (taZD, (taZE, taZF, taZF), (taZE, taZG, taZG)), (taZD, (taZH, taZI, taZI), (taZH, taZJ, taZJ))), (taZC, (taZK, (taZL, taZM, taZM), (taZL, taZN, taZN)), (taZK, (taZO, taZP, taZP), (taZO, taZQ, taZQ)))), (taZB, (taZR, (taZS, (taZT, taZU, taZU), (taZT, taZV, taZV)), (taZS, (taZW, taZX, taZX), (taZW, taZY, taZY))), (taZR, (taZZ, (ta100, ta101, ta101), (ta100, ta102, ta102)), (taZZ, (ta103, ta104, ta104), (ta103, ta105, ta105))))), (taZA, (ta106, (ta107, (ta108, (ta109, ta10a, ta10a), (ta109, ta10b, ta10b)), (ta108, (ta10c, ta10d, ta10d), (ta10c, ta10e, ta10e))), (ta107, (ta10f, (ta10g, ta10h, ta10h), (ta10g, ta10i, ta10i)), (ta10f, (ta10j, ta10k, ta10k), (ta10j, ta10l, ta10l)))), (ta106, (ta10m, (ta10n, (ta10o, ta10p, ta10p), (ta10o, ta10q, ta10q)), (ta10n, (ta10r, ta10s, ta10s), (ta10r, ta10t, ta10t))), (ta10m, (ta10u, (ta10v, ta10w, ta10w), (ta10v, ta10x, ta10x)), (ta10u, (ta10y, ta10z, ta10z), (ta10y, ta10A, ta10A)))))), taW2, (taYk, (taXj, (taXk, (taXl, (taXm, (taXn, taXo, taXo), (taXn, taXp, taXp)), (taXm, (taXq, taXr, taXr), (taXq, taXs, taXs))), (taXl, (taXt, (taXu, taXv, taXv), (taXu, taXw, taXw)), (taXt, (taXx, taXy, taXy), (taXx, taXz, taXz)))), (taXk, (taXA, (taXB, (taXC, taXD, taXD), (taXC, taXE, taXE)), (taXB, (taXF, taXG, taXG), (taXF, taXH, taXH))), (taXA, (taXI, (taXJ, taXK, taXK), (taXJ, taXL, taXL)), (taXI, (taXM, taXN, taXN), (taXM, taXO, taXO))))), (taXj, (taXP, (taXQ, (taXR, (taXS, taXT, taXT), (taXS, taXU, taXU)), (taXR, (taXV, taXW, taXW), (taXV, taXX, taXX))), (taXQ, (taXY, (taXZ, taY0, taY0), (taXZ, taY1, taY1)), (taXY, (taY2, taY3, taY3), (taY2, taY4, taY4)))), (taXP, (taY5, (taY6, (taY7, taY8, taY8), (taY7, taY9, taY9)), (taY6, (taYa, taYb, taYb), (taYa, taYc, taYc))), (taY5, (taYd, (taYe, taYf, taYf), (taYe, taYg, taYg)), (taYd, (taYh, taYi, taYi), (taYh, taYj, taYj))))))] g_rec6{-r5L,x-}
+																																																																																																																																																																																																																																																												   [taYk, GHC.Void{-3T,W-}, taXk, taXl, taXm, taXn, taXo, taXp, taXq, taXr, taXs, taXt, taXu, taXv, taXw, taXx, taXy, taXz, taXA, taXB, taXC, taXD, taXE, taXF, taXG, taXH, taXI, taXJ, taXK, taXL, taXM, taXN, taXO, taXj, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, taXP, taXQ, taXR, taXS, taXT, taXU, taXV, taXW, taXX, taXY, taXZ, taY0, taY1, taY2, taY3, taY4, taY5, taY6, taY7, taY8, taY9, taYa, taYb, taYc, taYd, taYe, taYf, taYg, taYh, taYi, taYj, taXb]
+																																																																																																																																																																																																																																																											       g_rec6{-r5L,x-}
+																																																																																																																																																																																																																																																												   [taYk, taZu, taZB, taZC, taZD, taZE, taZF, taZG, taZH, taZI, taZJ, taZK, taZL, taZM, taZN, taZO, taZP, taZQ, taZR, taZS, taZT, taZU, taZV, taZW, taZX, taZY, taZZ, ta100, ta101, ta102, ta103, ta104, ta105, taZA, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, ta106, ta107, ta108, ta109, ta10a, ta10b, ta10c, ta10d, ta10e, ta10f, ta10g, ta10h, ta10i, ta10j, ta10k, ta10l, ta10m, ta10n, ta10o, ta10p, ta10q, ta10r, ta10s, ta10t, ta10u, ta10v, ta10w, ta10x, ta10y, ta10z, ta10A, taZs]
+																																																																																																																																																																																																																																																											       x_r52
+																																																																																																																																																																																																																																																											       y_r53
+																																																																																																																																																																																																																																																											       z_r54
+																																																																																																																																																																																																																																																											       p_r55
+AbsBinds
+[ta11a, ta13l, ta13t, ta13u, ta13v, ta13w, ta13x, ta13y, ta13z, ta13A, ta13B, ta13C, ta13D, ta13E, ta13F, ta13G, ta13H, ta13I, ta13J, ta13K, ta13L, ta13M, ta13N, ta13O, ta13P, ta13Q, ta13R, ta13S, ta13T, ta13U, ta13V, ta13W, ta13X, ta13Y, ta13Z, ta140, ta141, ta142, ta143, ta144, ta145, ta146, ta147, ta148, ta149, ta14a, ta14b, ta14c, ta14d, ta14e, ta14f, ta14g, ta14h, ta14i, ta14j, ta14k, ta14l, ta14m, ta14n, ta14o, ta14p, ta14q, ta14r, ta14s, ta14t, ta14u, ta14v, ta14w, ta14x, ta14y, ta14z, ta14A, ta14B, ta14C, ta14D, ta14E, ta14F, ta14G, ta14H, ta14I, ta14J, ta14K, ta14L, ta14M, ta14N, ta14O, ta14P, ta14Q, ta14R, ta14S, ta14T, ta14U, ta14V, ta14W, ta14X, ta14Y, ta14Z, ta150, ta151, ta152, ta153, ta154, ta155, ta156, ta157, ta158, ta159, ta15a, ta15b, ta15c, ta15d, ta15e, ta15f, ta15g, ta15h, ta15i, ta15j, ta15k, ta15l, ta15m, ta15n, ta15o, ta15p, ta15q, ta15r, ta15s, ta15t, ta15u, ta15v, ta15w, ta17G, ta17I, ta17O, ta17P, ta17Q, ta17R, ta17S, ta17T, ta17U, ta17V, ta17W, ta17X, ta17Y, ta17Z, ta180, ta181, ta182, ta183, ta184, ta185, ta186, ta187, ta188, ta189, ta18a, ta18b, ta18c, ta18d, ta18e, ta18f, ta18g, ta18h, ta18i, ta18j, ta18k, ta18l, ta18m, ta18n, ta18o, ta18p, ta18q, ta18r, ta18s, ta18t, ta18u, ta18v, ta18w, ta18x, ta18y, ta18z, ta18A, ta18B, ta18C, ta18D, ta18E, ta18F, ta18G, ta18H, ta18I, ta18J, ta18K, ta18L, ta18M, ta18N, ta18O, ta18P, ta18Q, ta18R, ta18S, ta18T, ta18U, ta18V, ta18W, ta18X, ta18Y, ta18Z, ta190, ta191, ta192, ta193, ta194, ta195, ta196, ta197, ta198, ta199, ta19a, ta19b, ta19c, ta19d, ta19e, ta19f, ta19g, ta19h, ta19i, ta19j, ta19k, ta19l, ta19m, ta19n, ta19o, ta19p, ta19q, ta19r, ta19s, ta19t, ta19u, ta19v, ta19w, ta19x, ta19y, ta19z, ta19A, ta19B, ta19C, ta19D, ta19E, ta19F, ta19G, ta19H, ta19I, ta19J, ta19K, ta19L, ta19M, ta19N, ta19O, ta19P, ta19Q, ta19R]
+[]
+[([ta11a, ta13l, ta13t, ta13u, ta13v, ta13w, ta13x, ta13y, ta13z,
+   ta13A, ta13B, ta13C, ta13D, ta13E, ta13F, ta13G, ta13H, ta13I,
+   ta13J, ta13K, ta13L, ta13M, ta13N, ta13O, ta13P, ta13Q, ta13R,
+   ta13S, ta13T, ta13U, ta13V, ta13W, ta13X, ta13Y, ta13Z, ta140,
+   ta141, ta142, ta143, ta144, ta145, ta146, ta147, ta148, ta149,
+   ta14a, ta14b, ta14c, ta14d, ta14e, ta14f, ta14g, ta14h, ta14i,
+   ta14j, ta14k, ta14l, ta14m, ta14n, ta14o, ta14p, ta14q, ta14r,
+   ta14s, ta14t, ta14u, ta14v, ta14w, ta14x, ta14y, ta14z, ta14A,
+   ta14B, ta14C, ta14D, ta14E, ta14F, ta14G, ta14H, ta14I, ta14J,
+   ta14K, ta14L, ta14M, ta14N, ta14O, ta14P, ta14Q, ta14R, ta14S,
+   ta14T, ta14U, ta14V, ta14W, ta14X, ta14Y, ta14Z, ta150, ta151,
+   ta152, ta153, ta154, ta155, ta156, ta157, ta158, ta159, ta15a,
+   ta15b, ta15c, ta15d, ta15e, ta15f, ta15g, ta15h, ta15i, ta15j,
+   ta15k, ta15l, ta15m, ta15n, ta15o, ta15p, ta15q, ta15r, ta15s,
+   ta15t, ta15u, ta15v, ta15w, ta17G, ta17I, ta17O, ta17P, ta17Q,
+   ta17R, ta17S, ta17T, ta17U, ta17V, ta17W, ta17X, ta17Y, ta17Z,
+   ta180, ta181, ta182, ta183, ta184, ta185, ta186, ta187, ta188,
+   ta189, ta18a, ta18b, ta18c, ta18d, ta18e, ta18f, ta18g, ta18h,
+   ta18i, ta18j, ta18k, ta18l, ta18m, ta18n, ta18o, ta18p, ta18q,
+   ta18r, ta18s, ta18t, ta18u, ta18v, ta18w, ta18x, ta18y, ta18z,
+   ta18A, ta18B, ta18C, ta18D, ta18E, ta18F, ta18G, ta18H, ta18I,
+   ta18J, ta18K, ta18L, ta18M, ta18N, ta18O, ta18P, ta18Q, ta18R,
+   ta18S, ta18T, ta18U, ta18V, ta18W, ta18X, ta18Y, ta18Z, ta190,
+   ta191, ta192, ta193, ta194, ta195, ta196, ta197, ta198, ta199,
+   ta19a, ta19b, ta19c, ta19d, ta19e, ta19f, ta19g, ta19h, ta19i,
+   ta19j, ta19k, ta19l, ta19m, ta19n, ta19o, ta19p, ta19q, ta19r,
+   ta19s, ta19t, ta19u, ta19v, ta19w, ta19x, ta19y, ta19z, ta19A,
+   ta19B, ta19C, ta19D, ta19E, ta19F, ta19G, ta19H, ta19I, ta19J,
+   ta19K, ta19L, ta19M, ta19N, ta19O, ta19P, ta19Q, ta19R],
+  g_rec8{-r5N,x-},
+  g_rec8_a10D)]
+    g_rec8_a10D x_r4X y_r4Y z_r4Z p_r50
+		= g_rec{-r65,x-}
+		      [ta15w, ta13l, GHC.Void{-3T,W-}, (ta13l, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), ta17I, ta19R, ta17G, (ta17G, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), (ta15w, (ta17O, (ta17P, (ta17Q, (ta17R, (ta17S, (ta17T, ta17U, ta17U), (ta17T, ta17V, ta17V)), (ta17S, (ta17W, ta17X, ta17X), (ta17W, ta17Y, ta17Y))), (ta17R, (ta17Z, (ta180, ta181, ta181), (ta180, ta182, ta182)), (ta17Z, (ta183, ta184, ta184), (ta183, ta185, ta185)))), (ta17Q, (ta186, (ta187, (ta188, ta189, ta189), (ta188, ta18a, ta18a)), (ta187, (ta18b, ta18c, ta18c), (ta18b, ta18d, ta18d))), (ta186, (ta18e, (ta18f, ta18g, ta18g), (ta18f, ta18h, ta18h)), (ta18e, (ta18i, ta18j, ta18j), (ta18i, ta18k, ta18k))))), (ta17P, (ta18l, (ta18m, (ta18n, (ta18o, ta18p, ta18p), (ta18o, ta18q, ta18q)), (ta18n, (ta18r, ta18s, ta18s), (ta18r, ta18t, ta18t))), (ta18m, (ta18u, (ta18v, ta18w, ta18w), (ta18v, ta18x, ta18x)), (ta18u, (ta18y, ta18z, ta18z), (ta18y, ta18A, ta18A)))), (ta18l, (ta18B, (ta18C, (ta18D, ta18E, ta18E), (ta18D, ta18F, ta18F)), (ta18C, (ta18G, ta18H, ta18H), (ta18G, ta18I, ta18I))), (ta18B, (ta18J, (ta18K, ta18L, ta18L), (ta18K, ta18M, ta18M)), (ta18J, (ta18N, ta18O, ta18O), (ta18N, ta18P, ta18P)))))), (ta17O, (ta18Q, (ta18R, (ta18S, (ta18T, (ta18U, ta18V, ta18V), (ta18U, ta18W, ta18W)), (ta18T, (ta18X, ta18Y, ta18Y), (ta18X, ta18Z, ta18Z))), (ta18S, (ta190, (ta191, ta192, ta192), (ta191, ta193, ta193)), (ta190, (ta194, ta195, ta195), (ta194, ta196, ta196)))), (ta18R, (ta197, (ta198, (ta199, ta19a, ta19a), (ta199, ta19b, ta19b)), (ta198, (ta19c, ta19d, ta19d), (ta19c, ta19e, ta19e))), (ta197, (ta19f, (ta19g, ta19h, ta19h), (ta19g, ta19i, ta19i)), (ta19f, (ta19j, ta19k, ta19k), (ta19j, ta19l, ta19l))))), (ta18Q, (ta19m, (ta19n, (ta19o, (ta19p, ta19q, ta19q), (ta19p, ta19r, ta19r)), (ta19o, (ta19s, ta19t, ta19t), (ta19s, ta19u, ta19u))), (ta19n, (ta19v, (ta19w, ta19x, ta19x), (ta19w, ta19y, ta19y)), (ta19v, (ta19z, ta19A, ta19A), (ta19z, ta19B, ta19B)))), (ta19m, (ta19C, (ta19D, (ta19E, ta19F, ta19F), (ta19E, ta19G, ta19G)), (ta19D, (ta19H, ta19I, ta19I), (ta19H, ta19J, ta19J))), (ta19C, (ta19K, (ta19L, ta19M, ta19M), (ta19L, ta19N, ta19N)), (ta19K, (ta19O, ta19P, ta19P), (ta19O, ta19Q, ta19Q))))))), ta11a, (ta15w, (ta13t, (ta13u, (ta13v, (ta13w, (ta13x, (ta13y, ta13z, ta13z), (ta13y, ta13A, ta13A)), (ta13x, (ta13B, ta13C, ta13C), (ta13B, ta13D, ta13D))), (ta13w, (ta13E, (ta13F, ta13G, ta13G), (ta13F, ta13H, ta13H)), (ta13E, (ta13I, ta13J, ta13J), (ta13I, ta13K, ta13K)))), (ta13v, (ta13L, (ta13M, (ta13N, ta13O, ta13O), (ta13N, ta13P, ta13P)), (ta13M, (ta13Q, ta13R, ta13R), (ta13Q, ta13S, ta13S))), (ta13L, (ta13T, (ta13U, ta13V, ta13V), (ta13U, ta13W, ta13W)), (ta13T, (ta13X, ta13Y, ta13Y), (ta13X, ta13Z, ta13Z))))), (ta13u, (ta140, (ta141, (ta142, (ta143, ta144, ta144), (ta143, ta145, ta145)), (ta142, (ta146, ta147, ta147), (ta146, ta148, ta148))), (ta141, (ta149, (ta14a, ta14b, ta14b), (ta14a, ta14c, ta14c)), (ta149, (ta14d, ta14e, ta14e), (ta14d, ta14f, ta14f)))), (ta140, (ta14g, (ta14h, (ta14i, ta14j, ta14j), (ta14i, ta14k, ta14k)), (ta14h, (ta14l, ta14m, ta14m), (ta14l, ta14n, ta14n))), (ta14g, (ta14o, (ta14p, ta14q, ta14q), (ta14p, ta14r, ta14r)), (ta14o, (ta14s, ta14t, ta14t), (ta14s, ta14u, ta14u)))))), (ta13t, (ta14v, (ta14w, (ta14x, (ta14y, (ta14z, ta14A, ta14A), (ta14z, ta14B, ta14B)), (ta14y, (ta14C, ta14D, ta14D), (ta14C, ta14E, ta14E))), (ta14x, (ta14F, (ta14G, ta14H, ta14H), (ta14G, ta14I, ta14I)), (ta14F, (ta14J, ta14K, ta14K), (ta14J, ta14L, ta14L)))), (ta14w, (ta14M, (ta14N, (ta14O, ta14P, ta14P), (ta14O, ta14Q, ta14Q)), (ta14N, (ta14R, ta14S, ta14S), (ta14R, ta14T, ta14T))), (ta14M, (ta14U, (ta14V, ta14W, ta14W), (ta14V, ta14X, ta14X)), (ta14U, (ta14Y, ta14Z, ta14Z), (ta14Y, ta150, ta150))))), (ta14v, (ta151, (ta152, (ta153, (ta154, ta155, ta155), (ta154, ta156, ta156)), (ta153, (ta157, ta158, ta158), (ta157, ta159, ta159))), (ta152, (ta15a, (ta15b, ta15c, ta15c), (ta15b, ta15d, ta15d)), (ta15a, (ta15e, ta15f, ta15f), (ta15e, ta15g, ta15g)))), (ta151, (ta15h, (ta15i, (ta15j, ta15k, ta15k), (ta15j, ta15l, ta15l)), (ta15i, (ta15m, ta15n, ta15n), (ta15m, ta15o, ta15o))), (ta15h, (ta15p, (ta15q, ta15r, ta15r), (ta15q, ta15s, ta15s)), (ta15p, (ta15t, ta15u, ta15u), (ta15t, ta15v, ta15v)))))))] g_rec7{-r5M,x-}
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			       [ta15w, GHC.Void{-3T,W-}, ta13u, ta13v, ta13w, ta13x, ta13y, ta13z, ta13A, ta13B, ta13C, ta13D, ta13E, ta13F, ta13G, ta13H, ta13I, ta13J, ta13K, ta13L, ta13M, ta13N, ta13O, ta13P, ta13Q, ta13R, ta13S, ta13T, ta13U, ta13V, ta13W, ta13X, ta13Y, ta13Z, ta140, ta141, ta142, ta143, ta144, ta145, ta146, ta147, ta148, ta149, ta14a, ta14b, ta14c, ta14d, ta14e, ta14f, ta14g, ta14h, ta14i, ta14j, ta14k, ta14l, ta14m, ta14n, ta14o, ta14p, ta14q, ta14r, ta14s, ta14t, ta14u, ta13t, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, ta14v, ta14w, ta14x, ta14y, ta14z, ta14A, ta14B, ta14C, ta14D, ta14E, ta14F, ta14G, ta14H, ta14I, ta14J, ta14K, ta14L, ta14M, ta14N, ta14O, ta14P, ta14Q, ta14R, ta14S, ta14T, ta14U, ta14V, ta14W, ta14X, ta14Y, ta14Z, ta150, ta151, ta152, ta153, ta154, ta155, ta156, ta157, ta158, ta159, ta15a, ta15b, ta15c, ta15d, ta15e, ta15f, ta15g, ta15h, ta15i, ta15j, ta15k, ta15l, ta15m, ta15n, ta15o, ta15p, ta15q, ta15r, ta15s, ta15t, ta15u, ta15v, ta13l]
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			   g_rec7{-r5M,x-}
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			       [ta15w, ta17I, ta17P, ta17Q, ta17R, ta17S, ta17T, ta17U, ta17V, ta17W, ta17X, ta17Y, ta17Z, ta180, ta181, ta182, ta183, ta184, ta185, ta186, ta187, ta188, ta189, ta18a, ta18b, ta18c, ta18d, ta18e, ta18f, ta18g, ta18h, ta18i, ta18j, ta18k, ta18l, ta18m, ta18n, ta18o, ta18p, ta18q, ta18r, ta18s, ta18t, ta18u, ta18v, ta18w, ta18x, ta18y, ta18z, ta18A, ta18B, ta18C, ta18D, ta18E, ta18F, ta18G, ta18H, ta18I, ta18J, ta18K, ta18L, ta18M, ta18N, ta18O, ta18P, ta17O, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, ta18Q, ta18R, ta18S, ta18T, ta18U, ta18V, ta18W, ta18X, ta18Y, ta18Z, ta190, ta191, ta192, ta193, ta194, ta195, ta196, ta197, ta198, ta199, ta19a, ta19b, ta19c, ta19d, ta19e, ta19f, ta19g, ta19h, ta19i, ta19j, ta19k, ta19l, ta19m, ta19n, ta19o, ta19p, ta19q, ta19r, ta19s, ta19t, ta19u, ta19v, ta19w, ta19x, ta19y, ta19z, ta19A, ta19B, ta19C, ta19D, ta19E, ta19F, ta19G, ta19H, ta19I, ta19J, ta19K, ta19L, ta19M, ta19N, ta19O, ta19P, ta19Q, ta17G]
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			   x_r4X
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			   y_r4Y
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			   z_r4Z
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			   p_r50
+AbsBinds
+[ta1aq, ta1eF, ta1eN, ta1eO, ta1eP, ta1eQ, ta1eR, ta1eS, ta1eT, ta1eU, ta1eV, ta1eW, ta1eX, ta1eY, ta1eZ, ta1f0, ta1f1, ta1f2, ta1f3, ta1f4, ta1f5, ta1f6, ta1f7, ta1f8, ta1f9, ta1fa, ta1fb, ta1fc, ta1fd, ta1fe, ta1ff, ta1fg, ta1fh, ta1fi, ta1fj, ta1fk, ta1fl, ta1fm, ta1fn, ta1fo, ta1fp, ta1fq, ta1fr, ta1fs, ta1ft, ta1fu, ta1fv, ta1fw, ta1fx, ta1fy, ta1fz, ta1fA, ta1fB, ta1fC, ta1fD, ta1fE, ta1fF, ta1fG, ta1fH, ta1fI, ta1fJ, ta1fK, ta1fL, ta1fM, ta1fN, ta1fO, ta1fP, ta1fQ, ta1fR, ta1fS, ta1fT, ta1fU, ta1fV, ta1fW, ta1fX, ta1fY, ta1fZ, ta1g0, ta1g1, ta1g2, ta1g3, ta1g4, ta1g5, ta1g6, ta1g7, ta1g8, ta1g9, ta1ga, ta1gb, ta1gc, ta1gd, ta1ge, ta1gf, ta1gg, ta1gh, ta1gi, ta1gj, ta1gk, ta1gl, ta1gm, ta1gn, ta1go, ta1gp, ta1gq, ta1gr, ta1gs, ta1gt, ta1gu, ta1gv, ta1gw, ta1gx, ta1gy, ta1gz, ta1gA, ta1gB, ta1gC, ta1gD, ta1gE, ta1gF, ta1gG, ta1gH, ta1gI, ta1gJ, ta1gK, ta1gL, ta1gM, ta1gN, ta1gO, ta1gP, ta1gQ, ta1gR, ta1gS, ta1gT, ta1gU, ta1gV, ta1gW, ta1gX, ta1gY, ta1gZ, ta1h0, ta1h1, ta1h2, ta1h3, ta1h4, ta1h5, ta1h6, ta1h7, ta1h8, ta1h9, ta1ha, ta1hb, ta1hc, ta1hd, ta1he, ta1hf, ta1hg, ta1hh, ta1hi, ta1hj, ta1hk, ta1hl, ta1hm, ta1hn, ta1ho, ta1hp, ta1hq, ta1hr, ta1hs, ta1ht, ta1hu, ta1hv, ta1hw, ta1hx, ta1hy, ta1hz, ta1hA, ta1hB, ta1hC, ta1hD, ta1hE, ta1hF, ta1hG, ta1hH, ta1hI, ta1hJ, ta1hK, ta1hL, ta1hM, ta1hN, ta1hO, ta1hP, ta1hQ, ta1hR, ta1hS, ta1hT, ta1hU, ta1hV, ta1hW, ta1hX, ta1hY, ta1hZ, ta1i0, ta1i1, ta1i2, ta1i3, ta1i4, ta1i5, ta1i6, ta1i7, ta1i8, ta1i9, ta1ia, ta1ib, ta1ic, ta1id, ta1ie, ta1if, ta1ig, ta1ih, ta1ii, ta1ij, ta1ik, ta1il, ta1im, ta1in, ta1io, ta1ip, ta1iq, ta1ir, ta1is, ta1it, ta1iu, ta1iv, ta1iw, ta1ix, ta1iy, ta1iz, ta1iA, ta1iB, ta1iC, ta1iD, ta1iE, ta1iF, ta1iG, ta1iH, ta1iI, ta1iJ, ta1iK, ta1iL, ta1iM, ta1iN, ta1iO, ta1iP, ta1iQ, ta1iR, ta1iS, ta1iT, ta1iU, ta1n8, ta1na, ta1ng, ta1nh, ta1ni, ta1nj, ta1nk, ta1nl, ta1nm, ta1nn, ta1no, ta1np, ta1nq, ta1nr, ta1ns, ta1nt, ta1nu, ta1nv, ta1nw, ta1nx, ta1ny, ta1nz, ta1nA, ta1nB, ta1nC, ta1nD, ta1nE, ta1nF, ta1nG, ta1nH, ta1nI, ta1nJ, ta1nK, ta1nL, ta1nM, ta1nN, ta1nO, ta1nP, ta1nQ, ta1nR, ta1nS, ta1nT, ta1nU, ta1nV, ta1nW, ta1nX, ta1nY, ta1nZ, ta1o0, ta1o1, ta1o2, ta1o3, ta1o4, ta1o5, ta1o6, ta1o7, ta1o8, ta1o9, ta1oa, ta1ob, ta1oc, ta1od, ta1oe, ta1of, ta1og, ta1oh, ta1oi, ta1oj, ta1ok, ta1ol, ta1om, ta1on, ta1oo, ta1op, ta1oq, ta1or, ta1os, ta1ot, ta1ou, ta1ov, ta1ow, ta1ox, ta1oy, ta1oz, ta1oA, ta1oB, ta1oC, ta1oD, ta1oE, ta1oF, ta1oG, ta1oH, ta1oI, ta1oJ, ta1oK, ta1oL, ta1oM, ta1oN, ta1oO, ta1oP, ta1oQ, ta1oR, ta1oS, ta1oT, ta1oU, ta1oV, ta1oW, ta1oX, ta1oY, ta1oZ, ta1p0, ta1p1, ta1p2, ta1p3, ta1p4, ta1p5, ta1p6, ta1p7, ta1p8, ta1p9, ta1pa, ta1pb, ta1pc, ta1pd, ta1pe, ta1pf, ta1pg, ta1ph, ta1pi, ta1pj, ta1pk, ta1pl, ta1pm, ta1pn, ta1po, ta1pp, ta1pq, ta1pr, ta1ps, ta1pt, ta1pu, ta1pv, ta1pw, ta1px, ta1py, ta1pz, ta1pA, ta1pB, ta1pC, ta1pD, ta1pE, ta1pF, ta1pG, ta1pH, ta1pI, ta1pJ, ta1pK, ta1pL, ta1pM, ta1pN, ta1pO, ta1pP, ta1pQ, ta1pR, ta1pS, ta1pT, ta1pU, ta1pV, ta1pW, ta1pX, ta1pY, ta1pZ, ta1q0, ta1q1, ta1q2, ta1q3, ta1q4, ta1q5, ta1q6, ta1q7, ta1q8, ta1q9, ta1qa, ta1qb, ta1qc, ta1qd, ta1qe, ta1qf, ta1qg, ta1qh, ta1qi, ta1qj, ta1qk, ta1ql, ta1qm, ta1qn, ta1qo, ta1qp, ta1qq, ta1qr, ta1qs, ta1qt, ta1qu, ta1qv, ta1qw, ta1qx, ta1qy, ta1qz, ta1qA, ta1qB, ta1qC, ta1qD, ta1qE, ta1qF, ta1qG, ta1qH, ta1qI, ta1qJ, ta1qK, ta1qL, ta1qM, ta1qN, ta1qO, ta1qP, ta1qQ, ta1qR, ta1qS, ta1qT, ta1qU, ta1qV, ta1qW, ta1qX, ta1qY, ta1qZ, ta1r0, ta1r1, ta1r2, ta1r3, ta1r4, ta1r5, ta1r6, ta1r7, ta1r8, ta1r9, ta1ra, ta1rb, ta1rc, ta1rd, ta1re, ta1rf, ta1rg, ta1rh, ta1ri, ta1rj, ta1rk, ta1rl, ta1rm, ta1rn]
+[]
+[([ta1aq, ta1eF, ta1eN, ta1eO, ta1eP, ta1eQ, ta1eR, ta1eS, ta1eT,
+   ta1eU, ta1eV, ta1eW, ta1eX, ta1eY, ta1eZ, ta1f0, ta1f1, ta1f2,
+   ta1f3, ta1f4, ta1f5, ta1f6, ta1f7, ta1f8, ta1f9, ta1fa, ta1fb,
+   ta1fc, ta1fd, ta1fe, ta1ff, ta1fg, ta1fh, ta1fi, ta1fj, ta1fk,
+   ta1fl, ta1fm, ta1fn, ta1fo, ta1fp, ta1fq, ta1fr, ta1fs, ta1ft,
+   ta1fu, ta1fv, ta1fw, ta1fx, ta1fy, ta1fz, ta1fA, ta1fB, ta1fC,
+   ta1fD, ta1fE, ta1fF, ta1fG, ta1fH, ta1fI, ta1fJ, ta1fK, ta1fL,
+   ta1fM, ta1fN, ta1fO, ta1fP, ta1fQ, ta1fR, ta1fS, ta1fT, ta1fU,
+   ta1fV, ta1fW, ta1fX, ta1fY, ta1fZ, ta1g0, ta1g1, ta1g2, ta1g3,
+   ta1g4, ta1g5, ta1g6, ta1g7, ta1g8, ta1g9, ta1ga, ta1gb, ta1gc,
+   ta1gd, ta1ge, ta1gf, ta1gg, ta1gh, ta1gi, ta1gj, ta1gk, ta1gl,
+   ta1gm, ta1gn, ta1go, ta1gp, ta1gq, ta1gr, ta1gs, ta1gt, ta1gu,
+   ta1gv, ta1gw, ta1gx, ta1gy, ta1gz, ta1gA, ta1gB, ta1gC, ta1gD,
+   ta1gE, ta1gF, ta1gG, ta1gH, ta1gI, ta1gJ, ta1gK, ta1gL, ta1gM,
+   ta1gN, ta1gO, ta1gP, ta1gQ, ta1gR, ta1gS, ta1gT, ta1gU, ta1gV,
+   ta1gW, ta1gX, ta1gY, ta1gZ, ta1h0, ta1h1, ta1h2, ta1h3, ta1h4,
+   ta1h5, ta1h6, ta1h7, ta1h8, ta1h9, ta1ha, ta1hb, ta1hc, ta1hd,
+   ta1he, ta1hf, ta1hg, ta1hh, ta1hi, ta1hj, ta1hk, ta1hl, ta1hm,
+   ta1hn, ta1ho, ta1hp, ta1hq, ta1hr, ta1hs, ta1ht, ta1hu, ta1hv,
+   ta1hw, ta1hx, ta1hy, ta1hz, ta1hA, ta1hB, ta1hC, ta1hD, ta1hE,
+   ta1hF, ta1hG, ta1hH, ta1hI, ta1hJ, ta1hK, ta1hL, ta1hM, ta1hN,
+   ta1hO, ta1hP, ta1hQ, ta1hR, ta1hS, ta1hT, ta1hU, ta1hV, ta1hW,
+   ta1hX, ta1hY, ta1hZ, ta1i0, ta1i1, ta1i2, ta1i3, ta1i4, ta1i5,
+   ta1i6, ta1i7, ta1i8, ta1i9, ta1ia, ta1ib, ta1ic, ta1id, ta1ie,
+   ta1if, ta1ig, ta1ih, ta1ii, ta1ij, ta1ik, ta1il, ta1im, ta1in,
+   ta1io, ta1ip, ta1iq, ta1ir, ta1is, ta1it, ta1iu, ta1iv, ta1iw,
+   ta1ix, ta1iy, ta1iz, ta1iA, ta1iB, ta1iC, ta1iD, ta1iE, ta1iF,
+   ta1iG, ta1iH, ta1iI, ta1iJ, ta1iK, ta1iL, ta1iM, ta1iN, ta1iO,
+   ta1iP, ta1iQ, ta1iR, ta1iS, ta1iT, ta1iU, ta1n8, ta1na, ta1ng,
+   ta1nh, ta1ni, ta1nj, ta1nk, ta1nl, ta1nm, ta1nn, ta1no, ta1np,
+   ta1nq, ta1nr, ta1ns, ta1nt, ta1nu, ta1nv, ta1nw, ta1nx, ta1ny,
+   ta1nz, ta1nA, ta1nB, ta1nC, ta1nD, ta1nE, ta1nF, ta1nG, ta1nH,
+   ta1nI, ta1nJ, ta1nK, ta1nL, ta1nM, ta1nN, ta1nO, ta1nP, ta1nQ,
+   ta1nR, ta1nS, ta1nT, ta1nU, ta1nV, ta1nW, ta1nX, ta1nY, ta1nZ,
+   ta1o0, ta1o1, ta1o2, ta1o3, ta1o4, ta1o5, ta1o6, ta1o7, ta1o8,
+   ta1o9, ta1oa, ta1ob, ta1oc, ta1od, ta1oe, ta1of, ta1og, ta1oh,
+   ta1oi, ta1oj, ta1ok, ta1ol, ta1om, ta1on, ta1oo, ta1op, ta1oq,
+   ta1or, ta1os, ta1ot, ta1ou, ta1ov, ta1ow, ta1ox, ta1oy, ta1oz,
+   ta1oA, ta1oB, ta1oC, ta1oD, ta1oE, ta1oF, ta1oG, ta1oH, ta1oI,
+   ta1oJ, ta1oK, ta1oL, ta1oM, ta1oN, ta1oO, ta1oP, ta1oQ, ta1oR,
+   ta1oS, ta1oT, ta1oU, ta1oV, ta1oW, ta1oX, ta1oY, ta1oZ, ta1p0,
+   ta1p1, ta1p2, ta1p3, ta1p4, ta1p5, ta1p6, ta1p7, ta1p8, ta1p9,
+   ta1pa, ta1pb, ta1pc, ta1pd, ta1pe, ta1pf, ta1pg, ta1ph, ta1pi,
+   ta1pj, ta1pk, ta1pl, ta1pm, ta1pn, ta1po, ta1pp, ta1pq, ta1pr,
+   ta1ps, ta1pt, ta1pu, ta1pv, ta1pw, ta1px, ta1py, ta1pz, ta1pA,
+   ta1pB, ta1pC, ta1pD, ta1pE, ta1pF, ta1pG, ta1pH, ta1pI, ta1pJ,
+   ta1pK, ta1pL, ta1pM, ta1pN, ta1pO, ta1pP, ta1pQ, ta1pR, ta1pS,
+   ta1pT, ta1pU, ta1pV, ta1pW, ta1pX, ta1pY, ta1pZ, ta1q0, ta1q1,
+   ta1q2, ta1q3, ta1q4, ta1q5, ta1q6, ta1q7, ta1q8, ta1q9, ta1qa,
+   ta1qb, ta1qc, ta1qd, ta1qe, ta1qf, ta1qg, ta1qh, ta1qi, ta1qj,
+   ta1qk, ta1ql, ta1qm, ta1qn, ta1qo, ta1qp, ta1qq, ta1qr, ta1qs,
+   ta1qt, ta1qu, ta1qv, ta1qw, ta1qx, ta1qy, ta1qz, ta1qA, ta1qB,
+   ta1qC, ta1qD, ta1qE, ta1qF, ta1qG, ta1qH, ta1qI, ta1qJ, ta1qK,
+   ta1qL, ta1qM, ta1qN, ta1qO, ta1qP, ta1qQ, ta1qR, ta1qS, ta1qT,
+   ta1qU, ta1qV, ta1qW, ta1qX, ta1qY, ta1qZ, ta1r0, ta1r1, ta1r2,
+   ta1r3, ta1r4, ta1r5, ta1r6, ta1r7, ta1r8, ta1r9, ta1ra, ta1rb,
+   ta1rc, ta1rd, ta1re, ta1rf, ta1rg, ta1rh, ta1ri, ta1rj, ta1rk,
+   ta1rl, ta1rm, ta1rn],
+  g{-r5O,x-},
+  g_a19T)]
+    g_a19T x_r4S y_r4T z_r4U p_r4V
+	   = g_rec{-r65,x-}
+		 [ta1iU, ta1eF, GHC.Void{-3T,W-}, (ta1eF, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), ta1na, ta1rn, ta1n8, (ta1n8, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}), (ta1iU, (ta1ng, (ta1nh, (ta1ni, (ta1nj, (ta1nk, (ta1nl, (ta1nm, ta1nn, ta1nn), (ta1nm, ta1no, ta1no)), (ta1nl, (ta1np, ta1nq, ta1nq), (ta1np, ta1nr, ta1nr))), (ta1nk, (ta1ns, (ta1nt, ta1nu, ta1nu), (ta1nt, ta1nv, ta1nv)), (ta1ns, (ta1nw, ta1nx, ta1nx), (ta1nw, ta1ny, ta1ny)))), (ta1nj, (ta1nz, (ta1nA, (ta1nB, ta1nC, ta1nC), (ta1nB, ta1nD, ta1nD)), (ta1nA, (ta1nE, ta1nF, ta1nF), (ta1nE, ta1nG, ta1nG))), (ta1nz, (ta1nH, (ta1nI, ta1nJ, ta1nJ), (ta1nI, ta1nK, ta1nK)), (ta1nH, (ta1nL, ta1nM, ta1nM), (ta1nL, ta1nN, ta1nN))))), (ta1ni, (ta1nO, (ta1nP, (ta1nQ, (ta1nR, ta1nS, ta1nS), (ta1nR, ta1nT, ta1nT)), (ta1nQ, (ta1nU, ta1nV, ta1nV), (ta1nU, ta1nW, ta1nW))), (ta1nP, (ta1nX, (ta1nY, ta1nZ, ta1nZ), (ta1nY, ta1o0, ta1o0)), (ta1nX, (ta1o1, ta1o2, ta1o2), (ta1o1, ta1o3, ta1o3)))), (ta1nO, (ta1o4, (ta1o5, (ta1o6, ta1o7, ta1o7), (ta1o6, ta1o8, ta1o8)), (ta1o5, (ta1o9, ta1oa, ta1oa), (ta1o9, ta1ob, ta1ob))), (ta1o4, (ta1oc, (ta1od, ta1oe, ta1oe), (ta1od, ta1of, ta1of)), (ta1oc, (ta1og, ta1oh, ta1oh), (ta1og, ta1oi, ta1oi)))))), (ta1nh, (ta1oj, (ta1ok, (ta1ol, (ta1om, (ta1on, ta1oo, ta1oo), (ta1on, ta1op, ta1op)), (ta1om, (ta1oq, ta1or, ta1or), (ta1oq, ta1os, ta1os))), (ta1ol, (ta1ot, (ta1ou, ta1ov, ta1ov), (ta1ou, ta1ow, ta1ow)), (ta1ot, (ta1ox, ta1oy, ta1oy), (ta1ox, ta1oz, ta1oz)))), (ta1ok, (ta1oA, (ta1oB, (ta1oC, ta1oD, ta1oD), (ta1oC, ta1oE, ta1oE)), (ta1oB, (ta1oF, ta1oG, ta1oG), (ta1oF, ta1oH, ta1oH))), (ta1oA, (ta1oI, (ta1oJ, ta1oK, ta1oK), (ta1oJ, ta1oL, ta1oL)), (ta1oI, (ta1oM, ta1oN, ta1oN), (ta1oM, ta1oO, ta1oO))))), (ta1oj, (ta1oP, (ta1oQ, (ta1oR, (ta1oS, ta1oT, ta1oT), (ta1oS, ta1oU, ta1oU)), (ta1oR, (ta1oV, ta1oW, ta1oW), (ta1oV, ta1oX, ta1oX))), (ta1oQ, (ta1oY, (ta1oZ, ta1p0, ta1p0), (ta1oZ, ta1p1, ta1p1)), (ta1oY, (ta1p2, ta1p3, ta1p3), (ta1p2, ta1p4, ta1p4)))), (ta1oP, (ta1p5, (ta1p6, (ta1p7, ta1p8, ta1p8), (ta1p7, ta1p9, ta1p9)), (ta1p6, (ta1pa, ta1pb, ta1pb), (ta1pa, ta1pc, ta1pc))), (ta1p5, (ta1pd, (ta1pe, ta1pf, ta1pf), (ta1pe, ta1pg, ta1pg)), (ta1pd, (ta1ph, ta1pi, ta1pi), (ta1ph, ta1pj, ta1pj))))))), (ta1ng, (ta1pk, (ta1pl, (ta1pm, (ta1pn, (ta1po, (ta1pp, ta1pq, ta1pq), (ta1pp, ta1pr, ta1pr)), (ta1po, (ta1ps, ta1pt, ta1pt), (ta1ps, ta1pu, ta1pu))), (ta1pn, (ta1pv, (ta1pw, ta1px, ta1px), (ta1pw, ta1py, ta1py)), (ta1pv, (ta1pz, ta1pA, ta1pA), (ta1pz, ta1pB, ta1pB)))), (ta1pm, (ta1pC, (ta1pD, (ta1pE, ta1pF, ta1pF), (ta1pE, ta1pG, ta1pG)), (ta1pD, (ta1pH, ta1pI, ta1pI), (ta1pH, ta1pJ, ta1pJ))), (ta1pC, (ta1pK, (ta1pL, ta1pM, ta1pM), (ta1pL, ta1pN, ta1pN)), (ta1pK, (ta1pO, ta1pP, ta1pP), (ta1pO, ta1pQ, ta1pQ))))), (ta1pl, (ta1pR, (ta1pS, (ta1pT, (ta1pU, ta1pV, ta1pV), (ta1pU, ta1pW, ta1pW)), (ta1pT, (ta1pX, ta1pY, ta1pY), (ta1pX, ta1pZ, ta1pZ))), (ta1pS, (ta1q0, (ta1q1, ta1q2, ta1q2), (ta1q1, ta1q3, ta1q3)), (ta1q0, (ta1q4, ta1q5, ta1q5), (ta1q4, ta1q6, ta1q6)))), (ta1pR, (ta1q7, (ta1q8, (ta1q9, ta1qa, ta1qa), (ta1q9, ta1qb, ta1qb)), (ta1q8, (ta1qc, ta1qd, ta1qd), (ta1qc, ta1qe, ta1qe))), (ta1q7, (ta1qf, (ta1qg, ta1qh, ta1qh), (ta1qg, ta1qi, ta1qi)), (ta1qf, (ta1qj, ta1qk, ta1qk), (ta1qj, ta1ql, ta1ql)))))), (ta1pk, (ta1qm, (ta1qn, (ta1qo, (ta1qp, (ta1qq, ta1qr, ta1qr), (ta1qq, ta1qs, ta1qs)), (ta1qp, (ta1qt, ta1qu, ta1qu), (ta1qt, ta1qv, ta1qv))), (ta1qo, (ta1qw, (ta1qx, ta1qy, ta1qy), (ta1qx, ta1qz, ta1qz)), (ta1qw, (ta1qA, ta1qB, ta1qB), (ta1qA, ta1qC, ta1qC)))), (ta1qn, (ta1qD, (ta1qE, (ta1qF, ta1qG, ta1qG), (ta1qF, ta1qH, ta1qH)), (ta1qE, (ta1qI, ta1qJ, ta1qJ), (ta1qI, ta1qK, ta1qK))), (ta1qD, (ta1qL, (ta1qM, ta1qN, ta1qN), (ta1qM, ta1qO, ta1qO)), (ta1qL, (ta1qP, ta1qQ, ta1qQ), (ta1qP, ta1qR, ta1qR))))), (ta1qm, (ta1qS, (ta1qT, (ta1qU, (ta1qV, ta1qW, ta1qW), (ta1qV, ta1qX, ta1qX)), (ta1qU, (ta1qY, ta1qZ, ta1qZ), (ta1qY, ta1r0, ta1r0))), (ta1qT, (ta1r1, (ta1r2, ta1r3, ta1r3), (ta1r2, ta1r4, ta1r4)), (ta1r1, (ta1r5, ta1r6, ta1r6), (ta1r5, ta1r7, ta1r7)))), (ta1qS, (ta1r8, (ta1r9, (ta1ra, ta1rb, ta1rb), (ta1ra, ta1rc, ta1rc)), (ta1r9, (ta1rd, ta1re, ta1re), (ta1rd, ta1rf, ta1rf))), (ta1r8, (ta1rg, (ta1rh, ta1ri, ta1ri), (ta1rh, ta1rj, ta1rj)), (ta1rg, (ta1rk, ta1rl, ta1rl), (ta1rk, ta1rm, ta1rm)))))))), ta1aq, (ta1iU, (ta1eN, (ta1eO, (ta1eP, (ta1eQ, (ta1eR, (ta1eS, (ta1eT, ta1eU, ta1eU), (ta1eT, ta1eV, ta1eV)), (ta1eS, (ta1eW, ta1eX, ta1eX), (ta1eW, ta1eY, ta1eY))), (ta1eR, (ta1eZ, (ta1f0, ta1f1, ta1f1), (ta1f0, ta1f2, ta1f2)), (ta1eZ, (ta1f3, ta1f4, ta1f4), (ta1f3, ta1f5, ta1f5)))), (ta1eQ, (ta1f6, (ta1f7, (ta1f8, ta1f9, ta1f9), (ta1f8, ta1fa, ta1fa)), (ta1f7, (ta1fb, ta1fc, ta1fc), (ta1fb, ta1fd, ta1fd))), (ta1f6, (ta1fe, (ta1ff, ta1fg, ta1fg), (ta1ff, ta1fh, ta1fh)), (ta1fe, (ta1fi, ta1fj, ta1fj), (ta1fi, ta1fk, ta1fk))))), (ta1eP, (ta1fl, (ta1fm, (ta1fn, (ta1fo, ta1fp, ta1fp), (ta1fo, ta1fq, ta1fq)), (ta1fn, (ta1fr, ta1fs, ta1fs), (ta1fr, ta1ft, ta1ft))), (ta1fm, (ta1fu, (ta1fv, ta1fw, ta1fw), (ta1fv, ta1fx, ta1fx)), (ta1fu, (ta1fy, ta1fz, ta1fz), (ta1fy, ta1fA, ta1fA)))), (ta1fl, (ta1fB, (ta1fC, (ta1fD, ta1fE, ta1fE), (ta1fD, ta1fF, ta1fF)), (ta1fC, (ta1fG, ta1fH, ta1fH), (ta1fG, ta1fI, ta1fI))), (ta1fB, (ta1fJ, (ta1fK, ta1fL, ta1fL), (ta1fK, ta1fM, ta1fM)), (ta1fJ, (ta1fN, ta1fO, ta1fO), (ta1fN, ta1fP, ta1fP)))))), (ta1eO, (ta1fQ, (ta1fR, (ta1fS, (ta1fT, (ta1fU, ta1fV, ta1fV), (ta1fU, ta1fW, ta1fW)), (ta1fT, (ta1fX, ta1fY, ta1fY), (ta1fX, ta1fZ, ta1fZ))), (ta1fS, (ta1g0, (ta1g1, ta1g2, ta1g2), (ta1g1, ta1g3, ta1g3)), (ta1g0, (ta1g4, ta1g5, ta1g5), (ta1g4, ta1g6, ta1g6)))), (ta1fR, (ta1g7, (ta1g8, (ta1g9, ta1ga, ta1ga), (ta1g9, ta1gb, ta1gb)), (ta1g8, (ta1gc, ta1gd, ta1gd), (ta1gc, ta1ge, ta1ge))), (ta1g7, (ta1gf, (ta1gg, ta1gh, ta1gh), (ta1gg, ta1gi, ta1gi)), (ta1gf, (ta1gj, ta1gk, ta1gk), (ta1gj, ta1gl, ta1gl))))), (ta1fQ, (ta1gm, (ta1gn, (ta1go, (ta1gp, ta1gq, ta1gq), (ta1gp, ta1gr, ta1gr)), (ta1go, (ta1gs, ta1gt, ta1gt), (ta1gs, ta1gu, ta1gu))), (ta1gn, (ta1gv, (ta1gw, ta1gx, ta1gx), (ta1gw, ta1gy, ta1gy)), (ta1gv, (ta1gz, ta1gA, ta1gA), (ta1gz, ta1gB, ta1gB)))), (ta1gm, (ta1gC, (ta1gD, (ta1gE, ta1gF, ta1gF), (ta1gE, ta1gG, ta1gG)), (ta1gD, (ta1gH, ta1gI, ta1gI), (ta1gH, ta1gJ, ta1gJ))), (ta1gC, (ta1gK, (ta1gL, ta1gM, ta1gM), (ta1gL, ta1gN, ta1gN)), (ta1gK, (ta1gO, ta1gP, ta1gP), (ta1gO, ta1gQ, ta1gQ))))))), (ta1eN, (ta1gR, (ta1gS, (ta1gT, (ta1gU, (ta1gV, (ta1gW, ta1gX, ta1gX), (ta1gW, ta1gY, ta1gY)), (ta1gV, (ta1gZ, ta1h0, ta1h0), (ta1gZ, ta1h1, ta1h1))), (ta1gU, (ta1h2, (ta1h3, ta1h4, ta1h4), (ta1h3, ta1h5, ta1h5)), (ta1h2, (ta1h6, ta1h7, ta1h7), (ta1h6, ta1h8, ta1h8)))), (ta1gT, (ta1h9, (ta1ha, (ta1hb, ta1hc, ta1hc), (ta1hb, ta1hd, ta1hd)), (ta1ha, (ta1he, ta1hf, ta1hf), (ta1he, ta1hg, ta1hg))), (ta1h9, (ta1hh, (ta1hi, ta1hj, ta1hj), (ta1hi, ta1hk, ta1hk)), (ta1hh, (ta1hl, ta1hm, ta1hm), (ta1hl, ta1hn, ta1hn))))), (ta1gS, (ta1ho, (ta1hp, (ta1hq, (ta1hr, ta1hs, ta1hs), (ta1hr, ta1ht, ta1ht)), (ta1hq, (ta1hu, ta1hv, ta1hv), (ta1hu, ta1hw, ta1hw))), (ta1hp, (ta1hx, (ta1hy, ta1hz, ta1hz), (ta1hy, ta1hA, ta1hA)), (ta1hx, (ta1hB, ta1hC, ta1hC), (ta1hB, ta1hD, ta1hD)))), (ta1ho, (ta1hE, (ta1hF, (ta1hG, ta1hH, ta1hH), (ta1hG, ta1hI, ta1hI)), (ta1hF, (ta1hJ, ta1hK, ta1hK), (ta1hJ, ta1hL, ta1hL))), (ta1hE, (ta1hM, (ta1hN, ta1hO, ta1hO), (ta1hN, ta1hP, ta1hP)), (ta1hM, (ta1hQ, ta1hR, ta1hR), (ta1hQ, ta1hS, ta1hS)))))), (ta1gR, (ta1hT, (ta1hU, (ta1hV, (ta1hW, (ta1hX, ta1hY, ta1hY), (ta1hX, ta1hZ, ta1hZ)), (ta1hW, (ta1i0, ta1i1, ta1i1), (ta1i0, ta1i2, ta1i2))), (ta1hV, (ta1i3, (ta1i4, ta1i5, ta1i5), (ta1i4, ta1i6, ta1i6)), (ta1i3, (ta1i7, ta1i8, ta1i8), (ta1i7, ta1i9, ta1i9)))), (ta1hU, (ta1ia, (ta1ib, (ta1ic, ta1id, ta1id), (ta1ic, ta1ie, ta1ie)), (ta1ib, (ta1if, ta1ig, ta1ig), (ta1if, ta1ih, ta1ih))), (ta1ia, (ta1ii, (ta1ij, ta1ik, ta1ik), (ta1ij, ta1il, ta1il)), (ta1ii, (ta1im, ta1in, ta1in), (ta1im, ta1io, ta1io))))), (ta1hT, (ta1ip, (ta1iq, (ta1ir, (ta1is, ta1it, ta1it), (ta1is, ta1iu, ta1iu)), (ta1ir, (ta1iv, ta1iw, ta1iw), (ta1iv, ta1ix, ta1ix))), (ta1iq, (ta1iy, (ta1iz, ta1iA, ta1iA), (ta1iz, ta1iB, ta1iB)), (ta1iy, (ta1iC, ta1iD, ta1iD), (ta1iC, ta1iE, ta1iE)))), (ta1ip, (ta1iF, (ta1iG, (ta1iH, ta1iI, ta1iI), (ta1iH, ta1iJ, ta1iJ)), (ta1iG, (ta1iK, ta1iL, ta1iL), (ta1iK, ta1iM, ta1iM))), (ta1iF, (ta1iN, (ta1iO, ta1iP, ta1iP), (ta1iO, ta1iQ, ta1iQ)), (ta1iN, (ta1iR, ta1iS, ta1iS), (ta1iR, ta1iT, ta1iT))))))))] g_rec8{-r5N,x-}
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			  [ta1iU, GHC.Void{-3T,W-}, ta1eO, ta1eP, ta1eQ, ta1eR, ta1eS, ta1eT, ta1eU, ta1eV, ta1eW, ta1eX, ta1eY, ta1eZ, ta1f0, ta1f1, ta1f2, ta1f3, ta1f4, ta1f5, ta1f6, ta1f7, ta1f8, ta1f9, ta1fa, ta1fb, ta1fc, ta1fd, ta1fe, ta1ff, ta1fg, ta1fh, ta1fi, ta1fj, ta1fk, ta1fl, ta1fm, ta1fn, ta1fo, ta1fp, ta1fq, ta1fr, ta1fs, ta1ft, ta1fu, ta1fv, ta1fw, ta1fx, ta1fy, ta1fz, ta1fA, ta1fB, ta1fC, ta1fD, ta1fE, ta1fF, ta1fG, ta1fH, ta1fI, ta1fJ, ta1fK, ta1fL, ta1fM, ta1fN, ta1fO, ta1fP, ta1fQ, ta1fR, ta1fS, ta1fT, ta1fU, ta1fV, ta1fW, ta1fX, ta1fY, ta1fZ, ta1g0, ta1g1, ta1g2, ta1g3, ta1g4, ta1g5, ta1g6, ta1g7, ta1g8, ta1g9, ta1ga, ta1gb, ta1gc, ta1gd, ta1ge, ta1gf, ta1gg, ta1gh, ta1gi, ta1gj, ta1gk, ta1gl, ta1gm, ta1gn, ta1go, ta1gp, ta1gq, ta1gr, ta1gs, ta1gt, ta1gu, ta1gv, ta1gw, ta1gx, ta1gy, ta1gz, ta1gA, ta1gB, ta1gC, ta1gD, ta1gE, ta1gF, ta1gG, ta1gH, ta1gI, ta1gJ, ta1gK, ta1gL, ta1gM, ta1gN, ta1gO, ta1gP, ta1gQ, ta1eN, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, ta1gR, ta1gS, ta1gT, ta1gU, ta1gV, ta1gW, ta1gX, ta1gY, ta1gZ, ta1h0, ta1h1, ta1h2, ta1h3, ta1h4, ta1h5, ta1h6, ta1h7, ta1h8, ta1h9, ta1ha, ta1hb, ta1hc, ta1hd, ta1he, ta1hf, ta1hg, ta1hh, ta1hi, ta1hj, ta1hk, ta1hl, ta1hm, ta1hn, ta1ho, ta1hp, ta1hq, ta1hr, ta1hs, ta1ht, ta1hu, ta1hv, ta1hw, ta1hx, ta1hy, ta1hz, ta1hA, ta1hB, ta1hC, ta1hD, ta1hE, ta1hF, ta1hG, ta1hH, ta1hI, ta1hJ, ta1hK, ta1hL, ta1hM, ta1hN, ta1hO, ta1hP, ta1hQ, ta1hR, ta1hS, ta1hT, ta1hU, ta1hV, ta1hW, ta1hX, ta1hY, ta1hZ, ta1i0, ta1i1, ta1i2, ta1i3, ta1i4, ta1i5, ta1i6, ta1i7, ta1i8, ta1i9, ta1ia, ta1ib, ta1ic, ta1id, ta1ie, ta1if, ta1ig, ta1ih, ta1ii, ta1ij, ta1ik, ta1il, ta1im, ta1in, ta1io, ta1ip, ta1iq, ta1ir, ta1is, ta1it, ta1iu, ta1iv, ta1iw, ta1ix, ta1iy, ta1iz, ta1iA, ta1iB, ta1iC, ta1iD, ta1iE, ta1iF, ta1iG, ta1iH, ta1iI, ta1iJ, ta1iK, ta1iL, ta1iM, ta1iN, ta1iO, ta1iP, ta1iQ, ta1iR, ta1iS, ta1iT, ta1eF]
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																		      g_rec8{-r5N,x-}
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			  [ta1iU, ta1na, ta1nh, ta1ni, ta1nj, ta1nk, ta1nl, ta1nm, ta1nn, ta1no, ta1np, ta1nq, ta1nr, ta1ns, ta1nt, ta1nu, ta1nv, ta1nw, ta1nx, ta1ny, ta1nz, ta1nA, ta1nB, ta1nC, ta1nD, ta1nE, ta1nF, ta1nG, ta1nH, ta1nI, ta1nJ, ta1nK, ta1nL, ta1nM, ta1nN, ta1nO, ta1nP, ta1nQ, ta1nR, ta1nS, ta1nT, ta1nU, ta1nV, ta1nW, ta1nX, ta1nY, ta1nZ, ta1o0, ta1o1, ta1o2, ta1o3, ta1o4, ta1o5, ta1o6, ta1o7, ta1o8, ta1o9, ta1oa, ta1ob, ta1oc, ta1od, ta1oe, ta1of, ta1og, ta1oh, ta1oi, ta1oj, ta1ok, ta1ol, ta1om, ta1on, ta1oo, ta1op, ta1oq, ta1or, ta1os, ta1ot, ta1ou, ta1ov, ta1ow, ta1ox, ta1oy, ta1oz, ta1oA, ta1oB, ta1oC, ta1oD, ta1oE, ta1oF, ta1oG, ta1oH, ta1oI, ta1oJ, ta1oK, ta1oL, ta1oM, ta1oN, ta1oO, ta1oP, ta1oQ, ta1oR, ta1oS, ta1oT, ta1oU, ta1oV, ta1oW, ta1oX, ta1oY, ta1oZ, ta1p0, ta1p1, ta1p2, ta1p3, ta1p4, ta1p5, ta1p6, ta1p7, ta1p8, ta1p9, ta1pa, ta1pb, ta1pc, ta1pd, ta1pe, ta1pf, ta1pg, ta1ph, ta1pi, ta1pj, ta1ng, GHC.Void{-3T,W-}, GHC.Void{-3T,W-}, ta1pk, ta1pl, ta1pm, ta1pn, ta1po, ta1pp, ta1pq, ta1pr, ta1ps, ta1pt, ta1pu, ta1pv, ta1pw, ta1px, ta1py, ta1pz, ta1pA, ta1pB, ta1pC, ta1pD, ta1pE, ta1pF, ta1pG, ta1pH, ta1pI, ta1pJ, ta1pK, ta1pL, ta1pM, ta1pN, ta1pO, ta1pP, ta1pQ, ta1pR, ta1pS, ta1pT, ta1pU, ta1pV, ta1pW, ta1pX, ta1pY, ta1pZ, ta1q0, ta1q1, ta1q2, ta1q3, ta1q4, ta1q5, ta1q6, ta1q7, ta1q8, ta1q9, ta1qa, ta1qb, ta1qc, ta1qd, ta1qe, ta1qf, ta1qg, ta1qh, ta1qi, ta1qj, ta1qk, ta1ql, ta1qm, ta1qn, ta1qo, ta1qp, ta1qq, ta1qr, ta1qs, ta1qt, ta1qu, ta1qv, ta1qw, ta1qx, ta1qy, ta1qz, ta1qA, ta1qB, ta1qC, ta1qD, ta1qE, ta1qF, ta1qG, ta1qH, ta1qI, ta1qJ, ta1qK, ta1qL, ta1qM, ta1qN, ta1qO, ta1qP, ta1qQ, ta1qR, ta1qS, ta1qT, ta1qU, ta1qV, ta1qW, ta1qX, ta1qY, ta1qZ, ta1r0, ta1r1, ta1r2, ta1r3, ta1r4, ta1r5, ta1r6, ta1r7, ta1r8, ta1r9, ta1ra, ta1rb, ta1rc, ta1rd, ta1re, ta1rf, ta1rg, ta1rh, ta1ri, ta1rj, ta1rk, ta1rl, ta1rm, ta1n8]
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																		      x_r4S
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																		      y_r4T
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																		      z_r4U
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																		      p_r4V
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_exports_
+ShouldSucceed absAnd absIf bottom f f_rec f_rec0 f_rec1 f_rec2 fac fac_rec fac_rec0 fac_rec1 fac_rec2 fac_rec3 fac_rec4 g g_rec g_rec0 g_rec1 g_rec2 g_rec3 g_rec4 g_rec5 g_rec6 g_rec7 g_rec8 head one s_1_0 s_2_0 s_2_1 s_3_0 s_3_1 s_3_2;
+_declarations_
+1 absAnd _:_ _forall_ [ta] => ta -> ta -> ta ;;
+1 absIf _:_ _forall_ [ta tb tc] => tc -> ta -> tb -> tc ;;
+1 bottom _:_ _forall_ [ta] => [ta] -> ta ;;
+1 f _:_ _forall_ [ta] => ta -> ta ;;
+1 f_rec _:_ _forall_ [ta tb] => (tb -> ta) -> tb -> ta ;;
+1 f_rec0 _:_ _forall_ [ta] => ta -> ta ;;
+1 f_rec1 _:_ _forall_ [ta] => ta -> ta ;;
+1 f_rec2 _:_ _forall_ [ta] => ta -> ta ;;
+1 fac _:_ _forall_ [ta tb tc td te tf tg th ti tj tk] => (ta, (ti, (tb, (tc, (td, te)))), (tj, (tb, (tc, (td, te))), (tf, (tc, (td, te)), (tg, (td, te), (th, te, te))))) -> (tk, (ti, (tb, (tc, (td, te))))) -> ta ;;
+1 fac_rec _:_ _forall_ [ta tb tc td te] => (tc -> td -> ta) -> (tb, td, tc) -> (te, td) -> tb ;;
+1 fac_rec0 _:_ _forall_ [ta] => ta -> ta -> ta ;;
+1 fac_rec1 _:_ _forall_ [ta tb tc] => (ta, tb, tb) -> (tc, tb) -> ta ;;
+1 fac_rec2 _:_ _forall_ [ta tb tc td te] => (ta, (tc, tb), (td, tb, tb)) -> (te, (tc, tb)) -> ta ;;
+1 fac_rec3 _:_ _forall_ [ta tb tc td te tf tg] => (ta, (te, (tb, tc)), (tf, (tb, tc), (td, tc, tc))) -> (tg, (te, (tb, tc))) -> ta ;;
+1 fac_rec4 _:_ _forall_ [ta tb tc td te tf tg th ti] => (ta, (tg, (tb, (tc, td))), (th, (tb, (tc, td)), (te, (tc, td), (tf, td, td)))) -> (ti, (tg, (tb, (tc, td)))) -> ta ;;
+1 g _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ttq ttr tts ttt ttu ttv ttw ttx tty ttz ttA ttB ttC ttD ttE ttF ttG ttH ttI ttJ ttK ttL ttM ttN ttO ttP ttQ ttR ttS ttT ttU ttV ttW ttX ttY ttZ tt10 tt11 tt12 tt13 tt14 tt15 tt16 tt17 tt18 tt19 tt1a tt1b tt1c tt1d tt1e tt1f tt1g tt1h tt1i tt1j tt1k tt1l tt1m tt1n tt1o tt1p tt1q tt1r tt1s tt1t tt1u tt1v tt1w tt1x tt1y tt1z tt1A tt1B tt1C tt1D tt1E tt1F tt1G tt1H tt1I tt1J tt1K tt1L tt1M tt1N tt1O tt1P tt1Q tt1R tt1S tt1T tt1U tt1V tt1W tt1X tt1Y tt1Z tt20 tt21 tt22 tt23 tt24 tt25 tt26 tt27 tt28 tt29 tt2a tt2b tt2c tt2d tt2e tt2f tt2g tt2h tt2i tt2j tt2k tt2l tt2m tt2n tt2o tt2p tt2q tt2r tt2s tt2t tt2u tt2v tt2w tt2x tt2y tt2z tt2A tt2B tt2C tt2D tt2E tt2F tt2G tt2H tt2I tt2J tt2K tt2L tt2M tt2N tt2O tt2P tt2Q tt2R tt2S tt2T tt2U tt2V tt2W tt2X tt2Y tt2Z tt30 tt31 tt32 tt33 tt34 tt35 tt36 tt37 tt38 tt39 tt3a tt3b tt3c tt3d tt3e tt3f tt3g tt3h tt3i tt3j tt3k tt3l tt3m tt3n tt3o tt3p tt3q tt3r tt3s tt3t tt3u tt3v tt3w tt3x tt3y tt3z tt3A tt3B tt3C tt3D tt3E tt3F tt3G tt3H tt3I tt3J tt3K tt3L tt3M tt3N tt3O tt3P tt3Q tt3R tt3S tt3T tt3U tt3V tt3W tt3X tt3Y tt3Z tt40 tt41 tt42 tt43 tt44 tt45 tt46 tt47 tt48 tt49 tt4a tt4b tt4c tt4d tt4e tt4f tt4g tt4h tt4i tt4j tt4k tt4l tt4m tt4n tt4o tt4p tt4q tt4r tt4s tt4t tt4u tt4v tt4w tt4x tt4y tt4z tt4A tt4B tt4C tt4D tt4E tt4F tt4G tt4H tt4I tt4J tt4K tt4L tt4M tt4N tt4O tt4P tt4Q tt4R tt4S tt4T tt4U tt4V tt4W tt4X tt4Y tt4Z tt50 tt51 tt52 tt53 tt54 tt55 tt56 tt57 tt58 tt59 tt5a tt5b tt5c tt5d tt5e tt5f tt5g tt5h tt5i tt5j tt5k tt5l tt5m tt5n tt5o tt5p tt5q tt5r tt5s tt5t tt5u tt5v tt5w tt5x tt5y tt5z tt5A tt5B tt5C tt5D tt5E tt5F tt5G tt5H tt5I tt5J tt5K tt5L tt5M tt5N tt5O tt5P tt5Q tt5R tt5S tt5T tt5U tt5V tt5W tt5X tt5Y tt5Z tt60 tt61 tt62 tt63 tt64 tt65 tt66 tt67 tt68 tt69 tt6a tt6b tt6c tt6d tt6e tt6f tt6g tt6h tt6i tt6j tt6k tt6l tt6m tt6n tt6o tt6p tt6q tt6r tt6s tt6t tt6u tt6v tt6w tt6x tt6y tt6z tt6A tt6B tt6C tt6D tt6E tt6F tt6G tt6H tt6I tt6J tt6K tt6L tt6M tt6N tt6O tt6P tt6Q tt6R tt6S tt6T tt6U tt6V tt6W tt6X tt6Y tt6Z tt70 tt71 tt72 tt73 tt74 tt75 tt76 tt77 tt78 tt79 tt7a tt7b tt7c tt7d tt7e tt7f tt7g tt7h tt7i tt7j tt7k tt7l tt7m tt7n tt7o tt7p tt7q tt7r tt7s tt7t tt7u tt7v tt7w tt7x tt7y tt7z tt7A tt7B tt7C tt7D tt7E tt7F tt7G tt7H tt7I tt7J tt7K tt7L tt7M tt7N tt7O tt7P tt7Q tt7R tt7S tt7T tt7U tt7V tt7W tt7X tt7Y tt7Z tt80 tt81 tt82 tt83 tt84 tt85 tt86 tt87 tt88 tt89 tt8a tt8b tt8c tt8d tt8e tt8f tt8g tt8h tt8i tt8j] => tt8j -> tb -> (tt8j, tt4b, tt4a) -> (ta, (tt49, (tc, (td, (te, (tf, (tg, (th, (ti, tj, tj), (ti, tk, tk)), (th, (tl, tm, tm), (tl, tn, tn))), (tg, (to, (tp, tq, tq), (tp, tr, tr)), (to, (ts, tt, tt), (ts, tu, tu)))), (tf, (tv, (tw, (tx, ty, ty), (tx, tz, tz)), (tw, (ttq, ttr, ttr), (ttq, tts, tts))), (tv, (ttt, (ttu, ttv, ttv), (ttu, ttw, ttw)), (ttt, (ttx, tty, tty), (ttx, ttz, ttz))))), (te, (ttA, (ttB, (ttC, (ttD, ttE, ttE), (ttD, ttF, ttF)), (ttC, (ttG, ttH, ttH), (ttG, ttI, ttI))), (ttB, (ttJ, (ttK, ttL, ttL), (ttK, ttM, ttM)), (ttJ, (ttN, ttO, ttO), (ttN, ttP, ttP)))), (ttA, (ttQ, (ttR, (ttS, ttT, ttT), (ttS, ttU, ttU)), (ttR, (ttV, ttW, ttW), (ttV, ttX, ttX))), (ttQ, (ttY, (ttZ, tt10, tt10), (ttZ, tt11, tt11)), (ttY, (tt12, tt13, tt13), (tt12, tt14, tt14)))))), (td, (tt15, (tt16, (tt17, (tt18, (tt19, tt1a, tt1a), (tt19, tt1b, tt1b)), (tt18, (tt1c, tt1d, tt1d), (tt1c, tt1e, tt1e))), (tt17, (tt1f, (tt1g, tt1h, tt1h), (tt1g, tt1i, tt1i)), (tt1f, (tt1j, tt1k, tt1k), (tt1j, tt1l, tt1l)))), (tt16, (tt1m, (tt1n, (tt1o, tt1p, tt1p), (tt1o, tt1q, tt1q)), (tt1n, (tt1r, tt1s, tt1s), (tt1r, tt1t, tt1t))), (tt1m, (tt1u, (tt1v, tt1w, tt1w), (tt1v, tt1x, tt1x)), (tt1u, (tt1y, tt1z, tt1z), (tt1y, tt1A, tt1A))))), (tt15, (tt1B, (tt1C, (tt1D, (tt1E, tt1F, tt1F), (tt1E, tt1G, tt1G)), (tt1D, (tt1H, tt1I, tt1I), (tt1H, tt1J, tt1J))), (tt1C, (tt1K, (tt1L, tt1M, tt1M), (tt1L, tt1N, tt1N)), (tt1K, (tt1O, tt1P, tt1P), (tt1O, tt1Q, tt1Q)))), (tt1B, (tt1R, (tt1S, (tt1T, tt1U, tt1U), (tt1T, tt1V, tt1V)), (tt1S, (tt1W, tt1X, tt1X), (tt1W, tt1Y, tt1Y))), (tt1R, (tt1Z, (tt20, tt21, tt21), (tt20, tt22, tt22)), (tt1Z, (tt23, tt24, tt24), (tt23, tt25, tt25))))))), (tc, (tt26, (tt27, (tt28, (tt29, (tt2a, (tt2b, tt2c, tt2c), (tt2b, tt2d, tt2d)), (tt2a, (tt2e, tt2f, tt2f), (tt2e, tt2g, tt2g))), (tt29, (tt2h, (tt2i, tt2j, tt2j), (tt2i, tt2k, tt2k)), (tt2h, (tt2l, tt2m, tt2m), (tt2l, tt2n, tt2n)))), (tt28, (tt2o, (tt2p, (tt2q, tt2r, tt2r), (tt2q, tt2s, tt2s)), (tt2p, (tt2t, tt2u, tt2u), (tt2t, tt2v, tt2v))), (tt2o, (tt2w, (tt2x, tt2y, tt2y), (tt2x, tt2z, tt2z)), (tt2w, (tt2A, tt2B, tt2B), (tt2A, tt2C, tt2C))))), (tt27, (tt2D, (tt2E, (tt2F, (tt2G, tt2H, tt2H), (tt2G, tt2I, tt2I)), (tt2F, (tt2J, tt2K, tt2K), (tt2J, tt2L, tt2L))), (tt2E, (tt2M, (tt2N, tt2O, tt2O), (tt2N, tt2P, tt2P)), (tt2M, (tt2Q, tt2R, tt2R), (tt2Q, tt2S, tt2S)))), (tt2D, (tt2T, (tt2U, (tt2V, tt2W, tt2W), (tt2V, tt2X, tt2X)), (tt2U, (tt2Y, tt2Z, tt2Z), (tt2Y, tt30, tt30))), (tt2T, (tt31, (tt32, tt33, tt33), (tt32, tt34, tt34)), (tt31, (tt35, tt36, tt36), (tt35, tt37, tt37)))))), (tt26, (tt38, (tt39, (tt3a, (tt3b, (tt3c, tt3d, tt3d), (tt3c, tt3e, tt3e)), (tt3b, (tt3f, tt3g, tt3g), (tt3f, tt3h, tt3h))), (tt3a, (tt3i, (tt3j, tt3k, tt3k), (tt3j, tt3l, tt3l)), (tt3i, (tt3m, tt3n, tt3n), (tt3m, tt3o, tt3o)))), (tt39, (tt3p, (tt3q, (tt3r, tt3s, tt3s), (tt3r, tt3t, tt3t)), (tt3q, (tt3u, tt3v, tt3v), (tt3u, tt3w, tt3w))), (tt3p, (tt3x, (tt3y, tt3z, tt3z), (tt3y, tt3A, tt3A)), (tt3x, (tt3B, tt3C, tt3C), (tt3B, tt3D, tt3D))))), (tt38, (tt3E, (tt3F, (tt3G, (tt3H, tt3I, tt3I), (tt3H, tt3J, tt3J)), (tt3G, (tt3K, tt3L, tt3L), (tt3K, tt3M, tt3M))), (tt3F, (tt3N, (tt3O, tt3P, tt3P), (tt3O, tt3Q, tt3Q)), (tt3N, (tt3R, tt3S, tt3S), (tt3R, tt3T, tt3T)))), (tt3E, (tt3U, (tt3V, (tt3W, tt3X, tt3X), (tt3W, tt3Y, tt3Y)), (tt3V, (tt3Z, tt40, tt40), (tt3Z, tt41, tt41))), (tt3U, (tt42, (tt43, tt44, tt44), (tt43, tt45, tt45)), (tt42, (tt46, tt47, tt47), (tt46, tt48, tt48)))))))), (tt49, (tt4c, (tt4d, (tt4e, (tt4f, (tt4g, (tt4h, (tt4i, tt4j, tt4j), (tt4i, tt4k, tt4k)), (tt4h, (tt4l, tt4m, tt4m), (tt4l, tt4n, tt4n))), (tt4g, (tt4o, (tt4p, tt4q, tt4q), (tt4p, tt4r, tt4r)), (tt4o, (tt4s, tt4t, tt4t), (tt4s, tt4u, tt4u)))), (tt4f, (tt4v, (tt4w, (tt4x, tt4y, tt4y), (tt4x, tt4z, tt4z)), (tt4w, (tt4A, tt4B, tt4B), (tt4A, tt4C, tt4C))), (tt4v, (tt4D, (tt4E, tt4F, tt4F), (tt4E, tt4G, tt4G)), (tt4D, (tt4H, tt4I, tt4I), (tt4H, tt4J, tt4J))))), (tt4e, (tt4K, (tt4L, (tt4M, (tt4N, tt4O, tt4O), (tt4N, tt4P, tt4P)), (tt4M, (tt4Q, tt4R, tt4R), (tt4Q, tt4S, tt4S))), (tt4L, (tt4T, (tt4U, tt4V, tt4V), (tt4U, tt4W, tt4W)), (tt4T, (tt4X, tt4Y, tt4Y), (tt4X, tt4Z, tt4Z)))), (tt4K, (tt50, (tt51, (tt52, tt53, tt53), (tt52, tt54, tt54)), (tt51, (tt55, tt56, tt56), (tt55, tt57, tt57))), (tt50, (tt58, (tt59, tt5a, tt5a), (tt59, tt5b, tt5b)), (tt58, (tt5c, tt5d, tt5d), (tt5c, tt5e, tt5e)))))), (tt4d, (tt5f, (tt5g, (tt5h, (tt5i, (tt5j, tt5k, tt5k), (tt5j, tt5l, tt5l)), (tt5i, (tt5m, tt5n, tt5n), (tt5m, tt5o, tt5o))), (tt5h, (tt5p, (tt5q, tt5r, tt5r), (tt5q, tt5s, tt5s)), (tt5p, (tt5t, tt5u, tt5u), (tt5t, tt5v, tt5v)))), (tt5g, (tt5w, (tt5x, (tt5y, tt5z, tt5z), (tt5y, tt5A, tt5A)), (tt5x, (tt5B, tt5C, tt5C), (tt5B, tt5D, tt5D))), (tt5w, (tt5E, (tt5F, tt5G, tt5G), (tt5F, tt5H, tt5H)), (tt5E, (tt5I, tt5J, tt5J), (tt5I, tt5K, tt5K))))), (tt5f, (tt5L, (tt5M, (tt5N, (tt5O, tt5P, tt5P), (tt5O, tt5Q, tt5Q)), (tt5N, (tt5R, tt5S, tt5S), (tt5R, tt5T, tt5T))), (tt5M, (tt5U, (tt5V, tt5W, tt5W), (tt5V, tt5X, tt5X)), (tt5U, (tt5Y, tt5Z, tt5Z), (tt5Y, tt60, tt60)))), (tt5L, (tt61, (tt62, (tt63, tt64, tt64), (tt63, tt65, tt65)), (tt62, (tt66, tt67, tt67), (tt66, tt68, tt68))), (tt61, (tt69, (tt6a, tt6b, tt6b), (tt6a, tt6c, tt6c)), (tt69, (tt6d, tt6e, tt6e), (tt6d, tt6f, tt6f))))))), (tt4c, (tt6g, (tt6h, (tt6i, (tt6j, (tt6k, (tt6l, tt6m, tt6m), (tt6l, tt6n, tt6n)), (tt6k, (tt6o, tt6p, tt6p), (tt6o, tt6q, tt6q))), (tt6j, (tt6r, (tt6s, tt6t, tt6t), (tt6s, tt6u, tt6u)), (tt6r, (tt6v, tt6w, tt6w), (tt6v, tt6x, tt6x)))), (tt6i, (tt6y, (tt6z, (tt6A, tt6B, tt6B), (tt6A, tt6C, tt6C)), (tt6z, (tt6D, tt6E, tt6E), (tt6D, tt6F, tt6F))), (tt6y, (tt6G, (tt6H, tt6I, tt6I), (tt6H, tt6J, tt6J)), (tt6G, (tt6K, tt6L, tt6L), (tt6K, tt6M, tt6M))))), (tt6h, (tt6N, (tt6O, (tt6P, (tt6Q, tt6R, tt6R), (tt6Q, tt6S, tt6S)), (tt6P, (tt6T, tt6U, tt6U), (tt6T, tt6V, tt6V))), (tt6O, (tt6W, (tt6X, tt6Y, tt6Y), (tt6X, tt6Z, tt6Z)), (tt6W, (tt70, tt71, tt71), (tt70, tt72, tt72)))), (tt6N, (tt73, (tt74, (tt75, tt76, tt76), (tt75, tt77, tt77)), (tt74, (tt78, tt79, tt79), (tt78, tt7a, tt7a))), (tt73, (tt7b, (tt7c, tt7d, tt7d), (tt7c, tt7e, tt7e)), (tt7b, (tt7f, tt7g, tt7g), (tt7f, tt7h, tt7h)))))), (tt6g, (tt7i, (tt7j, (tt7k, (tt7l, (tt7m, tt7n, tt7n), (tt7m, tt7o, tt7o)), (tt7l, (tt7p, tt7q, tt7q), (tt7p, tt7r, tt7r))), (tt7k, (tt7s, (tt7t, tt7u, tt7u), (tt7t, tt7v, tt7v)), (tt7s, (tt7w, tt7x, tt7x), (tt7w, tt7y, tt7y)))), (tt7j, (tt7z, (tt7A, (tt7B, tt7C, tt7C), (tt7B, tt7D, tt7D)), (tt7A, (tt7E, tt7F, tt7F), (tt7E, tt7G, tt7G))), (tt7z, (tt7H, (tt7I, tt7J, tt7J), (tt7I, tt7K, tt7K)), (tt7H, (tt7L, tt7M, tt7M), (tt7L, tt7N, tt7N))))), (tt7i, (tt7O, (tt7P, (tt7Q, (tt7R, tt7S, tt7S), (tt7R, tt7T, tt7T)), (tt7Q, (tt7U, tt7V, tt7V), (tt7U, tt7W, tt7W))), (tt7P, (tt7X, (tt7Y, tt7Z, tt7Z), (tt7Y, tt80, tt80)), (tt7X, (tt81, tt82, tt82), (tt81, tt83, tt83)))), (tt7O, (tt84, (tt85, (tt86, tt87, tt87), (tt86, tt88, tt88)), (tt85, (tt89, tt8a, tt8a), (tt89, tt8b, tt8b))), (tt84, (tt8c, (tt8d, tt8e, tt8e), (tt8d, tt8f, tt8f)), (tt8c, (tt8g, tt8h, tt8h), (tt8g, tt8i, tt8i))))))))) -> ta ;;
+1 g_rec _:_ _forall_ [ta tb tc td te tf tg th ti tj tk] => (tb -> tc -> td -> tk -> ta) -> (tg -> te -> th -> ti -> ta) -> tf -> tb -> (tf, te, tg) -> (tj, tk, ti) -> tj ;;
+1 g_rec0 _:_ _forall_ [ta] => ta -> ta -> ta -> ta -> ta ;;
+1 g_rec1 _:_ _forall_ [ta tb tc] => tc -> tb -> (tc, tb, tb) -> (ta, tb, tb) -> ta ;;
+1 g_rec2 _:_ _forall_ [ta tb tc td te tf tg] => tg -> tb -> (tg, tf, te) -> (ta, (td, tc, tc), (td, tf, tf)) -> ta ;;
+1 g_rec3 _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl] => tl -> tb -> (tl, th, tg) -> (ta, (tf, (td, te, te), (td, tc, tc)), (tf, (tj, tk, tk), (tj, ti, ti))) -> ta ;;
+1 g_rec4 _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt] => tt -> tb -> (tt, tl, tk) -> (ta, (tj, (tc, (td, te, te), (td, tf, tf)), (tc, (tg, th, th), (tg, ti, ti))), (tj, (tm, (tn, to, to), (tn, tp, tp)), (tm, (tq, tr, tr), (tq, ts, ts)))) -> ta ;;
+1 g_rec5 _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ttq ttr tts ttt ttu ttv ttw ttx tty ttz] => ttz -> tb -> (ttz, tt, ts) -> (ta, (tr, (tc, (td, (te, tf, tf), (te, tg, tg)), (td, (th, ti, ti), (th, tj, tj))), (tc, (tk, (tl, tm, tm), (tl, tn, tn)), (tk, (to, tp, tp), (to, tq, tq)))), (tr, (tu, (tv, (tw, tx, tx), (tw, ty, ty)), (tv, (tz, ttq, ttq), (tz, ttr, ttr))), (tu, (tts, (ttt, ttu, ttu), (ttt, ttv, ttv)), (tts, (ttw, ttx, ttx), (ttw, tty, tty))))) -> ta ;;
+1 g_rec6 _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ttq ttr tts ttt ttu ttv ttw ttx tty ttz ttA ttB ttC ttD ttE ttF ttG ttH ttI ttJ ttK ttL ttM ttN ttO ttP ttQ ttR ttS ttT ttU ttV ttW ttX ttY ttZ tt10 tt11 tt12 tt13 tt14 tt15] => tt15 -> tb -> (tt15, ttz, tty) -> (ta, (ttx, (tc, (td, (te, (tf, tg, tg), (tf, th, th)), (te, (ti, tj, tj), (ti, tk, tk))), (td, (tl, (tm, tn, tn), (tm, to, to)), (tl, (tp, tq, tq), (tp, tr, tr)))), (tc, (ts, (tt, (tu, tv, tv), (tu, tw, tw)), (tt, (tx, ty, ty), (tx, tz, tz))), (ts, (ttq, (ttr, tts, tts), (ttr, ttt, ttt)), (ttq, (ttu, ttv, ttv), (ttu, ttw, ttw))))), (ttx, (ttA, (ttB, (ttC, (ttD, ttE, ttE), (ttD, ttF, ttF)), (ttC, (ttG, ttH, ttH), (ttG, ttI, ttI))), (ttB, (ttJ, (ttK, ttL, ttL), (ttK, ttM, ttM)), (ttJ, (ttN, ttO, ttO), (ttN, ttP, ttP)))), (ttA, (ttQ, (ttR, (ttS, ttT, ttT), (ttS, ttU, ttU)), (ttR, (ttV, ttW, ttW), (ttV, ttX, ttX))), (ttQ, (ttY, (ttZ, tt10, tt10), (ttZ, tt11, tt11)), (ttY, (tt12, tt13, tt13), (tt12, tt14, tt14)))))) -> ta ;;
+1 g_rec7 _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ttq ttr tts ttt ttu ttv ttw ttx tty ttz ttA ttB ttC ttD ttE ttF ttG ttH ttI ttJ ttK ttL ttM ttN ttO ttP ttQ ttR ttS ttT ttU ttV ttW ttX ttY ttZ tt10 tt11 tt12 tt13 tt14 tt15 tt16 tt17 tt18 tt19 tt1a tt1b tt1c tt1d tt1e tt1f tt1g tt1h tt1i tt1j tt1k tt1l tt1m tt1n tt1o tt1p tt1q tt1r tt1s tt1t tt1u tt1v tt1w tt1x tt1y tt1z tt1A tt1B tt1C tt1D tt1E tt1F tt1G tt1H tt1I tt1J tt1K tt1L tt1M tt1N tt1O tt1P tt1Q tt1R tt1S tt1T tt1U tt1V tt1W tt1X tt1Y tt1Z tt20 tt21 tt22 tt23 tt24 tt25 tt26 tt27] => tt27 -> tb -> (tt27, tt15, tt14) -> (ta, (tt13, (tc, (td, (te, (tf, (tg, th, th), (tg, ti, ti)), (tf, (tj, tk, tk), (tj, tl, tl))), (te, (tm, (tn, to, to), (tn, tp, tp)), (tm, (tq, tr, tr), (tq, ts, ts)))), (td, (tt, (tu, (tv, tw, tw), (tv, tx, tx)), (tu, (ty, tz, tz), (ty, ttq, ttq))), (tt, (ttr, (tts, ttt, ttt), (tts, ttu, ttu)), (ttr, (ttv, ttw, ttw), (ttv, ttx, ttx))))), (tc, (tty, (ttz, (ttA, (ttB, ttC, ttC), (ttB, ttD, ttD)), (ttA, (ttE, ttF, ttF), (ttE, ttG, ttG))), (ttz, (ttH, (ttI, ttJ, ttJ), (ttI, ttK, ttK)), (ttH, (ttL, ttM, ttM), (ttL, ttN, ttN)))), (tty, (ttO, (ttP, (ttQ, ttR, ttR), (ttQ, ttS, ttS)), (ttP, (ttT, ttU, ttU), (ttT, ttV, ttV))), (ttO, (ttW, (ttX, ttY, ttY), (ttX, ttZ, ttZ)), (ttW, (tt10, tt11, tt11), (tt10, tt12, tt12)))))), (tt13, (tt16, (tt17, (tt18, (tt19, (tt1a, tt1b, tt1b), (tt1a, tt1c, tt1c)), (tt19, (tt1d, tt1e, tt1e), (tt1d, tt1f, tt1f))), (tt18, (tt1g, (tt1h, tt1i, tt1i), (tt1h, tt1j, tt1j)), (tt1g, (tt1k, tt1l, tt1l), (tt1k, tt1m, tt1m)))), (tt17, (tt1n, (tt1o, (tt1p, tt1q, tt1q), (tt1p, tt1r, tt1r)), (tt1o, (tt1s, tt1t, tt1t), (tt1s, tt1u, tt1u))), (tt1n, (tt1v, (tt1w, tt1x, tt1x), (tt1w, tt1y, tt1y)), (tt1v, (tt1z, tt1A, tt1A), (tt1z, tt1B, tt1B))))), (tt16, (tt1C, (tt1D, (tt1E, (tt1F, tt1G, tt1G), (tt1F, tt1H, tt1H)), (tt1E, (tt1I, tt1J, tt1J), (tt1I, tt1K, tt1K))), (tt1D, (tt1L, (tt1M, tt1N, tt1N), (tt1M, tt1O, tt1O)), (tt1L, (tt1P, tt1Q, tt1Q), (tt1P, tt1R, tt1R)))), (tt1C, (tt1S, (tt1T, (tt1U, tt1V, tt1V), (tt1U, tt1W, tt1W)), (tt1T, (tt1X, tt1Y, tt1Y), (tt1X, tt1Z, tt1Z))), (tt1S, (tt20, (tt21, tt22, tt22), (tt21, tt23, tt23)), (tt20, (tt24, tt25, tt25), (tt24, tt26, tt26))))))) -> ta ;;
+1 g_rec8 _:_ _forall_ [ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ttq ttr tts ttt ttu ttv ttw ttx tty ttz ttA ttB ttC ttD ttE ttF ttG ttH ttI ttJ ttK ttL ttM ttN ttO ttP ttQ ttR ttS ttT ttU ttV ttW ttX ttY ttZ tt10 tt11 tt12 tt13 tt14 tt15 tt16 tt17 tt18 tt19 tt1a tt1b tt1c tt1d tt1e tt1f tt1g tt1h tt1i tt1j tt1k tt1l tt1m tt1n tt1o tt1p tt1q tt1r tt1s tt1t tt1u tt1v tt1w tt1x tt1y tt1z tt1A tt1B tt1C tt1D tt1E tt1F tt1G tt1H tt1I tt1J tt1K tt1L tt1M tt1N tt1O tt1P tt1Q tt1R tt1S tt1T tt1U tt1V tt1W tt1X tt1Y tt1Z tt20 tt21 tt22 tt23 tt24 tt25 tt26 tt27 tt28 tt29 tt2a tt2b tt2c tt2d tt2e tt2f tt2g tt2h tt2i tt2j tt2k tt2l tt2m tt2n tt2o tt2p tt2q tt2r tt2s tt2t tt2u tt2v tt2w tt2x tt2y tt2z tt2A tt2B tt2C tt2D tt2E tt2F tt2G tt2H tt2I tt2J tt2K tt2L tt2M tt2N tt2O tt2P tt2Q tt2R tt2S tt2T tt2U tt2V tt2W tt2X tt2Y tt2Z tt30 tt31 tt32 tt33 tt34 tt35 tt36 tt37 tt38 tt39 tt3a tt3b tt3c tt3d tt3e tt3f tt3g tt3h tt3i tt3j tt3k tt3l tt3m tt3n tt3o tt3p tt3q tt3r tt3s tt3t tt3u tt3v tt3w tt3x tt3y tt3z tt3A tt3B tt3C tt3D tt3E tt3F tt3G tt3H tt3I tt3J tt3K tt3L tt3M tt3N tt3O tt3P tt3Q tt3R tt3S tt3T tt3U tt3V tt3W tt3X tt3Y tt3Z tt40 tt41 tt42 tt43 tt44 tt45 tt46 tt47 tt48 tt49 tt4a tt4b] => tt4b -> tb -> (tt4b, tt27, tt26) -> (ta, (tt25, (tc, (td, (te, (tf, (tg, (th, ti, ti), (th, tj, tj)), (tg, (tk, tl, tl), (tk, tm, tm))), (tf, (tn, (to, tp, tp), (to, tq, tq)), (tn, (tr, ts, ts), (tr, tt, tt)))), (te, (tu, (tv, (tw, tx, tx), (tw, ty, ty)), (tv, (tz, ttq, ttq), (tz, ttr, ttr))), (tu, (tts, (ttt, ttu, ttu), (ttt, ttv, ttv)), (tts, (ttw, ttx, ttx), (ttw, tty, tty))))), (td, (ttz, (ttA, (ttB, (ttC, ttD, ttD), (ttC, ttE, ttE)), (ttB, (ttF, ttG, ttG), (ttF, ttH, ttH))), (ttA, (ttI, (ttJ, ttK, ttK), (ttJ, ttL, ttL)), (ttI, (ttM, ttN, ttN), (ttM, ttO, ttO)))), (ttz, (ttP, (ttQ, (ttR, ttS, ttS), (ttR, ttT, ttT)), (ttQ, (ttU, ttV, ttV), (ttU, ttW, ttW))), (ttP, (ttX, (ttY, ttZ, ttZ), (ttY, tt10, tt10)), (ttX, (tt11, tt12, tt12), (tt11, tt13, tt13)))))), (tc, (tt14, (tt15, (tt16, (tt17, (tt18, tt19, tt19), (tt18, tt1a, tt1a)), (tt17, (tt1b, tt1c, tt1c), (tt1b, tt1d, tt1d))), (tt16, (tt1e, (tt1f, tt1g, tt1g), (tt1f, tt1h, tt1h)), (tt1e, (tt1i, tt1j, tt1j), (tt1i, tt1k, tt1k)))), (tt15, (tt1l, (tt1m, (tt1n, tt1o, tt1o), (tt1n, tt1p, tt1p)), (tt1m, (tt1q, tt1r, tt1r), (tt1q, tt1s, tt1s))), (tt1l, (tt1t, (tt1u, tt1v, tt1v), (tt1u, tt1w, tt1w)), (tt1t, (tt1x, tt1y, tt1y), (tt1x, tt1z, tt1z))))), (tt14, (tt1A, (tt1B, (tt1C, (tt1D, tt1E, tt1E), (tt1D, tt1F, tt1F)), (tt1C, (tt1G, tt1H, tt1H), (tt1G, tt1I, tt1I))), (tt1B, (tt1J, (tt1K, tt1L, tt1L), (tt1K, tt1M, tt1M)), (tt1J, (tt1N, tt1O, tt1O), (tt1N, tt1P, tt1P)))), (tt1A, (tt1Q, (tt1R, (tt1S, tt1T, tt1T), (tt1S, tt1U, tt1U)), (tt1R, (tt1V, tt1W, tt1W), (tt1V, tt1X, tt1X))), (tt1Q, (tt1Y, (tt1Z, tt20, tt20), (tt1Z, tt21, tt21)), (tt1Y, (tt22, tt23, tt23), (tt22, tt24, tt24))))))), (tt25, (tt28, (tt29, (tt2a, (tt2b, (tt2c, (tt2d, tt2e, tt2e), (tt2d, tt2f, tt2f)), (tt2c, (tt2g, tt2h, tt2h), (tt2g, tt2i, tt2i))), (tt2b, (tt2j, (tt2k, tt2l, tt2l), (tt2k, tt2m, tt2m)), (tt2j, (tt2n, tt2o, tt2o), (tt2n, tt2p, tt2p)))), (tt2a, (tt2q, (tt2r, (tt2s, tt2t, tt2t), (tt2s, tt2u, tt2u)), (tt2r, (tt2v, tt2w, tt2w), (tt2v, tt2x, tt2x))), (tt2q, (tt2y, (tt2z, tt2A, tt2A), (tt2z, tt2B, tt2B)), (tt2y, (tt2C, tt2D, tt2D), (tt2C, tt2E, tt2E))))), (tt29, (tt2F, (tt2G, (tt2H, (tt2I, tt2J, tt2J), (tt2I, tt2K, tt2K)), (tt2H, (tt2L, tt2M, tt2M), (tt2L, tt2N, tt2N))), (tt2G, (tt2O, (tt2P, tt2Q, tt2Q), (tt2P, tt2R, tt2R)), (tt2O, (tt2S, tt2T, tt2T), (tt2S, tt2U, tt2U)))), (tt2F, (tt2V, (tt2W, (tt2X, tt2Y, tt2Y), (tt2X, tt2Z, tt2Z)), (tt2W, (tt30, tt31, tt31), (tt30, tt32, tt32))), (tt2V, (tt33, (tt34, tt35, tt35), (tt34, tt36, tt36)), (tt33, (tt37, tt38, tt38), (tt37, tt39, tt39)))))), (tt28, (tt3a, (tt3b, (tt3c, (tt3d, (tt3e, tt3f, tt3f), (tt3e, tt3g, tt3g)), (tt3d, (tt3h, tt3i, tt3i), (tt3h, tt3j, tt3j))), (tt3c, (tt3k, (tt3l, tt3m, tt3m), (tt3l, tt3n, tt3n)), (tt3k, (tt3o, tt3p, tt3p), (tt3o, tt3q, tt3q)))), (tt3b, (tt3r, (tt3s, (tt3t, tt3u, tt3u), (tt3t, tt3v, tt3v)), (tt3s, (tt3w, tt3x, tt3x), (tt3w, tt3y, tt3y))), (tt3r, (tt3z, (tt3A, tt3B, tt3B), (tt3A, tt3C, tt3C)), (tt3z, (tt3D, tt3E, tt3E), (tt3D, tt3F, tt3F))))), (tt3a, (tt3G, (tt3H, (tt3I, (tt3J, tt3K, tt3K), (tt3J, tt3L, tt3L)), (tt3I, (tt3M, tt3N, tt3N), (tt3M, tt3O, tt3O))), (tt3H, (tt3P, (tt3Q, tt3R, tt3R), (tt3Q, tt3S, tt3S)), (tt3P, (tt3T, tt3U, tt3U), (tt3T, tt3V, tt3V)))), (tt3G, (tt3W, (tt3X, (tt3Y, tt3Z, tt3Z), (tt3Y, tt40, tt40)), (tt3X, (tt41, tt42, tt42), (tt41, tt43, tt43))), (tt3W, (tt44, (tt45, tt46, tt46), (tt45, tt47, tt47)), (tt44, (tt48, tt49, tt49), (tt48, tt4a, tt4a)))))))) -> ta ;;
+1 head _:_ _forall_ [ta] => [ta] -> ta ;;
+1 one _:_ _forall_ [ta] => ta ;;
+1 s_1_0 _:_ _forall_ [ta] => ta -> ta ;;
+1 s_2_0 _:_ _forall_ [ta tb] => (ta, tb) -> ta ;;
+1 s_2_1 _:_ _forall_ [ta tb] => (ta, tb) -> tb ;;
+1 s_3_0 _:_ _forall_ [ta tb tc] => (ta, tb, tc) -> ta ;;
+1 s_3_1 _:_ _forall_ [ta tb tc] => (ta, tb, tc) -> tb ;;
+1 s_3_2 _:_ _forall_ [ta tb tc] => (ta, tb, tc) -> tc ;;
diff --git a/ghc/tests/typecheck/should_compile/tc090.hs b/ghc/tests/typecheck/should_compile/tc090.hs
index bbcc17428e9c167a8980786908049f90f2857aec..f568c390a5156cc0ab11f5c72b52911432513056 100644
--- a/ghc/tests/typecheck/should_compile/tc090.hs
+++ b/ghc/tests/typecheck/should_compile/tc090.hs
@@ -11,7 +11,7 @@
 -}
 
 
-module Foo where
+module ShouldSucceed where
 
 a :: (Ord f) => f 
 a = b
diff --git a/ghc/tests/typecheck/should_compile/tc090.stderr b/ghc/tests/typecheck/should_compile/tc090.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..6ba1b2e8bb46195a547c6f060353f91d4fba1c47
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc090.stderr
@@ -0,0 +1,26 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds
+[taBh]
+[d.Ord_aBq]
+[([taBh], a{-r3h,x-}, a_aBf), ([taBh], b{-r3i,x-}, b_aBg)]
+    d.Ord_aBs = d.Ord_aBq
+    b_aBv = b{-r3i,x-} taBh d.Ord_aBs
+    d.Ord_aBu = d.Ord_aBq
+    a_aBw = a{-r3h,x-} taBh d.Ord_aBu
+    a_aBf = b_aBv
+    b_aBg = a_aBw
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d15 1 $d16 1 $d33 1 $d35 1 $d50 1 $d52 1 $d7 1 $d8 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $mmax 1 $mmin 1 Eq 1 Ord 1 Ordering 1;
+PrelNum 1 :: $d17 1 $d18 1;
+_exports_
+ShouldSucceed a b;
+_declarations_
+1 a _:_ _forall_ [ta] {PrelBase.Ord ta} => ta ;;
+1 b _:_ _forall_ [ta] {PrelBase.Ord ta} => ta ;;
diff --git a/ghc/tests/typecheck/should_compile/tc091.hs b/ghc/tests/typecheck/should_compile/tc091.hs
index fc4e82cf756319dc86ab5aaf7143cb7d3eaf8920..eb52c1673e79b902668a52c80436db7feee54acd 100644
--- a/ghc/tests/typecheck/should_compile/tc091.hs
+++ b/ghc/tests/typecheck/should_compile/tc091.hs
@@ -48,7 +48,7 @@ all right.
 	-- Lennart
 - ------- End of forwarded message -------
 -}
-module ShouldFail where
+module ShouldSucceed where
 
 sort :: Ord a => [a] -> [a]
 sort xs = s xs (length xs)
diff --git a/ghc/tests/typecheck/should_compile/tc091.stderr b/ghc/tests/typecheck/should_compile/tc091.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..333fba871c680ae6caa1ee77fcbb68f07bf7a949
--- /dev/null
+++ b/ghc/tests/typecheck/should_compile/tc091.stderr
@@ -0,0 +1,56 @@
+
+
+================================================================================
+Typechecked:
+AbsBinds [taW8] [] [([taW8], init_last{-r3m,x-}, init_last_aW5)]
+    init_last_aW5 a_r3E b_r3F = (a_r3E, a_r3E)
+AbsBinds [taWl] [d.Ord_aWp] [([taWl], merge{-r3l,x-}, merge_aWi)]
+    merge_aWi xs_r3B ys_r3C = xs_r3B
+AbsBinds [taWw] [d.Ord_aXv] [([taWw], sort{-r3k,x-}, sort_aWt)]
+    d.Ord_aXt = d.Ord_aXv
+    sort_aWt xs_r3o
+	     = s_aXJ xs_r3o PrelList.length{-rhD,p-} taWw xs_r3o
+	     where
+		 {- nonrec -}
+		 AbsBinds [taWD] [d.Ord_aXe] [([taWD], s_r3q, s_aWA)]
+		     d.Ord_aXi = d.Ord_aXe
+		     merge_aXK = merge{-r3l,x-} taWD d.Ord_aXi
+		     d.Ord_aXk = d.Ord_aXe
+		     sort_aXL = sort{-r3k,x-} taWD d.Ord_aXk
+		     sort_aXM = sort_aXL
+		     s_aWA xs_r3u k_r3v
+			   = if k_r3v <=_aXF lit_aXG then
+				 xs_r3u
+			     else
+				 merge_aXK sort_aXL ys_r3x sort_aXM zs_r3y
+			   where
+			       {- nonrec -}
+			       AbsBinds [] [] [([], ys_r3x, ys_aWG), ([], zs_r3y, zs_aWH)]
+				   (ys_aWG, zs_aWH)
+				       = init_last{-r3m,x-} taWD xs_r3u k_r3v div_aXH lit_aXI
+			       {- nonrec -}
+			       {- nonrec -}
+		 {- nonrec -}
+		 s_aXJ = s_r3q taWw d.Ord_aXt
+		 {- nonrec -}
+d.Ord_aXB = PrelBase.$d7{-rrR,p-}
+<=_aXF = PrelBase.<={-rqO,p-} PrelBase.Int{-3g,W-} d.Ord_aXB
+lit_aXG = PrelBase.I#{-5b,w-}{i} 1#
+d.Integral_aXE = PrelNum.$d36{-rFA,p-}
+div_aXH = PrelNum.div{-ry2,p-} PrelBase.Int{-3g,W-} d.Integral_aXE
+lit_aXI = PrelBase.I#{-5b,w-}{i} 2#
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ ShouldSucceed 1
+_instance_modules_
+ArrBase IO PrelNum
+_usages_
+PrelBase 1 :: $d1 1 $d11 1 $d12 1 $d14 1 $d15 1 $d16 1 $d2 1 $d22 1 $d27 1 $d28 1 $d3 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d38 1 $d39 1 $d4 1 $d40 1 $d42 1 $d43 1 $d45 1 $d46 1 $d47 1 $d50 1 $d51 1 $d52 1 $d55 1 $d56 1 $d6 1 $d7 1 $d8 1 $d9 1 $m- 1 $m/= 1 $m< 1 $m<= 1 $m> 1 $m>= 1 $mcompare 1 $menumFromThenTo 1 $menumFromTo 1 $mfromInt 1 $mmax 1 $mmin 1 $mshowList 1 Enum 1 Eq 1 Eval 1 Num 1 Ord 1 Ordering 1 Show 1 String 1;
+PrelList 1 :: length 1;
+PrelNum 1 :: $d1 1 $d10 1 $d15 1 $d16 1 $d17 1 $d18 1 $d2 1 $d29 1 $d30 1 $d31 1 $d32 1 $d33 1 $d34 1 $d35 1 $d36 1 $d37 1 $d38 1 $d39 1 $d5 1 $d6 1 $d7 1 $d8 1 $mdiv 1 $mdivMod 1 $mmod 1 $mquot 1 $mrem 1 Integral 1 Ratio 1 Rational 1 Real 1;
+PrelTup 1 :: $d13 1 $d4 1 $d49 1 $d9 1;
+_exports_
+ShouldSucceed init_last merge sort;
+_declarations_
+1 init_last _:_ _forall_ [ta] => [ta] -> PrelBase.Int -> ([ta], [ta]) ;;
+1 merge _:_ _forall_ [ta] {PrelBase.Ord ta} => [ta] -> [ta] -> [ta] ;;
+1 sort _:_ _forall_ [ta] {PrelBase.Ord ta} => [ta] -> [ta] ;;
diff --git a/ghc/tests/typecheck/should_fail/Digraph.stderr b/ghc/tests/typecheck/should_fail/Digraph.stderr
index 6efcc42e3986b71d96d3670dbc61ccd475a06749..01c4bbe5f878e2281176c1c24f1baa741805809e 100644
--- a/ghc/tests/typecheck/should_fail/Digraph.stderr
+++ b/ghc/tests/typecheck/should_fail/Digraph.stderr
@@ -1,8 +1,7 @@
  
 Digraph.hs:19: A type signature is more polymorphic than the inferred type
-		   Some type variables in the inferred type can't be forall'd, namely:
-		   `taXO'
-		   Possible cause: the RHS mentions something subject to the monomorphism restriction
+		   Can't for-all the type variable(s) `taWg'
+		   in the inferred type `[Edge taWg]'
     When checking signature for `reversed_edges'
     In an equation for function `stronglyConnComp':
 	`stronglyConnComp es vs
@@ -14,8 +13,8 @@ Digraph.hs:19: A type signature is more polymorphic than the inferred type
 			  where
 			      span_tree r (vs, ns) PrelBase.[] = (vs, (ns))
 			      span_tree r (vs, ns) (x PrelBase.: xs)
-					| [x PrelList.elem vs] = span_tree r (vs, (ns)) xs
-					| [PrelBase.otherwise]
+					| x PrelList.elem vs = span_tree r (vs, (ns)) xs
+					| PrelBase.otherwise
 					= span_tree r (vs', ((x PrelBase.: ns') PrelBase.: ns)) xs
 					where
 					    (vs', ns')
diff --git a/ghc/tests/typecheck/should_fail/Makefile b/ghc/tests/typecheck/should_fail/Makefile
index eb7ffddce92046c40ec711ab9709459f2ba4c2df..5e1414de0e3f034adfb3858e9344b54eb86c8fb6 100644
--- a/ghc/tests/typecheck/should_fail/Makefile
+++ b/ghc/tests/typecheck/should_fail/Makefile
@@ -1,26 +1,10 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/should_fail.mk
 
-HS_SRCS = $(wildcard *.hs)
-
-SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 1
 HC_OPTS += -noC -ddump-tc
 
-%.o : %.hs
-	$(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
-
-all :: $(HS_OBJS)
-
 tcfail045_HC_OPTS = -fglasgow-exts
-tcfail059_HC_OPTS = -hi		     
-tcfail060_HC_OPTS = -hi
-tcfail061_HC_OPTS = -hi
-tcfail062_HC_OPTS = -hi
-tcfail063_HC_OPTS = -hi
-tcfail064_HC_OPTS = -hi
-tcfail065_HC_OPTS = -hi
-tcfail066_HC_OPTS = -hi
-tcfail067_HC_OPTS = -hi
 tcfail068_HC_OPTS = -fglasgow-exts
 
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/typecheck/should_fail/tcfail001.stderr b/ghc/tests/typecheck/should_fail/tcfail001.stderr
index 1b5ad86cafc077ba48f805543b1e6157c514313d..56f538b0e2cbb73b501d73dffb67ba4f36e37d98 100644
--- a/ghc/tests/typecheck/should_fail/tcfail001.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail001.stderr
@@ -2,10 +2,7 @@
 tcfail001.hs:9:warning:
     Duplicated class assertion `A a' in context: `(A a, A a)'
  
-tcfail001.hs:9: Couldn't match the type
-		    `PrelBase.[]' against `GHC.-> [takw]'
-    Expected: `[takv]'
-    Inferred: `[takw] -> [takx]'
+tcfail001.hs:9: Function type expected, but found the type `[takz]'
     In an equation for function `op': `op PrelBase.[] = PrelBase.[]'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail002.stderr b/ghc/tests/typecheck/should_fail/tcfail002.stderr
index 390e47948e4f5ff5ae6f4670707e1183b46e6418..a9e6a95cbcd25ed7ba2bae60328e33a8b4afd7a0 100644
--- a/ghc/tests/typecheck/should_fail/tcfail002.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail002.stderr
@@ -1,8 +1,8 @@
  
 tcfail002.hs:4: Cannot construct the infinite type (occur check)
-		    `tak5' = `[tak5]'
-    Expected: `[tak5] -> tak5'
-    Inferred: `[tak5] -> [tak5]'
+		    `take' = `[take]'
+    Expected: `[take]'
+    Inferred: `take'
     In an equation for function `c': `c z = z'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail004.stderr b/ghc/tests/typecheck/should_fail/tcfail004.stderr
index a4f4e317c333bb8aab20825df9a57d1a93633587..80f2006944e0a22d87b4b664faae5eb3b43e08ba 100644
--- a/ghc/tests/typecheck/should_fail/tcfail004.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail004.stderr
@@ -1,8 +1,8 @@
  
 tcfail004.hs:3: Couldn't match the type
-		    `PrelTup.(,)' against `PrelTup.(,,) taRU'
-    Expected: `(taRO, taRR)'
-    Inferred: `(taRU, taRX, taS0)'
+		    `PrelTup.(,,) taS7' against `PrelTup.(,)'
+    Expected: `(taS7, taS9, taSb)'
+    Inferred: `(taS1, taS4)'
     In a pattern binding: `(f, g) = (1, 2, 3)'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail005.stderr b/ghc/tests/typecheck/should_fail/tcfail005.stderr
index 9d0fbc3b02857e1ea6109dd7542bcf6a815ede1b..bbadcad04b3b8e90a9310033a8e7da3735cf731d 100644
--- a/ghc/tests/typecheck/should_fail/tcfail005.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail005.stderr
@@ -1,8 +1,8 @@
  
 tcfail005.hs:3: Couldn't match the type
-		    `PrelBase.[]' against `PrelTup.(,) taR8'
-    Expected: `[taR4]'
-    Inferred: `(taR8, PrelBase.Char)'
+		    `PrelTup.(,) taRl' against `PrelBase.[]'
+    Expected: `(taRl, taRn)'
+    Inferred: `[taRh]'
     In a pattern binding: `(h PrelBase.: i) = (1, ('a'))'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail008.stderr b/ghc/tests/typecheck/should_fail/tcfail008.stderr
index 2ee93213d2ce026db38cdcd3e76b33c635cf9d20..f392870c3ddef5cfd1d02a835415a660cc3ee348 100644
--- a/ghc/tests/typecheck/should_fail/tcfail008.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail008.stderr
@@ -1,8 +1,8 @@
  
-tcfail008.hs:3: No instance for: `PrelBase.Num [taBA]'
+tcfail008.hs:3: No instance for: `PrelBase.Num [taBM]'
     arising from the literal 2 at tcfail008.hs:3
  
-tcfail008.hs:3: No instance for: `PrelBase.Num [taBA]'
+tcfail008.hs:3: No instance for: `PrelBase.Num [taBM]'
     arising from the literal 2 at tcfail008.hs:3
  
 tcfail008.hs:3: No instance for: `PrelBase.Num [PrelBase.Int]'
diff --git a/ghc/tests/typecheck/should_fail/tcfail009.stderr b/ghc/tests/typecheck/should_fail/tcfail009.stderr
index 8c62fbc85df4995d25af6a68857ca5d67e3e5dc7..1f4d4b21a25ab21b6b889ac5a426948ee2ee3aaa 100644
--- a/ghc/tests/typecheck/should_fail/tcfail009.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail009.stderr
@@ -1,10 +1,9 @@
  
 tcfail009.hs:3: Couldn't match the type
-		    `PrelBase.Integer' against `PrelBase.Int'
-    Expected: `PrelBase.Int'
-    Inferred: `PrelBase.Integer'
-    In an arithmetic sequence:
-	`[(1 :: PrelBase.Int) .. (2 :: PrelBase.Integer)]'
+		    `PrelBase.Int' against `PrelBase.Integer'
+    Expected: `PrelBase.Integer'
+    Inferred: `PrelBase.Int'
+    In an expression with a type signature: `2 :: PrelBase.Integer'
 
 
 Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail010.stderr b/ghc/tests/typecheck/should_fail/tcfail010.stderr
index 1e9fd848b4d1f666c6b2d0d756ae19d8f1f237ad..d7077403f56944e704f0ed35229c01d8293aa2b8 100644
--- a/ghc/tests/typecheck/should_fail/tcfail010.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail010.stderr
@@ -1,8 +1,8 @@
  
-tcfail010.hs:3: No instance for: `PrelBase.Num [taBD]'
+tcfail010.hs:3: No instance for: `PrelBase.Num [taBS]'
     arising from use of `PrelBase.+' at tcfail010.hs:3
  
-tcfail010.hs:3: No instance for: `PrelBase.Num [taBD]'
+tcfail010.hs:3: No instance for: `PrelBase.Num [taBS]'
     arising from use of `PrelBase.+' at tcfail010.hs:3
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail012.stderr b/ghc/tests/typecheck/should_fail/tcfail012.stderr
index aefe17e9c48add68ec6709852a4a2bea27762c69..a6a4f8bd6b477ebbbffa30a5fad9a8e83fc23033 100644
--- a/ghc/tests/typecheck/should_fail/tcfail012.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail012.stderr
@@ -1,8 +1,8 @@
  
 tcfail012.hs:3: Couldn't match the type
-		    `PrelBase.Bool' against `[tajU]'
-    Expected: `PrelBase.Bool'
-    Inferred: `[tajU]'
+		    `[tak1]' against `PrelBase.Bool'
+    Expected: `[tak1]'
+    Inferred: `PrelBase.Bool'
     In a pattern binding: `PrelBase.True = PrelBase.[]'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail013.stderr b/ghc/tests/typecheck/should_fail/tcfail013.stderr
index eaf06c15933774d5d5b6d0fa4e55f4fb7ced015c..2907a748872312fe1b2be0bc2daca4c99723463f 100644
--- a/ghc/tests/typecheck/should_fail/tcfail013.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail013.stderr
@@ -1,8 +1,8 @@
  
 tcfail013.hs:4: Couldn't match the type
-		    `[taBB]' against `PrelBase.Bool'
-    Expected: `[taBB] -> taBD'
-    Inferred: `PrelBase.Bool -> taBG'
+		    `[taBQ]' against `PrelBase.Bool'
+    Expected: `PrelBase.Bool'
+    Inferred: `[taBQ]'
     In an equation for function `f': `f PrelBase.True = 2'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail014.stderr b/ghc/tests/typecheck/should_fail/tcfail014.stderr
index be4ae1fc8e8dddb6337a6781604974bdf987c5c7..993aef6fd650550cdded284f2624aa1531dea4a6 100644
--- a/ghc/tests/typecheck/should_fail/tcfail014.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail014.stderr
@@ -1,17 +1,24 @@
  
 tcfail014.hs:5: Cannot construct the infinite type (occur check)
-		    `oaBR' = `oaBR -> oaCz'
-    Expected: `oaBR'
-    Inferred: `oaBR -> oaCz'
-    In the first argument of `z', namely `z'
+		    `oaCj' = `oaCj -> oaCi'
+    Expected: `oaCj -> oaCi'
+    Inferred: `oaCj'
     In an equation for function `h': `h z = z z'
     In an equation for function `g':
 	`g y
 	   = h PrelBase.+ 2
 	   where
 	       h z = z z'
+    In an equation for function `f':
+	`f x
+	   = g PrelBase.+ 1
+	   where
+	       g y
+		 = h PrelBase.+ 2
+		 where
+		     h z = z z'
  
-tcfail014.hs:5: No instance for: `PrelBase.Num (taCk -> taCl)'
+tcfail014.hs:5: No instance for: `PrelBase.Num (taCG -> taCI)'
     arising from use of `PrelBase.+' at tcfail014.hs:5
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail016.stderr b/ghc/tests/typecheck/should_fail/tcfail016.stderr
index a08f8a06027eb2a2217be6e05b890e6f46b410b0..196761a63afe315fee308367746828bf901585a5 100644
--- a/ghc/tests/typecheck/should_fail/tcfail016.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail016.stderr
@@ -1,10 +1,8 @@
  
 tcfail016.hs:9: Couldn't match the type
-		    `PrelTup.(,) taRi' against `Expr'
-    Expected: `Expr taRd'
-    Inferred: `AnnExpr taRi'
-    In the first argument of `g', namely `e1'
-    In the first argument of `PrelBase.++', namely `(g e1)'
+		    `Expr' against `PrelTup.(,) taRx'
+    Expected: `AnnExpr taRx'
+    Inferred: `Expr taRx'
     In an equation for function `g':
 	`g (App e1 e2) = (g e1) PrelBase.++ (g e2)'
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail017.stderr b/ghc/tests/typecheck/should_fail/tcfail017.stderr
index be53d896817b23f8dc85343ef22724e8d67847f6..3e61ca5d7780b7fa38cc7cfd851041d405554d76 100644
--- a/ghc/tests/typecheck/should_fail/tcfail017.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail017.stderr
@@ -1,5 +1,5 @@
  
-tcfail017.hs:11: No instance for: `C [takz]'
+tcfail017.hs:11: No instance for: `C [takH]'
     arising from an instance declaration at tcfail017.hs:11
     When checking superclass constraints of an instance declaration
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail018.stderr b/ghc/tests/typecheck/should_fail/tcfail018.stderr
index 987eb45ac6ac7418175e3543ae3e99e46f7e46e3..bbfa188006f448a5d57cf96248016948e1f07fa4 100644
--- a/ghc/tests/typecheck/should_fail/tcfail018.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail018.stderr
@@ -1,8 +1,8 @@
  
-tcfail018.hs:5: No instance for: `PrelBase.Num [taBB]'
+tcfail018.hs:5: No instance for: `PrelBase.Num [taBO]'
     arising from the literal 1 at tcfail018.hs:5
  
-tcfail018.hs:5: No instance for: `PrelBase.Num [taBB]'
+tcfail018.hs:5: No instance for: `PrelBase.Num [taBO]'
     arising from the literal 1 at tcfail018.hs:5
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail019.stderr b/ghc/tests/typecheck/should_fail/tcfail019.stderr
index a5da89faf0ac61a5eec9b62bcff5c65bdcf2cb29..5862a64f3856be67c7e501fb933e14286e0fdb03 100644
--- a/ghc/tests/typecheck/should_fail/tcfail019.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail019.stderr
@@ -1,17 +1,17 @@
  
-tcfail019.hs:20: No instance for: `B [tal6]'
+tcfail019.hs:20: No instance for: `B [tale]'
     arising from an instance declaration at tcfail019.hs:20
     When checking methods of an instance declaration
  
-tcfail019.hs:20: No instance for: `C [tal6]'
+tcfail019.hs:20: No instance for: `C [tale]'
     arising from an instance declaration at tcfail019.hs:20
     When checking methods of an instance declaration
  
-tcfail019.hs:20: No instance for: `B [tal6]'
+tcfail019.hs:20: No instance for: `B [tale]'
     arising from an instance declaration at tcfail019.hs:20
     When checking superclass constraints of an instance declaration
  
-tcfail019.hs:20: No instance for: `C [tal6]'
+tcfail019.hs:20: No instance for: `C [tale]'
     arising from an instance declaration at tcfail019.hs:20
     When checking superclass constraints of an instance declaration
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail020.stderr b/ghc/tests/typecheck/should_fail/tcfail020.stderr
index ac622837bb54ca798305fa6ebc4c2a9db482886c..d6c26e41cf75af515119d41ce0b146dc768bea83 100644
--- a/ghc/tests/typecheck/should_fail/tcfail020.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail020.stderr
@@ -1,5 +1,5 @@
  
-tcfail020.hs:12: No instance for: `A [taBn]'
+tcfail020.hs:12: No instance for: `A [taBD]'
     arising from an instance declaration at tcfail020.hs:12
     When checking superclass constraints of an instance declaration
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail021.stderr b/ghc/tests/typecheck/should_fail/tcfail021.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..08702aad64a90083383f6666517570eb43ac2fca
--- /dev/null
+++ b/ghc/tests/typecheck/should_fail/tcfail021.stderr
@@ -0,0 +1,7 @@
+ 
+tcfail021.hs:8:
+    Can't handle multiple methods defined by one pattern binding
+	`(==, /=) = (\ x -> \ y -> True, (\ x -> \ y -> False))'
+
+
+Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail023.stderr b/ghc/tests/typecheck/should_fail/tcfail023.stderr
index f17c04ff6ea985d884301647cd63f15dae2d0640..3b73a642e6ea682635d8a9a526c25c770210a680 100644
--- a/ghc/tests/typecheck/should_fail/tcfail023.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail023.stderr
@@ -3,14 +3,14 @@ tcfail023.hs:2: Duplicate or overlapping instance declarations
     for `A B' at tcfail023.hs:8 and tcfail023.hs:11
  
 tcfail023.hs:11: Couldn't match the type
-		     `B' against `PrelBase.Bool'
-    Expected: `B'
-    Inferred: `PrelBase.Bool'
+		     `PrelBase.Bool' against `B'
+    Expected: `PrelBase.Bool'
+    Inferred: `B'
     In an equation for function `op': `op C = PrelBase.True'
  
-tcfail023.hs:8: Couldn't match the type `B' against `PrelBase.Bool'
-    Expected: `B'
-    Inferred: `PrelBase.Bool'
+tcfail023.hs:8: Couldn't match the type `PrelBase.Bool' against `B'
+    Expected: `PrelBase.Bool'
+    Inferred: `B'
     In an equation for function `op': `op C = PrelBase.True'
  
 tcfail023.hs:2: Module Main must include a definition for `Main.main'
diff --git a/ghc/tests/typecheck/should_fail/tcfail028.stderr b/ghc/tests/typecheck/should_fail/tcfail028.stderr
index b41cd3692ac559c503d23e5e6e78cf39b54b39fd..a58a80d65a42c83e92f798ea78cd04879f23ecd7 100644
--- a/ghc/tests/typecheck/should_fail/tcfail028.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail028.stderr
@@ -1,6 +1,6 @@
  
-tcfail028.hs:4: Couldn't match the kind `ka2534 -> *' against `*'
-    When unifying two kinds `ka2534 -> *' and `*'
+tcfail028.hs:4: Couldn't match the kind `ka2551 -> *' against `*'
+    When unifying two kinds `ka2551 -> *' and `*'
     In the data declaration for `A'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail031.stderr b/ghc/tests/typecheck/should_fail/tcfail031.stderr
index bcc5bde8b5419b410bd49d86f4fd1d95cf171097..2f528f6ef4ad5a3022d8d31a6f4f41bd85bdb34d 100644
--- a/ghc/tests/typecheck/should_fail/tcfail031.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail031.stderr
@@ -1,8 +1,8 @@
  
 tcfail031.hs:3: Couldn't match the type
-		    `PrelBase.Bool' against `PrelBase.Char'
-    Expected: `PrelBase.Bool'
-    Inferred: `PrelBase.Char'
+		    `PrelBase.Char' against `PrelBase.Bool'
+    Expected: `PrelBase.Char'
+    Inferred: `PrelBase.Bool'
     In the predicate expression `'a''
     In an equation for function `f': `f x = if 'a' then 1 else 2'
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail032.stderr b/ghc/tests/typecheck/should_fail/tcfail032.stderr
index c947b0bdfb0f50abc5ae6f048edacbcd011ded3d..3048623928e340a6b562dc3370182fb68b5390be 100644
--- a/ghc/tests/typecheck/should_fail/tcfail032.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail032.stderr
@@ -1,8 +1,7 @@
  
 tcfail032.hs:14: A type signature is more polymorphic than the inferred type
-		     Some type variables in the inferred type can't be forall'd, namely:
-		     `taAx'
-		     Possible cause: the RHS mentions something subject to the monomorphism restriction
+		     Can't for-all the type variable(s) `taAO'
+		     in the inferred type `taAO -> PrelBase.Int'
     In an expression with a type signature:
 	`x :: _forall_ [a] (PrelBase.Eq a) => a -> PrelBase.Int'
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail033.stderr b/ghc/tests/typecheck/should_fail/tcfail033.stderr
index 68a79648192cde2bdc1a22cd3fcc59052a629def..4e664ee139a51797646d9e39e4edb32d98e3deb3 100644
--- a/ghc/tests/typecheck/should_fail/tcfail033.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail033.stderr
@@ -1,9 +1,9 @@
  
 tcfail033.hs:4: Cannot construct the infinite type (occur check)
-		    `taGt' = `(taGt, taGw)'
-    Expected: `aaGy (taGt, taGw)'
-    Inferred: `aaGy taGt'
-    In a pattern binding: `buglet = [ x | (x, y) <- buglet ]'
+		    `taGA' = `(taGA, taGD)'
+    Expected: `aaGF taGA'
+    Inferred: `aaGF (taGA, taGD)'
+    In a pattern binding: `buglet = [x | (x, y) <- buglet]'
 
 
 Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail034.stderr b/ghc/tests/typecheck/should_fail/tcfail034.stderr
index 48b168a2961212ad1f7866eee3f955c448330165..783c4d6fd0393d315d0eeb8e715c91ab595b68e1 100644
--- a/ghc/tests/typecheck/should_fail/tcfail034.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail034.stderr
@@ -1,7 +1,7 @@
  
-tcfail034.hs:13: Context `{PrelNum.Integral taTL}'
+tcfail034.hs:13: Context `{PrelNum.Integral taTY}'
 		     required by inferred type, but missing on a type signature
-		     `PrelNum.Integral' `taTL' arising from use of `PrelNum.mod' at tcfail034.hs:17
+		     `PrelNum.Integral taTY' arising from use of `PrelNum.mod' at tcfail034.hs:17
     When checking signature(s) for: `test'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail040.stderr b/ghc/tests/typecheck/should_fail/tcfail040.stderr
index b3fe51821eaeeee96da9e5a4fa28cc45713880d2..4ca6097455482c327e178f94a12765ba197fa239 100644
--- a/ghc/tests/typecheck/should_fail/tcfail040.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail040.stderr
@@ -1,6 +1,6 @@
  
-tcfail040.hs:3: Ambiguous context `{ORD taBu}'
-		    `ORD' `taBu' arising from use of `<<' at tcfail040.hs:19
+tcfail040.hs:3: Ambiguous context `{ORD taBH}'
+		    `ORD taBH' arising from use of `<<' at tcfail040.hs:19
 
 
 Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail042.stderr b/ghc/tests/typecheck/should_fail/tcfail042.stderr
index 2f0c83713928043e0158082118d46beab1bac714..d7de5bd9d7aa939f2639b9f47c9c2a422b661684 100644
--- a/ghc/tests/typecheck/should_fail/tcfail042.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail042.stderr
@@ -1,7 +1,7 @@
  
-tcfail042.hs:16: Context `{PrelBase.Num taHh}'
+tcfail042.hs:16: Context `{PrelBase.Num taHz}'
 		     required by inferred type, but missing on a type signature
-		     `PrelBase.Num' `taHh' arising from an instance declaration at tcfail042.hs:16
+		     `PrelBase.Num taHz' arising from an instance declaration at tcfail042.hs:16
     When checking superclass constraints of an instance declaration
  
 tcfail042.hs:4: Module Main must include a definition for `Main.main'
diff --git a/ghc/tests/typecheck/should_fail/tcfail044.stderr b/ghc/tests/typecheck/should_fail/tcfail044.stderr
index 018a55a15df497eb4a3cfa95b24276e8a668ee88..697130889f9c0b1067fd6f72869242a9a1daaeb4 100644
--- a/ghc/tests/typecheck/should_fail/tcfail044.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail044.stderr
@@ -1,12 +1,14 @@
  
-tcfail044.hs:12: The type `a
-			   -> a' cannot be used as an instance type
+tcfail044.hs:12: The type
+		     `a -> a'
+		 cannot be used as an instance type
  
-tcfail044.hs:5: The type `a
-			  -> a' cannot be used as an instance type
+tcfail044.hs:5: The type
+		    `a -> a'
+		cannot be used as an instance type
  
-tcfail044.hs:20: No instance for:
-		     `PrelBase.Num (PrelBase.Float -> PrelBase.Float)'
+tcfail044.hs:20: No instance for: `PrelBase.Num (PrelBase.Float
+						 -> PrelBase.Float)'
     arising from use of `PrelBase.+' at tcfail044.hs:20
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail046.stderr b/ghc/tests/typecheck/should_fail/tcfail046.stderr
index f83ce4321d4903e6e03f5026a7e5b1f23b8986fb..1d2c87dde185f8764a968b3c31c220a9428eecf1 100644
--- a/ghc/tests/typecheck/should_fail/tcfail046.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail046.stderr
@@ -1,30 +1,18 @@
  
-tcfail046.hs:4: No instance for class
-		`PrelBase.Eq'
-		at type
-		`Process a'
+tcfail046.hs:4: No instance for `PrelBase.Eq Process a'
  
-tcfail046.hs:4: No instance for class
-		`PrelBase.Eq'
-		at type
-		`Process a'
+tcfail046.hs:4: No instance for `PrelBase.Eq Process a'
  
-tcfail046.hs:4: No instance for class
-		`PrelBase.Eq'
-		at type
-		`Process a'
+tcfail046.hs:4: No instance for `PrelBase.Eq Process a'
  
-tcfail046.hs:4: No instance for class
-		`PrelBase.Eq'
-		at type
-		`Process a'
+tcfail046.hs:4: No instance for `PrelBase.Eq Process a'
  
-tcfail046.hs:23: No instance for: `PrelBase.Eq (Process taVO)'
-    arising from use of `PrelBase.==' at tcfail046.hs:23
+tcfail046.hs:15: No instance for: `PrelBase.Eq (Process taW3)'
+    arising from use of `PrelBase.==' at tcfail046.hs:15
     When checking methods of an instance declaration
  
-tcfail046.hs:15: No instance for: `PrelBase.Eq (Process taZ8)'
-    arising from use of `PrelBase.==' at tcfail046.hs:15
+tcfail046.hs:23: No instance for: `PrelBase.Eq (Process taXh)'
+    arising from use of `PrelBase.==' at tcfail046.hs:23
     When checking methods of an instance declaration
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail047.stderr b/ghc/tests/typecheck/should_fail/tcfail047.stderr
index 6df94a6b5ec86b49b22abab576bc304137a0fdf2..0e001d3d43f91d3bb196be783c8fcb9ce9bd4f43 100644
--- a/ghc/tests/typecheck/should_fail/tcfail047.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail047.stderr
@@ -1,5 +1,7 @@
  
-tcfail047.hs:6: The type `(a, (b, c))' cannot be used as an instance type
+tcfail047.hs:6: The type
+		    `(a, (b, c))'
+		cannot be used as an instance type
  
 tcfail047.hs:2: Module Main must include a definition for `Main.main'
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail055.stderr b/ghc/tests/typecheck/should_fail/tcfail055.stderr
index 8070c1793781762cfcab32a6541939a0b2069773..85c3b770823706623741c8ff0fd97eec50924aea 100644
--- a/ghc/tests/typecheck/should_fail/tcfail055.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail055.stderr
@@ -1,10 +1,10 @@
  
 tcfail055.hs:3: Couldn't match the type
-		    `PrelBase.Int' against `PrelBase.Float'
-    Expected: `PrelBase.Float'
-    Inferred: `PrelBase.Int'
+		    `PrelBase.Float' against `PrelBase.Int'
+    Expected: `PrelBase.Int'
+    Inferred: `PrelBase.Float'
     In an expression with a type signature:
-	`(x PrelBase.+ 1 :: PrelBase.Int) :: PrelBase.Float'
+	`x PrelBase.+ 1 :: PrelBase.Int'
 
 
 Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail065.stderr b/ghc/tests/typecheck/should_fail/tcfail065.stderr
index 83fb883a6d165f52b7e5f7e089f5b8b2ea909835..11687086f4b63aa7b798ea6c55ece268c33f55f8 100644
--- a/ghc/tests/typecheck/should_fail/tcfail065.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail065.stderr
@@ -1,8 +1,7 @@
  
-<NoSrcLoc>: A type signature is more polymorphic than the inferred type
-		Some type variables in the inferred type can't be forall'd, namely:
-		`taHR'
-		Possible cause: the RHS mentions something subject to the monomorphism restriction
+tcfail065.hs:29: A type signature is more polymorphic than the inferred type
+		     Can't for-all the type variable(s) `taI7'
+		     in the inferred type `taI7 -> X taI7 -> X taI7'
     When checking signature for `setX'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail067.stderr b/ghc/tests/typecheck/should_fail/tcfail067.stderr
index 392680b3e91cb631758062acb0853723ad4d820c..9e754a284e72f69a000bf3987d5e14e1d4155fd6 100644
--- a/ghc/tests/typecheck/should_fail/tcfail067.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail067.stderr
@@ -1,12 +1,12 @@
  
-tcfail067.hs:1: Context `{PrelBase.Ord ta17k}'
+tcfail067.hs:1: Context `{PrelBase.Ord ta179}'
 		    required by inferred type, but missing on a type signature
-		    `PrelBase.Ord' `ta17k' arising from use of `SubRange' at tcfail067.hs:76
+		    `PrelBase.Ord ta179' arising from use of `SubRange' at tcfail067.hs:76
     When checking signature(s) for: `numSubRangeBinOp'
  
-tcfail067.hs:65: Context `{PrelBase.Ord ta18S}'
+tcfail067.hs:65: Context `{PrelBase.Ord ta18O}'
 		     required by inferred type, but missing on a type signature
-		     `PrelBase.Ord' `ta18S' arising from use of `numSubRangeNegate' at tcfail067.hs:61
+		     `PrelBase.Ord ta18O' arising from use of `numSubRangeNegate' at tcfail067.hs:61
     When checking methods of an instance declaration
  
 tcfail067.hs:65: No explicit method nor default method for `PrelBase.abs'
diff --git a/ghc/tests/typecheck/should_fail/tcfail069.stderr b/ghc/tests/typecheck/should_fail/tcfail069.stderr
index 52f3ae9cb8cf5e183235cf02f1092c6b5feb9fed..03413b859704c71b01ff6d4e8256a4a1b4398756 100644
--- a/ghc/tests/typecheck/should_fail/tcfail069.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail069.stderr
@@ -1,7 +1,7 @@
  
 tcfail069.hs:21: Couldn't match the type
-		     `PrelBase.[]' against `PrelTup.(,) [PrelBase.Int]'
-    Expected: `[taCf]'
+		     `PrelTup.(,) taCl' against `PrelBase.[]'
+    Expected: `[taCp]'
     Inferred: `([PrelBase.Int], [PrelBase.Int])'
     In a "case" branch: `PrelBase.[]' -> `IOBase.error "foo"'
     In the case expression
diff --git a/ghc/tests/typecheck/should_fail/tcfail070.stderr b/ghc/tests/typecheck/should_fail/tcfail070.stderr
index 010e65340aab23d79a2df91f77ed82eb9441e585..708335636f9d6863afaff437ab9f47ea5e02e89b 100644
--- a/ghc/tests/typecheck/should_fail/tcfail070.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail070.stderr
@@ -1,6 +1,6 @@
  
-tcfail070.hs:13: Couldn't match the kind `*' against `* -> ka1921'
-    When unifying two kinds `*' and `* -> ka1921'
+tcfail070.hs:13: Couldn't match the kind `*' against `* -> ka1932'
+    When unifying two kinds `*' and `* -> ka1932'
     In the type declaration for `State'
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail071.stderr b/ghc/tests/typecheck/should_fail/tcfail071.stderr
index c6067c2ba630d57901f28495329939af888cb25b..afc1de8010cce6e0054abf19b5fda6fef09be63b 100644
--- a/ghc/tests/typecheck/should_fail/tcfail071.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail071.stderr
@@ -1,9 +1,10 @@
  
 tcfail071.hs:10: Couldn't match the signature/existential type variable
-		     `taCF' with the type `taCR -> taCS -> taCS'
-    Expected: `taCR -> taCS -> taCS'
-    Inferred: `taCF'
-    In the first argument of `PrelBase.foldr', namely `(f c)'
+		     `taCS' with the type `taD6 -> taD3 -> taD3'
+    Expected: `taCS'
+    Inferred: `taD6 -> taD3 -> taD3'
+    In a pattern binding:
+	`p = PrelBase.foldr (f c) PrelBase.[] PrelBase.[]'
     In an equation for function `g':
 	`g c
 	   = c
diff --git a/ghc/tests/typecheck/should_fail/tcfail072.stderr b/ghc/tests/typecheck/should_fail/tcfail072.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..0b9ed10491288238dd5531474bcc68e873c1e97a
--- /dev/null
+++ b/ghc/tests/typecheck/should_fail/tcfail072.stderr
@@ -0,0 +1,7 @@
+ 
+tcfail072.hs:17: Ambiguous context `{PrelBase.Ord taDf}'
+		     `PrelBase.Ord taDf' arising from use of `g' at tcfail072.hs:23
+    When checking signature(s) for: `g'
+
+
+Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail073.stderr b/ghc/tests/typecheck/should_fail/tcfail073.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..b2a9cb740110afbd215f0b28de76ea82064e58d3
--- /dev/null
+++ b/ghc/tests/typecheck/should_fail/tcfail073.stderr
@@ -0,0 +1,11 @@
+ 
+tcfail073.hs:3: Duplicate or overlapping instance declarations
+    for `PrelBase.Eq (a, b)' at tcfail073.hs:8 and <NoSrcLoc>
+ 
+tcfail073.hs:8: Context `{PrelBase.Eq taQT}'
+		    required by inferred type, but missing on a type signature
+		    `PrelBase.Eq taQT' arising from use of `PrelBase.==' at tcfail073.hs:8
+    When checking methods of an instance declaration
+
+
+Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail074.stderr b/ghc/tests/typecheck/should_fail/tcfail074.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..8c0740d6f22ca480ff2eb2339be177eaa5828ec0
--- /dev/null
+++ b/ghc/tests/typecheck/should_fail/tcfail074.stderr
@@ -0,0 +1,8 @@
+ 
+tcfail074.hs:7:
+    Conflicting definitions for: `main'
+	Defined at tcfail074.hs:8
+	Defined at tcfail074.hs:7
+
+
+Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail075.stderr b/ghc/tests/typecheck/should_fail/tcfail075.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..986d5d7c87d5a1d6631f8e16a12e28105cfe6655
--- /dev/null
+++ b/ghc/tests/typecheck/should_fail/tcfail075.stderr
@@ -0,0 +1 @@
+tcfail075.hs:9:1: parse error on input: "y"
diff --git a/ghc/tests/typecheck/should_fail/tcfail076.stderr b/ghc/tests/typecheck/should_fail/tcfail076.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..c10f44b0388fe356ea76b32a0bda242a5abf7a71
--- /dev/null
+++ b/ghc/tests/typecheck/should_fail/tcfail076.stderr
@@ -0,0 +1,12 @@
+ 
+tcfail076.hs:21: A type signature is more polymorphic than the inferred type
+		     Can't for-all the type variable(s) `taCc'
+		     in the inferred type `(taC2 -> aaC1 taCc) -> aaC1 taCc'
+    In a polymorphic function argument `(\ cont' -> cont a)'
+    In an equation for function `callcc':
+	`callcc f
+		= KContT (\ cont
+			    -> unKContT (f (\ a -> KContT (\ cont' -> cont a))) cont)'
+
+
+Compilation had errors
diff --git a/ghc/tests/typecheck/should_run/Makefile b/ghc/tests/typecheck/should_run/Makefile
index d012c9db08ba66e42eef4b65aa3d95f6d797af5f..065ce3201f380e0772dce13a931406ea308bd80d 100644
--- a/ghc/tests/typecheck/should_run/Makefile
+++ b/ghc/tests/typecheck/should_run/Makefile
@@ -1,4 +1,4 @@
-TOP = ../../../..
+TOP = ../..
 include $(TOP)/mk/boilerplate.mk
 
 HS_SRCS = $(wildcard *.hs)
@@ -9,7 +9,7 @@ HC_OPTS += -noC -dcore-lint
 
 all :: $(BINS)
 
-%.o : %
+% : %.o
 	$(HC) $(HC_OPTS) $< -o $@
 
 
diff --git a/ghc/tests/typecheck/should_run/tcrun001.hs b/ghc/tests/typecheck/should_run/tcrun001.hs
deleted file mode 100644
index 00b4945e036c77121ddf73d0261d5f1814e2422e..0000000000000000000000000000000000000000
--- a/ghc/tests/typecheck/should_run/tcrun001.hs
+++ /dev/null
@@ -1,16 +0,0 @@
---!! Test for (->) instances
-
-module Main where
-
-class Flob k where
-  twice :: k a a  -> k a a
-
-instance Flob (->) where
-  twice f = f . f
-
-inc :: Int -> Int
-inc x = x+1
-
-main = print (twice inc 2)
-
-