External Core parser bug

Kirsten Chevalier krc at uclink.berkeley.edu
Tue Jan 7 15:26:49 EST 2003


The attached file was generated by running 'ghc -fext-core' on the Atom
benchmark from the spectral section of the nofib suite, but if I try to
read it back into GHC 5.04.1, I get the following error:

2882: Parse error
:-2::GHCziPrim.Floatzh))
    (GHCziBase.zdwZC @ GHCziFloat.Float
     (GHCziFloat.zdwFzh (1.0::GHCziP

-- 
Kirsten Chevalier * krc at uclink.berkeley.edu * Often in error, never in doubt
-------------- next part --------------
%module Atom
  %data Atom.AtomState =
    {Atom.State (GHCziBase.ZMZN GHCziFloat.Float)
		(GHCziBase.ZMZN GHCziFloat.Float)};
  %data Atom.ZCTEnum a =
    {Atom.ZCDEnum (GHCziPrim.ZLzmzgZR a a)
		  (GHCziPrim.ZLzmzgZR a a)
		  (GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		  (GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		  (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))))};
  %data Atom.ZCTBounded a =
    {Atom.ZCDBounded a a};
  Atom.zizt :: %forall a . GHCziPrim.ZLzmzgZR
			   (GHCziNum.ZCTNum a)
			   (GHCziPrim.ZLzmzgZR
			    a
			    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
    \ @ a
      (zddNum::GHCziNum.ZCTNum a)
      (eta::a)
      (eta1::GHCziBase.ZMZN a) ->
	%let %rec
	     {zizt1 :: GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
		\ (c::a) (ds::GHCziBase.ZMZN a) ->
		    %case ds %of (wild::GHCziBase.ZMZN a)
		      {GHCziBase.ZC (f::a) (fs::GHCziBase.ZMZN a) ->
			 GHCziBase.zdwZC @ a
			 (%case zddNum %of (tpl::GHCziNum.ZCTNum a)
			    {GHCziNum.ZCDNum
			     (tpl1::GHCziBase.ZCTEq a)
			     (tpl2::GHCziShow.ZCTShow a)
			     (tpl3::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			     (tpl4::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			     (tpl5::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			     (tpl6::GHCziPrim.ZLzmzgZR a a)
			     (tpl7::GHCziPrim.ZLzmzgZR a a)
			     (tpl8::GHCziPrim.ZLzmzgZR a a)
			     (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer a) ->
			       tpl4 c f})
			 (zizt1 c fs);
		       GHCziBase.ZMZN ->
			 GHCziBase.zdwZMZN @ a}}
	%in zizt1 eta eta1;
  Atom.null :: %forall a . GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZMZN a)
			   GHCziBase.Bool =
    \ @ a (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (ds1::a) (ds2::GHCziBase.ZMZN a) ->
	     GHCziBase.zdwFalse;
	   GHCziBase.ZMZN ->
	     GHCziBase.zdwTrue};
  Atom.length :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN a)
			     GHCziBase.Int =
    \ @ a (l::GHCziBase.ZMZN a) ->
	%let %rec
	     {len :: %forall a1 . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN a1)
				  (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh GHCziBase.Int) =
		\ @ a1 (ds::GHCziBase.ZMZN a1) (azh::GHCziPrim.Intzh) ->
		    %case ds %of (wild::GHCziBase.ZMZN a1)
		      {GHCziBase.ZC (ds1::a1) (xs::GHCziBase.ZMZN a1) ->
			 len @ a1 xs (GHCziPrim.zpzh azh (1::GHCziPrim.Intzh));
		       GHCziBase.ZMZN ->
			 GHCziBase.zdwIzh azh}}
	%in len @ a l (0::GHCziPrim.Intzh);
  Atom.filterList :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a
      (pred1::GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
      (xs::GHCziBase.ZMZN a) ->
	GHCziBase.foldr @ a @ (GHCziBase.ZMZN a)
	(\ (x::a) (rest::GHCziBase.ZMZN a) ->
	     %case (pred1 x) %of (wild::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziBase.zdwZC @ a x rest;
		GHCziBase.False ->
		  rest})
	(GHCziBase.zdwZMZN @ a) xs;
  Atom.filter :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			     (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a -> Atom.filterList @ a;
  Atom.foldl :: %forall a b . GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b a))
			      (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN b) a)) =
    \ @ a
      @ b
      (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b a))
      (zz::a)
      (xs::GHCziBase.ZMZN b) ->
	%let %rec
	     {lgo :: GHCziPrim.ZLzmzgZR
		     a
		     (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN b) a) =
		\ (zz1::a) (ds::GHCziBase.ZMZN b) ->
		    %case ds %of (wild::GHCziBase.ZMZN b)
		      {GHCziBase.ZC (x::b) (xs1::GHCziBase.ZMZN b) ->
			 lgo (f zz1 x) xs1;
		       GHCziBase.ZMZN ->
			 zz1}}
	%in lgo zz xs;
  %rec
  {Atom.scanl :: %forall a b . GHCziPrim.ZLzmzgZR
			       (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b a))
			       (GHCziPrim.ZLzmzgZR
				a
				(GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN b) (GHCziBase.ZMZN a))) =
     \ @ a
       @ b
       (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b a))
       (q::a)
       (ls::GHCziBase.ZMZN b) ->
	 GHCziBase.zdwZC @ a q
	 (%case ls %of (wild::GHCziBase.ZMZN b)
	    {GHCziBase.ZC (x::b) (xs::GHCziBase.ZMZN b) ->
	       Atom.scanl @ a @ b f (f q x) xs;
	     GHCziBase.ZMZN ->
	       GHCziBase.zdwZMZN @ a})};
  Atom.scanl1 :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			     (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a
      (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
      (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
	     Atom.scanl @ a @ a f x xs;
	   GHCziBase.ZMZN ->
	     GHCziBase.zdwZMZN @ a};
  %rec
  {Atom.scanr :: %forall a b . GHCziPrim.ZLzmzgZR
			       (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b b))
			       (GHCziPrim.ZLzmzgZR
				b
				(GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN b))) =
     \ @ a
       @ b
       (ds::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b b))
       (q0::b)
       (ds1::GHCziBase.ZMZN a) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
	      %let ds2 :: DataziTuple.Z2T (GHCziBase.ZMZN b) b =
		     %case (Atom.scanr @ a @ b ds q0 xs) %of (wild1::GHCziBase.ZMZN b)
		       {GHCziBase.ZMZN ->
			  GHCziErr.irrefutPatError @ (DataziTuple.Z2T (GHCziBase.ZMZN b) b)
			  ("AtomwithPrelude.hs:346|(qs@(q GHC.Base.: _))"::GHCziPrim.Addrzh);
			GHCziBase.ZC (q::b) (ds3::GHCziBase.ZMZN b) ->
			  DataziTuple.zdwZ2T @ (GHCziBase.ZMZN b) @ b wild1 q}
	      %in GHCziBase.zdwZC @ b
		  (ds x
		   (%case ds2 %of (ds3::DataziTuple.Z2T (GHCziBase.ZMZN b) b)
		      {DataziTuple.Z2T (qs::GHCziBase.ZMZN b) (q::b) ->
			 q}))
		  (%case ds2 %of (ds3::DataziTuple.Z2T (GHCziBase.ZMZN b) b)
		     {DataziTuple.Z2T (qs::GHCziBase.ZMZN b) (q::b) ->
			qs});
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZC @ b q0 (GHCziBase.zdwZMZN @ b)}};
  %rec
  {Atom.scanr1 :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
     \ @ a
       (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
       (ds::GHCziBase.ZMZN a) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (ds1::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
		   %let ds2 :: DataziTuple.Z2T (GHCziBase.ZMZN a) a =
			  %case (Atom.scanr1 @ a f wild1) %of (wild2::GHCziBase.ZMZN a)
			    {GHCziBase.ZMZN ->
			       GHCziErr.irrefutPatError @ (DataziTuple.Z2T (GHCziBase.ZMZN a) a)
			       ("AtomwithPrelude.hs:352|(qs@(q GHC.Base.: _))"::GHCziPrim.Addrzh);
			     GHCziBase.ZC (q::a) (ds3::GHCziBase.ZMZN a) ->
			       DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ a wild2 q}
		   %in GHCziBase.zdwZC @ a
		       (f x
			(%case ds2 %of (ds3::DataziTuple.Z2T (GHCziBase.ZMZN a) a)
			   {DataziTuple.Z2T (qs::GHCziBase.ZMZN a) (q::a) ->
			      q}))
		       (%case ds2 %of (ds3::DataziTuple.Z2T (GHCziBase.ZMZN a) a)
			  {DataziTuple.Z2T (qs::GHCziBase.ZMZN a) (q::a) ->
			     qs});
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZC @ a x (GHCziBase.zdwZMZN @ a)};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  Atom.iterateFB :: %forall t t1 . GHCziPrim.ZLzmzgZR
				   (GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t t))
				   (GHCziPrim.ZLzmzgZR
				    (GHCziPrim.ZLzmzgZR t1 t1)
				    (GHCziPrim.ZLzmzgZR t1 t)) =
    \ @ t @ t1 ->
	%let %rec
	     {iterateFB1 :: GHCziPrim.ZLzmzgZR
			    (GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t t))
			    (GHCziPrim.ZLzmzgZR
			     (GHCziPrim.ZLzmzgZR t1 t1)
			     (GHCziPrim.ZLzmzgZR t1 t)) =
		\ (c::GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t t))
		  (f::GHCziPrim.ZLzmzgZR t1 t1)
		  (x::t1) ->
		    c x (iterateFB1 c f (f x))}
	%in iterateFB1;
  Atom.iterateList :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziPrim.ZLzmzgZR a a)
				  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
    \ @ a ->
	%let %rec
	     {iterateList1 :: GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a a)
			      (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
		\ (f::GHCziPrim.ZLzmzgZR a a) (x::a) ->
		    GHCziBase.zdwZC @ a x (iterateList1 f (f x))}
	%in iterateList1;
  Atom.iterate :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a a)
			      (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
    \ @ a -> Atom.iterateList @ a;
  Atom.repeatList :: %forall a . GHCziPrim.ZLzmzgZR
				 a
				 (GHCziBase.ZMZN a) =
    \ @ a (x::a) ->
	%let %rec
	     {xs :: GHCziBase.ZMZN a = GHCziBase.zdwZC @ a x xs}
	%in xs;
  Atom.repeatFB :: %forall t t1 . GHCziPrim.ZLzmzgZR
				  (GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t t))
				  (GHCziPrim.ZLzmzgZR t1 t) =
    \ @ t
      @ t1
      (c::GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t t))
      (x::t1) ->
	%let %rec
	     {xs :: t = c x xs}
	%in xs;
  Atom.repeat :: %forall a . GHCziPrim.ZLzmzgZR
			     a
			     (GHCziBase.ZMZN a) =
    \ @ a -> Atom.repeatList @ a;
  %rec
  {Atom.takeWhile :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
     \ @ a
       (ds::GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
       (ds1::GHCziBase.ZMZN a) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
	      %case (ds x) %of (wild1::GHCziBase.Bool)
		{GHCziBase.True ->
		   GHCziBase.zdwZC @ a x (Atom.takeWhile @ a ds xs);
		 GHCziBase.False ->
		   GHCziBase.zdwZMZN @ a};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  %rec
  {Atom.dropWhile :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
     \ @ a
       (ds::GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
       (ds1::GHCziBase.ZMZN a) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (xszq::GHCziBase.ZMZN a) ->
	      %case (ds x) %of (wild1::GHCziBase.Bool)
		{GHCziBase.True ->
		   Atom.dropWhile @ a ds xszq;
		 GHCziBase.False ->
		   wild};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  %rec
  {Atom.span :: %forall a . GHCziPrim.ZLzmzgZR
			    (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			    (GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN a)
			     (DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
     \ @ a
       (ds::GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
       (xs::GHCziBase.ZMZN a) ->
	 %case xs %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (xszq::GHCziBase.ZMZN a) ->
	      %case (ds x) %of (wild1::GHCziBase.Bool)
		{GHCziBase.True ->
		   %let ds1 :: DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN a) =
			  Atom.span @ a ds xszq
		   %in DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
		       (GHCziBase.zdwZC @ a x
			(%case ds1
			 %of (wild2::DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))
			   {DataziTuple.Z2T (ys::GHCziBase.ZMZN a) (zzs::GHCziBase.ZMZN a) ->
			      ys}))
		       (%case ds1
			%of (wild2::DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))
			  {DataziTuple.Z2T (ys::GHCziBase.ZMZN a) (zzs::GHCziBase.ZMZN a) ->
			     zzs});
		 GHCziBase.False ->
		   DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
		   (GHCziBase.zdwZMZN @ a) wild};
	    GHCziBase.ZMZN ->
	      DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	      (GHCziBase.zdwZMZN @ a) (GHCziBase.zdwZMZN @ a)}};
  Atom.break :: %forall a . GHCziPrim.ZLzmzgZR
			    (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			    (GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN a)
			     (DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
    \ @ a (p::GHCziPrim.ZLzmzgZR a GHCziBase.Bool) ->
	Atom.span @ a
	(GHCziBase.zi @ GHCziBase.Bool @ GHCziBase.Bool @ a GHCziBase.not
	 p);
  Atom.lookup :: %forall a b . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZCTEq a)
			       (GHCziPrim.ZLzmzgZR
				a
				(GHCziPrim.ZLzmzgZR
				 (GHCziBase.ZMZN (DataziTuple.Z2T a b))
				 (DataziMaybe.Maybe b))) =
    \ @ a
      @ b
      (zddEq::GHCziBase.ZCTEq a)
      (eta::a)
      (eta1::GHCziBase.ZMZN (DataziTuple.Z2T a b)) ->
	%let %rec
	     {lookup1 :: GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR
			  (GHCziBase.ZMZN (DataziTuple.Z2T a b))
			  (DataziMaybe.Maybe b)) =
		\ (zukey::a) (ds::GHCziBase.ZMZN (DataziTuple.Z2T a b)) ->
		    %case ds %of (wild::GHCziBase.ZMZN (DataziTuple.Z2T a b))
		      {GHCziBase.ZC
		       (ds1::DataziTuple.Z2T a b)
		       (xys::GHCziBase.ZMZN (DataziTuple.Z2T a b)) ->
			 %case ds1 %of (wild1::DataziTuple.Z2T a b)
			   {DataziTuple.Z2T (x::a) (y::b) ->
			      %case zddEq %of (tpl::GHCziBase.ZCTEq a)
				{GHCziBase.ZCDEq
				 (tpl1::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
				 (tpl2::GHCziPrim.ZLzmzgZR
					a
					(GHCziPrim.ZLzmzgZR a GHCziBase.Bool)) ->
				   %case (tpl2 zukey x) %of (wild2::GHCziBase.Bool)
				     {GHCziBase.True ->
					DataziMaybe.zdwJust @ b y;
				      GHCziBase.False ->
					lookup1 zukey xys}}};
		       GHCziBase.ZMZN ->
			 DataziMaybe.zdwNothing @ b}}
	%in lookup1 eta eta1;
  Atom.foldr2 :: %forall a a1 t . GHCziPrim.ZLzmzgZR
				  (GHCziPrim.ZLzmzgZR
				   a
				   (GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR t t)))
				  (GHCziPrim.ZLzmzgZR
				   t
				   (GHCziPrim.ZLzmzgZR
				    (GHCziBase.ZMZN a)
				    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a1) t))) =
    \ @ a @ a1 @ t ->
	%let %rec
	     {foldr21 :: GHCziPrim.ZLzmzgZR
			 (GHCziPrim.ZLzmzgZR
			  a
			  (GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR t t)))
			 (GHCziPrim.ZLzmzgZR
			  t
			  (GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZMZN a)
			   (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a1) t))) =
		\ (zuk::GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR t t)))
		  (zz::t)
		  (ds::GHCziBase.ZMZN a)
		  (zuys::GHCziBase.ZMZN a1) ->
		    %case ds %of (wild::GHCziBase.ZMZN a)
		      {GHCziBase.ZC (a2::a) (a3::GHCziBase.ZMZN a) ->
			 %case zuys %of (wild1::GHCziBase.ZMZN a1)
			   {GHCziBase.ZC (a4::a1) (a5::GHCziBase.ZMZN a1) ->
			      zuk a2 a4 (foldr21 zuk zz a3 a5);
			    GHCziBase.ZMZN ->
			      zz};
		       GHCziBase.ZMZN ->
			 zz}}
	%in foldr21;
  Atom.foldr2zuleft :: %forall t a t1 t2 . GHCziPrim.ZLzmzgZR
					   (GHCziPrim.ZLzmzgZR
					    t1
					    (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR t2 t)))
					   (GHCziPrim.ZLzmzgZR
					    t
					    (GHCziPrim.ZLzmzgZR
					     t1
					     (GHCziPrim.ZLzmzgZR
					      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) t2)
					      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) t)))) =
    \ @ t
      @ a
      @ t1
      @ t2
      (zuk::GHCziPrim.ZLzmzgZR
	    t1
	    (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR t2 t)))
      (zz::t)
      (zux::t1)
      (zur::GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) t2)
      (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (y::a) (ys::GHCziBase.ZMZN a) ->
	     zuk zux y (zur ys);
	   GHCziBase.ZMZN ->
	     zz};
  Atom.foldr2zuright :: %forall t a t1 t2 . GHCziPrim.ZLzmzgZR
					    (GHCziPrim.ZLzmzgZR
					     a
					     (GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t2 t)))
					    (GHCziPrim.ZLzmzgZR
					     t
					     (GHCziPrim.ZLzmzgZR
					      t1
					      (GHCziPrim.ZLzmzgZR
					       (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) t2)
					       (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) t)))) =
    \ @ t
      @ a
      @ t1
      @ t2
      (zuk::GHCziPrim.ZLzmzgZR
	    a
	    (GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t2 t)))
      (zz::t)
      (zuy::t1)
      (zur::GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) t2)
      (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
	     zuk x zuy (zur xs);
	   GHCziBase.ZMZN ->
	     zz};
  Atom.zzipFB :: %forall t t1 t2 t3 . GHCziPrim.ZLzmzgZR
				      (GHCziPrim.ZLzmzgZR
				       (DataziTuple.Z2T t2 t3)
				       (GHCziPrim.ZLzmzgZR t1 t))
				      (GHCziPrim.ZLzmzgZR
				       t2
				       (GHCziPrim.ZLzmzgZR t3 (GHCziPrim.ZLzmzgZR t1 t))) =
    \ @ t
      @ t1
      @ t2
      @ t3
      (c::GHCziPrim.ZLzmzgZR
	  (DataziTuple.Z2T t2 t3)
	  (GHCziPrim.ZLzmzgZR t1 t))
      (x::t2)
      (y::t3)
      (r::t1) ->
	c (DataziTuple.zdwZ2T @ t2 @ t3 x y) r;
  %rec
  {Atom.zzipList :: %forall a b . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN a)
				  (GHCziPrim.ZLzmzgZR
				   (GHCziBase.ZMZN b)
				   (GHCziBase.ZMZN (DataziTuple.Z2T a b))) =
     \ @ a @ b (ds::GHCziBase.ZMZN a) (ds1::GHCziBase.ZMZN b) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ (DataziTuple.Z2T a b);
	    GHCziBase.ZC (a1::a) (as::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN b)
		{GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ (DataziTuple.Z2T a b);
		 GHCziBase.ZC (b1::b) (bs::GHCziBase.ZMZN b) ->
		   GHCziBase.zdwZC @ (DataziTuple.Z2T a b)
		   (DataziTuple.zdwZ2T @ a @ b a1 b1)
		   (Atom.zzipList @ a @ b as bs)}}};
  Atom.zzip :: %forall a b . GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN a)
			     (GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN b)
			      (GHCziBase.ZMZN (DataziTuple.Z2T a b))) =
    \ @ a @ b -> Atom.zzipList @ a @ b;
  %rec
  {Atom.zzip3 :: %forall a b c . GHCziPrim.ZLzmzgZR
				 (GHCziBase.ZMZN a)
				 (GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN b)
				  (GHCziPrim.ZLzmzgZR
				   (GHCziBase.ZMZN c)
				   (GHCziBase.ZMZN (DataziTuple.Z3T a b c)))) =
     \ @ a
       @ b
       @ c
       (ds::GHCziBase.ZMZN a)
       (ds1::GHCziBase.ZMZN b)
       (ds2::GHCziBase.ZMZN c) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ (DataziTuple.Z3T a b c);
	    GHCziBase.ZC (a1::a) (as::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN b)
		{GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ (DataziTuple.Z3T a b c);
		 GHCziBase.ZC (b1::b) (bs::GHCziBase.ZMZN b) ->
		   %case ds2 %of (wild2::GHCziBase.ZMZN c)
		     {GHCziBase.ZMZN ->
			GHCziBase.zdwZMZN @ (DataziTuple.Z3T a b c);
		      GHCziBase.ZC (c1::c) (cs::GHCziBase.ZMZN c) ->
			GHCziBase.zdwZC @ (DataziTuple.Z3T a b c)
			(DataziTuple.zdwZ3T @ a @ b @ c a1 b1 c1)
			(Atom.zzip3 @ a @ b @ c as bs cs)}}}};
  Atom.zzipWithFB :: %forall t t1 t2 t3 t4 . GHCziPrim.ZLzmzgZR
					     (GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t2 t))
					     (GHCziPrim.ZLzmzgZR
					      (GHCziPrim.ZLzmzgZR t3 (GHCziPrim.ZLzmzgZR t4 t1))
					      (GHCziPrim.ZLzmzgZR
					       t3
					       (GHCziPrim.ZLzmzgZR t4 (GHCziPrim.ZLzmzgZR t2 t)))) =
    \ @ t
      @ t1
      @ t2
      @ t3
      @ t4
      (c::GHCziPrim.ZLzmzgZR t1 (GHCziPrim.ZLzmzgZR t2 t))
      (f::GHCziPrim.ZLzmzgZR t3 (GHCziPrim.ZLzmzgZR t4 t1))
      (x::t3)
      (y::t4)
      (r::t2) ->
	c (f x y) r;
  %rec
  {Atom.zzipWithList :: %forall a b c . GHCziPrim.ZLzmzgZR
					(GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b c))
					(GHCziPrim.ZLzmzgZR
					 (GHCziBase.ZMZN a)
					 (GHCziPrim.ZLzmzgZR
					  (GHCziBase.ZMZN b)
					  (GHCziBase.ZMZN c))) =
     \ @ a
       @ b
       @ c
       (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b c))
       (ds::GHCziBase.ZMZN a)
       (ds1::GHCziBase.ZMZN b) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ c;
	    GHCziBase.ZC (a1::a) (as::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN b)
		{GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ c;
		 GHCziBase.ZC (b1::b) (bs::GHCziBase.ZMZN b) ->
		   GHCziBase.zdwZC @ c (f a1 b1)
		   (Atom.zzipWithList @ a @ b @ c f as bs)}}};
  Atom.zzipWith :: %forall a b c . GHCziPrim.ZLzmzgZR
				   (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b c))
				   (GHCziPrim.ZLzmzgZR
				    (GHCziBase.ZMZN a)
				    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN b) (GHCziBase.ZMZN c))) =
    \ @ a @ b @ c -> Atom.zzipWithList @ a @ b @ c;
  %rec
  {Atom.zzipWith3 :: %forall a b c d . GHCziPrim.ZLzmzgZR
				       (GHCziPrim.ZLzmzgZR
					a
					(GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR c d)))
				       (GHCziPrim.ZLzmzgZR
					(GHCziBase.ZMZN a)
					(GHCziPrim.ZLzmzgZR
					 (GHCziBase.ZMZN b)
					 (GHCziPrim.ZLzmzgZR
					  (GHCziBase.ZMZN c)
					  (GHCziBase.ZMZN d)))) =
     \ @ a
       @ b
       @ c
       @ d
       (zz::GHCziPrim.ZLzmzgZR
	    a
	    (GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR c d)))
       (ds::GHCziBase.ZMZN a)
       (ds1::GHCziBase.ZMZN b)
       (ds2::GHCziBase.ZMZN c) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ d;
	    GHCziBase.ZC (a1::a) (as::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN b)
		{GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ d;
		 GHCziBase.ZC (b1::b) (bs::GHCziBase.ZMZN b) ->
		   %case ds2 %of (wild2::GHCziBase.ZMZN c)
		     {GHCziBase.ZMZN ->
			GHCziBase.zdwZMZN @ d;
		      GHCziBase.ZC (c1::c) (cs::GHCziBase.ZMZN c) ->
			GHCziBase.zdwZC @ d (zz a1 b1 c1)
			(Atom.zzipWith3 @ a @ b @ c @ d zz as bs cs)}}}};
  Atom.unzzip :: %forall a b . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN (DataziTuple.Z2T a b))
			       (DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN b)) =
    \ @ a @ b ->
	GHCziBase.foldr @ (DataziTuple.Z2T a b)
	@ (DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN b))
	(\ (ds::DataziTuple.Z2T a b)
	   (ds1::DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN b)) ->
	     %case ds %of (wild::DataziTuple.Z2T a b)
	       {DataziTuple.Z2T (a1::a) (b1::b) ->
		  DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN b)
		  (GHCziBase.zdwZC @ a a1
		   (%case ds1
		    %of (wild1::DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN b))
		      {DataziTuple.Z2T (as::GHCziBase.ZMZN a) (bs::GHCziBase.ZMZN b) ->
			 as}))
		  (GHCziBase.zdwZC @ b b1
		   (%case ds1
		    %of (wild1::DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN b))
		      {DataziTuple.Z2T (as::GHCziBase.ZMZN a) (bs::GHCziBase.ZMZN b) ->
			 bs}))})
	(DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN b)
	 (GHCziBase.zdwZMZN @ a) (GHCziBase.zdwZMZN @ b));
  Atom.unzzip3 :: %forall a b c . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN (DataziTuple.Z3T a b c))
				  (DataziTuple.Z3T
				   (GHCziBase.ZMZN a)
				   (GHCziBase.ZMZN b)
				   (GHCziBase.ZMZN c)) =
    \ @ a @ b @ c ->
	GHCziBase.foldr @ (DataziTuple.Z3T a b c)
	@ (DataziTuple.Z3T
	   (GHCziBase.ZMZN a)
	   (GHCziBase.ZMZN b)
	   (GHCziBase.ZMZN c))
	(\ (ds::DataziTuple.Z3T a b c)
	   (ds1::DataziTuple.Z3T
		 (GHCziBase.ZMZN a)
		 (GHCziBase.ZMZN b)
		 (GHCziBase.ZMZN c)) ->
	     %case ds %of (wild::DataziTuple.Z3T a b c)
	       {DataziTuple.Z3T (a1::a) (b1::b) (c1::c) ->
		  DataziTuple.zdwZ3T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN b)
		  @ (GHCziBase.ZMZN c)
		  (GHCziBase.zdwZC @ a a1
		   (%case ds1
		    %of (wild1::DataziTuple.Z3T
				(GHCziBase.ZMZN a)
				(GHCziBase.ZMZN b)
				(GHCziBase.ZMZN c))
		      {DataziTuple.Z3T
		       (as::GHCziBase.ZMZN a)
		       (bs::GHCziBase.ZMZN b)
		       (cs::GHCziBase.ZMZN c) ->
			 as}))
		  (GHCziBase.zdwZC @ b b1
		   (%case ds1
		    %of (wild1::DataziTuple.Z3T
				(GHCziBase.ZMZN a)
				(GHCziBase.ZMZN b)
				(GHCziBase.ZMZN c))
		      {DataziTuple.Z3T
		       (as::GHCziBase.ZMZN a)
		       (bs::GHCziBase.ZMZN b)
		       (cs::GHCziBase.ZMZN c) ->
			 bs}))
		  (GHCziBase.zdwZC @ c c1
		   (%case ds1
		    %of (wild1::DataziTuple.Z3T
				(GHCziBase.ZMZN a)
				(GHCziBase.ZMZN b)
				(GHCziBase.ZMZN c))
		      {DataziTuple.Z3T
		       (as::GHCziBase.ZMZN a)
		       (bs::GHCziBase.ZMZN b)
		       (cs::GHCziBase.ZMZN c) ->
			 cs}))})
	(DataziTuple.zdwZ3T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN b)
	 @ (GHCziBase.ZMZN c) (GHCziBase.zdwZMZN @ a)
	 (GHCziBase.zdwZMZN @ b) (GHCziBase.zdwZMZN @ c));
  Atom.append :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN a)
			     (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a (xs::GHCziBase.ZMZN a) (ys::GHCziBase.ZMZN a) ->
	GHCziBase.foldr @ a @ (GHCziBase.ZMZN a) (GHCziBase.zdwZC @ a) ys
	xs;
  Atom.zpzp :: %forall a . GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZMZN a)
			   (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a -> Atom.append @ a;
  Atom.concat :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN (GHCziBase.ZMZN a))
			     (GHCziBase.ZMZN a) =
    \ @ a ->
	GHCziBase.foldr @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	(Atom.append @ a) (GHCziBase.zdwZMZN @ a);
  Atom.concatMap :: %forall a b . GHCziPrim.ZLzmzgZR
				  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN b))
				  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN b)) =
    \ @ a @ b (f::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN b)) ->
	GHCziBase.foldr @ a @ (GHCziBase.ZMZN b)
	(GHCziBase.zi @ (GHCziBase.ZMZN b)
	 @ (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN b) (GHCziBase.ZMZN b)) @ a
	 (Atom.append @ b) f)
	(GHCziBase.zdwZMZN @ b);
  Atom.cycle :: %forall a . GHCziPrim.ZLzmzgZR
			    (GHCziBase.ZMZN a)
			    (GHCziBase.ZMZN a) =
    \ @ a (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
	     %let %rec
		  {xszq :: GHCziBase.ZMZN a = Atom.append @ a wild xszq}
	     %in xszq;
	   GHCziBase.ZMZN ->
	     GHCziErr.error @ (GHCziBase.ZMZN a)
	     (GHCziBase.unpackCStringzh
	      ("Prelude.cycle: empty list"::GHCziPrim.Addrzh))};
  Atom.mapList :: %forall a b . GHCziPrim.ZLzmzgZR
				(GHCziPrim.ZLzmzgZR a b)
				(GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN b)) =
    \ @ a @ b (f::GHCziPrim.ZLzmzgZR a b) (xs::GHCziBase.ZMZN a) ->
	GHCziBase.foldr @ a @ (GHCziBase.ZMZN b)
	(\ (x::a) (rest::GHCziBase.ZMZN b) ->
	     GHCziBase.zdwZC @ b (f x) rest)
	(GHCziBase.zdwZMZN @ b) xs;
  Atom.map :: %forall a b . GHCziPrim.ZLzmzgZR
			    (GHCziPrim.ZLzmzgZR a b)
			    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN b)) =
    \ @ a @ b -> Atom.mapList @ a @ b;
  Atom.gozuupzucharzufb :: %forall t . GHCziPrim.ZLzmzgZR
				       (GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
				       (GHCziPrim.ZLzmzgZR
					t
					(GHCziPrim.ZLzmzgZR
					 GHCziPrim.Intzh
					 (GHCziPrim.ZLzmzgZR
					  GHCziPrim.Intzh
					  (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t)))) =
    \ @ t
      (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
      (n::t)
      (x::GHCziPrim.Intzh)
      (delta::GHCziPrim.Intzh)
      (lim::GHCziPrim.Intzh) ->
	%let %rec
	     {gozuup :: GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t =
		\ (x1::GHCziPrim.Intzh) ->
		    %case (GHCziPrim.zgzh x1 lim) %of (wild::GHCziBase.Bool)
		      {GHCziBase.True ->
			 n;
		       GHCziBase.False ->
			 c (GHCziBase.zdwCzh (GHCziPrim.chrzh x1))
			 (gozuup (GHCziPrim.zpzh x1 delta))}}
	%in gozuup x;
  Atom.gozudnzucharzufb :: %forall t . GHCziPrim.ZLzmzgZR
				       (GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
				       (GHCziPrim.ZLzmzgZR
					t
					(GHCziPrim.ZLzmzgZR
					 GHCziPrim.Intzh
					 (GHCziPrim.ZLzmzgZR
					  GHCziPrim.Intzh
					  (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t)))) =
    \ @ t
      (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
      (n::t)
      (x::GHCziPrim.Intzh)
      (delta::GHCziPrim.Intzh)
      (lim::GHCziPrim.Intzh) ->
	%let %rec
	     {gozudn :: GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t =
		\ (x1::GHCziPrim.Intzh) ->
		    %case (GHCziPrim.zlzh x1 lim) %of (wild::GHCziBase.Bool)
		      {GHCziBase.True ->
			 n;
		       GHCziBase.False ->
			 c (GHCziBase.zdwCzh (GHCziPrim.chrzh x1))
			 (gozudn (GHCziPrim.zpzh x1 delta))}}
	%in gozudn x;
  Atom.sum :: %forall b . GHCziPrim.ZLzmzgZR
			  (GHCziNum.ZCTNum b)
			  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN b) b) =
    \ @ b (zddNum::GHCziNum.ZCTNum b) ->
	%let zp :: GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b) =
	       %case zddNum %of (tpl::GHCziNum.ZCTNum b)
		 {GHCziNum.ZCDNum
		  (tpl1::GHCziBase.ZCTEq b)
		  (tpl2::GHCziShow.ZCTShow b)
		  (tpl3::GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b))
		  (tpl4::GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b))
		  (tpl5::GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b))
		  (tpl6::GHCziPrim.ZLzmzgZR b b)
		  (tpl7::GHCziPrim.ZLzmzgZR b b)
		  (tpl8::GHCziPrim.ZLzmzgZR b b)
		  (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer b) ->
		    tpl5}
	%in %let lit :: b =
		   %case zddNum %of (tpl::GHCziNum.ZCTNum b)
		     {GHCziNum.ZCDNum
		      (tpl1::GHCziBase.ZCTEq b)
		      (tpl2::GHCziShow.ZCTShow b)
		      (tpl3::GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b))
		      (tpl4::GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b))
		      (tpl5::GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR b b))
		      (tpl6::GHCziPrim.ZLzmzgZR b b)
		      (tpl7::GHCziPrim.ZLzmzgZR b b)
		      (tpl8::GHCziPrim.ZLzmzgZR b b)
		      (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer b) ->
			tpl9 (GHCziNum.zdwSzh (0::GHCziPrim.Intzh))}
	    %in \ (l::GHCziBase.ZMZN b) -> GHCziBase.foldr @ b @ b zp lit l;
  Atom.flip :: %forall a b c . GHCziPrim.ZLzmzgZR
			       (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b c))
			       (GHCziPrim.ZLzmzgZR b (GHCziPrim.ZLzmzgZR a c)) =
    \ @ a
      @ b
      @ c
      (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b c))
      (x::b)
      (y::a) ->
	f y x;
  Atom.reverse :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN a)
			      (GHCziBase.ZMZN a) =
    \ @ a ->
	Atom.foldl @ (GHCziBase.ZMZN a) @ a
	(Atom.flip @ a @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	 (GHCziBase.zdwZC @ a))
	(GHCziBase.zdwZMZN @ a);
  %rec
  {Atom.deleteBy :: %forall a . GHCziPrim.ZLzmzgZR
				(GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
				(GHCziPrim.ZLzmzgZR
				 a
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
     \ @ a
       (eq::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
       (x::a)
       (ds::GHCziBase.ZMZN a) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (y::a) (ys::GHCziBase.ZMZN a) ->
	      %case (eq x y) %of (wild1::GHCziBase.Bool)
		{GHCziBase.True ->
		   ys;
		 GHCziBase.False ->
		   GHCziBase.zdwZC @ a y (Atom.deleteBy @ a eq x ys)};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  Atom.delete :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZCTEq a)
			     (GHCziPrim.ZLzmzgZR
			      a
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
    \ @ a
      (zddEq::GHCziBase.ZCTEq a)
      (eta::a)
      (eta1::GHCziBase.ZMZN a) ->
	Atom.deleteBy @ a
	(%case zddEq %of (tpl::GHCziBase.ZCTEq a)
	   {GHCziBase.ZCDEq
	    (tpl1::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
	    (tpl2::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)) ->
	      tpl2})
	eta eta1;
  Atom.zrzr :: %forall a . GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZCTEq a)
			   (GHCziPrim.ZLzmzgZR
			    (GHCziBase.ZMZN a)
			    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
    \ @ a
      (zddEq::GHCziBase.ZCTEq a)
      (eta::GHCziBase.ZMZN a)
      (eta1::GHCziBase.ZMZN a) ->
	Atom.foldl @ (GHCziBase.ZMZN a) @ a
	(Atom.flip @ a @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	 (Atom.delete @ a zddEq))
	eta eta1;
  lit :: GHCziFloat.Float =
    GHCziFloat.zdwFzh (1.0::GHCziPrim.Floatzh);
  lit1 :: GHCziBase.Int =
    GHCziBase.zdwIzh (999999999::GHCziPrim.Intzh);
  lit2 :: GHCziBase.Int = GHCziBase.zdwIzh (1::GHCziPrim.Intzh);
  lit3 :: GHCziBase.Int = GHCziBase.zdwIzh (0::GHCziPrim.Intzh);
  zizt1 :: GHCziPrim.ZLzmzgZR
	   GHCziFloat.Float
	   (GHCziPrim.ZLzmzgZR
	    (GHCziBase.ZMZN GHCziFloat.Float)
	    (GHCziBase.ZMZN GHCziFloat.Float)) =
    Atom.zizt @ GHCziFloat.Float GHCziFloat.zdfNumFloat;
  zddShow :: GHCziShow.ZCTShow GHCziFloat.Float =
    %case GHCziFloat.zdfNumFloat
    %of (tpl::GHCziNum.ZCTNum GHCziFloat.Float)
      {GHCziNum.ZCDNum
       (tpl1::GHCziBase.ZCTEq GHCziFloat.Float)
       (tpl2::GHCziShow.ZCTShow GHCziFloat.Float)
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziFloat.Float
	      (GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float))
       (tpl4::GHCziPrim.ZLzmzgZR
	      GHCziFloat.Float
	      (GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float))
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziFloat.Float
	      (GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float))
       (tpl6::GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float)
       (tpl7::GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float)
       (tpl8::GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float)
       (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer GHCziFloat.Float) ->
	 tpl2};
  zddEq :: GHCziBase.ZCTEq GHCziBase.Int =
    %case GHCziBase.zdfOrdInt %of (tpl::GHCziBase.ZCTOrd GHCziBase.Int)
      {GHCziBase.ZCDOrd
       (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
       (tpl2::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Ordering))
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl4::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl6::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl7::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl8::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)) ->
	 tpl1};
  zeze :: GHCziPrim.ZLzmzgZR
	  GHCziBase.Int
	  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool) =
    %case zddEq %of (tpl::GHCziBase.ZCTEq GHCziBase.Int)
      {GHCziBase.ZCDEq
       (tpl1::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl2::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool)) ->
	 tpl2};
  zlze :: GHCziPrim.ZLzmzgZR
	  GHCziBase.Int
	  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool) =
    %case GHCziBase.zdfOrdInt %of (tpl::GHCziBase.ZCTOrd GHCziBase.Int)
      {GHCziBase.ZCDOrd
       (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
       (tpl2::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Ordering))
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl4::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl6::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
       (tpl7::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl8::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)) ->
	 tpl3};
  enumFromTo1 :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Int
		 (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)) =
    %case GHCziEnum.zdfEnumInt
    %of (tpl::GHCziEnum.ZCTEnum GHCziBase.Int)
      {GHCziEnum.ZCDEnum
       (tpl1::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl2::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl4::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziBase.ZMZN GHCziBase.Int))
       (tpl6::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
       (tpl7::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
       (tpl8::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (GHCziPrim.ZLzmzgZR
		GHCziBase.Int
		(GHCziBase.ZMZN GHCziBase.Int)))) ->
	 tpl7};
  Atom.zddmenumFromTo :: %forall a . GHCziPrim.ZLzmzgZR
				     (Atom.ZCTEnum a)
				     (GHCziPrim.ZLzmzgZR
				      a
				      (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))) =
    \ @ a (zddEnum::Atom.ZCTEnum a) (eta::a) (eta1::a) ->
	%let fromEnum1 :: GHCziPrim.ZLzmzgZR a GHCziBase.Int =
	       %case zddEnum %of (tpl::Atom.ZCTEnum a)
		 {Atom.ZCDEnum
		  (tpl1::GHCziPrim.ZLzmzgZR a a)
		  (tpl2::GHCziPrim.ZLzmzgZR a a)
		  (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		  (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		  (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		  (tpl6::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl7::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl8::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR
			  a
			  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		    tpl4}
	%in Atom.mapList @ GHCziBase.Int @ a
	    (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	       {Atom.ZCDEnum
		(tpl1::GHCziPrim.ZLzmzgZR a a)
		(tpl2::GHCziPrim.ZLzmzgZR a a)
		(tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		(tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		(tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		(tpl6::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl7::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl8::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		  tpl3})
	    (enumFromTo1 (fromEnum1 eta) (fromEnum1 eta1));
  Atom.boundedEnumFrom :: %forall a . GHCziPrim.ZLzmzgZR
				      (Atom.ZCTEnum a)
				      (GHCziPrim.ZLzmzgZR
				       (Atom.ZCTBounded a)
				       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))) =
    \ @ a
      (zddEnum::Atom.ZCTEnum a)
      (zddBounded::Atom.ZCTBounded a)
      (eta::a) ->
	%let fromEnum1 :: GHCziPrim.ZLzmzgZR a GHCziBase.Int =
	       %case zddEnum %of (tpl::Atom.ZCTEnum a)
		 {Atom.ZCDEnum
		  (tpl1::GHCziPrim.ZLzmzgZR a a)
		  (tpl2::GHCziPrim.ZLzmzgZR a a)
		  (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		  (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		  (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		  (tpl6::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl7::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl8::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR
			  a
			  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		    tpl4}
	%in Atom.mapList @ GHCziBase.Int @ a
	    (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	       {Atom.ZCDEnum
		(tpl1::GHCziPrim.ZLzmzgZR a a)
		(tpl2::GHCziPrim.ZLzmzgZR a a)
		(tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		(tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		(tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		(tpl6::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl7::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl8::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		  tpl3})
	    (enumFromTo1 (fromEnum1 eta)
	     (fromEnum1
	      (GHCziBase.asTypeOf @ a
	       (%case zddBounded %of (tpl::Atom.ZCTBounded a)
		  {Atom.ZCDBounded (tpl1::a) (tpl2::a) ->
		     tpl1})
	       eta)));
  enumFrom1 :: GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (GHCziBase.ZMZN GHCziBase.Int) =
    %case GHCziEnum.zdfEnumInt
    %of (tpl::GHCziEnum.ZCTEnum GHCziBase.Int)
      {GHCziEnum.ZCDEnum
       (tpl1::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl2::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl4::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziBase.ZMZN GHCziBase.Int))
       (tpl6::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
       (tpl7::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
       (tpl8::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (GHCziPrim.ZLzmzgZR
		GHCziBase.Int
		(GHCziBase.ZMZN GHCziBase.Int)))) ->
	 tpl5};
  Atom.zddmenumFrom :: %forall a . GHCziPrim.ZLzmzgZR
				   (Atom.ZCTEnum a)
				   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
    \ @ a (zddEnum::Atom.ZCTEnum a) (eta::a) ->
	Atom.mapList @ GHCziBase.Int @ a
	(%case zddEnum %of (tpl::Atom.ZCTEnum a)
	   {Atom.ZCDEnum
	    (tpl1::GHCziPrim.ZLzmzgZR a a)
	    (tpl2::GHCziPrim.ZLzmzgZR a a)
	    (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
	    (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
	    (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
	    (tpl6::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	    (tpl7::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	    (tpl8::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
	      tpl3})
	(enumFrom1
	 (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	    {Atom.ZCDEnum
	     (tpl1::GHCziPrim.ZLzmzgZR a a)
	     (tpl2::GHCziPrim.ZLzmzgZR a a)
	     (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
	     (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
	     (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
	     (tpl6::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	     (tpl7::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	     (tpl8::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR
		     a
		     (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
	       tpl4 eta}));
  Atom.zddmenumFromThen :: %forall a . GHCziPrim.ZLzmzgZR
				       (Atom.ZCTEnum a)
				       (GHCziPrim.ZLzmzgZR
					a
					(GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))) =
    \ @ a (zddEnum::Atom.ZCTEnum a) (eta::a) (eta1::a) ->
	%let fromEnum1 :: GHCziPrim.ZLzmzgZR a GHCziBase.Int =
	       %case zddEnum %of (tpl::Atom.ZCTEnum a)
		 {Atom.ZCDEnum
		  (tpl1::GHCziPrim.ZLzmzgZR a a)
		  (tpl2::GHCziPrim.ZLzmzgZR a a)
		  (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		  (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		  (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		  (tpl6::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl7::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl8::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR
			  a
			  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		    tpl4}
	%in Atom.mapList @ GHCziBase.Int @ a
	    (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	       {Atom.ZCDEnum
		(tpl1::GHCziPrim.ZLzmzgZR a a)
		(tpl2::GHCziPrim.ZLzmzgZR a a)
		(tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		(tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		(tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		(tpl6::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl7::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl8::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		  tpl3})
	    (%case GHCziEnum.zdfEnumInt
	     %of (tpl::GHCziEnum.ZCTEnum GHCziBase.Int)
	       {GHCziEnum.ZCDEnum
		(tpl1::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
		(tpl2::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
		(tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
		(tpl4::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
		(tpl5::GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziBase.ZMZN GHCziBase.Int))
		(tpl6::GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
		(tpl7::GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
		(tpl8::GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziPrim.ZLzmzgZR
			GHCziBase.Int
			(GHCziPrim.ZLzmzgZR
			 GHCziBase.Int
			 (GHCziBase.ZMZN GHCziBase.Int)))) ->
		  tpl6 (fromEnum1 eta) (fromEnum1 eta1)});
  enumFromThenTo1 :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Int
		     (GHCziPrim.ZLzmzgZR
		      GHCziBase.Int
		      (GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziBase.ZMZN GHCziBase.Int))) =
    %case GHCziEnum.zdfEnumInt
    %of (tpl::GHCziEnum.ZCTEnum GHCziBase.Int)
      {GHCziEnum.ZCDEnum
       (tpl1::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl2::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl4::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziBase.ZMZN GHCziBase.Int))
       (tpl6::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
       (tpl7::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)))
       (tpl8::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (GHCziPrim.ZLzmzgZR
		GHCziBase.Int
		(GHCziBase.ZMZN GHCziBase.Int)))) ->
	 tpl8};
  Atom.zddmenumFromThenTo :: %forall a . GHCziPrim.ZLzmzgZR
					 (Atom.ZCTEnum a)
					 (GHCziPrim.ZLzmzgZR
					  a
					  (GHCziPrim.ZLzmzgZR
					   a
					   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) =
    \ @ a (zddEnum::Atom.ZCTEnum a) (eta::a) (eta1::a) (eta2::a) ->
	%let fromEnum1 :: GHCziPrim.ZLzmzgZR a GHCziBase.Int =
	       %case zddEnum %of (tpl::Atom.ZCTEnum a)
		 {Atom.ZCDEnum
		  (tpl1::GHCziPrim.ZLzmzgZR a a)
		  (tpl2::GHCziPrim.ZLzmzgZR a a)
		  (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		  (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		  (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		  (tpl6::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl7::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl8::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR
			  a
			  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		    tpl4}
	%in Atom.mapList @ GHCziBase.Int @ a
	    (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	       {Atom.ZCDEnum
		(tpl1::GHCziPrim.ZLzmzgZR a a)
		(tpl2::GHCziPrim.ZLzmzgZR a a)
		(tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		(tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		(tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		(tpl6::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl7::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		(tpl8::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		  tpl3})
	    (enumFromThenTo1 (fromEnum1 eta) (fromEnum1 eta1)
	     (fromEnum1 eta2));
  Atom.boundedEnumFromThen :: %forall a . GHCziPrim.ZLzmzgZR
					  (Atom.ZCTEnum a)
					  (GHCziPrim.ZLzmzgZR
					   (Atom.ZCTBounded a)
					   (GHCziPrim.ZLzmzgZR
					    a
					    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) =
    \ @ a
      (zddEnum::Atom.ZCTEnum a)
      (zddBounded::Atom.ZCTBounded a)
      (eta::a)
      (eta1::a) ->
	%let fromEnum1 :: GHCziPrim.ZLzmzgZR a GHCziBase.Int =
	       %case zddEnum %of (tpl::Atom.ZCTEnum a)
		 {Atom.ZCDEnum
		  (tpl1::GHCziPrim.ZLzmzgZR a a)
		  (tpl2::GHCziPrim.ZLzmzgZR a a)
		  (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		  (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		  (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		  (tpl6::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl7::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		  (tpl8::GHCziPrim.ZLzmzgZR
			 a
			 (GHCziPrim.ZLzmzgZR
			  a
			  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
		    tpl4}
	%in %let toEnum1 :: GHCziPrim.ZLzmzgZR GHCziBase.Int a =
		   %case zddEnum %of (tpl::Atom.ZCTEnum a)
		     {Atom.ZCDEnum
		      (tpl1::GHCziPrim.ZLzmzgZR a a)
		      (tpl2::GHCziPrim.ZLzmzgZR a a)
		      (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
		      (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
		      (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
		      (tpl6::GHCziPrim.ZLzmzgZR
			     a
			     (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		      (tpl7::GHCziPrim.ZLzmzgZR
			     a
			     (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
		      (tpl8::GHCziPrim.ZLzmzgZR
			     a
			     (GHCziPrim.ZLzmzgZR
			      a
			      (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
			tpl3}
	    %in %let izun1 :: GHCziBase.Int = fromEnum1 eta
		%in %let izun2 :: GHCziBase.Int = fromEnum1 eta1
		    %in %case GHCziBase.zdfOrdInt
			%of (tpl::GHCziBase.ZCTOrd GHCziBase.Int)
			  {GHCziBase.ZCDOrd
			   (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
			   (tpl2::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Ordering))
			   (tpl3::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
			   (tpl4::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
			   (tpl5::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
			   (tpl6::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
			   (tpl7::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
			   (tpl8::GHCziPrim.ZLzmzgZR
				  GHCziBase.Int
				  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)) ->
			     %case (tpl5 izun2 izun1) %of (wild::GHCziBase.Bool)
			       {GHCziBase.True ->
				  Atom.mapList @ GHCziBase.Int @ a toEnum1
				  (enumFromThenTo1 izun1 izun2
				   (fromEnum1
				    (GHCziBase.asTypeOf @ a
				     (%case zddBounded %of (tpl9::Atom.ZCTBounded a)
					{Atom.ZCDBounded (tpl10::a) (tpl11::a) ->
					   tpl10})
				     eta)));
				GHCziBase.False ->
				  Atom.mapList @ GHCziBase.Int @ a toEnum1
				  (enumFromThenTo1 izun1 izun2
				   (fromEnum1
				    (GHCziBase.asTypeOf @ a
				     (%case zddBounded %of (tpl9::Atom.ZCTBounded a)
					{Atom.ZCDBounded (tpl10::a) (tpl11::a) ->
					   tpl11})
				     eta)))}};
  Atom.maxInt :: GHCziBase.Int =
    %case GHCziNum.zdfNumInt %of (tpl::GHCziNum.ZCTNum GHCziBase.Int)
      {GHCziNum.ZCDNum
       (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
       (tpl2::GHCziShow.ZCTShow GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl4::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl6::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl7::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl8::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer GHCziBase.Int) ->
	 tpl9
	 (GHCziNum.plusInteger
	  (GHCziNum.zdwSzh (1410065411::GHCziPrim.Intzh))
	  (GHCziNum.timesInteger (GHCziNum.zdwSzh (4::GHCziPrim.Intzh))
	   (GHCziNum.zdwSzh (2147483647::GHCziPrim.Intzh))))};
  zm :: GHCziPrim.ZLzmzgZR
	GHCziBase.Int
	(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    %case GHCziNum.zdfNumInt %of (tpl::GHCziNum.ZCTNum GHCziBase.Int)
      {GHCziNum.ZCDNum
       (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
       (tpl2::GHCziShow.ZCTShow GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl4::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl6::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl7::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl8::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer GHCziBase.Int) ->
	 tpl3};
  %rec
  {Atom.take :: %forall a . GHCziPrim.ZLzmzgZR
			    GHCziBase.Int
			    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
     \ @ a (n::GHCziBase.Int) (ds::GHCziBase.ZMZN a) ->
	 %case (zlze n lit3) %of (wild::GHCziBase.Bool)
	   {GHCziBase.True ->
	      GHCziBase.zdwZMZN @ a;
	    GHCziBase.False ->
	      %case ds %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
		   GHCziBase.zdwZC @ a x (Atom.take @ a (zm n lit2) xs);
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ a}}};
  Atom.replicate :: %forall a . GHCziPrim.ZLzmzgZR
				GHCziBase.Int
				(GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
    \ @ a (n::GHCziBase.Int) (x::a) ->
	Atom.take @ a n
	(GHCziBase.build @ a
	 (\ @ b
	    (c::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b b))
	    (zun::b) ->
	      Atom.repeatFB @ b @ a c x));
  %rec
  {Atom.drop :: %forall a . GHCziPrim.ZLzmzgZR
			    GHCziBase.Int
			    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
     \ @ a (n::GHCziBase.Int) (xs::GHCziBase.ZMZN a) ->
	 %case (zlze n lit3) %of (wild::GHCziBase.Bool)
	   {GHCziBase.True ->
	      xs;
	    GHCziBase.False ->
	      %case xs %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (ds::a) (xs1::GHCziBase.ZMZN a) ->
		   Atom.drop @ a (zm n lit2) xs1;
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ a}}};
  Atom.splitAt :: %forall a . GHCziPrim.ZLzmzgZR
			      GHCziBase.Int
			      (GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN a)
			       (DataziTuple.Z2T (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))) =
    \ @ a (n::GHCziBase.Int) (xs::GHCziBase.ZMZN a) ->
	DataziTuple.zdwZ2T @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	(Atom.take @ a n xs) (Atom.drop @ a n xs);
  %rec
  {Atom.znzn :: %forall a . GHCziPrim.ZLzmzgZR
			    (GHCziBase.ZMZN a)
			    (GHCziPrim.ZLzmzgZR GHCziBase.Int a) =
     \ @ a (xs::GHCziBase.ZMZN a) (n::GHCziBase.Int) ->
	 %case GHCziBase.zdfOrdInt %of (tpl::GHCziBase.ZCTOrd GHCziBase.Int)
	   {GHCziBase.ZCDOrd
	    (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
	    (tpl2::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Ordering))
	    (tpl3::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
	    (tpl4::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
	    (tpl5::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
	    (tpl6::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool))
	    (tpl7::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
	    (tpl8::GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)) ->
	      %case (tpl6 n lit3) %of (wild::GHCziBase.Bool)
		{GHCziBase.True ->
		   GHCziErr.error @ a
		   (GHCziBase.unpackCStringzh
		    ("Prelude.!!: negative index"::GHCziPrim.Addrzh));
		 GHCziBase.False ->
		   %case xs %of (wild1::GHCziBase.ZMZN a)
		     {GHCziBase.ZC (x::a) (ds::GHCziBase.ZMZN a) ->
			%case n %of (wild2::GHCziBase.Int)
			  {GHCziBase.Izh (ds1::GHCziPrim.Intzh) ->
			     %case ds1 %of (ds2::GHCziPrim.Intzh)
			       {%_ ->
				  Atom.znzn @ a ds (zm wild2 lit2);
				(0::GHCziPrim.Intzh) ->
				  x}};
		      GHCziBase.ZMZN ->
			GHCziErr.error @ a
			(GHCziBase.unpackCStringzh
			 ("Prelude.!!: index too large"::GHCziPrim.Addrzh))}}}};
  show :: GHCziPrim.ZLzmzgZR
	  Atom.AtomState
	  (GHCziBase.ZMZN GHCziBase.Char) =
    \ (ds::Atom.AtomState) ->
	%case ds %of (wild::Atom.AtomState)
	  {Atom.State
	   (pos::GHCziBase.ZMZN GHCziFloat.Float)
	   (vel::GHCziBase.ZMZN GHCziFloat.Float) ->
	     %let %rec
		  {ds1 :: GHCziPrim.ZLzmzgZR
			  (GHCziBase.ZMZN GHCziFloat.Float)
			  (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) =
		     \ (ds2::GHCziBase.ZMZN GHCziFloat.Float) ->
			 %case ds2 %of (ds3::GHCziBase.ZMZN GHCziFloat.Float)
			   {GHCziBase.ZMZN ->
			      GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziBase.Char);
			    GHCziBase.ZC
			    (ds4::GHCziFloat.Float) (ds5::GHCziBase.ZMZN GHCziFloat.Float) ->
			      GHCziBase.zdwZC @ (GHCziBase.ZMZN GHCziBase.Char)
			      (Atom.append @ GHCziBase.Char
			       (%case zddShow %of (tpl::GHCziShow.ZCTShow GHCziFloat.Float)
				  {GHCziShow.ZCDShow
				   (tpl1::GHCziPrim.ZLzmzgZR
					  GHCziBase.Int
					  (GHCziPrim.ZLzmzgZR
					   GHCziFloat.Float
					   (GHCziPrim.ZLzmzgZR
					    (GHCziBase.ZMZN GHCziBase.Char)
					    (GHCziBase.ZMZN GHCziBase.Char))))
				   (tpl2::GHCziPrim.ZLzmzgZR
					  GHCziFloat.Float
					  (GHCziBase.ZMZN GHCziBase.Char))
				   (tpl3::GHCziPrim.ZLzmzgZR
					  (GHCziBase.ZMZN GHCziFloat.Float)
					  (GHCziPrim.ZLzmzgZR
					   (GHCziBase.ZMZN GHCziBase.Char)
					   (GHCziBase.ZMZN GHCziBase.Char))) ->
				     tpl2 ds4})
			       (GHCziBase.zdwZC @ GHCziBase.Char
				(GHCziBase.zdwCzh ('\x09'::GHCziPrim.Charzh))
				(GHCziBase.zdwZMZN @ GHCziBase.Char)))
			      (ds1 ds5)}}
	     %in Atom.concat @ GHCziBase.Char (ds1 pos)};
  showList :: GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN Atom.AtomState)
	      (GHCziPrim.ZLzmzgZR
	       (GHCziBase.ZMZN GHCziBase.Char)
	       (GHCziBase.ZMZN GHCziBase.Char)) =
    \ (states::GHCziBase.ZMZN Atom.AtomState) ->
	%let %rec
	     {ds :: GHCziPrim.ZLzmzgZR
		    (GHCziBase.ZMZN Atom.AtomState)
		    (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) =
		\ (ds1::GHCziBase.ZMZN Atom.AtomState) ->
		    %case ds1 %of (ds2::GHCziBase.ZMZN Atom.AtomState)
		      {GHCziBase.ZMZN ->
			 GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziBase.Char);
		       GHCziBase.ZC
		       (ds3::Atom.AtomState) (ds4::GHCziBase.ZMZN Atom.AtomState) ->
			 GHCziBase.zdwZC @ (GHCziBase.ZMZN GHCziBase.Char)
			 (Atom.append @ GHCziBase.Char (show ds3)
			  (GHCziBase.zdwZC @ GHCziBase.Char
			   (GHCziBase.zdwCzh ('\x0a'::GHCziPrim.Charzh))
			   (GHCziBase.zdwZMZN @ GHCziBase.Char)))
			 (ds ds4)}}
	%in GHCziShow.showString
	    (Atom.concat @ GHCziBase.Char (ds states));
  Atom.zdfBoundedZ0T :: Atom.ZCTBounded GHCziBase.Z0T =
    Atom.zdwZCDBounded @ GHCziBase.Z0T GHCziBase.zdwZ0T
    GHCziBase.zdwZ0T;
  enumFromThenTo2 :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Z0T
		     (GHCziPrim.ZLzmzgZR
		      GHCziBase.Z0T
		      (GHCziPrim.ZLzmzgZR
		       GHCziBase.Z0T
		       (GHCziBase.ZMZN GHCziBase.Z0T))) =
    \ (ds::GHCziBase.Z0T) (ds1::GHCziBase.Z0T) (ds2::GHCziBase.Z0T) ->
	%case ds %of (wild::GHCziBase.Z0T)
	  {GHCziBase.Z0T ->
	     %case ds1 %of (wild1::GHCziBase.Z0T)
	       {GHCziBase.Z0T ->
		  %case ds2 %of (wild2::GHCziBase.Z0T)
		    {GHCziBase.Z0T ->
		       GHCziBase.zdwZC @ GHCziBase.Z0T GHCziBase.zdwZ0T
		       (GHCziBase.zdwZMZN @ GHCziBase.Z0T)}}};
  enumFromTo2 :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Z0T
		 (GHCziPrim.ZLzmzgZR GHCziBase.Z0T (GHCziBase.ZMZN GHCziBase.Z0T)) =
    \ (ds::GHCziBase.Z0T) (ds1::GHCziBase.Z0T) ->
	%case ds %of (wild::GHCziBase.Z0T)
	  {GHCziBase.Z0T ->
	     %case ds1 %of (wild1::GHCziBase.Z0T)
	       {GHCziBase.Z0T ->
		  GHCziBase.zdwZC @ GHCziBase.Z0T GHCziBase.zdwZ0T
		  (GHCziBase.zdwZMZN @ GHCziBase.Z0T)}};
  enumFromThen1 :: GHCziPrim.ZLzmzgZR
		   GHCziBase.Z0T
		   (GHCziPrim.ZLzmzgZR GHCziBase.Z0T (GHCziBase.ZMZN GHCziBase.Z0T)) =
    \ (ds::GHCziBase.Z0T) (ds1::GHCziBase.Z0T) ->
	%case ds %of (wild::GHCziBase.Z0T)
	  {GHCziBase.Z0T ->
	     %case ds1 %of (wild1::GHCziBase.Z0T)
	       {GHCziBase.Z0T ->
		  GHCziBase.zdwZC @ GHCziBase.Z0T GHCziBase.zdwZ0T
		  (GHCziBase.zdwZMZN @ GHCziBase.Z0T)}};
  enumFrom2 :: GHCziPrim.ZLzmzgZR
	       GHCziBase.Z0T
	       (GHCziBase.ZMZN GHCziBase.Z0T) =
    \ (ds::GHCziBase.Z0T) ->
	%case ds %of (wild::GHCziBase.Z0T)
	  {GHCziBase.Z0T ->
	     GHCziBase.zdwZC @ GHCziBase.Z0T GHCziBase.zdwZ0T
	     (GHCziBase.zdwZMZN @ GHCziBase.Z0T)};
  succ1 :: GHCziPrim.ZLzmzgZR GHCziBase.Z0T GHCziBase.Z0T =
    \ (ds::GHCziBase.Z0T) ->
	GHCziErr.error @ GHCziBase.Z0T
	(GHCziBase.unpackCStringzh
	 ("Prelude.Enum.().succ: bad argment"::GHCziPrim.Addrzh));
  pred1 :: GHCziPrim.ZLzmzgZR GHCziBase.Z0T GHCziBase.Z0T =
    \ (ds::GHCziBase.Z0T) ->
	GHCziErr.error @ GHCziBase.Z0T
	(GHCziBase.unpackCStringzh
	 ("Prelude.Enum.().pred: bad argument"::GHCziPrim.Addrzh));
  Atom.zdfBoundedBool :: Atom.ZCTBounded GHCziBase.Bool =
    Atom.zdwZCDBounded @ GHCziBase.Bool GHCziBase.zdwTrue
    GHCziBase.zdwFalse;
  succ2 :: GHCziPrim.ZLzmzgZR GHCziBase.Bool GHCziBase.Bool =
    \ (ds::GHCziBase.Bool) ->
	%case ds %of (wild::GHCziBase.Bool)
	  {GHCziBase.False ->
	     GHCziBase.zdwTrue;
	   GHCziBase.True ->
	     GHCziErr.error @ GHCziBase.Bool
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.Bool.succ: bad argment"::GHCziPrim.Addrzh))};
  pred2 :: GHCziPrim.ZLzmzgZR GHCziBase.Bool GHCziBase.Bool =
    \ (ds::GHCziBase.Bool) ->
	%case ds %of (wild::GHCziBase.Bool)
	  {GHCziBase.False ->
	     GHCziErr.error @ GHCziBase.Bool
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.Bool.pred: bad argment"::GHCziPrim.Addrzh));
	   GHCziBase.True ->
	     GHCziBase.zdwFalse};
  Atom.zdfBoundedOrdering :: Atom.ZCTBounded GHCziBase.Ordering =
    Atom.zdwZCDBounded @ GHCziBase.Ordering GHCziBase.zdwGT
    GHCziBase.zdwLT;
  succ3 :: GHCziPrim.ZLzmzgZR GHCziBase.Ordering GHCziBase.Ordering =
    \ (ds::GHCziBase.Ordering) ->
	%case ds %of (wild::GHCziBase.Ordering)
	  {GHCziBase.EQ ->
	     GHCziBase.zdwGT;
	   GHCziBase.GT ->
	     GHCziErr.error @ GHCziBase.Ordering
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.Ordering.succ: bad argment"::GHCziPrim.Addrzh));
	   GHCziBase.LT ->
	     GHCziBase.zdwEQ};
  pred3 :: GHCziPrim.ZLzmzgZR GHCziBase.Ordering GHCziBase.Ordering =
    \ (ds::GHCziBase.Ordering) ->
	%case ds %of (wild::GHCziBase.Ordering)
	  {GHCziBase.EQ ->
	     GHCziBase.zdwLT;
	   GHCziBase.GT ->
	     GHCziBase.zdwEQ;
	   GHCziBase.LT ->
	     GHCziErr.error @ GHCziBase.Ordering
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.Ordering.pred: bad argment"::GHCziPrim.Addrzh))};
  minBound1 :: GHCziBase.Char =
    GHCziBase.zdwCzh ('\x00'::GHCziPrim.Charzh);
  maxBound1 :: GHCziBase.Char =
    GHCziBase.zdwCzh (1114111::GHCziPrim.Charzh);
  Atom.zdfBoundedChar :: Atom.ZCTBounded GHCziBase.Char =
    Atom.zdwZCDBounded @ GHCziBase.Char maxBound1 minBound1;
  succ4 :: GHCziPrim.ZLzmzgZR GHCziBase.Char GHCziBase.Char =
    \ (ds::GHCziBase.Char) ->
	%case ds %of (wild::GHCziBase.Char)
	  {GHCziBase.Czh (czh::GHCziPrim.Charzh) ->
	     %case (GHCziBase.not
		    (%case (GHCziPrim.ordzh czh) %of (wild1::GHCziPrim.Intzh)
		       {%_ ->
			  GHCziBase.zdwFalse;
			(1114111::GHCziPrim.Intzh) ->
			  GHCziBase.zdwTrue}))
	     %of (wild1::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziBase.zdwCzh
		  (GHCziPrim.chrzh
		   (GHCziPrim.zpzh (GHCziPrim.ordzh czh) (1::GHCziPrim.Intzh)));
		GHCziBase.False ->
		  GHCziErr.error @ GHCziBase.Char
		  (GHCziBase.unpackCStringzh
		   ("Prelude.Enum.Char.succ: bad argument"::GHCziPrim.Addrzh))}};
  pred4 :: GHCziPrim.ZLzmzgZR GHCziBase.Char GHCziBase.Char =
    \ (ds::GHCziBase.Char) ->
	%case ds %of (wild::GHCziBase.Char)
	  {GHCziBase.Czh (czh::GHCziPrim.Charzh) ->
	     %case (GHCziBase.not
		    (%case (GHCziPrim.ordzh czh) %of (wild1::GHCziPrim.Intzh)
		       {%_ ->
			  GHCziBase.zdwFalse;
			(0::GHCziPrim.Intzh) ->
			  GHCziBase.zdwTrue}))
	     %of (wild1::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziBase.zdwCzh
		  (GHCziPrim.chrzh
		   (GHCziPrim.zmzh (GHCziPrim.ordzh czh) (1::GHCziPrim.Intzh)));
		GHCziBase.False ->
		  GHCziErr.error @ GHCziBase.Char
		  (GHCziBase.unpackCStringzh
		   ("Prelude.Enum.Char.pred: bad argument"::GHCziPrim.Addrzh))}};
  fromEnum1 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int =
    \ (x::GHCziBase.Int) -> x;
  toEnum1 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int =
    \ (x::GHCziBase.Int) -> x;
  enumFrom3 :: GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (GHCziBase.ZMZN GHCziBase.Int) =
    \ (x::GHCziBase.Int) ->
	Atom.mapList @ GHCziBase.Int @ GHCziBase.Int toEnum1 (enumFrom1 x);
  enumFromTo3 :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Int
		 (GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)) =
    \ (x::GHCziBase.Int) (y::GHCziBase.Int) ->
	Atom.mapList @ GHCziBase.Int @ GHCziBase.Int toEnum1
	(enumFromTo1 x y);
  enumFromThenTo3 :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Int
		     (GHCziPrim.ZLzmzgZR
		      GHCziBase.Int
		      (GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziBase.ZMZN GHCziBase.Int))) =
    \ (x::GHCziBase.Int) (y::GHCziBase.Int) (zz::GHCziBase.Int) ->
	Atom.mapList @ GHCziBase.Int @ GHCziBase.Int toEnum1
	(enumFromThenTo1 x y zz);
  Atom.modIntzh :: GHCziPrim.ZLzmzgZR
		   GHCziPrim.Intzh
		   (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh GHCziPrim.Intzh) =
    \ (xzh::GHCziPrim.Intzh) (yzh::GHCziPrim.Intzh) ->
	%case (GHCziPrim.remIntzh xzh yzh) %of (rzh::GHCziPrim.Intzh)
	  {%_ ->
	     %case (GHCziBase.zbzb
		    (GHCziBase.zaza (GHCziPrim.zgzh xzh (0::GHCziPrim.Intzh))
		     (GHCziPrim.zlzh yzh (0::GHCziPrim.Intzh)))
		    (GHCziBase.zaza (GHCziPrim.zlzh xzh (0::GHCziPrim.Intzh))
		     (GHCziPrim.zgzh yzh (0::GHCziPrim.Intzh))))
	     %of (wild::GHCziBase.Bool)
	       {GHCziBase.True ->
		  %case rzh %of (wild1::GHCziPrim.Intzh)
		    {%_ ->
		       GHCziPrim.zpzh wild1 yzh;
		     (0::GHCziPrim.Intzh) ->
		       (0::GHCziPrim.Intzh)};
		GHCziBase.False ->
		  rzh}};
  Atom.modInt :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Int
		 (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (Atom.modIntzh x y)}};
  Atom.divIntzh :: GHCziPrim.ZLzmzgZR
		   GHCziPrim.Intzh
		   (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh GHCziPrim.Intzh) =
    \ (xzh::GHCziPrim.Intzh) (yzh::GHCziPrim.Intzh) ->
	%case (GHCziBase.zaza (GHCziPrim.zgzh xzh (0::GHCziPrim.Intzh))
	       (GHCziPrim.zlzh yzh (0::GHCziPrim.Intzh)))
	%of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziPrim.quotIntzh
	     (GHCziPrim.zmzh (GHCziPrim.zmzh xzh yzh) (1::GHCziPrim.Intzh)) yzh;
	   GHCziBase.False ->
	     %case (GHCziBase.zaza (GHCziPrim.zlzh xzh (0::GHCziPrim.Intzh))
		    (GHCziPrim.zgzh yzh (0::GHCziPrim.Intzh)))
	     %of (wild1::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziPrim.quotIntzh
		  (GHCziPrim.zpzh (GHCziPrim.zmzh xzh yzh) (1::GHCziPrim.Intzh)) yzh;
		GHCziBase.False ->
		  GHCziPrim.quotIntzh xzh yzh}};
  Atom.divInt :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Int
		 (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (Atom.divIntzh x y)}};
  Atom.gcdInt :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Int
		 (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (a::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (b::GHCziPrim.Intzh) ->
		  %let absInt :: GHCziPrim.ZLzmzgZR GHCziPrim.Intzh GHCziPrim.Intzh =
			 \ (x::GHCziPrim.Intzh) ->
			     %case (GHCziPrim.zlzh x (0::GHCziPrim.Intzh))
			     %of (wild2::GHCziBase.Bool)
			       {GHCziBase.True ->
				  GHCziPrim.negateIntzh x;
				GHCziBase.False ->
				  x}
		  %in %case (absInt a) %of (absA::GHCziPrim.Intzh)
			{%_ ->
			   %case (absInt b) %of (absB::GHCziPrim.Intzh)
			     {%_ ->
				%case a %of (ds2::GHCziPrim.Intzh)
				  {%_ ->
				     %case b %of (ds3::GHCziPrim.Intzh)
				       {%_ ->
					  GHCziBase.zdwIzh (GHCziPrim.gcdIntzh absA absB);
					(0::GHCziPrim.Intzh) ->
					  GHCziBase.zdwIzh absA};
				   (0::GHCziPrim.Intzh) ->
				     %case b %of (ds3::GHCziPrim.Intzh)
				       {%_ ->
					  GHCziBase.zdwIzh absB;
					(0::GHCziPrim.Intzh) ->
					  GHCziErr.error @ GHCziBase.Int
					  (GHCziBase.unpackCStringzh
					   ("PrelBase.gcdInt: gcd 0 0 is undefined"::GHCziPrim.Addrzh))}}}}}};
  Atom.minInt :: GHCziBase.Int =
    %case GHCziNum.zdfNumInt %of (tpl::GHCziNum.ZCTNum GHCziBase.Int)
      {GHCziNum.ZCDNum
       (tpl1::GHCziBase.ZCTEq GHCziBase.Int)
       (tpl2::GHCziShow.ZCTShow GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl4::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl5::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl6::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl7::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl8::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
       (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer GHCziBase.Int) ->
	 tpl6 lit1};
  Atom.zdfBoundedInt :: Atom.ZCTBounded GHCziBase.Int =
    Atom.zdwZCDBounded @ GHCziBase.Int Atom.maxInt Atom.minInt;
  Atom.twoInt :: GHCziBase.Int =
    GHCziBase.zdwIzh (2::GHCziPrim.Intzh);
  Atom.oneInt :: GHCziBase.Int =
    GHCziBase.zdwIzh (1::GHCziPrim.Intzh);
  Atom.zzeroInt :: GHCziBase.Int =
    GHCziBase.zdwIzh (0::GHCziPrim.Intzh);
  toEnum2 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Ordering =
    \ (n::GHCziBase.Int) ->
	%case (zeze n Atom.zzeroInt) %of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziBase.zdwLT;
	   GHCziBase.False ->
	     %case (zeze n Atom.oneInt) %of (wild1::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziBase.zdwEQ;
		GHCziBase.False ->
		  %case (zeze n Atom.twoInt) %of (wild2::GHCziBase.Bool)
		    {GHCziBase.True ->
		       GHCziBase.zdwGT;
		     GHCziBase.False ->
		       GHCziErr.error @ GHCziBase.Ordering
		       (GHCziBase.unpackCStringzh
			("Prelude.Enum.Ordering.toEnum: bad argment"::GHCziPrim.Addrzh))}}};
  fromEnum2 :: GHCziPrim.ZLzmzgZR GHCziBase.Ordering GHCziBase.Int =
    \ (ds::GHCziBase.Ordering) ->
	%case ds %of (wild::GHCziBase.Ordering)
	  {GHCziBase.EQ ->
	     Atom.oneInt;
	   GHCziBase.GT ->
	     Atom.twoInt;
	   GHCziBase.LT ->
	     Atom.zzeroInt};
  toEnum3 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool =
    \ (n::GHCziBase.Int) ->
	%case (zeze n Atom.zzeroInt) %of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziBase.zdwFalse;
	   GHCziBase.False ->
	     %case (zeze n Atom.oneInt) %of (wild1::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziBase.zdwTrue;
		GHCziBase.False ->
		  GHCziErr.error @ GHCziBase.Bool
		  (GHCziBase.unpackCStringzh
		   ("Prelude.Enum.Bool.toEnum: bad argment"::GHCziPrim.Addrzh))}};
  fromEnum3 :: GHCziPrim.ZLzmzgZR GHCziBase.Bool GHCziBase.Int =
    \ (ds::GHCziBase.Bool) ->
	%case ds %of (wild::GHCziBase.Bool)
	  {GHCziBase.False ->
	     Atom.zzeroInt;
	   GHCziBase.True ->
	     Atom.oneInt};
  toEnum4 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Z0T =
    \ (x::GHCziBase.Int) ->
	%case (zeze x Atom.zzeroInt) %of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziBase.zdwZ0T;
	   GHCziBase.False ->
	     GHCziErr.error @ GHCziBase.Z0T
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.().toEnum: bad argument"::GHCziPrim.Addrzh))};
  fromEnum4 :: GHCziPrim.ZLzmzgZR GHCziBase.Z0T GHCziBase.Int =
    \ (ds::GHCziBase.Z0T) ->
	%case ds %of (wild::GHCziBase.Z0T)
	  {GHCziBase.Z0T ->
	     Atom.zzeroInt};
  Atom.zdfEnumZ0T :: Atom.ZCTEnum GHCziBase.Z0T =
    Atom.zdwZCDEnum @ GHCziBase.Z0T pred1 succ1 toEnum4 fromEnum4
    enumFrom2 enumFromThen1 enumFromTo2 enumFromThenTo2;
  Atom.remInt :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Int
		 (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.remIntzh x y)}};
  Atom.quotInt :: GHCziPrim.ZLzmzgZR
		  GHCziBase.Int
		  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.quotIntzh x y)}};
  Atom.timesInt :: GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.ztzh x y)}};
  Atom.minusInt :: GHCziPrim.ZLzmzgZR
		   GHCziBase.Int
		   (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.zmzh x y)}};
  Atom.zddmpred :: %forall a . GHCziPrim.ZLzmzgZR
			       (Atom.ZCTEnum a)
			       (GHCziPrim.ZLzmzgZR a a) =
    \ @ a (zddEnum::Atom.ZCTEnum a) ->
	GHCziBase.zi @ GHCziBase.Int @ a @ a
	(%case zddEnum %of (tpl::Atom.ZCTEnum a)
	   {Atom.ZCDEnum
	    (tpl1::GHCziPrim.ZLzmzgZR a a)
	    (tpl2::GHCziPrim.ZLzmzgZR a a)
	    (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
	    (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
	    (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
	    (tpl6::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	    (tpl7::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	    (tpl8::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
	      tpl3})
	(GHCziBase.zi @ GHCziBase.Int @ GHCziBase.Int @ a
	 (\ (ds::GHCziBase.Int) -> Atom.minusInt ds Atom.oneInt)
	 (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	    {Atom.ZCDEnum
	     (tpl1::GHCziPrim.ZLzmzgZR a a)
	     (tpl2::GHCziPrim.ZLzmzgZR a a)
	     (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
	     (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
	     (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
	     (tpl6::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	     (tpl7::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	     (tpl8::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR
		     a
		     (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
	       tpl4}));
  Atom.plusInt :: GHCziPrim.ZLzmzgZR
		  GHCziBase.Int
		  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds::GHCziBase.Int) (ds1::GHCziBase.Int) ->
	%case ds %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds1 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.zpzh x y)}};
  Atom.zddmsucc :: %forall a . GHCziPrim.ZLzmzgZR
			       (Atom.ZCTEnum a)
			       (GHCziPrim.ZLzmzgZR a a) =
    \ @ a (zddEnum::Atom.ZCTEnum a) ->
	GHCziBase.zi @ GHCziBase.Int @ a @ a
	(%case zddEnum %of (tpl::Atom.ZCTEnum a)
	   {Atom.ZCDEnum
	    (tpl1::GHCziPrim.ZLzmzgZR a a)
	    (tpl2::GHCziPrim.ZLzmzgZR a a)
	    (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
	    (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
	    (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
	    (tpl6::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	    (tpl7::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	    (tpl8::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
	      tpl3})
	(GHCziBase.zi @ GHCziBase.Int @ GHCziBase.Int @ a
	 (\ (ds::GHCziBase.Int) -> Atom.plusInt ds Atom.oneInt)
	 (%case zddEnum %of (tpl::Atom.ZCTEnum a)
	    {Atom.ZCDEnum
	     (tpl1::GHCziPrim.ZLzmzgZR a a)
	     (tpl2::GHCziPrim.ZLzmzgZR a a)
	     (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a)
	     (tpl4::GHCziPrim.ZLzmzgZR a GHCziBase.Int)
	     (tpl5::GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a))
	     (tpl6::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	     (tpl7::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))
	     (tpl8::GHCziPrim.ZLzmzgZR
		    a
		    (GHCziPrim.ZLzmzgZR
		     a
		     (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)))) ->
	       tpl4}));
  Atom.gozudnzucharzulist :: GHCziPrim.ZLzmzgZR
			     GHCziPrim.Intzh
			     (GHCziPrim.ZLzmzgZR
			      GHCziPrim.Intzh
			      (GHCziPrim.ZLzmzgZR
			       GHCziPrim.Intzh
			       (GHCziBase.ZMZN GHCziBase.Char))) =
    \ (x::GHCziPrim.Intzh)
      (delta::GHCziPrim.Intzh)
      (lim::GHCziPrim.Intzh) ->
	%let %rec
	     {gozudn :: GHCziPrim.ZLzmzgZR
			GHCziPrim.Intzh
			(GHCziBase.ZMZN GHCziBase.Char) =
		\ (x1::GHCziPrim.Intzh) ->
		    %case (GHCziPrim.zlzh x1 lim) %of (wild::GHCziBase.Bool)
		      {GHCziBase.True ->
			 GHCziBase.zdwZMZN @ GHCziBase.Char;
		       GHCziBase.False ->
			 GHCziBase.zdwZC @ GHCziBase.Char
			 (GHCziBase.zdwCzh (GHCziPrim.chrzh x1))
			 (gozudn (GHCziPrim.zpzh x1 delta))}}
	%in gozudn x;
  Atom.gozuupzucharzulist :: GHCziPrim.ZLzmzgZR
			     GHCziPrim.Intzh
			     (GHCziPrim.ZLzmzgZR
			      GHCziPrim.Intzh
			      (GHCziPrim.ZLzmzgZR
			       GHCziPrim.Intzh
			       (GHCziBase.ZMZN GHCziBase.Char))) =
    \ (x::GHCziPrim.Intzh)
      (delta::GHCziPrim.Intzh)
      (lim::GHCziPrim.Intzh) ->
	%let %rec
	     {gozuup :: GHCziPrim.ZLzmzgZR
			GHCziPrim.Intzh
			(GHCziBase.ZMZN GHCziBase.Char) =
		\ (x1::GHCziPrim.Intzh) ->
		    %case (GHCziPrim.zgzh x1 lim) %of (wild::GHCziBase.Bool)
		      {GHCziBase.True ->
			 GHCziBase.zdwZMZN @ GHCziBase.Char;
		       GHCziBase.False ->
			 GHCziBase.zdwZC @ GHCziBase.Char
			 (GHCziBase.zdwCzh (GHCziPrim.chrzh x1))
			 (gozuup (GHCziPrim.zpzh x1 delta))}}
	%in gozuup x;
  Atom.efdtChar :: GHCziPrim.ZLzmzgZR
		   GHCziPrim.Intzh
		   (GHCziPrim.ZLzmzgZR
		    GHCziPrim.Intzh
		    (GHCziPrim.ZLzmzgZR
		     GHCziPrim.Intzh
		     (GHCziBase.ZMZN GHCziBase.Char))) =
    \ (x1::GHCziPrim.Intzh)
      (x2::GHCziPrim.Intzh)
      (lim::GHCziPrim.Intzh) ->
	%let delta :: GHCziPrim.Intzh = GHCziPrim.zmzh x2 x1
	%in %case (GHCziPrim.zgzezh delta (0::GHCziPrim.Intzh))
	    %of (wild::GHCziBase.Bool)
	      {GHCziBase.True ->
		 Atom.gozuupzucharzulist x1 delta lim;
	       GHCziBase.False ->
		 Atom.gozudnzucharzulist x1 delta lim};
  Atom.efdtCharList :: GHCziPrim.ZLzmzgZR
		       GHCziPrim.Intzh
		       (GHCziPrim.ZLzmzgZR
			GHCziPrim.Intzh
			(GHCziPrim.ZLzmzgZR
			 GHCziPrim.Intzh
			 (GHCziBase.ZMZN GHCziBase.Char))) =
    Atom.efdtChar;
  Atom.efdtCharFB :: %forall t . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
				 (GHCziPrim.ZLzmzgZR
				  t
				  (GHCziPrim.ZLzmzgZR
				   GHCziPrim.Intzh
				   (GHCziPrim.ZLzmzgZR
				    GHCziPrim.Intzh
				    (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t)))) =
    \ @ t
      (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
      (n::t)
      (x1::GHCziPrim.Intzh)
      (x2::GHCziPrim.Intzh)
      (lim::GHCziPrim.Intzh) ->
	%let delta :: GHCziPrim.Intzh = GHCziPrim.zmzh x2 x1
	%in %case (GHCziPrim.zgzezh delta (0::GHCziPrim.Intzh))
	    %of (wild::GHCziBase.Bool)
	      {GHCziBase.True ->
		 Atom.gozuupzucharzufb @ t c n x1 delta lim;
	       GHCziBase.False ->
		 Atom.gozudnzucharzufb @ t c n x1 delta lim};
  enumFromThenTo4 :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Char
		     (GHCziPrim.ZLzmzgZR
		      GHCziBase.Char
		      (GHCziPrim.ZLzmzgZR
		       GHCziBase.Char
		       (GHCziBase.ZMZN GHCziBase.Char))) =
    \ (ds::GHCziBase.Char)
      (ds1::GHCziBase.Char)
      (ds2::GHCziBase.Char) ->
	%case ds %of (wild::GHCziBase.Char)
	  {GHCziBase.Czh (x1::GHCziPrim.Charzh) ->
	     %case ds1 %of (wild1::GHCziBase.Char)
	       {GHCziBase.Czh (x2::GHCziPrim.Charzh) ->
		  %case ds2 %of (wild2::GHCziBase.Char)
		    {GHCziBase.Czh (y::GHCziPrim.Charzh) ->
		       GHCziBase.build @ GHCziBase.Char
		       (\ @ b
			  (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR b b))
			  (n::b) ->
			    Atom.efdtCharFB @ b c n (GHCziPrim.ordzh x1) (GHCziPrim.ordzh x2)
			    (GHCziPrim.ordzh y))}}};
  Atom.efdChar :: GHCziPrim.ZLzmzgZR
		  GHCziPrim.Intzh
		  (GHCziPrim.ZLzmzgZR
		   GHCziPrim.Intzh
		   (GHCziBase.ZMZN GHCziBase.Char)) =
    \ (x1::GHCziPrim.Intzh) (x2::GHCziPrim.Intzh) ->
	%let delta :: GHCziPrim.Intzh = GHCziPrim.zmzh x2 x1
	%in %case (GHCziPrim.zgzezh delta (0::GHCziPrim.Intzh))
	    %of (wild::GHCziBase.Bool)
	      {GHCziBase.True ->
		 Atom.gozuupzucharzulist x1 delta (1114111::GHCziPrim.Intzh);
	       GHCziBase.False ->
		 Atom.gozudnzucharzulist x1 delta (0::GHCziPrim.Intzh)};
  Atom.efdCharList :: GHCziPrim.ZLzmzgZR
		      GHCziPrim.Intzh
		      (GHCziPrim.ZLzmzgZR
		       GHCziPrim.Intzh
		       (GHCziBase.ZMZN GHCziBase.Char)) =
    Atom.efdChar;
  Atom.efdCharFB :: %forall t . GHCziPrim.ZLzmzgZR
				(GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
				(GHCziPrim.ZLzmzgZR
				 t
				 (GHCziPrim.ZLzmzgZR
				  GHCziPrim.Intzh
				  (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t))) =
    \ @ t
      (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
      (n::t)
      (x1::GHCziPrim.Intzh)
      (x2::GHCziPrim.Intzh) ->
	%let delta :: GHCziPrim.Intzh = GHCziPrim.zmzh x2 x1
	%in %case (GHCziPrim.zgzezh delta (0::GHCziPrim.Intzh))
	    %of (wild::GHCziBase.Bool)
	      {GHCziBase.True ->
		 Atom.gozuupzucharzufb @ t c n x1 delta (1114111::GHCziPrim.Intzh);
	       GHCziBase.False ->
		 Atom.gozudnzucharzufb @ t c n x1 delta (0::GHCziPrim.Intzh)};
  enumFromThen2 :: GHCziPrim.ZLzmzgZR
		   GHCziBase.Char
		   (GHCziPrim.ZLzmzgZR
		    GHCziBase.Char
		    (GHCziBase.ZMZN GHCziBase.Char)) =
    \ (ds::GHCziBase.Char) (ds1::GHCziBase.Char) ->
	%case ds %of (wild::GHCziBase.Char)
	  {GHCziBase.Czh (x1::GHCziPrim.Charzh) ->
	     %case ds1 %of (wild1::GHCziBase.Char)
	       {GHCziBase.Czh (x2::GHCziPrim.Charzh) ->
		  GHCziBase.build @ GHCziBase.Char
		  (\ @ b
		     (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR b b))
		     (n::b) ->
		       Atom.efdCharFB @ b c n (GHCziPrim.ordzh x1)
		       (GHCziPrim.ordzh x2))}};
  Atom.eftChar :: GHCziPrim.ZLzmzgZR
		  GHCziPrim.Intzh
		  (GHCziPrim.ZLzmzgZR
		   GHCziPrim.Intzh
		   (GHCziBase.ZMZN GHCziBase.Char)) =
    \ (x::GHCziPrim.Intzh) (y::GHCziPrim.Intzh) ->
	%case (GHCziPrim.zgzh x y) %of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziBase.zdwZMZN @ GHCziBase.Char;
	   GHCziBase.False ->
	     GHCziBase.zdwZC @ GHCziBase.Char
	     (GHCziBase.zdwCzh (GHCziPrim.chrzh x))
	     (GHCziBase.build @ GHCziBase.Char
	      (\ @ b
		 (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR b b))
		 (n::b) ->
		   Atom.eftCharFB @ b c n (GHCziPrim.zpzh x (1::GHCziPrim.Intzh))
		   y))};
  Atom.eftCharList :: GHCziPrim.ZLzmzgZR
		      GHCziPrim.Intzh
		      (GHCziPrim.ZLzmzgZR
		       GHCziPrim.Intzh
		       (GHCziBase.ZMZN GHCziBase.Char)) =
    Atom.eftChar;
  Atom.eftCharFB :: %forall t . GHCziPrim.ZLzmzgZR
				(GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
				(GHCziPrim.ZLzmzgZR
				 t
				 (GHCziPrim.ZLzmzgZR
				  GHCziPrim.Intzh
				  (GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t))) =
    %note "InlineMe"
    \ @ t
      (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR t t))
      (n::t)
      (x::GHCziPrim.Intzh)
      (y::GHCziPrim.Intzh) ->
	%let %rec
	     {go :: GHCziPrim.ZLzmzgZR GHCziPrim.Intzh t =
		\ (x1::GHCziPrim.Intzh) ->
		    %case (GHCziPrim.zgzh x1 y) %of (wild::GHCziBase.Bool)
		      {GHCziBase.True ->
			 n;
		       GHCziBase.False ->
			 c (GHCziBase.zdwCzh (GHCziPrim.chrzh x1))
			 (go (GHCziPrim.zpzh x1 (1::GHCziPrim.Intzh)))}}
	%in go x;
  enumFrom4 :: GHCziPrim.ZLzmzgZR
	       GHCziBase.Char
	       (GHCziBase.ZMZN GHCziBase.Char) =
    \ (ds::GHCziBase.Char) ->
	%case ds %of (wild::GHCziBase.Char)
	  {GHCziBase.Czh (x::GHCziPrim.Charzh) ->
	     GHCziBase.build @ GHCziBase.Char
	     (\ @ b
		(c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR b b))
		(n::b) ->
		  Atom.eftCharFB @ b c n (GHCziPrim.ordzh x)
		  (1114111::GHCziPrim.Intzh))};
  enumFromTo4 :: GHCziPrim.ZLzmzgZR
		 GHCziBase.Char
		 (GHCziPrim.ZLzmzgZR
		  GHCziBase.Char
		  (GHCziBase.ZMZN GHCziBase.Char)) =
    \ (ds::GHCziBase.Char) (ds1::GHCziBase.Char) ->
	%case ds %of (wild::GHCziBase.Char)
	  {GHCziBase.Czh (x::GHCziPrim.Charzh) ->
	     %case ds1 %of (wild1::GHCziBase.Char)
	       {GHCziBase.Czh (y::GHCziPrim.Charzh) ->
		  GHCziBase.build @ GHCziBase.Char
		  (\ @ b
		     (c::GHCziPrim.ZLzmzgZR GHCziBase.Char (GHCziPrim.ZLzmzgZR b b))
		     (n::b) ->
		       Atom.eftCharFB @ b c n (GHCziPrim.ordzh x) (GHCziPrim.ordzh y))}};
  Atom.zdfEnumChar :: Atom.ZCTEnum GHCziBase.Char =
    Atom.zdwZCDEnum @ GHCziBase.Char pred4 succ4 GHCziBase.chr
    GHCziBase.ord enumFrom4 enumFromThen2 enumFromTo4 enumFromThenTo4;
  Atom.prelzulistzustr :: GHCziBase.ZMZN GHCziBase.Char =
    GHCziBase.unpackCStringzh ("Prelude."::GHCziPrim.Addrzh);
  Atom.errorEmptyList :: %forall a . GHCziPrim.ZLzmzgZR
				     (GHCziBase.ZMZN GHCziBase.Char)
				     a =
    \ @ a (fun::GHCziBase.ZMZN GHCziBase.Char) ->
	GHCziErr.error @ a
	(Atom.append @ GHCziBase.Char
	 (Atom.append @ GHCziBase.Char Atom.prelzulistzustr fun)
	 (GHCziBase.unpackCStringzh (": empty list"::GHCziPrim.Addrzh)));
  %rec
  {Atom.foldr1 :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
     \ @ a
       (ds::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
       (ds1::GHCziBase.ZMZN a) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (ds2::GHCziBase.ZMZN a) ->
	      %case ds2 %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
		   ds x (Atom.foldr1 @ a ds wild1);
		 GHCziBase.ZMZN ->
		   x};
	    GHCziBase.ZMZN ->
	      Atom.errorEmptyList @ a
	      (GHCziBase.unpackCStringzh ("foldr1"::GHCziPrim.Addrzh))}};
  Atom.foldl1 :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
			     (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
    \ @ a
      (f::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
      (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
	     Atom.foldl @ a @ a f x xs;
	   GHCziBase.ZMZN ->
	     Atom.errorEmptyList @ a
	     (GHCziBase.unpackCStringzh ("foldl1"::GHCziPrim.Addrzh))};
  Atom.minimum :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZCTOrd a)
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
    \ @ a (zddOrd::GHCziBase.ZCTOrd a) (eta::GHCziBase.ZMZN a) ->
	%case eta %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
	     Atom.foldl1 @ a
	     (%case zddOrd %of (tpl::GHCziBase.ZCTOrd a)
		{GHCziBase.ZCDOrd
		 (tpl1::GHCziBase.ZCTEq a)
		 (tpl2::GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a GHCziBase.Ordering))
		 (tpl3::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl4::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl5::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl6::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl7::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
		 (tpl8::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a)) ->
		   tpl7})
	     wild;
	   GHCziBase.ZMZN ->
	     Atom.errorEmptyList @ a
	     (GHCziBase.unpackCStringzh ("minimum"::GHCziPrim.Addrzh))};
  Atom.minimum1 :: GHCziPrim.ZLzmzgZR
		   (GHCziBase.ZMZN GHCziBase.Int)
		   GHCziBase.Int =
    %note "InlineMe"
    Atom.minimum @ GHCziBase.Int GHCziBase.zdfOrdInt;
  Atom.maximum :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZCTOrd a)
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
    \ @ a (zddOrd::GHCziBase.ZCTOrd a) (eta::GHCziBase.ZMZN a) ->
	%case eta %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
	     Atom.foldl1 @ a
	     (%case zddOrd %of (tpl::GHCziBase.ZCTOrd a)
		{GHCziBase.ZCDOrd
		 (tpl1::GHCziBase.ZCTEq a)
		 (tpl2::GHCziPrim.ZLzmzgZR
			a
			(GHCziPrim.ZLzmzgZR a GHCziBase.Ordering))
		 (tpl3::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl4::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl5::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl6::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		 (tpl7::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
		 (tpl8::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a)) ->
		   tpl8})
	     wild;
	   GHCziBase.ZMZN ->
	     Atom.errorEmptyList @ a
	     (GHCziBase.unpackCStringzh ("maximum"::GHCziPrim.Addrzh))};
  Atom.maximum1 :: GHCziPrim.ZLzmzgZR
		   (GHCziBase.ZMZN GHCziBase.Int)
		   GHCziBase.Int =
    %note "InlineMe"
    Atom.maximum @ GHCziBase.Int GHCziBase.zdfOrdInt;
  %rec
  {Atom.init :: %forall a . GHCziPrim.ZLzmzgZR
			    (GHCziBase.ZMZN a)
			    (GHCziBase.ZMZN a) =
     \ @ a (ds::GHCziBase.ZMZN a) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (ds1::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
		   GHCziBase.zdwZC @ a x (Atom.init @ a wild1);
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ a};
	    GHCziBase.ZMZN ->
	      Atom.errorEmptyList @ (GHCziBase.ZMZN a)
	      (GHCziBase.unpackCStringzh ("init"::GHCziPrim.Addrzh))}};
  %rec
  {Atom.last :: %forall a . GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a =
     \ @ a (ds::GHCziBase.ZMZN a) ->
	 %case ds %of (wild::GHCziBase.ZMZN a)
	   {GHCziBase.ZC (x::a) (ds1::GHCziBase.ZMZN a) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
		   Atom.last @ a wild1;
		 GHCziBase.ZMZN ->
		   x};
	    GHCziBase.ZMZN ->
	      Atom.errorEmptyList @ a
	      (GHCziBase.unpackCStringzh ("last"::GHCziPrim.Addrzh))}};
  Atom.tail :: %forall a . GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZMZN a)
			   (GHCziBase.ZMZN a) =
    \ @ a (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (ds1::a) (xs::GHCziBase.ZMZN a) ->
	     xs;
	   GHCziBase.ZMZN ->
	     Atom.errorEmptyList @ (GHCziBase.ZMZN a)
	     (GHCziBase.unpackCStringzh ("tail"::GHCziPrim.Addrzh))};
  Atom.badHead :: %forall a . a =
    \ @ a ->
	Atom.errorEmptyList @ a
	(GHCziBase.unpackCStringzh ("head"::GHCziPrim.Addrzh));
  Atom.head :: %forall a . GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a =
    \ @ a (ds::GHCziBase.ZMZN a) ->
	%case ds %of (wild::GHCziBase.ZMZN a)
	  {GHCziBase.ZC (x::a) (ds1::GHCziBase.ZMZN a) ->
	     x;
	   GHCziBase.ZMZN ->
	     Atom.badHead @ a};
  Atom.or :: GHCziPrim.ZLzmzgZR
	     (GHCziBase.ZMZN GHCziBase.Bool)
	     GHCziBase.Bool =
    GHCziBase.foldr @ GHCziBase.Bool @ GHCziBase.Bool GHCziBase.zbzb
    GHCziBase.zdwFalse;
  Atom.any :: %forall a . GHCziPrim.ZLzmzgZR
			  (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool) =
    \ @ a (p::GHCziPrim.ZLzmzgZR a GHCziBase.Bool) ->
	GHCziBase.zi @ (GHCziBase.ZMZN GHCziBase.Bool) @ GHCziBase.Bool
	@ (GHCziBase.ZMZN a) Atom.or (Atom.mapList @ a @ GHCziBase.Bool p);
  Atom.elem :: %forall a . GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZCTEq a)
			   (GHCziPrim.ZLzmzgZR
			    a
			    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool)) =
    \ @ a (zddEq1::GHCziBase.ZCTEq a) (eta::a) ->
	Atom.any @ a
	(\ (ds::a) ->
	     %case zddEq1 %of (tpl::GHCziBase.ZCTEq a)
	       {GHCziBase.ZCDEq
		(tpl1::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		(tpl2::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)) ->
		  tpl2 ds eta});
  Atom.and :: GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziBase.Bool)
	      GHCziBase.Bool =
    GHCziBase.foldr @ GHCziBase.Bool @ GHCziBase.Bool GHCziBase.zaza
    GHCziBase.zdwTrue;
  Atom.all :: %forall a . GHCziPrim.ZLzmzgZR
			  (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool) =
    \ @ a (p::GHCziPrim.ZLzmzgZR a GHCziBase.Bool) ->
	GHCziBase.zi @ (GHCziBase.ZMZN GHCziBase.Bool) @ GHCziBase.Bool
	@ (GHCziBase.ZMZN a) Atom.and
	(Atom.mapList @ a @ GHCziBase.Bool p);
  Atom.notElem :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZCTEq a)
			      (GHCziPrim.ZLzmzgZR
			       a
			       (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool)) =
    \ @ a (zddEq1::GHCziBase.ZCTEq a) (eta::a) ->
	Atom.all @ a
	(\ (ds::a) ->
	     %case zddEq1 %of (tpl::GHCziBase.ZCTEq a)
	       {GHCziBase.ZCDEq
		(tpl1::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Bool))
		(tpl2::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)) ->
		  tpl1 ds eta});
  %rec
  {Atom.lines :: GHCziPrim.ZLzmzgZR
		 (GHCziBase.ZMZN GHCziBase.Char)
		 (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) =
     \ (ds::GHCziBase.ZMZN GHCziBase.Char) ->
	 %case ds %of (wild::GHCziBase.ZMZN GHCziBase.Char)
	   {GHCziBase.ZC
	    (a::GHCziBase.Char) (a1::GHCziBase.ZMZN GHCziBase.Char) ->
	      %let ds1 :: DataziTuple.Z2T
			  (GHCziBase.ZMZN GHCziBase.Char)
			  (GHCziBase.ZMZN GHCziBase.Char) =
		     %let ds2 :: GHCziBase.Char =
			    GHCziBase.zdwCzh ('\x0a'::GHCziPrim.Charzh)
		     %in Atom.break @ GHCziBase.Char
			 (\ (ds3::GHCziBase.Char) ->
			      %case GHCziBase.zdfEqChar %of (tpl::GHCziBase.ZCTEq GHCziBase.Char)
				{GHCziBase.ZCDEq
				 (tpl1::GHCziPrim.ZLzmzgZR
					GHCziBase.Char
					(GHCziPrim.ZLzmzgZR GHCziBase.Char GHCziBase.Bool))
				 (tpl2::GHCziPrim.ZLzmzgZR
					GHCziBase.Char
					(GHCziPrim.ZLzmzgZR GHCziBase.Char GHCziBase.Bool)) ->
				   tpl2 ds3 ds2})
			 wild
	      %in GHCziBase.zdwZC @ (GHCziBase.ZMZN GHCziBase.Char)
		  (%case ds1
		   %of (wild1::DataziTuple.Z2T
			       (GHCziBase.ZMZN GHCziBase.Char)
			       (GHCziBase.ZMZN GHCziBase.Char))
		     {DataziTuple.Z2T
		      (l::GHCziBase.ZMZN GHCziBase.Char)
		      (szq::GHCziBase.ZMZN GHCziBase.Char) ->
			l})
		  (%case ds1
		   %of (wild1::DataziTuple.Z2T
			       (GHCziBase.ZMZN GHCziBase.Char)
			       (GHCziBase.ZMZN GHCziBase.Char))
		     {DataziTuple.Z2T
		      (l::GHCziBase.ZMZN GHCziBase.Char)
		      (szq::GHCziBase.ZMZN GHCziBase.Char) ->
			%case szq %of (wild2::GHCziBase.ZMZN GHCziBase.Char)
			  {GHCziBase.ZC
			   (ds2::GHCziBase.Char) (szqzq::GHCziBase.ZMZN GHCziBase.Char) ->
			     Atom.lines szqzq;
			   GHCziBase.ZMZN ->
			     GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziBase.Char)}});
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziBase.Char)}};
  %rec
  {Atom.zdfShowAtomState :: GHCziShow.ZCTShow Atom.AtomState =
     GHCziShow.zdwZCDShow @ Atom.AtomState zddmshowsPrec show showList;
   zddmshowsPrec :: GHCziPrim.ZLzmzgZR
		    GHCziBase.Int
		    (GHCziPrim.ZLzmzgZR
		     Atom.AtomState
		     (GHCziPrim.ZLzmzgZR
		      (GHCziBase.ZMZN GHCziBase.Char)
		      (GHCziBase.ZMZN GHCziBase.Char))) =
     GHCziShow.zddmshowsPrec @ Atom.AtomState Atom.zdfShowAtomState};
  zddShow1 :: GHCziShow.ZCTShow (GHCziBase.ZMZN Atom.AtomState) =
    GHCziShow.zdfShowZMZN @ Atom.AtomState Atom.zdfShowAtomState;
  Atom.zdfNumZMZN :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziNum.ZCTNum a)
				 (GHCziNum.ZCTNum (GHCziBase.ZMZN a)) =
    %note "InlineMe"
    \ @ a (zddNum::GHCziNum.ZCTNum a) ->
	%let fromInteger :: GHCziPrim.ZLzmzgZR GHCziNum.Integer a =
	       GHCziNum.fromInteger @ a zddNum
	%in %let lit4 :: a =
		   fromInteger (GHCziNum.zdwSzh (0::GHCziPrim.Intzh))
	    %in %let %rec
		     {negate :: GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN a)
				(GHCziBase.ZMZN a) =
			\ (ds::GHCziBase.ZMZN a) ->
			    %case ds %of (wild::GHCziBase.ZMZN a)
			      {GHCziBase.ZMZN ->
				 GHCziErr.patError @ (GHCziBase.ZMZN a)
				 ("AtomwithPrelude.hs:186|function negate"::GHCziPrim.Addrzh);
			       GHCziBase.ZC (f::a) (fs::GHCziBase.ZMZN a) ->
				 GHCziBase.zdwZC @ a (GHCziNum.negate @ a zddNum f) (negate fs)}}
		%in %let %rec
			 {zp :: GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN a)
				(GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
			    \ (l::GHCziBase.ZMZN a) (ds::GHCziBase.ZMZN a) ->
				%case ds %of (wild::GHCziBase.ZMZN a)
				  {GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
				     %case l %of (wild1::GHCziBase.ZMZN a)
				       {GHCziBase.ZC (f::a) (fs::GHCziBase.ZMZN a) ->
					  GHCziBase.zdwZC @ a (GHCziNum.zp @ a zddNum f a1)
					  (zp fs a2);
					GHCziBase.ZMZN ->
					  wild};
				   GHCziBase.ZMZN ->
				     l}}
		    %in %let %rec
			     {zt :: GHCziPrim.ZLzmzgZR
				    (GHCziBase.ZMZN a)
				    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
				\ (ds::GHCziBase.ZMZN a) (ds1::GHCziBase.ZMZN a) ->
				    %case ds1 %of (wild::GHCziBase.ZMZN a)
				      {GHCziBase.ZC (a1::a) (a2::GHCziBase.ZMZN a) ->
					 %case ds %of (wild1::GHCziBase.ZMZN a)
					   {GHCziBase.ZC (f::a) (fs::GHCziBase.ZMZN a) ->
					      GHCziBase.zdwZC @ a (GHCziNum.zt @ a zddNum f a1)
					      (zt a2 a2);
					    GHCziBase.ZMZN ->
					      GHCziBase.zdwZMZN @ a};
				       GHCziBase.ZMZN ->
					 GHCziBase.zdwZMZN @ a}}
			%in %let a1 :: GHCziPrim.ZLzmzgZR
				       GHCziNum.Integer
				       (GHCziBase.ZMZN a) =
				   \ (c::GHCziNum.Integer) ->
				       GHCziBase.zdwZC @ a (fromInteger c)
				       (GHCziBase.zdwZC @ a lit4 (GHCziBase.zdwZMZN @ a))
			    %in %let a2 :: GHCziPrim.ZLzmzgZR
					   (GHCziBase.ZMZN a)
					   (GHCziBase.ZMZN a) =
				       \ (ds::GHCziBase.ZMZN a) ->
					   GHCziErr.noMethodBindingError @ (GHCziBase.ZMZN a)
					   ("AtomwithPrelude.hs:185|GHC.Num.abs"::GHCziPrim.Addrzh)
				%in %let a3 :: GHCziPrim.ZLzmzgZR
					       (GHCziBase.ZMZN a)
					       (GHCziBase.ZMZN a) =
					   \ (ds::GHCziBase.ZMZN a) ->
					       GHCziErr.noMethodBindingError @ (GHCziBase.ZMZN a)
					       ("AtomwithPrelude.hs:185|GHC.Num.signum"::GHCziPrim.Addrzh)
				    %in %let a4 :: GHCziShow.ZCTShow (GHCziBase.ZMZN a) =
					       GHCziShow.zdfShowZMZN @ a
					       (GHCziNum.zdp2Num @ a zddNum)
					%in %let a5 :: GHCziBase.ZCTEq (GHCziBase.ZMZN a) =
						   GHCziBase.zdfEqZMZN @ a
						   (GHCziNum.zdp1Num @ a zddNum)
					    %in %let %rec
						     {zddNum1 :: GHCziNum.ZCTNum
								 (GHCziBase.ZMZN a) =
							GHCziNum.zdwZCDNum @ (GHCziBase.ZMZN a) a5
							a4 zddmzm zt zp negate a3 a2 a1;
						      zddmzm :: GHCziPrim.ZLzmzgZR
								(GHCziBase.ZMZN a)
								(GHCziPrim.ZLzmzgZR
								 (GHCziBase.ZMZN a)
								 (GHCziBase.ZMZN a)) =
							GHCziNum.zddmzm @ (GHCziBase.ZMZN a)
							zddNum1}
						%in zddNum1;
  zddNum :: GHCziNum.ZCTNum (GHCziBase.ZMZN GHCziFloat.Float) =
    Atom.zdfNumZMZN @ GHCziFloat.Float GHCziFloat.zdfNumFloat;
  zp :: GHCziPrim.ZLzmzgZR
	(GHCziBase.ZMZN GHCziFloat.Float)
	(GHCziPrim.ZLzmzgZR
	 (GHCziBase.ZMZN GHCziFloat.Float)
	 (GHCziBase.ZMZN GHCziFloat.Float)) =
    %case zddNum
    %of (tpl::GHCziNum.ZCTNum (GHCziBase.ZMZN GHCziFloat.Float))
      {GHCziNum.ZCDNum
       (tpl1::GHCziBase.ZCTEq (GHCziBase.ZMZN GHCziFloat.Float))
       (tpl2::GHCziShow.ZCTShow (GHCziBase.ZMZN GHCziFloat.Float))
       (tpl3::GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziFloat.Float)
	      (GHCziPrim.ZLzmzgZR
	       (GHCziBase.ZMZN GHCziFloat.Float)
	       (GHCziBase.ZMZN GHCziFloat.Float)))
       (tpl4::GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziFloat.Float)
	      (GHCziPrim.ZLzmzgZR
	       (GHCziBase.ZMZN GHCziFloat.Float)
	       (GHCziBase.ZMZN GHCziFloat.Float)))
       (tpl5::GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziFloat.Float)
	      (GHCziPrim.ZLzmzgZR
	       (GHCziBase.ZMZN GHCziFloat.Float)
	       (GHCziBase.ZMZN GHCziFloat.Float)))
       (tpl6::GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziFloat.Float)
	      (GHCziBase.ZMZN GHCziFloat.Float))
       (tpl7::GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziFloat.Float)
	      (GHCziBase.ZMZN GHCziFloat.Float))
       (tpl8::GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziFloat.Float)
	      (GHCziBase.ZMZN GHCziFloat.Float))
       (tpl9::GHCziPrim.ZLzmzgZR
	      GHCziNum.Integer
	      (GHCziBase.ZMZN GHCziFloat.Float)) ->
	 tpl5};
  Atom.propagate :: GHCziPrim.ZLzmzgZR
		    GHCziFloat.Float
		    (GHCziPrim.ZLzmzgZR
		     (GHCziBase.ZMZN GHCziFloat.Float)
		     (GHCziPrim.ZLzmzgZR Atom.AtomState Atom.AtomState)) =
    \ (dt::GHCziFloat.Float)
      (aforce::GHCziBase.ZMZN GHCziFloat.Float)
      (ds::Atom.AtomState) ->
	%case ds %of (wild::Atom.AtomState)
	  {Atom.State
	   (pos::GHCziBase.ZMZN GHCziFloat.Float)
	   (vel::GHCziBase.ZMZN GHCziFloat.Float) ->
	     Atom.zdwState (zp pos (zizt1 dt vel)) (zp vel (zizt1 dt aforce))};
  %rec
  {Atom.runExperiment :: %forall a . GHCziPrim.ZLzmzgZR
				     (GHCziPrim.ZLzmzgZR
				      a
				      (GHCziPrim.ZLzmzgZR
				       (GHCziBase.ZMZN Atom.AtomState)
				       (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziFloat.Float))))
				     (GHCziPrim.ZLzmzgZR
				      GHCziFloat.Float
				      (GHCziPrim.ZLzmzgZR
				       a
				       (GHCziPrim.ZLzmzgZR
					Atom.AtomState
					(GHCziBase.ZMZN Atom.AtomState)))) =
     \ @ a
       (law::GHCziPrim.ZLzmzgZR
	     a
	     (GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN Atom.AtomState)
	      (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziFloat.Float))))
       (dt::GHCziFloat.Float)
       (param::a)
       (init1::Atom.AtomState) ->
	 %let stream :: GHCziBase.ZMZN Atom.AtomState =
		Atom.runExperiment @ a law dt param init1
	 %in GHCziBase.zdwZC @ Atom.AtomState init1
	     (Atom.zzipWithList @ (GHCziBase.ZMZN GHCziFloat.Float)
	      @ Atom.AtomState @ Atom.AtomState (Atom.propagate dt)
	      (law param stream) stream)};
  %rec
  {Atom.testforce :: GHCziPrim.ZLzmzgZR
		     (GHCziBase.ZMZN GHCziFloat.Float)
		     (GHCziPrim.ZLzmzgZR
		      (GHCziBase.ZMZN Atom.AtomState)
		      (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziFloat.Float))) =
     \ (k::GHCziBase.ZMZN GHCziFloat.Float)
       (ds::GHCziBase.ZMZN Atom.AtomState) ->
	 %case ds %of (wild::GHCziBase.ZMZN Atom.AtomState)
	   {GHCziBase.ZC
	    (ds1::Atom.AtomState) (atoms::GHCziBase.ZMZN Atom.AtomState) ->
	      %case ds1 %of (wild1::Atom.AtomState)
		{Atom.State
		 (pos::GHCziBase.ZMZN GHCziFloat.Float)
		 (vel::GHCziBase.ZMZN GHCziFloat.Float) ->
		   GHCziBase.zdwZC @ (GHCziBase.ZMZN GHCziFloat.Float)
		   (%case zddNum
		    %of (tpl::GHCziNum.ZCTNum (GHCziBase.ZMZN GHCziFloat.Float))
		      {GHCziNum.ZCDNum
		       (tpl1::GHCziBase.ZCTEq (GHCziBase.ZMZN GHCziFloat.Float))
		       (tpl2::GHCziShow.ZCTShow (GHCziBase.ZMZN GHCziFloat.Float))
		       (tpl3::GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN GHCziFloat.Float)
			      (GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN GHCziFloat.Float)
			       (GHCziBase.ZMZN GHCziFloat.Float)))
		       (tpl4::GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN GHCziFloat.Float)
			      (GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN GHCziFloat.Float)
			       (GHCziBase.ZMZN GHCziFloat.Float)))
		       (tpl5::GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN GHCziFloat.Float)
			      (GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN GHCziFloat.Float)
			       (GHCziBase.ZMZN GHCziFloat.Float)))
		       (tpl6::GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN GHCziFloat.Float)
			      (GHCziBase.ZMZN GHCziFloat.Float))
		       (tpl7::GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN GHCziFloat.Float)
			      (GHCziBase.ZMZN GHCziFloat.Float))
		       (tpl8::GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN GHCziFloat.Float)
			      (GHCziBase.ZMZN GHCziFloat.Float))
		       (tpl9::GHCziPrim.ZLzmzgZR
			      GHCziNum.Integer
			      (GHCziBase.ZMZN GHCziFloat.Float)) ->
			 tpl4
			 (zizt1
			  (%case GHCziFloat.zdfNumFloat
			   %of (tpl10::GHCziNum.ZCTNum GHCziFloat.Float)
			     {GHCziNum.ZCDNum
			      (tpl11::GHCziBase.ZCTEq GHCziFloat.Float)
			      (tpl12::GHCziShow.ZCTShow GHCziFloat.Float)
			      (tpl13::GHCziPrim.ZLzmzgZR
				      GHCziFloat.Float
				      (GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float))
			      (tpl14::GHCziPrim.ZLzmzgZR
				      GHCziFloat.Float
				      (GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float))
			      (tpl15::GHCziPrim.ZLzmzgZR
				      GHCziFloat.Float
				      (GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float))
			      (tpl16::GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float)
			      (tpl17::GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float)
			      (tpl18::GHCziPrim.ZLzmzgZR GHCziFloat.Float GHCziFloat.Float)
			      (tpl19::GHCziPrim.ZLzmzgZR GHCziNum.Integer GHCziFloat.Float) ->
				tpl16 lit})
			  k)
			 pos})
		   (Atom.testforce k atoms)};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziFloat.Float)}};
  Atom.test :: GHCziBase.ZMZN Atom.AtomState =
    Atom.runExperiment @ (GHCziBase.ZMZN GHCziFloat.Float)
    Atom.testforce (GHCziFloat.zdwFzh (2.0e-2::GHCziPrim.Floatzh))
    (GHCziBase.zdwZC @ GHCziFloat.Float
     (GHCziFloat.zdwFzh (1.0::GHCziPrim.Floatzh))
     (GHCziBase.zdwZMZN @ GHCziFloat.Float))
    (Atom.zdwState
     (GHCziBase.zdwZC @ GHCziFloat.Float
      (GHCziFloat.zdwFzh (1.0::GHCziPrim.Floatzh))
      (GHCziBase.zdwZMZN @ GHCziFloat.Float))
     (GHCziBase.zdwZC @ GHCziFloat.Float
      (GHCziFloat.zdwFzh (0.0::GHCziPrim.Floatzh))
      (GHCziBase.zdwZMZN @ GHCziFloat.Float)));
  Atom.main :: GHCziPrim.ZLzmzgZR
	       (GHCziPrim.Statezh GHCziPrim.RealWorld)
	       (GHCziPrim.Z2H
		(GHCziPrim.Statezh GHCziPrim.RealWorld)
		GHCziBase.Z0T) =
    SystemziIO.putStr
    (%case zddShow1
     %of (tpl::GHCziShow.ZCTShow (GHCziBase.ZMZN Atom.AtomState))
       {GHCziShow.ZCDShow
	(tpl1::GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (GHCziPrim.ZLzmzgZR
		(GHCziBase.ZMZN Atom.AtomState)
		(GHCziPrim.ZLzmzgZR
		 (GHCziBase.ZMZN GHCziBase.Char)
		 (GHCziBase.ZMZN GHCziBase.Char))))
	(tpl2::GHCziPrim.ZLzmzgZR
	       (GHCziBase.ZMZN Atom.AtomState)
	       (GHCziBase.ZMZN GHCziBase.Char))
	(tpl3::GHCziPrim.ZLzmzgZR
	       (GHCziBase.ZMZN (GHCziBase.ZMZN Atom.AtomState))
	       (GHCziPrim.ZLzmzgZR
		(GHCziBase.ZMZN GHCziBase.Char)
		(GHCziBase.ZMZN GHCziBase.Char))) ->
	  tpl2
	  (Atom.take @ Atom.AtomState
	   (GHCziBase.zdwIzh (1000::GHCziPrim.Intzh)) Atom.test)});
  Atom.zlztzg :: %forall a . GHCziPrim.ZLzmzgZR
			     (GHCziNum.ZCTNum a)
			     (GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN a)
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a)) =
    \ @ a (zddNum1::GHCziNum.ZCTNum a) ->
	%let zt :: GHCziPrim.ZLzmzgZR
		   (GHCziBase.ZMZN a)
		   (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
	       %case (Atom.zdfNumZMZN @ a zddNum1)
	       %of (tpl::GHCziNum.ZCTNum (GHCziBase.ZMZN a))
		 {GHCziNum.ZCDNum
		  (tpl1::GHCziBase.ZCTEq (GHCziBase.ZMZN a))
		  (tpl2::GHCziShow.ZCTShow (GHCziBase.ZMZN a))
		  (tpl3::GHCziPrim.ZLzmzgZR
			 (GHCziBase.ZMZN a)
			 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)))
		  (tpl4::GHCziPrim.ZLzmzgZR
			 (GHCziBase.ZMZN a)
			 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)))
		  (tpl5::GHCziPrim.ZLzmzgZR
			 (GHCziBase.ZMZN a)
			 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)))
		  (tpl6::GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))
		  (tpl7::GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))
		  (tpl8::GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a))
		  (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer (GHCziBase.ZMZN a)) ->
		    tpl4}
	%in %let sum1 :: GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a =
		   Atom.sum @ a zddNum1
	    %in \ (f::GHCziBase.ZMZN a) (g::GHCziBase.ZMZN a) -> sum1 (zt f g);
  Atom.zdfBoundedZ2T :: %forall a b . GHCziPrim.ZLzmzgZR
				      (Atom.ZCTBounded a)
				      (GHCziPrim.ZLzmzgZR
				       (Atom.ZCTBounded b)
				       (Atom.ZCTBounded (DataziTuple.Z2T a b))) =
    %note "InlineMe"
    \ @ a
      @ b
      (zddBounded::Atom.ZCTBounded a)
      (zddBounded1::Atom.ZCTBounded b) ->
	Atom.zdwZCDBounded @ (DataziTuple.Z2T a b)
	(DataziTuple.zdwZ2T @ a @ b (Atom.maxBound @ a zddBounded)
	 (Atom.maxBound @ b zddBounded1))
	(DataziTuple.zdwZ2T @ a @ b (Atom.minBound @ a zddBounded)
	 (Atom.minBound @ b zddBounded1));
  Atom.zdfBoundedZ3T :: %forall a b c . GHCziPrim.ZLzmzgZR
					(Atom.ZCTBounded a)
					(GHCziPrim.ZLzmzgZR
					 (Atom.ZCTBounded b)
					 (GHCziPrim.ZLzmzgZR
					  (Atom.ZCTBounded c)
					  (Atom.ZCTBounded (DataziTuple.Z3T a b c)))) =
    %note "InlineMe"
    \ @ a
      @ b
      @ c
      (zddBounded::Atom.ZCTBounded a)
      (zddBounded1::Atom.ZCTBounded b)
      (zddBounded2::Atom.ZCTBounded c) ->
	Atom.zdwZCDBounded @ (DataziTuple.Z3T a b c)
	(DataziTuple.zdwZ3T @ a @ b @ c (Atom.maxBound @ a zddBounded)
	 (Atom.maxBound @ b zddBounded1) (Atom.maxBound @ c zddBounded2))
	(DataziTuple.zdwZ3T @ a @ b @ c (Atom.minBound @ a zddBounded)
	 (Atom.minBound @ b zddBounded1) (Atom.minBound @ c zddBounded2));
  Atom.zdfBoundedZ4T :: %forall a b c d . GHCziPrim.ZLzmzgZR
					  (Atom.ZCTBounded a)
					  (GHCziPrim.ZLzmzgZR
					   (Atom.ZCTBounded b)
					   (GHCziPrim.ZLzmzgZR
					    (Atom.ZCTBounded c)
					    (GHCziPrim.ZLzmzgZR
					     (Atom.ZCTBounded d)
					     (Atom.ZCTBounded (DataziTuple.Z4T a b c d))))) =
    %note "InlineMe"
    \ @ a
      @ b
      @ c
      @ d
      (zddBounded::Atom.ZCTBounded a)
      (zddBounded1::Atom.ZCTBounded b)
      (zddBounded2::Atom.ZCTBounded c)
      (zddBounded3::Atom.ZCTBounded d) ->
	Atom.zdwZCDBounded @ (DataziTuple.Z4T a b c d)
	(DataziTuple.zdwZ4T @ a @ b @ c @ d (Atom.maxBound @ a zddBounded)
	 (Atom.maxBound @ b zddBounded1) (Atom.maxBound @ c zddBounded2)
	 (Atom.maxBound @ d zddBounded3))
	(DataziTuple.zdwZ4T @ a @ b @ c @ d (Atom.minBound @ a zddBounded)
	 (Atom.minBound @ b zddBounded1) (Atom.minBound @ c zddBounded2)
	 (Atom.minBound @ d zddBounded3));
  %rec
  {Atom.zdfEnumBool :: Atom.ZCTEnum GHCziBase.Bool =
     Atom.zdwZCDEnum @ GHCziBase.Bool pred2 succ2 toEnum3 fromEnum3
     boundedEnumFrom1 boundedEnumFromThen1 zddmenumFromTo1
     zddmenumFromThenTo1;
   zddmenumFromThenTo1 :: GHCziPrim.ZLzmzgZR
			  GHCziBase.Bool
			  (GHCziPrim.ZLzmzgZR
			   GHCziBase.Bool
			   (GHCziPrim.ZLzmzgZR
			    GHCziBase.Bool
			    (GHCziBase.ZMZN GHCziBase.Bool))) =
     Atom.zddmenumFromThenTo @ GHCziBase.Bool Atom.zdfEnumBool;
   zddmenumFromTo1 :: GHCziPrim.ZLzmzgZR
		      GHCziBase.Bool
		      (GHCziPrim.ZLzmzgZR
		       GHCziBase.Bool
		       (GHCziBase.ZMZN GHCziBase.Bool)) =
     Atom.zddmenumFromTo @ GHCziBase.Bool Atom.zdfEnumBool;
   boundedEnumFromThen1 :: GHCziPrim.ZLzmzgZR
			   GHCziBase.Bool
			   (GHCziPrim.ZLzmzgZR
			    GHCziBase.Bool
			    (GHCziBase.ZMZN GHCziBase.Bool)) =
     Atom.boundedEnumFromThen @ GHCziBase.Bool Atom.zdfEnumBool
     Atom.zdfBoundedBool;
   boundedEnumFrom1 :: GHCziPrim.ZLzmzgZR
		       GHCziBase.Bool
		       (GHCziBase.ZMZN GHCziBase.Bool) =
     Atom.boundedEnumFrom @ GHCziBase.Bool Atom.zdfEnumBool
     Atom.zdfBoundedBool};
  %rec
  {Atom.zdfEnumOrdering :: Atom.ZCTEnum GHCziBase.Ordering =
     Atom.zdwZCDEnum @ GHCziBase.Ordering pred3 succ3 toEnum2 fromEnum2
     boundedEnumFrom2 boundedEnumFromThen2 zddmenumFromTo2
     zddmenumFromThenTo2;
   zddmenumFromThenTo2 :: GHCziPrim.ZLzmzgZR
			  GHCziBase.Ordering
			  (GHCziPrim.ZLzmzgZR
			   GHCziBase.Ordering
			   (GHCziPrim.ZLzmzgZR
			    GHCziBase.Ordering
			    (GHCziBase.ZMZN GHCziBase.Ordering))) =
     Atom.zddmenumFromThenTo @ GHCziBase.Ordering Atom.zdfEnumOrdering;
   zddmenumFromTo2 :: GHCziPrim.ZLzmzgZR
		      GHCziBase.Ordering
		      (GHCziPrim.ZLzmzgZR
		       GHCziBase.Ordering
		       (GHCziBase.ZMZN GHCziBase.Ordering)) =
     Atom.zddmenumFromTo @ GHCziBase.Ordering Atom.zdfEnumOrdering;
   boundedEnumFromThen2 :: GHCziPrim.ZLzmzgZR
			   GHCziBase.Ordering
			   (GHCziPrim.ZLzmzgZR
			    GHCziBase.Ordering
			    (GHCziBase.ZMZN GHCziBase.Ordering)) =
     Atom.boundedEnumFromThen @ GHCziBase.Ordering Atom.zdfEnumOrdering
     Atom.zdfBoundedOrdering;
   boundedEnumFrom2 :: GHCziPrim.ZLzmzgZR
		       GHCziBase.Ordering
		       (GHCziBase.ZMZN GHCziBase.Ordering) =
     Atom.boundedEnumFrom @ GHCziBase.Ordering Atom.zdfEnumOrdering
     Atom.zdfBoundedOrdering};
  succ5 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int =
    \ (x::GHCziBase.Int) ->
	%case (zeze x Atom.maxInt) %of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziErr.error @ GHCziBase.Int
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.succ{Int}: tried to take `succ\x27 of maxBound"::GHCziPrim.Addrzh));
	   GHCziBase.False ->
	     Atom.plusInt x Atom.oneInt};
  pred5 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int =
    \ (x::GHCziBase.Int) ->
	%case (zeze x Atom.minInt) %of (wild::GHCziBase.Bool)
	  {GHCziBase.True ->
	     GHCziErr.error @ GHCziBase.Int
	     (GHCziBase.unpackCStringzh
	      ("Prelude.Enum.pred{Int}: tried to take `pred\x27 of minBound"::GHCziPrim.Addrzh));
	   GHCziBase.False ->
	     Atom.minusInt x Atom.oneInt};
  %rec
  {Atom.zdfEnumInt :: Atom.ZCTEnum GHCziBase.Int =
     Atom.zdwZCDEnum @ GHCziBase.Int pred5 succ5 toEnum1 fromEnum1
     enumFrom3 zddmenumFromThen1 enumFromTo3 enumFromThenTo3;
   zddmenumFromThen1 :: GHCziPrim.ZLzmzgZR
			GHCziBase.Int
			(GHCziPrim.ZLzmzgZR GHCziBase.Int (GHCziBase.ZMZN GHCziBase.Int)) =
     Atom.zddmenumFromThen @ GHCziBase.Int Atom.zdfEnumInt};


More information about the Glasgow-haskell-bugs mailing list