Yet another External Core bug

Kirsten Chevalier krc at uclink.berkeley.edu
Wed Jan 8 20:09:11 EST 2003


The attached file (generated by running ghc -fext-core on the Fibheaps 
benchmark from the nofib suite) fails to typecheck:

$ ghc -dcore-lint Fibheaps.hcr

Couldn't match `#' against `*'
    Expected kind: #
    Inferred kind: *
When checking kinds in `GHC.Prim.(->) (GHC.Prim.State# s)'


-- 
Kirsten Chevalier * krc at uclink.berkeley.edu * Often in error, never in doubt
-------------- next part --------------
%module Fibheaps
  %data Fibheaps.Tree a =
    {Fibheaps.Node a (GHCziBase.ZMZN (Fibheaps.Tree a))};
  %data Fibheaps.Bag a =
    {Fibheaps.EmptyBag;
     Fibheaps.ConsBag a (Fibheaps.Bag a);
     Fibheaps.UnionBags (Fibheaps.Bag a) (Fibheaps.Bag a)};
  %data Fibheaps.MyMaybe a =
    {Fibheaps.ZZero;
     Fibheaps.One a};
  %data Fibheaps.FibHeap a =
    {Fibheaps.EmptyFH;
     Fibheaps.FH GHCziBase.Int
		 (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
		 (Fibheaps.Bag (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)))};
  %data Fibheaps.Maybe a =
    {Fibheaps.Just a;
     Fibheaps.Nothing};
  con2tagzuMaybezh :: %forall a . GHCziPrim.ZLzmzgZR
				  (Fibheaps.Maybe a)
				  GHCziPrim.Intzh =
    \ @ a (ds::Fibheaps.Maybe a) ->
	%case ds %of (wild::Fibheaps.Maybe a)
	  {Fibheaps.Nothing ->
	     (1::GHCziPrim.Intzh);
	   Fibheaps.Just (ds1::a) ->
	     (0::GHCziPrim.Intzh)};
  Fibheaps.link :: %forall a . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZCTOrd a)
			       (GHCziPrim.ZLzmzgZR
				(Fibheaps.Tree a)
				(GHCziPrim.ZLzmzgZR (Fibheaps.Tree a) (Fibheaps.Tree a))) =
    \ @ a
      (zddOrd::GHCziBase.ZCTOrd a)
      (eta::Fibheaps.Tree a)
      (eta1::Fibheaps.Tree a) ->
	%case eta %of (wild::Fibheaps.Tree a)
	  {Fibheaps.Node (x::a) (as::GHCziBase.ZMZN (Fibheaps.Tree a)) ->
	     %case eta1 %of (wild1::Fibheaps.Tree a)
	       {Fibheaps.Node (y::a) (bs::GHCziBase.ZMZN (Fibheaps.Tree 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)) ->
		       %case (tpl3 x y) %of (wild2::GHCziBase.Bool)
			 {GHCziBase.True ->
			    Fibheaps.zdwNode @ a x
			    (GHCziBase.zdwZC @ (Fibheaps.Tree a) wild1 as);
			  GHCziBase.False ->
			    Fibheaps.zdwNode @ a y
			    (GHCziBase.zdwZC @ (Fibheaps.Tree a) wild bs)}}}};
  Fibheaps.root :: %forall a . GHCziPrim.ZLzmzgZR
			       (Fibheaps.Tree a)
			       a =
    \ @ a (ds::Fibheaps.Tree a) ->
	%case ds %of (wild::Fibheaps.Tree a)
	  {Fibheaps.Node (x::a) (ds1::GHCziBase.ZMZN (Fibheaps.Tree a)) ->
	     x};
  Fibheaps.degree :: %forall t t1 . GHCziPrim.ZLzmzgZR
				    (DataziTuple.Z2T t t1)
				    t =
    \ @ t @ t1 (ds::DataziTuple.Z2T t t1) ->
	%case ds %of (wild::DataziTuple.Z2T t t1)
	  {DataziTuple.Z2T (k::t) (t2::t1) ->
	     k};
  Fibheaps.tree :: %forall t t1 . GHCziPrim.ZLzmzgZR
				  (DataziTuple.Z2T t t1)
				  t1 =
    \ @ t @ t1 (ds::DataziTuple.Z2T t t1) ->
	%case ds %of (wild::DataziTuple.Z2T t t1)
	  {DataziTuple.Z2T (k::t) (t2::t1) ->
	     t2};
  Fibheaps.rootzq :: %forall a t . GHCziPrim.ZLzmzgZR
				   (DataziTuple.Z2T t (Fibheaps.Tree a))
				   a =
    \ @ a @ t ->
	GHCziBase.zi @ (Fibheaps.Tree a) @ a
	@ (DataziTuple.Z2T t (Fibheaps.Tree a)) (Fibheaps.root @ a)
	(Fibheaps.tree @ t @ (Fibheaps.Tree a));
  Fibheaps.bagToList :: %forall a . GHCziPrim.ZLzmzgZR
				    (Fibheaps.Bag a)
				    (GHCziBase.ZMZN a) =
    \ @ a (b::Fibheaps.Bag a) ->
	%let %rec
	     {flatten :: GHCziPrim.ZLzmzgZR
			 (Fibheaps.Bag a)
			 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
		\ (ds::Fibheaps.Bag a) (xs::GHCziBase.ZMZN a) ->
		    %case ds %of (wild::Fibheaps.Bag a)
		      {Fibheaps.UnionBags (b1::Fibheaps.Bag a) (b2::Fibheaps.Bag a) ->
			 flatten b1 (flatten b2 xs);
		       Fibheaps.ConsBag (x::a) (b1::Fibheaps.Bag a) ->
			 flatten b1 (GHCziBase.zdwZC @ a x xs);
		       Fibheaps.EmptyBag ->
			 xs}}
	%in flatten b (GHCziBase.zdwZMZN @ a);
  %rec
  {Fibheaps.applyToAll :: %forall a s . GHCziPrim.ZLzmzgZR
					(GHCziPrim.ZLzmzgZR
					 a
					 (GHCziPrim.ZLzmzgZR
					  (GHCziPrim.Statezh s)
					  (GHCziPrim.Z2H (GHCziPrim.Statezh s) GHCziBase.Z0T)))
					(GHCziPrim.ZLzmzgZR
					 (Fibheaps.Bag a)
					 (GHCziPrim.ZLzmzgZR
					  (GHCziPrim.Statezh s)
					  (GHCziPrim.Z2H (GHCziPrim.Statezh s) GHCziBase.Z0T))) =
     \ @ a @ s ->
	 %let zgzg :: %forall a1 b . GHCziPrim.ZLzmzgZR
				     (GHCziPrim.ZLzmzgZR
				      (GHCziPrim.Statezh s)
				      (GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))
				     (GHCziPrim.ZLzmzgZR
				      (GHCziPrim.ZLzmzgZR
				       (GHCziPrim.Statezh s)
				       (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))
				      (GHCziPrim.ZLzmzgZR
				       (GHCziPrim.Statezh s)
				       (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))) =
		%case (GHCziST.zdfMonadST @ s)
		%of (tpl::GHCziBase.ZCTMonad (GHCziST.ST s))
		  {GHCziBase.ZCDMonad
		   (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
					 (GHCziPrim.ZLzmzgZR
					  (GHCziPrim.Statezh s)
					  (GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))
					 (GHCziPrim.ZLzmzgZR
					  (GHCziPrim.ZLzmzgZR
					   a1
					   (GHCziPrim.ZLzmzgZR
					    (GHCziPrim.Statezh s)
					    (GHCziPrim.Z2H (GHCziPrim.Statezh s) b)))
					  (GHCziPrim.ZLzmzgZR
					   (GHCziPrim.Statezh s)
					   (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))))
		   (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
					 (GHCziPrim.ZLzmzgZR
					  (GHCziPrim.Statezh s)
					  (GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))
					 (GHCziPrim.ZLzmzgZR
					  (GHCziPrim.ZLzmzgZR
					   (GHCziPrim.Statezh s)
					   (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))
					  (GHCziPrim.ZLzmzgZR
					   (GHCziPrim.Statezh s)
					   (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))))
		   (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR
				       a1
				       (GHCziPrim.ZLzmzgZR
					(GHCziPrim.Statezh s)
					(GHCziPrim.Z2H (GHCziPrim.Statezh s) a1)))
		   (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
				       (GHCziBase.ZMZN GHCziBase.Char)
				       (GHCziPrim.ZLzmzgZR
					(GHCziPrim.Statezh s)
					(GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))) ->
		     tpl2}
	 %in \ (f::GHCziPrim.ZLzmzgZR
		   a
		   (GHCziPrim.ZLzmzgZR
		    (GHCziPrim.Statezh s)
		    (GHCziPrim.Z2H (GHCziPrim.Statezh s) GHCziBase.Z0T)))
	       (ds::Fibheaps.Bag a) ->
		 %case ds %of (wild::Fibheaps.Bag a)
		   {Fibheaps.UnionBags (b1::Fibheaps.Bag a) (b2::Fibheaps.Bag a) ->
		      zgzg @ GHCziBase.Z0T @ GHCziBase.Z0T
		      (Fibheaps.applyToAll @ a @ s f b1)
		      (Fibheaps.applyToAll @ a @ s f b2);
		    Fibheaps.ConsBag (x::a) (b::Fibheaps.Bag a) ->
		      zgzg @ GHCziBase.Z0T @ GHCziBase.Z0T (f x)
		      (Fibheaps.applyToAll @ a @ s f b);
		    Fibheaps.EmptyBag ->
		      %case (GHCziST.zdfMonadST @ s)
		      %of (tpl::GHCziBase.ZCTMonad (GHCziST.ST s))
			{GHCziBase.ZCDMonad
			 (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
					       (GHCziPrim.ZLzmzgZR
						(GHCziPrim.Statezh s)
						(GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))
					       (GHCziPrim.ZLzmzgZR
						(GHCziPrim.ZLzmzgZR
						 a1
						 (GHCziPrim.ZLzmzgZR
						  (GHCziPrim.Statezh s)
						  (GHCziPrim.Z2H (GHCziPrim.Statezh s) b)))
						(GHCziPrim.ZLzmzgZR
						 (GHCziPrim.Statezh s)
						 (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))))
			 (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
					       (GHCziPrim.ZLzmzgZR
						(GHCziPrim.Statezh s)
						(GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))
					       (GHCziPrim.ZLzmzgZR
						(GHCziPrim.ZLzmzgZR
						 (GHCziPrim.Statezh s)
						 (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))
						(GHCziPrim.ZLzmzgZR
						 (GHCziPrim.Statezh s)
						 (GHCziPrim.Z2H (GHCziPrim.Statezh s) b))))
			 (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR
					     a1
					     (GHCziPrim.ZLzmzgZR
					      (GHCziPrim.Statezh s)
					      (GHCziPrim.Z2H (GHCziPrim.Statezh s) a1)))
			 (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
					     (GHCziBase.ZMZN GHCziBase.Char)
					     (GHCziPrim.ZLzmzgZR
					      (GHCziPrim.Statezh s)
					      (GHCziPrim.Z2H (GHCziPrim.Statezh s) a1))) ->
			   tpl3 @ GHCziBase.Z0T GHCziBase.zdwZ0T}}};
  Fibheaps.log2 :: %forall a a1 . GHCziPrim.ZLzmzgZR
				  (GHCziNum.ZCTNum a)
				  (GHCziPrim.ZLzmzgZR
				   (GHCziReal.ZCTIntegral a1)
				   (GHCziPrim.ZLzmzgZR a1 a)) =
    \ @ a
      @ a1
      (zddNum::GHCziNum.ZCTNum a)
      (zddIntegral::GHCziReal.ZCTIntegral a1) ->
	%let fromInteger :: GHCziPrim.ZLzmzgZR GHCziNum.Integer 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) ->
		    tpl9}
	%in %let lit :: a =
		   fromInteger (GHCziNum.zdwSzh (1::GHCziPrim.Intzh))
	    %in %let lit1 :: a =
		       fromInteger (GHCziNum.zdwSzh (0::GHCziPrim.Intzh))
		%in %let zddReal :: GHCziReal.ZCTReal a1 =
			   %case zddIntegral %of (tpl::GHCziReal.ZCTIntegral a1)
			     {GHCziReal.ZCDIntegral
			      (tpl1::GHCziReal.ZCTReal a1)
			      (tpl2::GHCziEnum.ZCTEnum a1)
			      (tpl3::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
			      (tpl4::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
			      (tpl5::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
			      (tpl6::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
			      (tpl7::GHCziPrim.ZLzmzgZR
				     a1
				     (GHCziPrim.ZLzmzgZR a1 (DataziTuple.Z2T a1 a1)))
			      (tpl8::GHCziPrim.ZLzmzgZR
				     a1
				     (GHCziPrim.ZLzmzgZR a1 (DataziTuple.Z2T a1 a1)))
			      (tpl9::GHCziPrim.ZLzmzgZR a1 GHCziNum.Integer) ->
				tpl1}
		    %in %let fromInteger1 :: GHCziPrim.ZLzmzgZR GHCziNum.Integer a1 =
			       %case zddReal %of (tpl::GHCziReal.ZCTReal a1)
				 {GHCziReal.ZCDReal
				  (tpl1::GHCziNum.ZCTNum a1)
				  (tpl2::GHCziBase.ZCTOrd a1)
				  (tpl3::GHCziPrim.ZLzmzgZR
					 a1
					 (GHCziReal.Ratio GHCziNum.Integer)) ->
				    %case tpl1 %of (tpl4::GHCziNum.ZCTNum a1)
				      {GHCziNum.ZCDNum
				       (tpl5::GHCziBase.ZCTEq a1)
				       (tpl6::GHCziShow.ZCTShow a1)
				       (tpl7::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
				       (tpl8::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
				       (tpl9::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
				       (tpl10::GHCziPrim.ZLzmzgZR a1 a1)
				       (tpl11::GHCziPrim.ZLzmzgZR a1 a1)
				       (tpl12::GHCziPrim.ZLzmzgZR a1 a1)
				       (tpl13::GHCziPrim.ZLzmzgZR GHCziNum.Integer a1) ->
					 tpl13}}
			%in %let lit2 :: a1 =
				   fromInteger1 (GHCziNum.zdwSzh (2::GHCziPrim.Intzh))
			    %in %let lit3 :: a1 =
				       fromInteger1 (GHCziNum.zdwSzh (1::GHCziPrim.Intzh))
				%in %let %rec
					 {log21 :: GHCziPrim.ZLzmzgZR a1 a =
					    \ (ds::a1) ->
						%case zddReal %of (tpl::GHCziReal.ZCTReal a1)
						  {GHCziReal.ZCDReal
						   (tpl1::GHCziNum.ZCTNum a1)
						   (tpl2::GHCziBase.ZCTOrd a1)
						   (tpl3::GHCziPrim.ZLzmzgZR
							  a1
							  (GHCziReal.Ratio GHCziNum.Integer)) ->
						     %case tpl2 %of (tpl4::GHCziBase.ZCTOrd a1)
						       {GHCziBase.ZCDOrd
							(tpl5::GHCziBase.ZCTEq a1)
							(tpl6::GHCziPrim.ZLzmzgZR
							       a1
							       (GHCziPrim.ZLzmzgZR
								a1
								GHCziBase.Ordering))
							(tpl7::GHCziPrim.ZLzmzgZR
							       a1
							       (GHCziPrim.ZLzmzgZR
								a1
								GHCziBase.Bool))
							(tpl8::GHCziPrim.ZLzmzgZR
							       a1
							       (GHCziPrim.ZLzmzgZR
								a1
								GHCziBase.Bool))
							(tpl9::GHCziPrim.ZLzmzgZR
							       a1
							       (GHCziPrim.ZLzmzgZR
								a1
								GHCziBase.Bool))
							(tpl10::GHCziPrim.ZLzmzgZR
								a1
								(GHCziPrim.ZLzmzgZR
								 a1
								 GHCziBase.Bool))
							(tpl11::GHCziPrim.ZLzmzgZR
								a1
								(GHCziPrim.ZLzmzgZR a1 a1))
							(tpl12::GHCziPrim.ZLzmzgZR
								a1
								(GHCziPrim.ZLzmzgZR a1 a1)) ->
							  %case tpl5 %of (tpl13::GHCziBase.ZCTEq a1)
							    {GHCziBase.ZCDEq
							     (tpl14::GHCziPrim.ZLzmzgZR
								     a1
								     (GHCziPrim.ZLzmzgZR
								      a1
								      GHCziBase.Bool))
							     (tpl15::GHCziPrim.ZLzmzgZR
								     a1
								     (GHCziPrim.ZLzmzgZR
								      a1
								      GHCziBase.Bool)) ->
							       %case (tpl15 lit3 ds)
							       %of (wild::GHCziBase.Bool)
								 {GHCziBase.True ->
								    lit1;
								  GHCziBase.False ->
								    %case zddNum
								    %of (tpl16::GHCziNum.ZCTNum a)
								      {GHCziNum.ZCDNum
								       (tpl17::GHCziBase.ZCTEq a)
								       (tpl18::GHCziShow.ZCTShow a)
								       (tpl19::GHCziPrim.ZLzmzgZR
									       a
									       (GHCziPrim.ZLzmzgZR
										a
										a))
								       (tpl20::GHCziPrim.ZLzmzgZR
									       a
									       (GHCziPrim.ZLzmzgZR
										a
										a))
								       (tpl21::GHCziPrim.ZLzmzgZR
									       a
									       (GHCziPrim.ZLzmzgZR
										a
										a))
								       (tpl22::GHCziPrim.ZLzmzgZR
									       a
									       a)
								       (tpl23::GHCziPrim.ZLzmzgZR
									       a
									       a)
								       (tpl24::GHCziPrim.ZLzmzgZR
									       a
									       a)
								       (tpl25::GHCziPrim.ZLzmzgZR
									       GHCziNum.Integer
									       a) ->
									 tpl21 lit
									 (log21
									  (%case zddIntegral
									   %of (tpl26::GHCziReal.ZCTIntegral
										       a1)
									     {GHCziReal.ZCDIntegral
									      (tpl27::GHCziReal.ZCTReal
										      a1)
									      (tpl28::GHCziEnum.ZCTEnum
										      a1)
									      (tpl29::GHCziPrim.ZLzmzgZR
										      a1
										      (GHCziPrim.ZLzmzgZR
										       a1
										       a1))
									      (tpl30::GHCziPrim.ZLzmzgZR
										      a1
										      (GHCziPrim.ZLzmzgZR
										       a1
										       a1))
									      (tpl31::GHCziPrim.ZLzmzgZR
										      a1
										      (GHCziPrim.ZLzmzgZR
										       a1
										       a1))
									      (tpl32::GHCziPrim.ZLzmzgZR
										      a1
										      (GHCziPrim.ZLzmzgZR
										       a1
										       a1))
									      (tpl33::GHCziPrim.ZLzmzgZR
										      a1
										      (GHCziPrim.ZLzmzgZR
										       a1
										       (DataziTuple.Z2T
											a1
											a1)))
									      (tpl34::GHCziPrim.ZLzmzgZR
										      a1
										      (GHCziPrim.ZLzmzgZR
										       a1
										       (DataziTuple.Z2T
											a1
											a1)))
									      (tpl35::GHCziPrim.ZLzmzgZR
										      a1
										      GHCziNum.Integer) ->
										tpl30 ds
										lit2}))}}}}}}
				    %in log21;
  Fibheaps.emptyFH :: %forall a . Fibheaps.FibHeap a =
    \ @ a -> Fibheaps.zdwEmptyFH @ a;
  Fibheaps.isEmptyFH :: %forall a . GHCziPrim.ZLzmzgZR
				    (Fibheaps.FibHeap a)
				    GHCziBase.Bool =
    \ @ a (ds::Fibheaps.FibHeap a) ->
	%case ds %of (wild::Fibheaps.FibHeap a)
	  {Fibheaps.FH
	   (ds1::GHCziBase.Int)
	   (ds2::DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
	   (ds3::Fibheaps.Bag
		 (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) ->
	     GHCziBase.zdwFalse;
	   Fibheaps.EmptyFH ->
	     GHCziBase.zdwTrue};
  Fibheaps.singleFH :: %forall a . GHCziPrim.ZLzmzgZR
				   a
				   (Fibheaps.FibHeap a) =
    \ @ a (x::a) ->
	Fibheaps.zdwFH @ a (GHCziBase.zdwIzh (1::GHCziPrim.Intzh))
	(DataziTuple.zdwZ2T @ GHCziBase.Int @ (Fibheaps.Tree a)
	 (GHCziBase.zdwIzh (0::GHCziPrim.Intzh))
	 (Fibheaps.zdwNode @ a x (GHCziBase.zdwZMZN @ (Fibheaps.Tree a))))
	(Fibheaps.zdwEmptyBag
	 @ (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)));
  Fibheaps.minFH :: %forall a . GHCziPrim.ZLzmzgZR
				(Fibheaps.FibHeap a)
				a =
    \ @ a (ds::Fibheaps.FibHeap a) ->
	%case ds %of (wild::Fibheaps.FibHeap a)
	  {Fibheaps.FH
	   (n::GHCziBase.Int)
	   (tt::DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
	   (f::Fibheaps.Bag
	       (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) ->
	     Fibheaps.rootzq @ a @ GHCziBase.Int tt;
	   Fibheaps.EmptyFH ->
	     GHCziErr.error @ a
	     (GHCziBase.unpackCStringzh ("minFH EmptyFH"::GHCziPrim.Addrzh))};
  Fibheaps.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};
  Fibheaps.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);
  Fibheaps.filterList :: %forall a . GHCziPrim.ZLzmzgZR
				     (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
				     (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a
      (pred::GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
      (xs::GHCziBase.ZMZN a) ->
	GHCziBase.foldr @ a @ (GHCziBase.ZMZN a)
	(\ (x::a) (rest::GHCziBase.ZMZN a) ->
	     %case (pred x) %of (wild::GHCziBase.Bool)
	       {GHCziBase.True ->
		  GHCziBase.zdwZC @ a x rest;
		GHCziBase.False ->
		  rest})
	(GHCziBase.zdwZMZN @ a) xs;
  Fibheaps.filter :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a -> Fibheaps.filterList @ a;
  Fibheaps.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
  {Fibheaps.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) ->
	       Fibheaps.scanl @ a @ b f (f q x) xs;
	     GHCziBase.ZMZN ->
	       GHCziBase.zdwZMZN @ a})};
  Fibheaps.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) ->
	     Fibheaps.scanl @ a @ a f x xs;
	   GHCziBase.ZMZN ->
	     GHCziBase.zdwZMZN @ a};
  %rec
  {Fibheaps.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 (Fibheaps.scanr @ a @ b ds q0 xs)
		     %of (wild1::GHCziBase.ZMZN b)
		       {GHCziBase.ZMZN ->
			  GHCziErr.irrefutPatError @ (DataziTuple.Z2T (GHCziBase.ZMZN b) b)
			  ("FibheapswithPrelude.hs:460|(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
  {Fibheaps.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 (Fibheaps.scanr1 @ a f wild1) %of (wild2::GHCziBase.ZMZN a)
			    {GHCziBase.ZMZN ->
			       GHCziErr.irrefutPatError @ (DataziTuple.Z2T (GHCziBase.ZMZN a) a)
			       ("FibheapswithPrelude.hs:466|(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}};
  Fibheaps.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;
  Fibheaps.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;
  Fibheaps.iterate :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziPrim.ZLzmzgZR a a)
				  (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
    \ @ a -> Fibheaps.iterateList @ a;
  Fibheaps.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;
  Fibheaps.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;
  Fibheaps.repeat :: %forall a . GHCziPrim.ZLzmzgZR
				 a
				 (GHCziBase.ZMZN a) =
    \ @ a -> Fibheaps.repeatList @ a;
  %rec
  {Fibheaps.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 (Fibheaps.takeWhile @ a ds xs);
		 GHCziBase.False ->
		   GHCziBase.zdwZMZN @ a};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  %rec
  {Fibheaps.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 ->
		   Fibheaps.dropWhile @ a ds xszq;
		 GHCziBase.False ->
		   wild};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  %rec
  {Fibheaps.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) =
			  Fibheaps.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)}};
  Fibheaps.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) ->
	Fibheaps.span @ a
	(GHCziBase.zi @ GHCziBase.Bool @ GHCziBase.Bool @ a GHCziBase.not
	 p);
  Fibheaps.lookup :: %forall a b . GHCziPrim.ZLzmzgZR
				   (GHCziBase.ZCTEq a)
				   (GHCziPrim.ZLzmzgZR
				    a
				    (GHCziPrim.ZLzmzgZR
				     (GHCziBase.ZMZN (DataziTuple.Z2T a b))
				     (Fibheaps.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))
			  (Fibheaps.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 ->
					Fibheaps.zdwJust @ b y;
				      GHCziBase.False ->
					lookup1 zukey xys}}};
		       GHCziBase.ZMZN ->
			 Fibheaps.zdwNothing @ b}}
	%in lookup1 eta eta1;
  Fibheaps.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;
  Fibheaps.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};
  Fibheaps.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};
  Fibheaps.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
  {Fibheaps.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)
		   (Fibheaps.zzipList @ a @ b as bs)}}};
  Fibheaps.zzip :: %forall a b . GHCziPrim.ZLzmzgZR
				 (GHCziBase.ZMZN a)
				 (GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN b)
				  (GHCziBase.ZMZN (DataziTuple.Z2T a b))) =
    \ @ a @ b -> Fibheaps.zzipList @ a @ b;
  %rec
  {Fibheaps.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)
			(Fibheaps.zzip3 @ a @ b @ c as bs cs)}}}};
  Fibheaps.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
  {Fibheaps.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)
		   (Fibheaps.zzipWithList @ a @ b @ c f as bs)}}};
  Fibheaps.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 -> Fibheaps.zzipWithList @ a @ b @ c;
  Fibheaps.getChildren :: %forall a a1 . GHCziPrim.ZLzmzgZR
					 (GHCziEnum.ZCTEnum a1)
					 (GHCziPrim.ZLzmzgZR
					  (GHCziNum.ZCTNum a1)
					  (GHCziPrim.ZLzmzgZR
					   (DataziTuple.Z2T a1 (Fibheaps.Tree a))
					   (GHCziBase.ZMZN
					    (DataziTuple.Z2T a1 (Fibheaps.Tree a))))) =
    \ @ a
      @ a1
      (zddEnum::GHCziEnum.ZCTEnum a1)
      (zddNum::GHCziNum.ZCTNum a1) ->
	%let zm :: GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1) =
	       %case zddNum %of (tpl::GHCziNum.ZCTNum a1)
		 {GHCziNum.ZCDNum
		  (tpl1::GHCziBase.ZCTEq a1)
		  (tpl2::GHCziShow.ZCTShow a1)
		  (tpl3::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		  (tpl4::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		  (tpl5::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		  (tpl6::GHCziPrim.ZLzmzgZR a1 a1)
		  (tpl7::GHCziPrim.ZLzmzgZR a1 a1)
		  (tpl8::GHCziPrim.ZLzmzgZR a1 a1)
		  (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer a1) ->
		    tpl3}
	%in %let fromInteger :: GHCziPrim.ZLzmzgZR GHCziNum.Integer a1 =
		   %case zddNum %of (tpl::GHCziNum.ZCTNum a1)
		     {GHCziNum.ZCDNum
		      (tpl1::GHCziBase.ZCTEq a1)
		      (tpl2::GHCziShow.ZCTShow a1)
		      (tpl3::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		      (tpl4::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		      (tpl5::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		      (tpl6::GHCziPrim.ZLzmzgZR a1 a1)
		      (tpl7::GHCziPrim.ZLzmzgZR a1 a1)
		      (tpl8::GHCziPrim.ZLzmzgZR a1 a1)
		      (tpl9::GHCziPrim.ZLzmzgZR GHCziNum.Integer a1) ->
			tpl9}
	    %in %let lit :: a1 =
		       fromInteger (GHCziNum.zdwSzh (2::GHCziPrim.Intzh))
		%in %let lit1 :: a1 =
			   fromInteger (GHCziNum.zdwSzh (1::GHCziPrim.Intzh))
		    %in \ (ds::DataziTuple.Z2T a1 (Fibheaps.Tree a)) ->
			    %case ds %of (wild::DataziTuple.Z2T a1 (Fibheaps.Tree a))
			      {DataziTuple.Z2T (n::a1) (ds1::Fibheaps.Tree a) ->
				 %case ds1 %of (wild1::Fibheaps.Tree a)
				   {Fibheaps.Node (x::a) (ts::GHCziBase.ZMZN (Fibheaps.Tree a)) ->
				      Fibheaps.zzipWithList @ a1 @ (Fibheaps.Tree a)
				      @ (DataziTuple.Z2T a1 (Fibheaps.Tree a))
				      (DataziTuple.zdwZ2T @ a1 @ (Fibheaps.Tree a))
				      (%case zddEnum %of (tpl::GHCziEnum.ZCTEnum a1)
					 {GHCziEnum.ZCDEnum
					  (tpl1::GHCziPrim.ZLzmzgZR a1 a1)
					  (tpl2::GHCziPrim.ZLzmzgZR a1 a1)
					  (tpl3::GHCziPrim.ZLzmzgZR GHCziBase.Int a1)
					  (tpl4::GHCziPrim.ZLzmzgZR a1 GHCziBase.Int)
					  (tpl5::GHCziPrim.ZLzmzgZR a1 (GHCziBase.ZMZN a1))
					  (tpl6::GHCziPrim.ZLzmzgZR
						 a1
						 (GHCziPrim.ZLzmzgZR a1 (GHCziBase.ZMZN a1)))
					  (tpl7::GHCziPrim.ZLzmzgZR
						 a1
						 (GHCziPrim.ZLzmzgZR a1 (GHCziBase.ZMZN a1)))
					  (tpl8::GHCziPrim.ZLzmzgZR
						 a1
						 (GHCziPrim.ZLzmzgZR
						  a1
						  (GHCziPrim.ZLzmzgZR a1 (GHCziBase.ZMZN a1)))) ->
					    tpl6 (zm n lit1) (zm n lit)})
				      ts}};
  %rec
  {Fibheaps.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)
			(Fibheaps.zzipWith3 @ a @ b @ c @ d zz as bs cs)}}}};
  Fibheaps.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));
  Fibheaps.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));
  Fibheaps.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;
  Fibheaps.zpzp :: %forall a . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN a)
			       (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a -> Fibheaps.append @ a;
  Fibheaps.concat :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziBase.ZMZN (GHCziBase.ZMZN a))
				 (GHCziBase.ZMZN a) =
    \ @ a ->
	GHCziBase.foldr @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	(Fibheaps.append @ a) (GHCziBase.zdwZMZN @ a);
  Fibheaps.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
	 (Fibheaps.append @ b) f)
	(GHCziBase.zdwZMZN @ b);
  Fibheaps.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 = Fibheaps.append @ a wild xszq}
	     %in xszq;
	   GHCziBase.ZMZN ->
	     GHCziErr.error @ (GHCziBase.ZMZN a)
	     (GHCziBase.unpackCStringzh
	      ("Prelude.cycle: empty list"::GHCziPrim.Addrzh))};
  Fibheaps.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;
  Fibheaps.map :: %forall a b . GHCziPrim.ZLzmzgZR
				(GHCziPrim.ZLzmzgZR a b)
				(GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN b)) =
    \ @ a @ b -> Fibheaps.mapList @ a @ b;
  Fibheaps.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;
  %rec
  {Fibheaps.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 (Fibheaps.deleteBy @ a eq x ys)};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ a}};
  Fibheaps.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) ->
	Fibheaps.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;
  Fibheaps.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;
  Fibheaps.reverse :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN a)
				  (GHCziBase.ZMZN a) =
    \ @ a ->
	Fibheaps.foldl @ (GHCziBase.ZMZN a) @ a
	(Fibheaps.flip @ a @ (GHCziBase.ZMZN a) @ (GHCziBase.ZMZN a)
	 (GHCziBase.zdwZC @ a))
	(GHCziBase.zdwZMZN @ a);
  %rec
  {Fibheaps.transpose :: %forall a . GHCziPrim.ZLzmzgZR
				     (GHCziBase.ZMZN (GHCziBase.ZMZN a))
				     (GHCziBase.ZMZN (GHCziBase.ZMZN a)) =
     \ @ a (ds::GHCziBase.ZMZN (GHCziBase.ZMZN a)) ->
	 %case ds %of (wild::GHCziBase.ZMZN (GHCziBase.ZMZN a))
	   {GHCziBase.ZC
	    (ds1::GHCziBase.ZMZN a) (xss::GHCziBase.ZMZN (GHCziBase.ZMZN a)) ->
	      %case ds1 %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (x::a) (xs::GHCziBase.ZMZN a) ->
		   GHCziBase.zdwZC @ (GHCziBase.ZMZN a)
		   (GHCziBase.zdwZC @ a x
		    (GHCziBase.build @ a
		     (\ @ a1
			(ds2::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a1 a1))
			(ds3::a1) ->
			  GHCziBase.foldr @ (GHCziBase.ZMZN a) @ a1
			  (\ (ds4::GHCziBase.ZMZN a) (ds5::a1) ->
			       %case ds4 %of (wild2::GHCziBase.ZMZN a)
				 {GHCziBase.ZMZN ->
				    ds5;
				  GHCziBase.ZC (h::a) (t::GHCziBase.ZMZN a) ->
				    ds2 h ds5})
			  ds3 xss)))
		   (Fibheaps.transpose @ a
		    (GHCziBase.zdwZC @ (GHCziBase.ZMZN a) xs
		     (GHCziBase.build @ (GHCziBase.ZMZN a)
		      (\ @ a1
			 (ds2::GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN a)
			       (GHCziPrim.ZLzmzgZR a1 a1))
			 (ds3::a1) ->
			   GHCziBase.foldr @ (GHCziBase.ZMZN a) @ a1
			   (\ (ds4::GHCziBase.ZMZN a) (ds5::a1) ->
				%case ds4 %of (wild2::GHCziBase.ZMZN a)
				  {GHCziBase.ZMZN ->
				     ds5;
				   GHCziBase.ZC (h::a) (t::GHCziBase.ZMZN a) ->
				     ds2 t ds5})
			   ds3 xss))));
		 GHCziBase.ZMZN ->
		   Fibheaps.transpose @ a xss};
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ (GHCziBase.ZMZN a)}};
  Fibheaps.zzipWith4 :: %forall a a1 a2 a3 a4 . GHCziPrim.ZLzmzgZR
						(GHCziPrim.ZLzmzgZR
						 a
						 (GHCziPrim.ZLzmzgZR
						  a1
						  (GHCziPrim.ZLzmzgZR
						   a2
						   (GHCziPrim.ZLzmzgZR a3 a4))))
						(GHCziPrim.ZLzmzgZR
						 (GHCziBase.ZMZN a)
						 (GHCziPrim.ZLzmzgZR
						  (GHCziBase.ZMZN a1)
						  (GHCziPrim.ZLzmzgZR
						   (GHCziBase.ZMZN a2)
						   (GHCziPrim.ZLzmzgZR
						    (GHCziBase.ZMZN a3)
						    (GHCziBase.ZMZN a4))))) =
    \ @ a @ a1 @ a2 @ a3 @ a4 ->
	%let %rec
	     {zzipWith41 :: GHCziPrim.ZLzmzgZR
			    (GHCziPrim.ZLzmzgZR
			     a
			     (GHCziPrim.ZLzmzgZR
			      a1
			      (GHCziPrim.ZLzmzgZR a2 (GHCziPrim.ZLzmzgZR a3 a4))))
			    (GHCziPrim.ZLzmzgZR
			     (GHCziBase.ZMZN a)
			     (GHCziPrim.ZLzmzgZR
			      (GHCziBase.ZMZN a1)
			      (GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN a2)
			       (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a3) (GHCziBase.ZMZN a4))))) =
		\ (zz::GHCziPrim.ZLzmzgZR
		       a
		       (GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a2 (GHCziPrim.ZLzmzgZR a3 a4))))
		  (ds::GHCziBase.ZMZN a)
		  (ds1::GHCziBase.ZMZN a1)
		  (ds2::GHCziBase.ZMZN a2)
		  (ds3::GHCziBase.ZMZN a3) ->
		    %case ds %of (wild::GHCziBase.ZMZN a)
		      {GHCziBase.ZMZN ->
			 GHCziBase.zdwZMZN @ a4;
		       GHCziBase.ZC (a5::a) (as::GHCziBase.ZMZN a) ->
			 %case ds1 %of (wild1::GHCziBase.ZMZN a1)
			   {GHCziBase.ZMZN ->
			      GHCziBase.zdwZMZN @ a4;
			    GHCziBase.ZC (b::a1) (bs::GHCziBase.ZMZN a1) ->
			      %case ds2 %of (wild2::GHCziBase.ZMZN a2)
				{GHCziBase.ZMZN ->
				   GHCziBase.zdwZMZN @ a4;
				 GHCziBase.ZC (c::a2) (cs::GHCziBase.ZMZN a2) ->
				   %case ds3 %of (wild3::GHCziBase.ZMZN a3)
				     {GHCziBase.ZMZN ->
					GHCziBase.zdwZMZN @ a4;
				      GHCziBase.ZC (d::a3) (ds4::GHCziBase.ZMZN a3) ->
					GHCziBase.zdwZC @ a4 (zz a5 b c d)
					(zzipWith41 zz as bs cs ds4)}}}}}
	%in zzipWith41;
  Fibheaps.zzip4 :: %forall a a1 a2 a3 . GHCziPrim.ZLzmzgZR
					 (GHCziBase.ZMZN a)
					 (GHCziPrim.ZLzmzgZR
					  (GHCziBase.ZMZN a1)
					  (GHCziPrim.ZLzmzgZR
					   (GHCziBase.ZMZN a2)
					   (GHCziPrim.ZLzmzgZR
					    (GHCziBase.ZMZN a3)
					    (GHCziBase.ZMZN (DataziTuple.Z4T a a1 a2 a3))))) =
    \ @ a @ a1 @ a2 @ a3 ->
	Fibheaps.zzipWith4 @ a @ a1 @ a2 @ a3
	@ (DataziTuple.Z4T a a1 a2 a3)
	(DataziTuple.zdwZ4T @ a @ a1 @ a2 @ a3);
  Fibheaps.sequencezu :: %forall (m::(*->*)) a . GHCziPrim.ZLzmzgZR
						 (GHCziBase.ZCTMonad m)
						 (GHCziPrim.ZLzmzgZR
						  (GHCziBase.ZMZN (m a))
						  (m GHCziBase.Z0T)) =
    \ @ (m::(*->*)) @ a (zddMonad::GHCziBase.ZCTMonad m) ->
	GHCziBase.foldr @ (m a) @ (m GHCziBase.Z0T)
	(%case zddMonad %of (tpl::GHCziBase.ZCTMonad m)
	   {GHCziBase.ZCDMonad
	    (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
				  (m a1)
				  (GHCziPrim.ZLzmzgZR (GHCziPrim.ZLzmzgZR a1 (m b)) (m b)))
	    (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
				  (m a1)
				  (GHCziPrim.ZLzmzgZR (m b) (m b)))
	    (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR a1 (m a1))
	    (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN GHCziBase.Char)
				(m a1)) ->
	      tpl2 @ a @ GHCziBase.Z0T})
	(%case zddMonad %of (tpl::GHCziBase.ZCTMonad m)
	   {GHCziBase.ZCDMonad
	    (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
				  (m a1)
				  (GHCziPrim.ZLzmzgZR (GHCziPrim.ZLzmzgZR a1 (m b)) (m b)))
	    (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
				  (m a1)
				  (GHCziPrim.ZLzmzgZR (m b) (m b)))
	    (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR a1 (m a1))
	    (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN GHCziBase.Char)
				(m a1)) ->
	      tpl3 @ GHCziBase.Z0T GHCziBase.zdwZ0T});
  Fibheaps.union :: %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) ->
	DataziList.unionBy @ 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});
  Fibheaps.sortBy :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a GHCziBase.Ordering))
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a
      (cmp::GHCziPrim.ZLzmzgZR
	    a
	    (GHCziPrim.ZLzmzgZR a GHCziBase.Ordering)) ->
	GHCziBase.foldr @ a @ (GHCziBase.ZMZN a)
	(DataziList.insertBy @ a cmp) (GHCziBase.zdwZMZN @ a);
  lit :: GHCziBase.Int = GHCziBase.zdwIzh (77::GHCziPrim.Intzh);
  lit1 :: GHCziBase.Int = GHCziBase.zdwIzh (1024::GHCziPrim.Intzh);
  lit2 :: GHCziBase.Int = GHCziBase.zdwIzh (1967::GHCziPrim.Intzh);
  lit3 :: GHCziBase.Int =
    GHCziBase.zdwIzh (999999999::GHCziPrim.Intzh);
  lit4 :: GHCziBase.Int = GHCziBase.zdwIzh (0::GHCziPrim.Intzh);
  lit5 :: GHCziBase.Int = GHCziBase.zdwIzh (1::GHCziPrim.Intzh);
  zddReal :: GHCziReal.ZCTReal GHCziBase.Int =
    %case GHCziReal.zdfIntegralInt
    %of (tpl::GHCziReal.ZCTIntegral GHCziBase.Int)
      {GHCziReal.ZCDIntegral
       (tpl1::GHCziReal.ZCTReal GHCziBase.Int)
       (tpl2::GHCziEnum.ZCTEnum 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
	      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
       (tpl7::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (DataziTuple.Z2T GHCziBase.Int GHCziBase.Int)))
       (tpl8::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziPrim.ZLzmzgZR
	       GHCziBase.Int
	       (DataziTuple.Z2T GHCziBase.Int GHCziBase.Int)))
       (tpl9::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziNum.Integer) ->
	 tpl1};
  zddNum :: GHCziNum.ZCTNum GHCziBase.Int =
    %case zddReal %of (tpl::GHCziReal.ZCTReal GHCziBase.Int)
      {GHCziReal.ZCDReal
       (tpl1::GHCziNum.ZCTNum GHCziBase.Int)
       (tpl2::GHCziBase.ZCTOrd GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziReal.Ratio GHCziNum.Integer)) ->
	 tpl1};
  zm :: GHCziPrim.ZLzmzgZR
	GHCziBase.Int
	(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    %case zddNum %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};
  zp :: GHCziPrim.ZLzmzgZR
	GHCziBase.Int
	(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    %case zddNum %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) ->
	 tpl5};
  Fibheaps.meldFH :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziBase.ZCTOrd a)
				 (GHCziPrim.ZLzmzgZR
				  (Fibheaps.FibHeap a)
				  (GHCziPrim.ZLzmzgZR (Fibheaps.FibHeap a) (Fibheaps.FibHeap a))) =
    \ @ a
      (zddOrd::GHCziBase.ZCTOrd a)
      (eta::Fibheaps.FibHeap a)
      (eta1::Fibheaps.FibHeap a) ->
	%case eta %of (wild::Fibheaps.FibHeap a)
	  {Fibheaps.FH
	   (a1::GHCziBase.Int)
	   (a2::DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
	   (a3::Fibheaps.Bag
		(DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) ->
	     %case eta1 %of (wild1::Fibheaps.FibHeap a)
	       {Fibheaps.FH
		(a4::GHCziBase.Int)
		(a5::DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
		(a6::Fibheaps.Bag
		     (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree 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)) ->
		       %case (tpl3 (Fibheaps.rootzq @ a @ GHCziBase.Int a2)
			      (Fibheaps.rootzq @ a @ GHCziBase.Int a5))
		       %of (wild2::GHCziBase.Bool)
			 {GHCziBase.True ->
			    Fibheaps.zdwFH @ a (zp a1 a4) a2
			    (Fibheaps.zdwConsBag
			     @ (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)) a5
			     (Fibheaps.zdwUnionBags
			      @ (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)) a3 a6));
			  GHCziBase.False ->
			    Fibheaps.zdwFH @ a (zp a1 a4) a5
			    (Fibheaps.zdwConsBag
			     @ (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)) a2
			     (Fibheaps.zdwUnionBags
			      @ (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)) a3 a6))}};
		Fibheaps.EmptyFH ->
		  wild};
	   Fibheaps.EmptyFH ->
	     eta1};
  Fibheaps.insertFH :: %forall a . GHCziPrim.ZLzmzgZR
				   (GHCziBase.ZCTOrd a)
				   (GHCziPrim.ZLzmzgZR
				    a
				    (GHCziPrim.ZLzmzgZR
				     (Fibheaps.FibHeap a)
				     (Fibheaps.FibHeap a))) =
    \ @ a
      (zddOrd::GHCziBase.ZCTOrd a)
      (eta::a)
      (eta1::Fibheaps.FibHeap a) ->
	Fibheaps.meldFH @ a zddOrd (Fibheaps.singleFH @ a eta) eta1;
  Fibheaps.makeFH :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziBase.ZCTOrd a)
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (Fibheaps.FibHeap a)) =
    \ @ a (zddOrd::GHCziBase.ZCTOrd a) (eta::GHCziBase.ZMZN a) ->
	GHCziBase.foldr @ a @ (Fibheaps.FibHeap a)
	(Fibheaps.insertFH @ a zddOrd) (Fibheaps.zdwEmptyFH @ a) eta;
  Fibheaps.maxInt :: GHCziBase.Int =
    %case zddNum %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))))};
  log21 :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int =
    Fibheaps.log2 @ GHCziBase.Int @ GHCziBase.Int zddNum
    GHCziReal.zdfIntegralInt;
  Fibheaps.deleteMinFHzq :: %forall a . GHCziPrim.ZLzmzgZR
					(GHCziBase.ZCTOrd a)
					(GHCziPrim.ZLzmzgZR
					 (Fibheaps.FibHeap a)
					 (Fibheaps.FibHeap a)) =
    \ @ a (zddOrd::GHCziBase.ZCTOrd a) ->
	%let getChildren1 :: GHCziPrim.ZLzmzgZR
			     (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
			     (GHCziBase.ZMZN
			      (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) =
	       Fibheaps.getChildren @ a @ GHCziBase.Int GHCziEnum.zdfEnumInt
	       GHCziNum.zdfNumInt
	%in %let accumArray :: GHCziPrim.ZLzmzgZR
			       (GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN (Fibheaps.Tree a))
				(GHCziPrim.ZLzmzgZR
				 (Fibheaps.Tree a)
				 (GHCziBase.ZMZN (Fibheaps.Tree a))))
			       (GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN (Fibheaps.Tree a))
				(GHCziPrim.ZLzmzgZR
				 (DataziTuple.Z2T GHCziBase.Int GHCziBase.Int)
				 (GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZMZN (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a)))
				  (GHCziArr.Array
				   GHCziBase.Int
				   (GHCziBase.ZMZN (Fibheaps.Tree a)))))) =
		   GHCziArr.accumArray @ (GHCziBase.ZMZN (Fibheaps.Tree a))
		   @ (Fibheaps.Tree a) @ GHCziBase.Int GHCziArr.zdfIxInt
	    %in %let elems :: GHCziPrim.ZLzmzgZR
			      (GHCziArr.Array GHCziBase.Int (GHCziBase.ZMZN (Fibheaps.Tree a)))
			      (GHCziBase.ZMZN (GHCziBase.ZMZN (Fibheaps.Tree a))) =
		       GHCziArr.elems @ GHCziBase.Int @ (GHCziBase.ZMZN (Fibheaps.Tree a))
		       GHCziArr.zdfIxInt
		%in \ (ds::Fibheaps.FibHeap a) ->
			%case ds %of (wild::Fibheaps.FibHeap a)
			  {Fibheaps.FH
			   (ds1::GHCziBase.Int)
			   (tt::DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
			   (f::Fibheaps.Bag
			       (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) ->
			     %case ds1 %of (wild1::GHCziBase.Int)
			       {GHCziBase.Izh (ds2::GHCziPrim.Intzh) ->
				  %case ds2 %of (ds3::GHCziPrim.Intzh)
				    {%_ ->
				       %let ds4 :: DataziTuple.Z2T
						   (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
						   (Fibheaps.Bag
						    (DataziTuple.Z2T
						     GHCziBase.Int
						     (Fibheaps.Tree a))) =
					      %case (elems
						     (accumArray
						      (Fibheaps.flip @ (Fibheaps.Tree a)
						       @ (GHCziBase.ZMZN (Fibheaps.Tree a))
						       @ (GHCziBase.ZMZN (Fibheaps.Tree a))
						       (GHCziBase.zdwZC @ (Fibheaps.Tree a)))
						      (GHCziBase.zdwZMZN @ (Fibheaps.Tree a))
						      (DataziTuple.zdwZ2T @ GHCziBase.Int
						       @ GHCziBase.Int lit4 (log21 (zm wild1 lit5)))
						      (Fibheaps.append
						       @ (DataziTuple.Z2T
							  GHCziBase.Int
							  (Fibheaps.Tree a))
						       (getChildren1 tt)
						       (Fibheaps.bagToList
							@ (DataziTuple.Z2T
							   GHCziBase.Int
							   (Fibheaps.Tree a))
							f))))
					      %of (wild2::GHCziBase.ZMZN
							  (GHCziBase.ZMZN (Fibheaps.Tree a)))
						{GHCziBase.ZMZN ->
						   %coerce (DataziTuple.Z2T
							    (DataziTuple.Z2T
							     GHCziBase.Int
							     (Fibheaps.Tree a))
							    (Fibheaps.Bag
							     (DataziTuple.Z2T
							      GHCziBase.Int
							      (Fibheaps.Tree a))))
						   GHCziErr.patError
						   @ (GHCziBase.ZMZN
						      (DataziTuple.Z2T
						       GHCziBase.Int
						       (Fibheaps.Tree a)))
						   ("FibheapswithPrelude.hs:269|function doLinks"::GHCziPrim.Addrzh);
						 GHCziBase.ZC
						 (ts::GHCziBase.ZMZN (Fibheaps.Tree a))
						 (rest::GHCziBase.ZMZN
							(GHCziBase.ZMZN (Fibheaps.Tree a))) ->
						   %let zp1 :: 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) ->
							       tpl5}
						   %in %let lit6 :: 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.zdwSzh
								    (1::GHCziPrim.Intzh))}
						       %in %let %rec
								{startup :: GHCziPrim.ZLzmzgZR
									    GHCziBase.Int
									    (GHCziPrim.ZLzmzgZR
									     (GHCziBase.ZMZN
									      (Fibheaps.Tree a))
									     (GHCziPrim.ZLzmzgZR
									      (GHCziBase.ZMZN
									       (GHCziBase.ZMZN
										(Fibheaps.Tree a)))
									      (GHCziBase.ZMZN
									       (DataziTuple.Z2T
										GHCziBase.Int
										(Fibheaps.Tree
										 a))))) =
								   \ (i::GHCziBase.Int)
								     (ds5::GHCziBase.ZMZN
									   (Fibheaps.Tree a))
								     (ds6::GHCziBase.ZMZN
									   (GHCziBase.ZMZN
									    (Fibheaps.Tree a))) ->
								       %case ds5
								       %of (wild3::GHCziBase.ZMZN
										   (Fibheaps.Tree
										    a))
									 {GHCziBase.ZC
									  (a1::Fibheaps.Tree a)
									  (a2::GHCziBase.ZMZN
									       (Fibheaps.Tree a)) ->
									    %case ds6
									    %of (wild4::GHCziBase.ZMZN
											(GHCziBase.ZMZN
											 (Fibheaps.Tree
											  a)))
									      {GHCziBase.ZC
									       (next::GHCziBase.ZMZN
										      (Fibheaps.Tree
										       a))
									       (rest1::GHCziBase.ZMZN
										       (GHCziBase.ZMZN
											(Fibheaps.Tree
											 a))) ->
										 combine i wild3
										 next rest1;
									       GHCziBase.ZMZN ->
										 combine i wild3
										 (GHCziBase.zdwZMZN
										  @ (Fibheaps.Tree
										     a))
										 (GHCziBase.zdwZMZN
										  @ (GHCziBase.ZMZN
										     (Fibheaps.Tree
										      a)))};
									  GHCziBase.ZMZN ->
									    %case ds6
									    %of (wild4::GHCziBase.ZMZN
											(GHCziBase.ZMZN
											 (Fibheaps.Tree
											  a)))
									      {GHCziBase.ZC
									       (ts1::GHCziBase.ZMZN
										     (Fibheaps.Tree
										      a))
									       (rest1::GHCziBase.ZMZN
										       (GHCziBase.ZMZN
											(Fibheaps.Tree
											 a))) ->
										 startup
										 (zp1 i lit6) ts1
										 rest1;
									       GHCziBase.ZMZN ->
										 GHCziBase.zdwZMZN
										 @ (DataziTuple.Z2T
										    GHCziBase.Int
										    (Fibheaps.Tree
										     a))}};
								 combine :: GHCziPrim.ZLzmzgZR
									    GHCziBase.Int
									    (GHCziPrim.ZLzmzgZR
									     (GHCziBase.ZMZN
									      (Fibheaps.Tree a))
									     (GHCziPrim.ZLzmzgZR
									      (GHCziBase.ZMZN
									       (Fibheaps.Tree a))
									      (GHCziPrim.ZLzmzgZR
									       (GHCziBase.ZMZN
										(GHCziBase.ZMZN
										 (Fibheaps.Tree a)))
									       (GHCziBase.ZMZN
										(DataziTuple.Z2T
										 GHCziBase.Int
										 (Fibheaps.Tree
										  a)))))) =
								   \ (i::GHCziBase.Int)
								     (ds5::GHCziBase.ZMZN
									   (Fibheaps.Tree a))
								     (next::GHCziBase.ZMZN
									    (Fibheaps.Tree a))
								     (rest1::GHCziBase.ZMZN
									     (GHCziBase.ZMZN
									      (Fibheaps.Tree a))) ->
								       %case ds5
								       %of (wild3::GHCziBase.ZMZN
										   (Fibheaps.Tree
										    a))
									 {GHCziBase.ZC
									  (t::Fibheaps.Tree a)
									  (ds6::GHCziBase.ZMZN
										(Fibheaps.Tree
										 a)) ->
									    %case ds6
									    %of (wild4::GHCziBase.ZMZN
											(Fibheaps.Tree
											 a))
									      {GHCziBase.ZC
									       (t2::Fibheaps.Tree a)
									       (ts1::GHCziBase.ZMZN
										     (Fibheaps.Tree
										      a)) ->
										 combine i ts1
										 (GHCziBase.zdwZC
										  @ (Fibheaps.Tree
										     a)
										  (Fibheaps.link @ a
										   zddOrd t t2)
										  next)
										 rest1;
									       GHCziBase.ZMZN ->
										 GHCziBase.zdwZC
										 @ (DataziTuple.Z2T
										    GHCziBase.Int
										    (Fibheaps.Tree
										     a))
										 (DataziTuple.zdwZ2T
										  @ GHCziBase.Int
										  @ (Fibheaps.Tree
										     a)
										  i t)
										 (startup
										  (zp1 i lit6) next
										  rest1)};
									  GHCziBase.ZMZN ->
									    startup (zp1 i lit6)
									    next rest1}}
							   %in %case (startup
								      (%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.zdwSzh
									     (0::GHCziPrim.Intzh))})
								      ts rest)
							       %of (wild3::GHCziBase.ZMZN
									   (DataziTuple.Z2T
									    GHCziBase.Int
									    (Fibheaps.Tree a)))
								 {GHCziBase.ZMZN ->
								    GHCziErr.patError
								    @ (DataziTuple.Z2T
								       (DataziTuple.Z2T
									GHCziBase.Int
									(Fibheaps.Tree a))
								       (Fibheaps.Bag
									(DataziTuple.Z2T
									 GHCziBase.Int
									 (Fibheaps.Tree a))))
								    ("FibheapswithPrelude.hs:280|function getMin"::GHCziPrim.Addrzh);
								  GHCziBase.ZC
								  (tt1::DataziTuple.Z2T
									GHCziBase.Int
									(Fibheaps.Tree a))
								  (rest1::GHCziBase.ZMZN
									  (DataziTuple.Z2T
									   GHCziBase.Int
									   (Fibheaps.Tree a))) ->
								    Fibheaps.foldl
								    @ (DataziTuple.Z2T
								       (DataziTuple.Z2T
									GHCziBase.Int
									(Fibheaps.Tree a))
								       (Fibheaps.Bag
									(DataziTuple.Z2T
									 GHCziBase.Int
									 (Fibheaps.Tree a))))
								    @ (DataziTuple.Z2T
								       GHCziBase.Int
								       (Fibheaps.Tree a))
								    (\ (ds5::DataziTuple.Z2T
									     (DataziTuple.Z2T
									      GHCziBase.Int
									      (Fibheaps.Tree a))
									     (Fibheaps.Bag
									      (DataziTuple.Z2T
									       GHCziBase.Int
									       (Fibheaps.Tree a))))
								       (tt2::DataziTuple.Z2T
									     GHCziBase.Int
									     (Fibheaps.Tree a)) ->
									 %case ds5
									 %of (wild4::DataziTuple.Z2T
										     (DataziTuple.Z2T
										      GHCziBase.Int
										      (Fibheaps.Tree
										       a))
										     (Fibheaps.Bag
										      (DataziTuple.Z2T
										       GHCziBase.Int
										       (Fibheaps.Tree
											a))))
									   {DataziTuple.Z2T
									    (tt11::DataziTuple.Z2T
										   GHCziBase.Int
										   (Fibheaps.Tree
										    a))
									    (b::Fibheaps.Bag
										(DataziTuple.Z2T
										 GHCziBase.Int
										 (Fibheaps.Tree
										  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)) ->
										   %case (tpl3
											  (Fibheaps.rootzq
											   @ a
											   @ GHCziBase.Int
											   tt11)
											  (Fibheaps.rootzq
											   @ a
											   @ GHCziBase.Int
											   tt2))
										   %of (wild5::GHCziBase.Bool)
										     {GHCziBase.True
										      ->
											DataziTuple.zdwZ2T
											@ (DataziTuple.Z2T
											   GHCziBase.Int
											   (Fibheaps.Tree
											    a))
											@ (Fibheaps.Bag
											   (DataziTuple.Z2T
											    GHCziBase.Int
											    (Fibheaps.Tree
											     a)))
											tt11
											(Fibheaps.zdwConsBag
											 @ (DataziTuple.Z2T
											    GHCziBase.Int
											    (Fibheaps.Tree
											     a))
											 tt2 b);
										      GHCziBase.False
										      ->
											DataziTuple.zdwZ2T
											@ (DataziTuple.Z2T
											   GHCziBase.Int
											   (Fibheaps.Tree
											    a))
											@ (Fibheaps.Bag
											   (DataziTuple.Z2T
											    GHCziBase.Int
											    (Fibheaps.Tree
											     a)))
											tt2
											(Fibheaps.zdwConsBag
											 @ (DataziTuple.Z2T
											    GHCziBase.Int
											    (Fibheaps.Tree
											     a))
											 tt11 b)}}})
								    (DataziTuple.zdwZ2T
								     @ (DataziTuple.Z2T
									GHCziBase.Int
									(Fibheaps.Tree a))
								     @ (Fibheaps.Bag
									(DataziTuple.Z2T
									 GHCziBase.Int
									 (Fibheaps.Tree a)))
								     tt1
								     (Fibheaps.zdwEmptyBag
								      @ (DataziTuple.Z2T
									 GHCziBase.Int
									 (Fibheaps.Tree a))))
								    rest1}}
				       %in Fibheaps.zdwFH @ a (zm wild1 lit5)
					   (%case ds4
					    %of (wild2::DataziTuple.Z2T
							(DataziTuple.Z2T
							 GHCziBase.Int
							 (Fibheaps.Tree a))
							(Fibheaps.Bag
							 (DataziTuple.Z2T
							  GHCziBase.Int
							  (Fibheaps.Tree a))))
					      {DataziTuple.Z2T
					       (newzutt::DataziTuple.Z2T
							 GHCziBase.Int
							 (Fibheaps.Tree a))
					       (newzuf::Fibheaps.Bag
							(DataziTuple.Z2T
							 GHCziBase.Int
							 (Fibheaps.Tree a))) ->
						 newzutt})
					   (%case ds4
					    %of (wild2::DataziTuple.Z2T
							(DataziTuple.Z2T
							 GHCziBase.Int
							 (Fibheaps.Tree a))
							(Fibheaps.Bag
							 (DataziTuple.Z2T
							  GHCziBase.Int
							  (Fibheaps.Tree a))))
					      {DataziTuple.Z2T
					       (newzutt::DataziTuple.Z2T
							 GHCziBase.Int
							 (Fibheaps.Tree a))
					       (newzuf::Fibheaps.Bag
							(DataziTuple.Z2T
							 GHCziBase.Int
							 (Fibheaps.Tree a))) ->
						 newzuf});
				     (1::GHCziPrim.Intzh) ->
				       Fibheaps.zdwEmptyFH @ a}};
			   Fibheaps.EmptyFH ->
			     GHCziErr.error @ (Fibheaps.FibHeap a)
			     (GHCziBase.unpackCStringzh
			      ("deleteMinFH EmptyFH"::GHCziPrim.Addrzh))};
  Fibheaps.fibToListzq :: %forall a . GHCziPrim.ZLzmzgZR
				      (GHCziBase.ZCTOrd a)
				      (GHCziPrim.ZLzmzgZR (Fibheaps.FibHeap a) (GHCziBase.ZMZN a)) =
    \ @ a (zddOrd::GHCziBase.ZCTOrd a) ->
	%let deleteMinFHzq1 :: GHCziPrim.ZLzmzgZR
			       (Fibheaps.FibHeap a)
			       (Fibheaps.FibHeap a) =
	       Fibheaps.deleteMinFHzq @ a zddOrd
	%in %let %rec
		 {fibToListzq1 :: GHCziPrim.ZLzmzgZR
				  (Fibheaps.FibHeap a)
				  (GHCziBase.ZMZN a) =
		    \ (xs::Fibheaps.FibHeap a) ->
			%case (Fibheaps.isEmptyFH @ a xs) %of (wild::GHCziBase.Bool)
			  {GHCziBase.True ->
			     GHCziBase.zdwZMZN @ a;
			   GHCziBase.False ->
			     GHCziBase.zdwZC @ a (Fibheaps.minFH @ a xs)
			     (fibToListzq1 (deleteMinFHzq1 xs))}}
	    %in fibToListzq1;
  Fibheaps.fibSortzq :: %forall a . GHCziPrim.ZLzmzgZR
				    (GHCziBase.ZCTOrd a)
				    (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a (zddOrd::GHCziBase.ZCTOrd a) ->
	GHCziBase.zi @ (Fibheaps.FibHeap a) @ (GHCziBase.ZMZN a)
	@ (GHCziBase.ZMZN a) (Fibheaps.fibToListzq @ a zddOrd)
	(Fibheaps.makeFH @ a zddOrd);
  zddEq :: GHCziBase.ZCTEq GHCziBase.Int =
    %case zddNum %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) ->
	 tpl1};
  zddEq1 :: GHCziBase.ZCTEq (GHCziBase.ZMZN GHCziBase.Int) =
    GHCziBase.zdfEqZMZN @ GHCziBase.Int zddEq;
  zddOrd :: GHCziBase.ZCTOrd GHCziBase.Int =
    %case zddReal %of (tpl::GHCziReal.ZCTReal GHCziBase.Int)
      {GHCziReal.ZCDReal
       (tpl1::GHCziNum.ZCTNum GHCziBase.Int)
       (tpl2::GHCziBase.ZCTOrd GHCziBase.Int)
       (tpl3::GHCziPrim.ZLzmzgZR
	      GHCziBase.Int
	      (GHCziReal.Ratio GHCziNum.Integer)) ->
	 tpl2};
  Fibheaps.deleteMinFH :: %forall a . GHCziPrim.ZLzmzgZR
				      (GHCziBase.ZCTOrd a)
				      (GHCziPrim.ZLzmzgZR
				       (Fibheaps.FibHeap a)
				       (Fibheaps.FibHeap a)) =
    \ @ a (zddOrd1::GHCziBase.ZCTOrd a) ->
	%let getChildren1 :: GHCziPrim.ZLzmzgZR
			     (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
			     (GHCziBase.ZMZN
			      (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) =
	       Fibheaps.getChildren @ a @ GHCziBase.Int GHCziEnum.zdfEnumInt
	       GHCziNum.zdfNumInt
	%in \ (ds::Fibheaps.FibHeap a) ->
		%case ds %of (wild::Fibheaps.FibHeap a)
		  {Fibheaps.FH
		   (ds1::GHCziBase.Int)
		   (tt::DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))
		   (f::Fibheaps.Bag
		       (DataziTuple.Z2T GHCziBase.Int (Fibheaps.Tree a))) ->
		     %case ds1 %of (wild1::GHCziBase.Int)
		       {GHCziBase.Izh (ds2::GHCziPrim.Intzh) ->
			  %case ds2 %of (ds3::GHCziPrim.Intzh)
			    {%_ ->
			       %let d :: GHCziBase.Int = log21 (zm wild1 lit5)
			       %in GHCziST.runST @ (Fibheaps.FibHeap a)
				   (\ @ s ->
					%let writeArray :: GHCziPrim.ZLzmzgZR
							   (GHCziArr.STArray
							    s
							    GHCziBase.Int
							    (Fibheaps.MyMaybe (Fibheaps.Tree a)))
							   (GHCziPrim.ZLzmzgZR
							    GHCziBase.Int
							    (GHCziPrim.ZLzmzgZR
							     (Fibheaps.MyMaybe (Fibheaps.Tree a))
							     (GHCziPrim.ZLzmzgZR
							      (GHCziPrim.Statezh s)
							      (GHCziPrim.Z2H
							       (GHCziPrim.Statezh s)
							       GHCziBase.Z0T)))) =
					       DataziArrayziBase.writeArray @ (GHCziArr.STArray s)
					       @ GHCziBase.Int
					       @ (Fibheaps.MyMaybe (Fibheaps.Tree a))
					       @ (GHCziST.ST s)
					       (DataziArrayziBase.zdfMArraySTArray @ s
						@ (Fibheaps.MyMaybe (Fibheaps.Tree a)))
					       GHCziArr.zdfIxInt
					%in %let readArray :: GHCziPrim.ZLzmzgZR
							      (GHCziArr.STArray
							       s
							       GHCziBase.Int
							       (Fibheaps.MyMaybe (Fibheaps.Tree a)))
							      (GHCziPrim.ZLzmzgZR
							       GHCziBase.Int
							       (GHCziPrim.ZLzmzgZR
								(GHCziPrim.Statezh s)
								(GHCziPrim.Z2H
								 (GHCziPrim.Statezh s)
								 (Fibheaps.MyMaybe
								  (Fibheaps.Tree a))))) =
						   DataziArrayziBase.readArray
						   @ (GHCziArr.STArray s) @ GHCziBase.Int
						   @ (Fibheaps.MyMaybe (Fibheaps.Tree a))
						   @ (GHCziST.ST s)
						   (DataziArrayziBase.zdfMArraySTArray @ s
						    @ (Fibheaps.MyMaybe (Fibheaps.Tree a)))
						   GHCziArr.zdfIxInt
					    %in %let zddMonad :: GHCziBase.ZCTMonad (GHCziST.ST s) =
						       %case (DataziArrayziBase.zdfMArraySTArray @ s
							      @ (Fibheaps.MyMaybe
								 (Fibheaps.Tree a)))
						       %of (tpl::DataziArrayziBase.ZCTMArray
								 (GHCziArr.STArray s)
								 (Fibheaps.MyMaybe
								  (Fibheaps.Tree a))
								 (GHCziST.ST s))
							 {DataziArrayziBase.ZCDMArray
							  (tpl1::%forall i e . GHCziPrim.ZLzmzgZR
									       (GHCziArr.ZCTIx i)
									       (GHCziPrim.ZLzmzgZR
										(GHCziArr.STArray
										 s
										 i
										 e)
										(DataziTuple.Z2T
										 i
										 i)))
							  (tpl2::GHCziBase.ZCTMonad (GHCziST.ST s))
							  (tpl3::%forall i . GHCziPrim.ZLzmzgZR
									     (GHCziArr.ZCTIx i)
									     (GHCziPrim.ZLzmzgZR
									      (DataziTuple.Z2T i i)
									      (GHCziPrim.ZLzmzgZR
									       (Fibheaps.MyMaybe
										(Fibheaps.Tree a))
									       (GHCziPrim.ZLzmzgZR
										(GHCziPrim.Statezh
										 s)
										(GHCziPrim.Z2H
										 (GHCziPrim.Statezh
										  s)
										 (GHCziArr.STArray
										  s
										  i
										  (Fibheaps.MyMaybe
										   (Fibheaps.Tree
										    a))))))))
							  (tpl4::%forall i . GHCziPrim.ZLzmzgZR
									     (GHCziArr.ZCTIx i)
									     (GHCziPrim.ZLzmzgZR
									      (DataziTuple.Z2T i i)
									      (GHCziPrim.ZLzmzgZR
									       (GHCziPrim.Statezh s)
									       (GHCziPrim.Z2H
										(GHCziPrim.Statezh
										 s)
										(GHCziArr.STArray
										 s
										 i
										 (Fibheaps.MyMaybe
										  (Fibheaps.Tree
										   a)))))))
							  (tpl5::%forall i . GHCziPrim.ZLzmzgZR
									     (GHCziArr.ZCTIx i)
									     (GHCziPrim.ZLzmzgZR
									      (GHCziArr.STArray
									       s
									       i
									       (Fibheaps.MyMaybe
										(Fibheaps.Tree a)))
									      (GHCziPrim.ZLzmzgZR
									       GHCziBase.Int
									       (GHCziPrim.ZLzmzgZR
										(GHCziPrim.Statezh
										 s)
										(GHCziPrim.Z2H
										 (GHCziPrim.Statezh
										  s)
										 (Fibheaps.MyMaybe
										  (Fibheaps.Tree
										   a)))))))
							  (tpl6::%forall i . GHCziPrim.ZLzmzgZR
									     (GHCziArr.ZCTIx i)
									     (GHCziPrim.ZLzmzgZR
									      (GHCziArr.STArray
									       s
									       i
									       (Fibheaps.MyMaybe
										(Fibheaps.Tree a)))
									      (GHCziPrim.ZLzmzgZR
									       GHCziBase.Int
									       (GHCziPrim.ZLzmzgZR
										(Fibheaps.MyMaybe
										 (Fibheaps.Tree a))
										(GHCziPrim.ZLzmzgZR
										 (GHCziPrim.Statezh
										  s)
										 (GHCziPrim.Z2H
										  (GHCziPrim.Statezh
										   s)
										  GHCziBase.Z0T)))))) ->
							    tpl2}
						%in %let %rec
							 {ins :: GHCziPrim.ZLzmzgZR
								 (GHCziArr.STArray
								  s
								  GHCziBase.Int
								  (Fibheaps.MyMaybe
								   (Fibheaps.Tree a)))
								 (GHCziPrim.ZLzmzgZR
								  (DataziTuple.Z2T
								   GHCziBase.Int
								   (Fibheaps.Tree a))
								  (GHCziPrim.ZLzmzgZR
								   (GHCziPrim.Statezh s)
								   (GHCziPrim.Z2H
								    (GHCziPrim.Statezh s)
								    GHCziBase.Z0T))) =
							    \ (a1::GHCziArr.STArray
								   s
								   GHCziBase.Int
								   (Fibheaps.MyMaybe
								    (Fibheaps.Tree a)))
							      (ds4::DataziTuple.Z2T
								    GHCziBase.Int
								    (Fibheaps.Tree a)) ->
								%case ds4
								%of (wild2::DataziTuple.Z2T
									    GHCziBase.Int
									    (Fibheaps.Tree a))
								  {DataziTuple.Z2T
								   (i::GHCziBase.Int)
								   (t::Fibheaps.Tree a) ->
								     %case zddMonad
								     %of (tpl::GHCziBase.ZCTMonad
									       (GHCziST.ST s))
								       {GHCziBase.ZCDMonad
									(tpl1::%forall a2 b . GHCziPrim.ZLzmzgZR
											      (GHCziPrim.ZLzmzgZR
											       (GHCziPrim.Statezh
												s)
											       (GHCziPrim.Z2H
												(GHCziPrim.Statezh
												 s)
												a2))
											      (GHCziPrim.ZLzmzgZR
											       (GHCziPrim.ZLzmzgZR
												a2
												(GHCziPrim.ZLzmzgZR
												 (GHCziPrim.Statezh
												  s)
												 (GHCziPrim.Z2H
												  (GHCziPrim.Statezh
												   s)
												  b)))
											       (GHCziPrim.ZLzmzgZR
												(GHCziPrim.Statezh
												 s)
												(GHCziPrim.Z2H
												 (GHCziPrim.Statezh
												  s)
												 b))))
									(tpl2::%forall a2 b . GHCziPrim.ZLzmzgZR
											      (GHCziPrim.ZLzmzgZR
											       (GHCziPrim.Statezh
												s)
											       (GHCziPrim.Z2H
												(GHCziPrim.Statezh
												 s)
												a2))
											      (GHCziPrim.ZLzmzgZR
											       (GHCziPrim.ZLzmzgZR
												(GHCziPrim.Statezh
												 s)
												(GHCziPrim.Z2H
												 (GHCziPrim.Statezh
												  s)
												 b))
											       (GHCziPrim.ZLzmzgZR
												(GHCziPrim.Statezh
												 s)
												(GHCziPrim.Z2H
												 (GHCziPrim.Statezh
												  s)
												 b))))
									(tpl3::%forall a2 . GHCziPrim.ZLzmzgZR
											    a2
											    (GHCziPrim.ZLzmzgZR
											     (GHCziPrim.Statezh
											      s)
											     (GHCziPrim.Z2H
											      (GHCziPrim.Statezh
											       s)
											      a2)))
									(tpl4::%forall a2 . GHCziPrim.ZLzmzgZR
											    (GHCziBase.ZMZN
											     GHCziBase.Char)
											    (GHCziPrim.ZLzmzgZR
											     (GHCziPrim.Statezh
											      s)
											     (GHCziPrim.Z2H
											      (GHCziPrim.Statezh
											       s)
											      a2))) ->
									  tpl1
									  @ (Fibheaps.MyMaybe
									     (Fibheaps.Tree a))
									  @ GHCziBase.Z0T
									  (readArray a1 i)
									  (\ (e::Fibheaps.MyMaybe
										 (Fibheaps.Tree
										  a)) ->
									       %case e
									       %of (wild3::Fibheaps.MyMaybe
											   (Fibheaps.Tree
											    a))
										 {Fibheaps.One
										  (t2::Fibheaps.Tree
										       a) ->
										    tpl2
										    @ GHCziBase.Z0T
										    @ GHCziBase.Z0T
										    (writeArray a1 i
										     (Fibheaps.zdwZZero
										      @ (Fibheaps.Tree
											 a)))
										    (ins a1
										     (DataziTuple.zdwZ2T
										      @ GHCziBase.Int
										      @ (Fibheaps.Tree
											 a)
										      (zp i lit5)
										      (Fibheaps.link
										       @ a zddOrd1 t
										       t2)));
										  Fibheaps.ZZero ->
										    writeArray a1 i
										    (Fibheaps.zdwOne
										     @ (Fibheaps.Tree
											a)
										     t)})}}}
						    %in %let readArray1 :: GHCziPrim.ZLzmzgZR
									   (GHCziArr.STArray
									    s
									    GHCziBase.Int
									    (Fibheaps.MyMaybe
									     (Fibheaps.Tree a)))
									   (GHCziPrim.ZLzmzgZR
									    GHCziBase.Int
									    (GHCziPrim.ZLzmzgZR
									     (GHCziPrim.Statezh s)
									     (GHCziPrim.Z2H
									      (GHCziPrim.Statezh s)
									      (Fibheaps.MyMaybe
									       (Fibheaps.Tree
										a))))) =
							       DataziArrayziBase.readArray
							       @ (GHCziArr.STArray s)
							       @ GHCziBase.Int
							       @ (Fibheaps.MyMaybe
								  (Fibheaps.Tree a))
							       @ (GHCziST.ST s)
							       (DataziArrayziBase.zdfMArraySTArray
								@ s
								@ (Fibheaps.MyMaybe
								   (Fibheaps.Tree a)))
							       GHCziArr.zdfIxInt
							%in %let readArray2 :: GHCziPrim.ZLzmzgZR
									       (GHCziArr.STArray
										s
										GHCziBase.Int
										(Fibheaps.MyMaybe
										 (Fibheaps.Tree a)))
									       (GHCziPrim.ZLzmzgZR
										GHCziBase.Int
										(GHCziPrim.ZLzmzgZR
										 (GHCziPrim.Statezh
										  s)
										 (GHCziPrim.Z2H
										  (GHCziPrim.Statezh
										   s)
										  (Fibheaps.MyMaybe
										   (Fibheaps.Tree
										    a))))) =
								   DataziArrayziBase.readArray
								   @ (GHCziArr.STArray s)
								   @ GHCziBase.Int
								   @ (Fibheaps.MyMaybe
								      (Fibheaps.Tree a))
								   @ (GHCziST.ST s)
								   (DataziArrayziBase.zdfMArraySTArray
								    @ s
								    @ (Fibheaps.MyMaybe
								       (Fibheaps.Tree a)))
								   GHCziArr.zdfIxInt
							    %in %let zddMonad1 :: GHCziBase.ZCTMonad
										  (GHCziST.ST s) =
								       %case (DataziArrayziBase.zdfMArraySTArray
									      @ s
									      @ (Fibheaps.MyMaybe
										 (Fibheaps.Tree a)))
								       %of (tpl::DataziArrayziBase.ZCTMArray
										 (GHCziArr.STArray
										  s)
										 (Fibheaps.MyMaybe
										  (Fibheaps.Tree a))
										 (GHCziST.ST s))
									 {DataziArrayziBase.ZCDMArray
									  (tpl1::%forall i e . GHCziPrim.ZLzmzgZR
											       (GHCziArr.ZCTIx
												i)
											       (GHCziPrim.ZLzmzgZR
												(GHCziArr.STArray
												 s
												 i
												 e)
												(DataziTuple.Z2T
												 i
												 i)))
									  (tpl2::GHCziBase.ZCTMonad
										 (GHCziST.ST s))
									  (tpl3::%forall i . GHCziPrim.ZLzmzgZR
											     (GHCziArr.ZCTIx
											      i)
											     (GHCziPrim.ZLzmzgZR
											      (DataziTuple.Z2T
											       i
											       i)
											      (GHCziPrim.ZLzmzgZR
											       (Fibheaps.MyMaybe
												(Fibheaps.Tree
												 a))
											       (GHCziPrim.ZLzmzgZR
												(GHCziPrim.Statezh
												 s)
												(GHCziPrim.Z2H
												 (GHCziPrim.Statezh
												  s)
												 (GHCziArr.STArray
												  s
												  i
												  (Fibheaps.MyMaybe
												   (Fibheaps.Tree
												    a))))))))
									  (tpl4::%forall i . GHCziPrim.ZLzmzgZR
											     (GHCziArr.ZCTIx
											      i)
											     (GHCziPrim.ZLzmzgZR
											      (DataziTuple.Z2T
											       i
											       i)
											      (GHCziPrim.ZLzmzgZR
											       (GHCziPrim.Statezh
												s)
											       (GHCziPrim.Z2H
												(GHCziPrim.Statezh
												 s)
												(GHCziArr.STArray
												 s
												 i
												 (Fibheaps.MyMaybe
												  (Fibheaps.Tree
												   a)))))))
									  (tpl5::%forall i . GHCziPrim.ZLzmzgZR
											     (GHCziArr.ZCTIx
											      i)
											     (GHCziPrim.ZLzmzgZR
											      (GHCziArr.STArray
											       s
											       i
											       (Fibheaps.MyMaybe
												(Fibheaps.Tree
												 a)))
											      (GHCziPrim.ZLzmzgZR
											       GHCziBase.Int
											       (GHCziPrim.ZLzmzgZR
												(GHCziPrim.Statezh
												 s)
												(GHCziPrim.Z2H
												 (GHCziPrim.Statezh
												  s)
												 (Fibheaps.MyMaybe
												  (Fibheaps.Tree
												   a)))))))
									  (tpl6::%forall i . GHCziPrim.ZLzmzgZR
											     (GHCziArr.ZCTIx
											      i)
											     (GHCziPrim.ZLzmzgZR
											      (GHCziArr.STArray
											       s
											       i
											       (Fibheaps.MyMaybe
												(Fibheaps.Tree
												 a)))
											      (GHCziPrim.ZLzmzgZR
											       GHCziBase.Int
											       (GHCziPrim.ZLzmzgZR
												(Fibheaps.MyMaybe
												 (Fibheaps.Tree
												  a))
												(GHCziPrim.ZLzmzgZR
												 (GHCziPrim.Statezh
												  s)
												 (GHCziPrim.Z2H
												  (GHCziPrim.Statezh
												   s)
												  GHCziBase.Z0T)))))) ->
									    tpl2}
								%in %let %rec
									 {getMinzq :: GHCziPrim.ZLzmzgZR
										      (GHCziArr.STArray
										       s
										       GHCziBase.Int
										       (Fibheaps.MyMaybe
											(Fibheaps.Tree
											 a)))
										      (GHCziPrim.ZLzmzgZR
										       GHCziBase.Int
										       (GHCziPrim.ZLzmzgZR
											(Fibheaps.Tree
											 a)
											(GHCziPrim.ZLzmzgZR
											 (Fibheaps.Bag
											  (DataziTuple.Z2T
											   GHCziBase.Int
											   (Fibheaps.Tree
											    a)))
											 (GHCziPrim.ZLzmzgZR
											  GHCziBase.Int
											  (GHCziPrim.ZLzmzgZR
											   (GHCziPrim.Statezh
											    s)
											   (GHCziPrim.Z2H
											    (GHCziPrim.Statezh
											     s)
											    (DataziTuple.Z2T
											     (DataziTuple.Z2T
											      GHCziBase.Int
											      (Fibheaps.Tree
											       a))
											     (Fibheaps.Bag
											      (DataziTuple.Z2T
											       GHCziBase.Int
											       (Fibheaps.Tree
												a)))))))))) =
									    \ (a1::GHCziArr.STArray
										   s
										   GHCziBase.Int
										   (Fibheaps.MyMaybe
										    (Fibheaps.Tree
										     a)))
									      (mini::GHCziBase.Int)
									      (mint::Fibheaps.Tree
										     a)
									      (b::Fibheaps.Bag
										  (DataziTuple.Z2T
										   GHCziBase.Int
										   (Fibheaps.Tree
										    a)))
									      (i::GHCziBase.Int) ->
										%case zddOrd
										%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 i
											    d)
										     %of (wild2::GHCziBase.Bool)
										       {GHCziBase.True
											->
											  %case zddMonad1
											  %of (tpl9::GHCziBase.ZCTMonad
												     (GHCziST.ST
												      s))
											    {GHCziBase.ZCDMonad
											     (tpl10::%forall a2 b1 . GHCziPrim.ZLzmzgZR
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       a2))
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.ZLzmzgZR
														       a2
														       (GHCziPrim.ZLzmzgZR
															(GHCziPrim.Statezh
															 s)
															(GHCziPrim.Z2H
															 (GHCziPrim.Statezh
															  s)
															 b1)))
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b1))))
											     (tpl11::%forall a2 b1 . GHCziPrim.ZLzmzgZR
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       a2))
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b1))
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b1))))
											     (tpl12::%forall a2 . GHCziPrim.ZLzmzgZR
														  a2
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a2)))
											     (tpl13::%forall a2 . GHCziPrim.ZLzmzgZR
														  (GHCziBase.ZMZN
														   GHCziBase.Char)
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a2))) ->
											       tpl12
											       @ (DataziTuple.Z2T
												  (DataziTuple.Z2T
												   GHCziBase.Int
												   (Fibheaps.Tree
												    a))
												  (Fibheaps.Bag
												   (DataziTuple.Z2T
												    GHCziBase.Int
												    (Fibheaps.Tree
												     a))))
											       (DataziTuple.zdwZ2T
												@ (DataziTuple.Z2T
												   GHCziBase.Int
												   (Fibheaps.Tree
												    a))
												@ (Fibheaps.Bag
												   (DataziTuple.Z2T
												    GHCziBase.Int
												    (Fibheaps.Tree
												     a)))
												(DataziTuple.zdwZ2T
												 @ GHCziBase.Int
												 @ (Fibheaps.Tree
												    a)
												 mini
												 mint)
												b)};
											GHCziBase.False
											->
											  %case zddMonad1
											  %of (tpl9::GHCziBase.ZCTMonad
												     (GHCziST.ST
												      s))
											    {GHCziBase.ZCDMonad
											     (tpl10::%forall a2 b1 . GHCziPrim.ZLzmzgZR
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       a2))
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.ZLzmzgZR
														       a2
														       (GHCziPrim.ZLzmzgZR
															(GHCziPrim.Statezh
															 s)
															(GHCziPrim.Z2H
															 (GHCziPrim.Statezh
															  s)
															 b1)))
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b1))))
											     (tpl11::%forall a2 b1 . GHCziPrim.ZLzmzgZR
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       a2))
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b1))
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b1))))
											     (tpl12::%forall a2 . GHCziPrim.ZLzmzgZR
														  a2
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a2)))
											     (tpl13::%forall a2 . GHCziPrim.ZLzmzgZR
														  (GHCziBase.ZMZN
														   GHCziBase.Char)
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a2))) ->
											       tpl10
											       @ (Fibheaps.MyMaybe
												  (Fibheaps.Tree
												   a))
											       @ (DataziTuple.Z2T
												  (DataziTuple.Z2T
												   GHCziBase.Int
												   (Fibheaps.Tree
												    a))
												  (Fibheaps.Bag
												   (DataziTuple.Z2T
												    GHCziBase.Int
												    (Fibheaps.Tree
												     a))))
											       (readArray2
												a1
												i)
											       (\ (e::Fibheaps.MyMaybe
												      (Fibheaps.Tree
												       a)) ->
												    %case e
												    %of (wild3::Fibheaps.MyMaybe
														(Fibheaps.Tree
														 a))
												      {Fibheaps.One
												       (t::Fibheaps.Tree
													   a) ->
													 %case zddOrd1
													 %of (tpl14::GHCziBase.ZCTOrd
														     a)
													   {GHCziBase.ZCDOrd
													    (tpl15::GHCziBase.ZCTEq
														    a)
													    (tpl16::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     GHCziBase.Ordering))
													    (tpl17::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     GHCziBase.Bool))
													    (tpl18::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     GHCziBase.Bool))
													    (tpl19::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     GHCziBase.Bool))
													    (tpl20::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     GHCziBase.Bool))
													    (tpl21::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     a))
													    (tpl22::GHCziPrim.ZLzmzgZR
														    a
														    (GHCziPrim.ZLzmzgZR
														     a
														     a)) ->
													      %case (tpl17
														     (%case mint
														      %of (wild4::Fibheaps.Tree
																  a)
															{Fibheaps.Node
															 (x::a)
															 (ds4::GHCziBase.ZMZN
															       (Fibheaps.Tree
																a)) ->
															   x})
														     (%case t
														      %of (wild4::Fibheaps.Tree
																  a)
															{Fibheaps.Node
															 (x::a)
															 (ds4::GHCziBase.ZMZN
															       (Fibheaps.Tree
																a)) ->
															   x}))
													      %of (wild4::GHCziBase.Bool)
														{GHCziBase.True
														 ->
														   getMinzq
														   a1
														   mini
														   mint
														   (Fibheaps.zdwConsBag
														    @ (DataziTuple.Z2T
														       GHCziBase.Int
														       (Fibheaps.Tree
															a))
														    (DataziTuple.zdwZ2T
														     @ GHCziBase.Int
														     @ (Fibheaps.Tree
															a)
														     i
														     t)
														    b)
														   (zp
														    i
														    lit5);
														 GHCziBase.False
														 ->
														   getMinzq
														   a1
														   i
														   t
														   (Fibheaps.zdwConsBag
														    @ (DataziTuple.Z2T
														       GHCziBase.Int
														       (Fibheaps.Tree
															a))
														    (DataziTuple.zdwZ2T
														     @ GHCziBase.Int
														     @ (Fibheaps.Tree
															a)
														     mini
														     mint)
														    b)
														   (zp
														    i
														    lit5)}};
												       Fibheaps.ZZero
												       ->
													 getMinzq
													 a1
													 mini
													 mint
													 b
													 (zp
													  i
													  lit5)})}}}}
								    %in %let zddMonad2 :: GHCziBase.ZCTMonad
											  (GHCziST.ST
											   s) =
									       %case (DataziArrayziBase.zdfMArraySTArray
										      @ s
										      @ (Fibheaps.MyMaybe
											 (Fibheaps.Tree
											  a)))
									       %of (tpl::DataziArrayziBase.ZCTMArray
											 (GHCziArr.STArray
											  s)
											 (Fibheaps.MyMaybe
											  (Fibheaps.Tree
											   a))
											 (GHCziST.ST
											  s))
										 {DataziArrayziBase.ZCDMArray
										  (tpl1::%forall i e . GHCziPrim.ZLzmzgZR
												       (GHCziArr.ZCTIx
													i)
												       (GHCziPrim.ZLzmzgZR
													(GHCziArr.STArray
													 s
													 i
													 e)
													(DataziTuple.Z2T
													 i
													 i)))
										  (tpl2::GHCziBase.ZCTMonad
											 (GHCziST.ST
											  s))
										  (tpl3::%forall i . GHCziPrim.ZLzmzgZR
												     (GHCziArr.ZCTIx
												      i)
												     (GHCziPrim.ZLzmzgZR
												      (DataziTuple.Z2T
												       i
												       i)
												      (GHCziPrim.ZLzmzgZR
												       (Fibheaps.MyMaybe
													(Fibheaps.Tree
													 a))
												       (GHCziPrim.ZLzmzgZR
													(GHCziPrim.Statezh
													 s)
													(GHCziPrim.Z2H
													 (GHCziPrim.Statezh
													  s)
													 (GHCziArr.STArray
													  s
													  i
													  (Fibheaps.MyMaybe
													   (Fibheaps.Tree
													    a))))))))
										  (tpl4::%forall i . GHCziPrim.ZLzmzgZR
												     (GHCziArr.ZCTIx
												      i)
												     (GHCziPrim.ZLzmzgZR
												      (DataziTuple.Z2T
												       i
												       i)
												      (GHCziPrim.ZLzmzgZR
												       (GHCziPrim.Statezh
													s)
												       (GHCziPrim.Z2H
													(GHCziPrim.Statezh
													 s)
													(GHCziArr.STArray
													 s
													 i
													 (Fibheaps.MyMaybe
													  (Fibheaps.Tree
													   a)))))))
										  (tpl5::%forall i . GHCziPrim.ZLzmzgZR
												     (GHCziArr.ZCTIx
												      i)
												     (GHCziPrim.ZLzmzgZR
												      (GHCziArr.STArray
												       s
												       i
												       (Fibheaps.MyMaybe
													(Fibheaps.Tree
													 a)))
												      (GHCziPrim.ZLzmzgZR
												       GHCziBase.Int
												       (GHCziPrim.ZLzmzgZR
													(GHCziPrim.Statezh
													 s)
													(GHCziPrim.Z2H
													 (GHCziPrim.Statezh
													  s)
													 (Fibheaps.MyMaybe
													  (Fibheaps.Tree
													   a)))))))
										  (tpl6::%forall i . GHCziPrim.ZLzmzgZR
												     (GHCziArr.ZCTIx
												      i)
												     (GHCziPrim.ZLzmzgZR
												      (GHCziArr.STArray
												       s
												       i
												       (Fibheaps.MyMaybe
													(Fibheaps.Tree
													 a)))
												      (GHCziPrim.ZLzmzgZR
												       GHCziBase.Int
												       (GHCziPrim.ZLzmzgZR
													(Fibheaps.MyMaybe
													 (Fibheaps.Tree
													  a))
													(GHCziPrim.ZLzmzgZR
													 (GHCziPrim.Statezh
													  s)
													 (GHCziPrim.Z2H
													  (GHCziPrim.Statezh
													   s)
													  GHCziBase.Z0T)))))) ->
										    tpl2}
									%in %let zgzg :: %forall a1 b . GHCziPrim.ZLzmzgZR
													(GHCziPrim.ZLzmzgZR
													 (GHCziPrim.Statezh
													  s)
													 (GHCziPrim.Z2H
													  (GHCziPrim.Statezh
													   s)
													  a1))
													(GHCziPrim.ZLzmzgZR
													 (GHCziPrim.ZLzmzgZR
													  (GHCziPrim.Statezh
													   s)
													  (GHCziPrim.Z2H
													   (GHCziPrim.Statezh
													    s)
													   b))
													 (GHCziPrim.ZLzmzgZR
													  (GHCziPrim.Statezh
													   s)
													  (GHCziPrim.Z2H
													   (GHCziPrim.Statezh
													    s)
													   b))) =
										   %case zddMonad2
										   %of (tpl::GHCziBase.ZCTMonad
											     (GHCziST.ST
											      s))
										     {GHCziBase.ZCDMonad
										      (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
													    (GHCziPrim.ZLzmzgZR
													     (GHCziPrim.Statezh
													      s)
													     (GHCziPrim.Z2H
													      (GHCziPrim.Statezh
													       s)
													      a1))
													    (GHCziPrim.ZLzmzgZR
													     (GHCziPrim.ZLzmzgZR
													      a1
													      (GHCziPrim.ZLzmzgZR
													       (GHCziPrim.Statezh
														s)
													       (GHCziPrim.Z2H
														(GHCziPrim.Statezh
														 s)
														b)))
													     (GHCziPrim.ZLzmzgZR
													      (GHCziPrim.Statezh
													       s)
													      (GHCziPrim.Z2H
													       (GHCziPrim.Statezh
														s)
													       b))))
										      (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
													    (GHCziPrim.ZLzmzgZR
													     (GHCziPrim.Statezh
													      s)
													     (GHCziPrim.Z2H
													      (GHCziPrim.Statezh
													       s)
													      a1))
													    (GHCziPrim.ZLzmzgZR
													     (GHCziPrim.ZLzmzgZR
													      (GHCziPrim.Statezh
													       s)
													      (GHCziPrim.Z2H
													       (GHCziPrim.Statezh
														s)
													       b))
													     (GHCziPrim.ZLzmzgZR
													      (GHCziPrim.Statezh
													       s)
													      (GHCziPrim.Z2H
													       (GHCziPrim.Statezh
														s)
													       b))))
										      (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR
													  a1
													  (GHCziPrim.ZLzmzgZR
													   (GHCziPrim.Statezh
													    s)
													   (GHCziPrim.Z2H
													    (GHCziPrim.Statezh
													     s)
													    a1)))
										      (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
													  (GHCziBase.ZMZN
													   GHCziBase.Char)
													  (GHCziPrim.ZLzmzgZR
													   (GHCziPrim.Statezh
													    s)
													   (GHCziPrim.Z2H
													    (GHCziPrim.Statezh
													     s)
													    a1))) ->
											tpl2}
									    %in %let sequencezu1 :: GHCziPrim.ZLzmzgZR
												    (GHCziBase.ZMZN
												     (GHCziPrim.ZLzmzgZR
												      (GHCziPrim.Statezh
												       s)
												      (GHCziPrim.Z2H
												       (GHCziPrim.Statezh
													s)
												       GHCziBase.Z0T)))
												    (GHCziPrim.ZLzmzgZR
												     (GHCziPrim.Statezh
												      s)
												     (GHCziPrim.Z2H
												      (GHCziPrim.Statezh
												       s)
												      GHCziBase.Z0T)) =
										       Fibheaps.sequencezu
										       @ (GHCziST.ST
											  s)
										       @ GHCziBase.Z0T
										       zddMonad2
										%in %let zgzgze :: %forall a1 b . GHCziPrim.ZLzmzgZR
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a1))
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.ZLzmzgZR
														    a1
														    (GHCziPrim.ZLzmzgZR
														     (GHCziPrim.Statezh
														      s)
														     (GHCziPrim.Z2H
														      (GHCziPrim.Statezh
														       s)
														      b)))
														   (GHCziPrim.ZLzmzgZR
														    (GHCziPrim.Statezh
														     s)
														    (GHCziPrim.Z2H
														     (GHCziPrim.Statezh
														      s)
														     b))) =
											   %case zddMonad2
											   %of (tpl::GHCziBase.ZCTMonad
												     (GHCziST.ST
												      s))
											     {GHCziBase.ZCDMonad
											      (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
														    (GHCziPrim.ZLzmzgZR
														     (GHCziPrim.Statezh
														      s)
														     (GHCziPrim.Z2H
														      (GHCziPrim.Statezh
														       s)
														      a1))
														    (GHCziPrim.ZLzmzgZR
														     (GHCziPrim.ZLzmzgZR
														      a1
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															b)))
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       b))))
											      (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
														    (GHCziPrim.ZLzmzgZR
														     (GHCziPrim.Statezh
														      s)
														     (GHCziPrim.Z2H
														      (GHCziPrim.Statezh
														       s)
														      a1))
														    (GHCziPrim.ZLzmzgZR
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       b))
														     (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       b))))
											      (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR
														  a1
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a1)))
											      (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
														  (GHCziBase.ZMZN
														   GHCziBase.Char)
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    a1))) ->
												tpl1}
										    %in zgzgze
											@ (GHCziArr.STArray
											   s
											   GHCziBase.Int
											   (Fibheaps.MyMaybe
											    (Fibheaps.Tree
											     a)))
											@ (Fibheaps.FibHeap
											   a)
											(%case (DataziArrayziBase.zdfMArraySTArray
												@ s
												@ (Fibheaps.MyMaybe
												   (Fibheaps.Tree
												    a)))
											 %of (tpl::DataziArrayziBase.ZCTMArray
												   (GHCziArr.STArray
												    s)
												   (Fibheaps.MyMaybe
												    (Fibheaps.Tree
												     a))
												   (GHCziST.ST
												    s))
											   {DataziArrayziBase.ZCDMArray
											    (tpl1::%forall i e . GHCziPrim.ZLzmzgZR
														 (GHCziArr.ZCTIx
														  i)
														 (GHCziPrim.ZLzmzgZR
														  (GHCziArr.STArray
														   s
														   i
														   e)
														  (DataziTuple.Z2T
														   i
														   i)))
											    (tpl2::GHCziBase.ZCTMonad
												   (GHCziST.ST
												    s))
											    (tpl3::%forall i . GHCziPrim.ZLzmzgZR
													       (GHCziArr.ZCTIx
														i)
													       (GHCziPrim.ZLzmzgZR
														(DataziTuple.Z2T
														 i
														 i)
														(GHCziPrim.ZLzmzgZR
														 (Fibheaps.MyMaybe
														  (Fibheaps.Tree
														   a))
														 (GHCziPrim.ZLzmzgZR
														  (GHCziPrim.Statezh
														   s)
														  (GHCziPrim.Z2H
														   (GHCziPrim.Statezh
														    s)
														   (GHCziArr.STArray
														    s
														    i
														    (Fibheaps.MyMaybe
														     (Fibheaps.Tree
														      a))))))))
											    (tpl4::%forall i . GHCziPrim.ZLzmzgZR
													       (GHCziArr.ZCTIx
														i)
													       (GHCziPrim.ZLzmzgZR
														(DataziTuple.Z2T
														 i
														 i)
														(GHCziPrim.ZLzmzgZR
														 (GHCziPrim.Statezh
														  s)
														 (GHCziPrim.Z2H
														  (GHCziPrim.Statezh
														   s)
														  (GHCziArr.STArray
														   s
														   i
														   (Fibheaps.MyMaybe
														    (Fibheaps.Tree
														     a)))))))
											    (tpl5::%forall i . GHCziPrim.ZLzmzgZR
													       (GHCziArr.ZCTIx
														i)
													       (GHCziPrim.ZLzmzgZR
														(GHCziArr.STArray
														 s
														 i
														 (Fibheaps.MyMaybe
														  (Fibheaps.Tree
														   a)))
														(GHCziPrim.ZLzmzgZR
														 GHCziBase.Int
														 (GHCziPrim.ZLzmzgZR
														  (GHCziPrim.Statezh
														   s)
														  (GHCziPrim.Z2H
														   (GHCziPrim.Statezh
														    s)
														   (Fibheaps.MyMaybe
														    (Fibheaps.Tree
														     a)))))))
											    (tpl6::%forall i . GHCziPrim.ZLzmzgZR
													       (GHCziArr.ZCTIx
														i)
													       (GHCziPrim.ZLzmzgZR
														(GHCziArr.STArray
														 s
														 i
														 (Fibheaps.MyMaybe
														  (Fibheaps.Tree
														   a)))
														(GHCziPrim.ZLzmzgZR
														 GHCziBase.Int
														 (GHCziPrim.ZLzmzgZR
														  (Fibheaps.MyMaybe
														   (Fibheaps.Tree
														    a))
														  (GHCziPrim.ZLzmzgZR
														   (GHCziPrim.Statezh
														    s)
														   (GHCziPrim.Z2H
														    (GHCziPrim.Statezh
														     s)
														    GHCziBase.Z0T)))))) ->
											      tpl3
											      @ GHCziBase.Int
											      GHCziArr.zdfIxInt
											      (DataziTuple.zdwZ2T
											       @ GHCziBase.Int
											       @ GHCziBase.Int
											       lit4
											       d)
											      (Fibheaps.zdwZZero
											       @ (Fibheaps.Tree
												  a))})
											(\ (a1::GHCziArr.STArray
												s
												GHCziBase.Int
												(Fibheaps.MyMaybe
												 (Fibheaps.Tree
												  a))) ->
											     zgzgze
											     @ (DataziTuple.Z2T
												(DataziTuple.Z2T
												 GHCziBase.Int
												 (Fibheaps.Tree
												  a))
												(Fibheaps.Bag
												 (DataziTuple.Z2T
												  GHCziBase.Int
												  (Fibheaps.Tree
												   a))))
											     @ (Fibheaps.FibHeap
												a)
											     (zgzg
											      @ GHCziBase.Z0T
											      @ (DataziTuple.Z2T
												 (DataziTuple.Z2T
												  GHCziBase.Int
												  (Fibheaps.Tree
												   a))
												 (Fibheaps.Bag
												  (DataziTuple.Z2T
												   GHCziBase.Int
												   (Fibheaps.Tree
												    a))))
											      (zgzg
											       @ GHCziBase.Z0T
											       @ GHCziBase.Z0T
											       (Fibheaps.applyToAll
												@ (DataziTuple.Z2T
												   GHCziBase.Int
												   (Fibheaps.Tree
												    a))
												@ s
												(ins
												 a1)
												f)
											       (sequencezu1
												(Fibheaps.mapList
												 @ (DataziTuple.Z2T
												    GHCziBase.Int
												    (Fibheaps.Tree
												     a))
												 @ (GHCziPrim.ZLzmzgZR
												    (GHCziPrim.Statezh
												     s)
												    (GHCziPrim.Z2H
												     (GHCziPrim.Statezh
												      s)
												     GHCziBase.Z0T))
												 (ins
												  a1)
												 (getChildren1
												  tt))))
											      (%case (DataziArrayziBase.zdfMArraySTArray
												      @ s
												      @ (Fibheaps.MyMaybe
													 (Fibheaps.Tree
													  a)))
											       %of (tpl::DataziArrayziBase.ZCTMArray
													 (GHCziArr.STArray
													  s)
													 (Fibheaps.MyMaybe
													  (Fibheaps.Tree
													   a))
													 (GHCziST.ST
													  s))
												 {DataziArrayziBase.ZCDMArray
												  (tpl1::%forall i e . GHCziPrim.ZLzmzgZR
														       (GHCziArr.ZCTIx
															i)
														       (GHCziPrim.ZLzmzgZR
															(GHCziArr.STArray
															 s
															 i
															 e)
															(DataziTuple.Z2T
															 i
															 i)))
												  (tpl2::GHCziBase.ZCTMonad
													 (GHCziST.ST
													  s))
												  (tpl3::%forall i . GHCziPrim.ZLzmzgZR
														     (GHCziArr.ZCTIx
														      i)
														     (GHCziPrim.ZLzmzgZR
														      (DataziTuple.Z2T
														       i
														       i)
														      (GHCziPrim.ZLzmzgZR
														       (Fibheaps.MyMaybe
															(Fibheaps.Tree
															 a))
														       (GHCziPrim.ZLzmzgZR
															(GHCziPrim.Statezh
															 s)
															(GHCziPrim.Z2H
															 (GHCziPrim.Statezh
															  s)
															 (GHCziArr.STArray
															  s
															  i
															  (Fibheaps.MyMaybe
															   (Fibheaps.Tree
															    a))))))))
												  (tpl4::%forall i . GHCziPrim.ZLzmzgZR
														     (GHCziArr.ZCTIx
														      i)
														     (GHCziPrim.ZLzmzgZR
														      (DataziTuple.Z2T
														       i
														       i)
														      (GHCziPrim.ZLzmzgZR
														       (GHCziPrim.Statezh
															s)
														       (GHCziPrim.Z2H
															(GHCziPrim.Statezh
															 s)
															(GHCziArr.STArray
															 s
															 i
															 (Fibheaps.MyMaybe
															  (Fibheaps.Tree
															   a)))))))
												  (tpl5::%forall i . GHCziPrim.ZLzmzgZR
														     (GHCziArr.ZCTIx
														      i)
														     (GHCziPrim.ZLzmzgZR
														      (GHCziArr.STArray
														       s
														       i
														       (Fibheaps.MyMaybe
															(Fibheaps.Tree
															 a)))
														      (GHCziPrim.ZLzmzgZR
														       GHCziBase.Int
														       (GHCziPrim.ZLzmzgZR
															(GHCziPrim.Statezh
															 s)
															(GHCziPrim.Z2H
															 (GHCziPrim.Statezh
															  s)
															 (Fibheaps.MyMaybe
															  (Fibheaps.Tree
															   a)))))))
												  (tpl6::%forall i . GHCziPrim.ZLzmzgZR
														     (GHCziArr.ZCTIx
														      i)
														     (GHCziPrim.ZLzmzgZR
														      (GHCziArr.STArray
														       s
														       i
														       (Fibheaps.MyMaybe
															(Fibheaps.Tree
															 a)))
														      (GHCziPrim.ZLzmzgZR
														       GHCziBase.Int
														       (GHCziPrim.ZLzmzgZR
															(Fibheaps.MyMaybe
															 (Fibheaps.Tree
															  a))
															(GHCziPrim.ZLzmzgZR
															 (GHCziPrim.Statezh
															  s)
															 (GHCziPrim.Z2H
															  (GHCziPrim.Statezh
															   s)
															  GHCziBase.Z0T)))))) ->
												    %case tpl2
												    %of (tpl7::GHCziBase.ZCTMonad
													       (GHCziST.ST
														s))
												      {GHCziBase.ZCDMonad
												       (tpl8::%forall a2 b . GHCziPrim.ZLzmzgZR
															     (GHCziPrim.ZLzmzgZR
															      (GHCziPrim.Statezh
															       s)
															      (GHCziPrim.Z2H
															       (GHCziPrim.Statezh
																s)
															       a2))
															     (GHCziPrim.ZLzmzgZR
															      (GHCziPrim.ZLzmzgZR
															       a2
															       (GHCziPrim.ZLzmzgZR
																(GHCziPrim.Statezh
																 s)
																(GHCziPrim.Z2H
																 (GHCziPrim.Statezh
																  s)
																 b)))
															      (GHCziPrim.ZLzmzgZR
															       (GHCziPrim.Statezh
																s)
															       (GHCziPrim.Z2H
																(GHCziPrim.Statezh
																 s)
																b))))
												       (tpl9::%forall a2 b . GHCziPrim.ZLzmzgZR
															     (GHCziPrim.ZLzmzgZR
															      (GHCziPrim.Statezh
															       s)
															      (GHCziPrim.Z2H
															       (GHCziPrim.Statezh
																s)
															       a2))
															     (GHCziPrim.ZLzmzgZR
															      (GHCziPrim.ZLzmzgZR
															       (GHCziPrim.Statezh
																s)
															       (GHCziPrim.Z2H
																(GHCziPrim.Statezh
																 s)
																b))
															      (GHCziPrim.ZLzmzgZR
															       (GHCziPrim.Statezh
																s)
															       (GHCziPrim.Z2H
																(GHCziPrim.Statezh
																 s)
																b))))
												       (tpl10::%forall a2 . GHCziPrim.ZLzmzgZR
															    a2
															    (GHCziPrim.ZLzmzgZR
															     (GHCziPrim.Statezh
															      s)
															     (GHCziPrim.Z2H
															      (GHCziPrim.Statezh
															       s)
															      a2)))
												       (tpl11::%forall a2 . GHCziPrim.ZLzmzgZR
															    (GHCziBase.ZMZN
															     GHCziBase.Char)
															    (GHCziPrim.ZLzmzgZR
															     (GHCziPrim.Statezh
															      s)
															     (GHCziPrim.Z2H
															      (GHCziPrim.Statezh
															       s)
															      a2))) ->
													 tpl8
													 @ (Fibheaps.MyMaybe
													    (Fibheaps.Tree
													     a))
													 @ (DataziTuple.Z2T
													    (DataziTuple.Z2T
													     GHCziBase.Int
													     (Fibheaps.Tree
													      a))
													    (Fibheaps.Bag
													     (DataziTuple.Z2T
													      GHCziBase.Int
													      (Fibheaps.Tree
													       a))))
													 (readArray1
													  a1
													  d)
													 (\ (e::Fibheaps.MyMaybe
														(Fibheaps.Tree
														 a)) ->
													      %case e
													      %of (wild2::Fibheaps.MyMaybe
															  (Fibheaps.Tree
															   a))
														{Fibheaps.One
														 (t::Fibheaps.Tree
														     a) ->
														   getMinzq
														   a1
														   d
														   t
														   (Fibheaps.zdwEmptyBag
														    @ (DataziTuple.Z2T
														       GHCziBase.Int
														       (Fibheaps.Tree
															a)))
														   lit4;
														 Fibheaps.ZZero
														 ->
														   GHCziErr.error
														   @ (GHCziPrim.ZLzmzgZR
														      (GHCziPrim.Statezh
														       s)
														      (GHCziPrim.Z2H
														       (GHCziPrim.Statezh
															s)
														       (DataziTuple.Z2T
															(DataziTuple.Z2T
															 GHCziBase.Int
															 (Fibheaps.Tree
															  a))
															(Fibheaps.Bag
															 (DataziTuple.Z2T
															  GHCziBase.Int
															  (Fibheaps.Tree
															   a))))))
														   (GHCziBase.unpackCStringzh
														    ("must be One"::GHCziPrim.Addrzh))})}}))
											     (\ (ds4::DataziTuple.Z2T
												      (DataziTuple.Z2T
												       GHCziBase.Int
												       (Fibheaps.Tree
													a))
												      (Fibheaps.Bag
												       (DataziTuple.Z2T
													GHCziBase.Int
													(Fibheaps.Tree
													 a)))) ->
												  %case ds4
												  %of (wild2::DataziTuple.Z2T
													      (DataziTuple.Z2T
													       GHCziBase.Int
													       (Fibheaps.Tree
														a))
													      (Fibheaps.Bag
													       (DataziTuple.Z2T
														GHCziBase.Int
														(Fibheaps.Tree
														 a))))
												    {DataziTuple.Z2T
												     (tt1::DataziTuple.Z2T
													   GHCziBase.Int
													   (Fibheaps.Tree
													    a))
												     (f1::Fibheaps.Bag
													  (DataziTuple.Z2T
													   GHCziBase.Int
													   (Fibheaps.Tree
													    a))) ->
												       %case zddMonad2
												       %of (tpl::GHCziBase.ZCTMonad
														 (GHCziST.ST
														  s))
													 {GHCziBase.ZCDMonad
													  (tpl1::%forall a2 b . GHCziPrim.ZLzmzgZR
																(GHCziPrim.ZLzmzgZR
																 (GHCziPrim.Statezh
																  s)
																 (GHCziPrim.Z2H
																  (GHCziPrim.Statezh
																   s)
																  a2))
																(GHCziPrim.ZLzmzgZR
																 (GHCziPrim.ZLzmzgZR
																  a2
																  (GHCziPrim.ZLzmzgZR
																   (GHCziPrim.Statezh
																    s)
																   (GHCziPrim.Z2H
																    (GHCziPrim.Statezh
																     s)
																    b)))
																 (GHCziPrim.ZLzmzgZR
																  (GHCziPrim.Statezh
																   s)
																  (GHCziPrim.Z2H
																   (GHCziPrim.Statezh
																    s)
																   b))))
													  (tpl2::%forall a2 b . GHCziPrim.ZLzmzgZR
																(GHCziPrim.ZLzmzgZR
																 (GHCziPrim.Statezh
																  s)
																 (GHCziPrim.Z2H
																  (GHCziPrim.Statezh
																   s)
																  a2))
																(GHCziPrim.ZLzmzgZR
																 (GHCziPrim.ZLzmzgZR
																  (GHCziPrim.Statezh
																   s)
																  (GHCziPrim.Z2H
																   (GHCziPrim.Statezh
																    s)
																   b))
																 (GHCziPrim.ZLzmzgZR
																  (GHCziPrim.Statezh
																   s)
																  (GHCziPrim.Z2H
																   (GHCziPrim.Statezh
																    s)
																   b))))
													  (tpl3::%forall a2 . GHCziPrim.ZLzmzgZR
															      a2
															      (GHCziPrim.ZLzmzgZR
															       (GHCziPrim.Statezh
																s)
															       (GHCziPrim.Z2H
																(GHCziPrim.Statezh
																 s)
																a2)))
													  (tpl4::%forall a2 . GHCziPrim.ZLzmzgZR
															      (GHCziBase.ZMZN
															       GHCziBase.Char)
															      (GHCziPrim.ZLzmzgZR
															       (GHCziPrim.Statezh
																s)
															       (GHCziPrim.Z2H
																(GHCziPrim.Statezh
																 s)
																a2))) ->
													    tpl3
													    @ (Fibheaps.FibHeap
													       a)
													    (Fibheaps.zdwFH
													     @ a
													     (zm
													      wild1
													      lit5)
													     tt1
													     f1)}})));
			     (1::GHCziPrim.Intzh) ->
			       Fibheaps.zdwEmptyFH @ a}};
		   Fibheaps.EmptyFH ->
		     GHCziErr.error @ (Fibheaps.FibHeap a)
		     (GHCziBase.unpackCStringzh
		      ("deleteMinFH EmptyFH"::GHCziPrim.Addrzh))};
  Fibheaps.fibToList :: %forall a . GHCziPrim.ZLzmzgZR
				    (GHCziBase.ZCTOrd a)
				    (GHCziPrim.ZLzmzgZR (Fibheaps.FibHeap a) (GHCziBase.ZMZN a)) =
    \ @ a (zddOrd1::GHCziBase.ZCTOrd a) ->
	%let deleteMinFH1 :: GHCziPrim.ZLzmzgZR
			     (Fibheaps.FibHeap a)
			     (Fibheaps.FibHeap a) =
	       Fibheaps.deleteMinFH @ a zddOrd1
	%in %let %rec
		 {fibToList1 :: GHCziPrim.ZLzmzgZR
				(Fibheaps.FibHeap a)
				(GHCziBase.ZMZN a) =
		    \ (xs::Fibheaps.FibHeap a) ->
			%case (Fibheaps.isEmptyFH @ a xs) %of (wild::GHCziBase.Bool)
			  {GHCziBase.True ->
			     GHCziBase.zdwZMZN @ a;
			   GHCziBase.False ->
			     GHCziBase.zdwZC @ a (Fibheaps.minFH @ a xs)
			     (fibToList1 (deleteMinFH1 xs))}}
	    %in fibToList1;
  Fibheaps.fibSort :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZCTOrd a)
				  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) (GHCziBase.ZMZN a)) =
    \ @ a (zddOrd1::GHCziBase.ZCTOrd a) ->
	GHCziBase.zi @ (Fibheaps.FibHeap a) @ (GHCziBase.ZMZN a)
	@ (GHCziBase.ZMZN a) (Fibheaps.fibToList @ a zddOrd1)
	(Fibheaps.makeFH @ a zddOrd1);
  fibSort1 :: GHCziPrim.ZLzmzgZR
	      (GHCziBase.ZMZN GHCziBase.Int)
	      (GHCziBase.ZMZN GHCziBase.Int) =
    Fibheaps.fibSort @ GHCziBase.Int zddOrd;
  %rec
  {Fibheaps.znzn :: %forall a . GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN a)
				(GHCziPrim.ZLzmzgZR GHCziBase.Int a) =
     \ @ a (xs::GHCziBase.ZMZN a) (n::GHCziBase.Int) ->
	 %case zddOrd %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 lit4) %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)
			       {%_ ->
				  Fibheaps.znzn @ a ds (zm wild2 lit5);
				(0::GHCziPrim.Intzh) ->
				  x}};
		      GHCziBase.ZMZN ->
			GHCziErr.error @ a
			(GHCziBase.unpackCStringzh
			 ("Prelude.!!: index too large"::GHCziPrim.Addrzh))}}}};
  zlze :: GHCziPrim.ZLzmzgZR
	  GHCziBase.Int
	  (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool) =
    %case zddOrd %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};
  %rec
  {Fibheaps.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 lit4) %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 (Fibheaps.take @ a (zm n lit5) xs);
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ a}}};
  Fibheaps.replicate :: %forall a . GHCziPrim.ZLzmzgZR
				    GHCziBase.Int
				    (GHCziPrim.ZLzmzgZR a (GHCziBase.ZMZN a)) =
    \ @ a (n::GHCziBase.Int) (x::a) ->
	Fibheaps.take @ a n
	(GHCziBase.build @ a
	 (\ @ b
	    (c::GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR b b))
	    (zun::b) ->
	      Fibheaps.repeatFB @ b @ a c x));
  %rec
  {Fibheaps.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 lit4) %of (wild::GHCziBase.Bool)
	   {GHCziBase.True ->
	      xs;
	    GHCziBase.False ->
	      %case xs %of (wild1::GHCziBase.ZMZN a)
		{GHCziBase.ZC (ds::a) (xs1::GHCziBase.ZMZN a) ->
		   Fibheaps.drop @ a (zm n lit5) xs1;
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ a}}};
  Fibheaps.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)
	(Fibheaps.take @ a n xs) (Fibheaps.drop @ a n xs);
  fibSortzq1 :: GHCziPrim.ZLzmzgZR
		(GHCziBase.ZMZN GHCziBase.Int)
		(GHCziBase.ZMZN GHCziBase.Int) =
    Fibheaps.fibSortzq @ GHCziBase.Int zddOrd;
  read :: GHCziPrim.ZLzmzgZR
	  (GHCziBase.ZMZN GHCziBase.Char)
	  GHCziBase.Int =
    GHCziRead.read @ GHCziBase.Int GHCziRead.zdfReadInt;
  a :: GHCziBase.Char = GHCziBase.zdwCzh ('\x0a'::GHCziPrim.Charzh);
  ds :: GHCziBase.ZMZN GHCziBase.Char =
    GHCziBase.zdwZC @ GHCziBase.Char a
    (GHCziBase.zdwZMZN @ GHCziBase.Char);
  Fibheaps.unlines :: GHCziPrim.ZLzmzgZR
		      (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char))
		      (GHCziBase.ZMZN GHCziBase.Char) =
    Fibheaps.concatMap @ (GHCziBase.ZMZN GHCziBase.Char)
    @ GHCziBase.Char
    (\ (ds1::GHCziBase.ZMZN GHCziBase.Char) ->
	 Fibheaps.append @ GHCziBase.Char ds1 ds);
  Fibheaps.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}};
  Fibheaps.modInt :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Int
		     (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (Fibheaps.modIntzh x y)}};
  Fibheaps.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}};
  Fibheaps.divInt :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Int
		     (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (Fibheaps.divIntzh x y)}};
  Fibheaps.gcdInt :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Int
		     (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (a1::GHCziPrim.Intzh) ->
	     %case ds2 %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 a1) %of (absA::GHCziPrim.Intzh)
			{%_ ->
			   %case (absInt b) %of (absB::GHCziPrim.Intzh)
			     {%_ ->
				%case a1 %of (ds3::GHCziPrim.Intzh)
				  {%_ ->
				     %case b %of (ds4::GHCziPrim.Intzh)
				       {%_ ->
					  GHCziBase.zdwIzh (GHCziPrim.gcdIntzh absA absB);
					(0::GHCziPrim.Intzh) ->
					  GHCziBase.zdwIzh absA};
				   (0::GHCziPrim.Intzh) ->
				     %case b %of (ds4::GHCziPrim.Intzh)
				       {%_ ->
					  GHCziBase.zdwIzh absB;
					(0::GHCziPrim.Intzh) ->
					  GHCziErr.error @ GHCziBase.Int
					  (GHCziBase.unpackCStringzh
					   ("PrelBase.gcdInt: gcd 0 0 is undefined"::GHCziPrim.Addrzh))}}}}}};
  Fibheaps.minInt :: GHCziBase.Int =
    %case zddNum %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 lit3};
  Fibheaps.twoInt :: GHCziBase.Int =
    GHCziBase.zdwIzh (2::GHCziPrim.Intzh);
  Fibheaps.oneInt :: GHCziBase.Int =
    GHCziBase.zdwIzh (1::GHCziPrim.Intzh);
  Fibheaps.zzeroInt :: GHCziBase.Int =
    GHCziBase.zdwIzh (0::GHCziPrim.Intzh);
  Fibheaps.remInt :: GHCziPrim.ZLzmzgZR
		     GHCziBase.Int
		     (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.remIntzh x y)}};
  Fibheaps.quotInt :: GHCziPrim.ZLzmzgZR
		      GHCziBase.Int
		      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.quotIntzh x y)}};
  Fibheaps.timesInt :: GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.ztzh x y)}};
  Fibheaps.minusInt :: GHCziPrim.ZLzmzgZR
		       GHCziBase.Int
		       (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.zmzh x y)}};
  Fibheaps.plusInt :: GHCziPrim.ZLzmzgZR
		      GHCziBase.Int
		      (GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int) =
    \ (ds1::GHCziBase.Int) (ds2::GHCziBase.Int) ->
	%case ds1 %of (wild::GHCziBase.Int)
	  {GHCziBase.Izh (x::GHCziPrim.Intzh) ->
	     %case ds2 %of (wild1::GHCziBase.Int)
	       {GHCziBase.Izh (y::GHCziPrim.Intzh) ->
		  GHCziBase.zdwIzh (GHCziPrim.zpzh x y)}};
  Fibheaps.prelzulistzustr :: GHCziBase.ZMZN GHCziBase.Char =
    GHCziBase.unpackCStringzh ("Prelude."::GHCziPrim.Addrzh);
  Fibheaps.errorEmptyList :: %forall a . GHCziPrim.ZLzmzgZR
					 (GHCziBase.ZMZN GHCziBase.Char)
					 a =
    \ @ a1 (fun::GHCziBase.ZMZN GHCziBase.Char) ->
	GHCziErr.error @ a1
	(Fibheaps.append @ GHCziBase.Char
	 (Fibheaps.append @ GHCziBase.Char Fibheaps.prelzulistzustr fun)
	 (GHCziBase.unpackCStringzh (": empty list"::GHCziPrim.Addrzh)));
  %rec
  {Fibheaps.foldr1 :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
				  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
     \ @ a1
       (ds1::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
       (ds2::GHCziBase.ZMZN a1) ->
	 %case ds2 %of (wild::GHCziBase.ZMZN a1)
	   {GHCziBase.ZC (x::a1) (ds3::GHCziBase.ZMZN a1) ->
	      %case ds3 %of (wild1::GHCziBase.ZMZN a1)
		{GHCziBase.ZC (a2::a1) (a3::GHCziBase.ZMZN a1) ->
		   ds1 x (Fibheaps.foldr1 @ a1 ds1 wild1);
		 GHCziBase.ZMZN ->
		   x};
	    GHCziBase.ZMZN ->
	      Fibheaps.errorEmptyList @ a1
	      (GHCziBase.unpackCStringzh ("foldr1"::GHCziPrim.Addrzh))}};
  Fibheaps.foldl1 :: %forall a . GHCziPrim.ZLzmzgZR
				 (GHCziPrim.ZLzmzgZR a (GHCziPrim.ZLzmzgZR a a))
				 (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
    \ @ a1
      (f::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
      (ds1::GHCziBase.ZMZN a1) ->
	%case ds1 %of (wild::GHCziBase.ZMZN a1)
	  {GHCziBase.ZC (x::a1) (xs::GHCziBase.ZMZN a1) ->
	     Fibheaps.foldl @ a1 @ a1 f x xs;
	   GHCziBase.ZMZN ->
	     Fibheaps.errorEmptyList @ a1
	     (GHCziBase.unpackCStringzh ("foldl1"::GHCziPrim.Addrzh))};
  Fibheaps.minimum :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZCTOrd a)
				  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
    \ @ a1 (zddOrd1::GHCziBase.ZCTOrd a1) (eta::GHCziBase.ZMZN a1) ->
	%case eta %of (wild::GHCziBase.ZMZN a1)
	  {GHCziBase.ZC (a2::a1) (a3::GHCziBase.ZMZN a1) ->
	     Fibheaps.foldl1 @ a1
	     (%case zddOrd1 %of (tpl::GHCziBase.ZCTOrd a1)
		{GHCziBase.ZCDOrd
		 (tpl1::GHCziBase.ZCTEq a1)
		 (tpl2::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Ordering))
		 (tpl3::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl4::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl5::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl6::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl7::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		 (tpl8::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1)) ->
		   tpl7})
	     wild;
	   GHCziBase.ZMZN ->
	     Fibheaps.errorEmptyList @ a1
	     (GHCziBase.unpackCStringzh ("minimum"::GHCziPrim.Addrzh))};
  Fibheaps.minimum1 :: GHCziPrim.ZLzmzgZR
		       (GHCziBase.ZMZN GHCziBase.Int)
		       GHCziBase.Int =
    %note "InlineMe"
    Fibheaps.minimum @ GHCziBase.Int zddOrd;
  Fibheaps.maximum :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZCTOrd a)
				  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) a) =
    \ @ a1 (zddOrd1::GHCziBase.ZCTOrd a1) (eta::GHCziBase.ZMZN a1) ->
	%case eta %of (wild::GHCziBase.ZMZN a1)
	  {GHCziBase.ZC (a2::a1) (a3::GHCziBase.ZMZN a1) ->
	     Fibheaps.foldl1 @ a1
	     (%case zddOrd1 %of (tpl::GHCziBase.ZCTOrd a1)
		{GHCziBase.ZCDOrd
		 (tpl1::GHCziBase.ZCTEq a1)
		 (tpl2::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Ordering))
		 (tpl3::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl4::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl5::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl6::GHCziPrim.ZLzmzgZR
			a1
			(GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		 (tpl7::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1))
		 (tpl8::GHCziPrim.ZLzmzgZR a1 (GHCziPrim.ZLzmzgZR a1 a1)) ->
		   tpl8})
	     wild;
	   GHCziBase.ZMZN ->
	     Fibheaps.errorEmptyList @ a1
	     (GHCziBase.unpackCStringzh ("maximum"::GHCziPrim.Addrzh))};
  Fibheaps.maximum1 :: GHCziPrim.ZLzmzgZR
		       (GHCziBase.ZMZN GHCziBase.Int)
		       GHCziBase.Int =
    %note "InlineMe"
    Fibheaps.maximum @ GHCziBase.Int zddOrd;
  %rec
  {Fibheaps.init :: %forall a . GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN a)
				(GHCziBase.ZMZN a) =
     \ @ a1 (ds1::GHCziBase.ZMZN a1) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN a1)
	   {GHCziBase.ZC (x::a1) (ds2::GHCziBase.ZMZN a1) ->
	      %case ds2 %of (wild1::GHCziBase.ZMZN a1)
		{GHCziBase.ZC (a2::a1) (a3::GHCziBase.ZMZN a1) ->
		   GHCziBase.zdwZC @ a1 x (Fibheaps.init @ a1 wild1);
		 GHCziBase.ZMZN ->
		   GHCziBase.zdwZMZN @ a1};
	    GHCziBase.ZMZN ->
	      Fibheaps.errorEmptyList @ (GHCziBase.ZMZN a1)
	      (GHCziBase.unpackCStringzh ("init"::GHCziPrim.Addrzh))}};
  %rec
  {Fibheaps.last :: %forall a . GHCziPrim.ZLzmzgZR
				(GHCziBase.ZMZN a)
				a =
     \ @ a1 (ds1::GHCziBase.ZMZN a1) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN a1)
	   {GHCziBase.ZC (x::a1) (ds2::GHCziBase.ZMZN a1) ->
	      %case ds2 %of (wild1::GHCziBase.ZMZN a1)
		{GHCziBase.ZC (a2::a1) (a3::GHCziBase.ZMZN a1) ->
		   Fibheaps.last @ a1 wild1;
		 GHCziBase.ZMZN ->
		   x};
	    GHCziBase.ZMZN ->
	      Fibheaps.errorEmptyList @ a1
	      (GHCziBase.unpackCStringzh ("last"::GHCziPrim.Addrzh))}};
  Fibheaps.tail :: %forall a . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN a)
			       (GHCziBase.ZMZN a) =
    \ @ a1 (ds1::GHCziBase.ZMZN a1) ->
	%case ds1 %of (wild::GHCziBase.ZMZN a1)
	  {GHCziBase.ZC (ds2::a1) (xs::GHCziBase.ZMZN a1) ->
	     xs;
	   GHCziBase.ZMZN ->
	     Fibheaps.errorEmptyList @ (GHCziBase.ZMZN a1)
	     (GHCziBase.unpackCStringzh ("tail"::GHCziPrim.Addrzh))};
  Fibheaps.badHead :: %forall a . a =
    \ @ a1 ->
	Fibheaps.errorEmptyList @ a1
	(GHCziBase.unpackCStringzh ("head"::GHCziPrim.Addrzh));
  Fibheaps.head :: %forall a . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZMZN a)
			       a =
    \ @ a1 (ds1::GHCziBase.ZMZN a1) ->
	%case ds1 %of (wild::GHCziBase.ZMZN a1)
	  {GHCziBase.ZC (x::a1) (ds2::GHCziBase.ZMZN a1) ->
	     x;
	   GHCziBase.ZMZN ->
	     Fibheaps.badHead @ a1};
  Fibheaps.or :: GHCziPrim.ZLzmzgZR
		 (GHCziBase.ZMZN GHCziBase.Bool)
		 GHCziBase.Bool =
    GHCziBase.foldr @ GHCziBase.Bool @ GHCziBase.Bool GHCziBase.zbzb
    GHCziBase.zdwFalse;
  Fibheaps.any :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool) =
    \ @ a1 (p::GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool) ->
	GHCziBase.zi @ (GHCziBase.ZMZN GHCziBase.Bool) @ GHCziBase.Bool
	@ (GHCziBase.ZMZN a1) Fibheaps.or
	(Fibheaps.mapList @ a1 @ GHCziBase.Bool p);
  Fibheaps.elem :: %forall a . GHCziPrim.ZLzmzgZR
			       (GHCziBase.ZCTEq a)
			       (GHCziPrim.ZLzmzgZR
				a
				(GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool)) =
    \ @ a1 (zddEq2::GHCziBase.ZCTEq a1) (eta::a1) ->
	Fibheaps.any @ a1
	(\ (ds1::a1) ->
	     %case zddEq2 %of (tpl::GHCziBase.ZCTEq a1)
	       {GHCziBase.ZCDEq
		(tpl1::GHCziPrim.ZLzmzgZR
		       a1
		       (GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		(tpl2::GHCziPrim.ZLzmzgZR
		       a1
		       (GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool)) ->
		  tpl2 ds1 eta});
  Fibheaps.and :: GHCziPrim.ZLzmzgZR
		  (GHCziBase.ZMZN GHCziBase.Bool)
		  GHCziBase.Bool =
    GHCziBase.foldr @ GHCziBase.Bool @ GHCziBase.Bool GHCziBase.zaza
    GHCziBase.zdwTrue;
  Fibheaps.all :: %forall a . GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR a GHCziBase.Bool)
			      (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool) =
    \ @ a1 (p::GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool) ->
	GHCziBase.zi @ (GHCziBase.ZMZN GHCziBase.Bool) @ GHCziBase.Bool
	@ (GHCziBase.ZMZN a1) Fibheaps.and
	(Fibheaps.mapList @ a1 @ GHCziBase.Bool p);
  Fibheaps.notElem :: %forall a . GHCziPrim.ZLzmzgZR
				  (GHCziBase.ZCTEq a)
				  (GHCziPrim.ZLzmzgZR
				   a
				   (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN a) GHCziBase.Bool)) =
    \ @ a1 (zddEq2::GHCziBase.ZCTEq a1) (eta::a1) ->
	Fibheaps.all @ a1
	(\ (ds1::a1) ->
	     %case zddEq2 %of (tpl::GHCziBase.ZCTEq a1)
	       {GHCziBase.ZCDEq
		(tpl1::GHCziPrim.ZLzmzgZR
		       a1
		       (GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool))
		(tpl2::GHCziPrim.ZLzmzgZR
		       a1
		       (GHCziPrim.ZLzmzgZR a1 GHCziBase.Bool)) ->
		  tpl1 ds1 eta});
  %rec
  {Fibheaps.lines :: GHCziPrim.ZLzmzgZR
		     (GHCziBase.ZMZN GHCziBase.Char)
		     (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) =
     \ (ds1::GHCziBase.ZMZN GHCziBase.Char) ->
	 %case ds1 %of (wild::GHCziBase.ZMZN GHCziBase.Char)
	   {GHCziBase.ZC
	    (a1::GHCziBase.Char) (a2::GHCziBase.ZMZN GHCziBase.Char) ->
	      %let ds2 :: DataziTuple.Z2T
			  (GHCziBase.ZMZN GHCziBase.Char)
			  (GHCziBase.ZMZN GHCziBase.Char) =
		     %let ds3 :: GHCziBase.Char =
			    GHCziBase.zdwCzh ('\x0a'::GHCziPrim.Charzh)
		     %in Fibheaps.break @ GHCziBase.Char
			 (\ (ds4::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 ds4 ds3})
			 wild
	      %in GHCziBase.zdwZC @ (GHCziBase.ZMZN GHCziBase.Char)
		  (%case ds2
		   %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 ds2
		   %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
			   (ds3::GHCziBase.Char) (szqzq::GHCziBase.ZMZN GHCziBase.Char) ->
			     Fibheaps.lines szqzq;
			   GHCziBase.ZMZN ->
			     GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziBase.Char)}});
	    GHCziBase.ZMZN ->
	      GHCziBase.zdwZMZN @ (GHCziBase.ZMZN GHCziBase.Char)}};
  Fibheaps.randoms :: GHCziPrim.ZLzmzgZR
		      GHCziBase.Int
		      (GHCziBase.ZMZN GHCziBase.Int) =
    \ (n::GHCziBase.Int) ->
	Fibheaps.take @ GHCziBase.Int n
	(Fibheaps.iterateList @ GHCziBase.Int
	 (\ (seed::GHCziBase.Int) ->
	      %case GHCziReal.zdfIntegralInt
	      %of (tpl::GHCziReal.ZCTIntegral GHCziBase.Int)
		{GHCziReal.ZCDIntegral
		 (tpl1::GHCziReal.ZCTReal GHCziBase.Int)
		 (tpl2::GHCziEnum.ZCTEnum 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
			(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
		 (tpl7::GHCziPrim.ZLzmzgZR
			GHCziBase.Int
			(GHCziPrim.ZLzmzgZR
			 GHCziBase.Int
			 (DataziTuple.Z2T GHCziBase.Int GHCziBase.Int)))
		 (tpl8::GHCziPrim.ZLzmzgZR
			GHCziBase.Int
			(GHCziPrim.ZLzmzgZR
			 GHCziBase.Int
			 (DataziTuple.Z2T GHCziBase.Int GHCziBase.Int)))
		 (tpl9::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziNum.Integer) ->
		   tpl3
		   (zp
		    (%case zddNum %of (tpl10::GHCziNum.ZCTNum GHCziBase.Int)
		       {GHCziNum.ZCDNum
			(tpl11::GHCziBase.ZCTEq GHCziBase.Int)
			(tpl12::GHCziShow.ZCTShow GHCziBase.Int)
			(tpl13::GHCziPrim.ZLzmzgZR
				GHCziBase.Int
				(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
			(tpl14::GHCziPrim.ZLzmzgZR
				GHCziBase.Int
				(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
			(tpl15::GHCziPrim.ZLzmzgZR
				GHCziBase.Int
				(GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int))
			(tpl16::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
			(tpl17::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
			(tpl18::GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Int)
			(tpl19::GHCziPrim.ZLzmzgZR GHCziNum.Integer GHCziBase.Int) ->
			  tpl14 lit seed})
		    lit5)
		   lit1})
	 lit2);
  Fibheaps.test :: GHCziPrim.ZLzmzgZR GHCziBase.Int GHCziBase.Bool =
    \ (n::GHCziBase.Int) ->
	%case zddEq1
	%of (tpl::GHCziBase.ZCTEq (GHCziBase.ZMZN GHCziBase.Int))
	  {GHCziBase.ZCDEq
	   (tpl1::GHCziPrim.ZLzmzgZR
		  (GHCziBase.ZMZN GHCziBase.Int)
		  (GHCziPrim.ZLzmzgZR (GHCziBase.ZMZN GHCziBase.Int) GHCziBase.Bool))
	   (tpl2::GHCziPrim.ZLzmzgZR
		  (GHCziBase.ZMZN GHCziBase.Int)
		  (GHCziPrim.ZLzmzgZR
		   (GHCziBase.ZMZN GHCziBase.Int)
		   GHCziBase.Bool)) ->
	     tpl2 (fibSort1 (Fibheaps.randoms n))
	     (fibSortzq1 (Fibheaps.randoms n))};
  Fibheaps.main :: GHCziPrim.ZLzmzgZR
		   (GHCziPrim.Statezh GHCziPrim.RealWorld)
		   (GHCziPrim.Z2H
		    (GHCziPrim.Statezh GHCziPrim.RealWorld)
		    GHCziBase.Z0T) =
    %case GHCziIOBase.zdfMonadIO
    %of (tpl::GHCziBase.ZCTMonad GHCziIOBase.IO)
      {GHCziBase.ZCDMonad
       (tpl1::%forall a1 b . GHCziPrim.ZLzmzgZR
			     (GHCziPrim.ZLzmzgZR
			      (GHCziPrim.Statezh GHCziPrim.RealWorld)
			      (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) a1))
			     (GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR
			       a1
			       (GHCziPrim.ZLzmzgZR
				(GHCziPrim.Statezh GHCziPrim.RealWorld)
				(GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) b)))
			      (GHCziPrim.ZLzmzgZR
			       (GHCziPrim.Statezh GHCziPrim.RealWorld)
			       (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) b))))
       (tpl2::%forall a1 b . GHCziPrim.ZLzmzgZR
			     (GHCziPrim.ZLzmzgZR
			      (GHCziPrim.Statezh GHCziPrim.RealWorld)
			      (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) a1))
			     (GHCziPrim.ZLzmzgZR
			      (GHCziPrim.ZLzmzgZR
			       (GHCziPrim.Statezh GHCziPrim.RealWorld)
			       (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) b))
			      (GHCziPrim.ZLzmzgZR
			       (GHCziPrim.Statezh GHCziPrim.RealWorld)
			       (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) b))))
       (tpl3::%forall a1 . GHCziPrim.ZLzmzgZR
			   a1
			   (GHCziPrim.ZLzmzgZR
			    (GHCziPrim.Statezh GHCziPrim.RealWorld)
			    (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) a1)))
       (tpl4::%forall a1 . GHCziPrim.ZLzmzgZR
			   (GHCziBase.ZMZN GHCziBase.Char)
			   (GHCziPrim.ZLzmzgZR
			    (GHCziPrim.Statezh GHCziPrim.RealWorld)
			    (GHCziPrim.Z2H (GHCziPrim.Statezh GHCziPrim.RealWorld) a1))) ->
	 tpl1 @ (GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char))
	 @ GHCziBase.Z0T SystemziEnvironment.getArgs
	 (\ (ds1::GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) ->
	      %let fail :: GHCziPrim.ZLzmzgZR
			   (GHCziPrim.Statezh GHCziPrim.RealWorld)
			   (GHCziPrim.Z2H
			    (GHCziPrim.Statezh GHCziPrim.RealWorld)
			    GHCziBase.Z0T) =
		     GHCziErr.patError
		     @ (GHCziPrim.ZLzmzgZR
			(GHCziPrim.Statezh GHCziPrim.RealWorld)
			(GHCziPrim.Z2H
			 (GHCziPrim.Statezh GHCziPrim.RealWorld)
			 GHCziBase.Z0T))
		     ("FibheapswithPrelude.hs:318|lambda"::GHCziPrim.Addrzh)
	      %in %case ds1
		  %of (wild::GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char))
		    {GHCziBase.ZMZN ->
		       fail;
		     GHCziBase.ZC
		     (n::GHCziBase.ZMZN GHCziBase.Char)
		     (ds2::GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) ->
		       %case ds2
		       %of (wild1::GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char))
			 {GHCziBase.ZC
			  (a1::GHCziBase.ZMZN GHCziBase.Char)
			  (a2::GHCziBase.ZMZN (GHCziBase.ZMZN GHCziBase.Char)) ->
			    fail;
			  GHCziBase.ZMZN ->
			    SystemziIO.putStr
			    (%case GHCziShow.zdfShowBool
			     %of (tpl5::GHCziShow.ZCTShow GHCziBase.Bool)
			       {GHCziShow.ZCDShow
				(tpl6::GHCziPrim.ZLzmzgZR
				       GHCziBase.Int
				       (GHCziPrim.ZLzmzgZR
					GHCziBase.Bool
					(GHCziPrim.ZLzmzgZR
					 (GHCziBase.ZMZN GHCziBase.Char)
					 (GHCziBase.ZMZN GHCziBase.Char))))
				(tpl7::GHCziPrim.ZLzmzgZR
				       GHCziBase.Bool
				       (GHCziBase.ZMZN GHCziBase.Char))
				(tpl8::GHCziPrim.ZLzmzgZR
				       (GHCziBase.ZMZN GHCziBase.Bool)
				       (GHCziPrim.ZLzmzgZR
					(GHCziBase.ZMZN GHCziBase.Char)
					(GHCziBase.ZMZN GHCziBase.Char))) ->
				  tpl7 (Fibheaps.test (read n))})}})};
  Fibheaps.zdfEqMaybe :: %forall a . GHCziPrim.ZLzmzgZR
				     (GHCziBase.ZCTEq a)
				     (GHCziBase.ZCTEq (Fibheaps.Maybe a)) =
    %note "InlineMe"
    \ @ a1 (zddEq2::GHCziBase.ZCTEq a1) ->
	%let zeze :: GHCziPrim.ZLzmzgZR
		     (Fibheaps.Maybe a1)
		     (GHCziPrim.ZLzmzgZR (Fibheaps.Maybe a1) GHCziBase.Bool) =
	       \ (ds1::Fibheaps.Maybe a1) (ds2::Fibheaps.Maybe a1) ->
		   %let fail :: GHCziBase.Bool =
			  %case (con2tagzuMaybezh @ a1 ds1) %of (azh::GHCziPrim.Intzh)
			    {%_ ->
			       %case (con2tagzuMaybezh @ a1 ds2) %of (bzh::GHCziPrim.Intzh)
				 {%_ ->
				    GHCziPrim.zezezh azh bzh}}
		   %in %case ds1 %of (wild::Fibheaps.Maybe a1)
			 {Fibheaps.Nothing ->
			    fail;
			  Fibheaps.Just (a11::a1) ->
			    %case ds2 %of (wild1::Fibheaps.Maybe a1)
			      {Fibheaps.Nothing ->
				 fail;
			       Fibheaps.Just (b1::a1) ->
				 GHCziBase.zeze @ a1 zddEq2 a11 b1}}
	%in GHCziBase.zdwZCDEq @ (Fibheaps.Maybe a1)
	    (\ (a2::Fibheaps.Maybe a1) (b::Fibheaps.Maybe a1) ->
		 GHCziBase.not (zeze a2 b))
	    zeze;


More information about the Glasgow-haskell-bugs mailing list