21.72/10.53 YES 24.96/11.40 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 24.96/11.40 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 24.96/11.40 24.96/11.40 24.96/11.40 H-Termination with start terms of the given HASKELL could be proven: 24.96/11.40 24.96/11.40 (0) HASKELL 24.96/11.40 (1) LR [EQUIVALENT, 0 ms] 24.96/11.40 (2) HASKELL 24.96/11.40 (3) CR [EQUIVALENT, 0 ms] 24.96/11.40 (4) HASKELL 24.96/11.40 (5) BR [EQUIVALENT, 0 ms] 24.96/11.40 (6) HASKELL 24.96/11.40 (7) COR [EQUIVALENT, 14 ms] 24.96/11.40 (8) HASKELL 24.96/11.40 (9) LetRed [EQUIVALENT, 0 ms] 24.96/11.40 (10) HASKELL 24.96/11.40 (11) NumRed [SOUND, 10 ms] 24.96/11.40 (12) HASKELL 24.96/11.40 (13) Narrow [SOUND, 0 ms] 24.96/11.40 (14) AND 24.96/11.40 (15) QDP 24.96/11.40 (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (17) YES 24.96/11.40 (18) QDP 24.96/11.40 (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (20) YES 24.96/11.40 (21) QDP 24.96/11.40 (22) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (23) YES 24.96/11.40 (24) QDP 24.96/11.40 (25) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (26) YES 24.96/11.40 (27) QDP 24.96/11.40 (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (29) YES 24.96/11.40 (30) QDP 24.96/11.40 (31) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (32) YES 24.96/11.40 (33) QDP 24.96/11.40 (34) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (35) YES 24.96/11.40 (36) QDP 24.96/11.40 (37) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (38) YES 24.96/11.40 (39) QDP 24.96/11.40 (40) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (41) YES 24.96/11.40 (42) QDP 24.96/11.40 (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (44) YES 24.96/11.40 (45) QDP 24.96/11.40 (46) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (47) YES 24.96/11.40 (48) QDP 24.96/11.40 (49) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (50) YES 24.96/11.40 (51) QDP 24.96/11.40 (52) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (53) YES 24.96/11.40 (54) QDP 24.96/11.40 (55) QDPSizeChangeProof [EQUIVALENT, 0 ms] 24.96/11.40 (56) YES 24.96/11.40 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (0) 24.96/11.40 Obligation: 24.96/11.40 mainModule Main 24.96/11.40 module FiniteMap where { 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 24.96/11.40 24.96/11.40 instance (Eq a, Eq b) => Eq FiniteMap a b where { 24.96/11.40 } 24.96/11.40 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 24.96/11.40 addToFM fm key elt = addToFM_C (\old new ->new) fm key elt; 24.96/11.40 24.96/11.40 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 24.96/11.40 addToFM_C combiner EmptyFM key elt = unitFM key elt; 24.96/11.40 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt | new_key < key = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r 24.96/11.40 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 24.96/11.40 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 24.96/11.40 24.96/11.40 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 24.96/11.40 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 24.96/11.40 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 24.96/11.40 24.96/11.40 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 24.96/11.40 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 24.96/11.40 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 24.96/11.40 24.96/11.40 emptyFM :: FiniteMap a b; 24.96/11.40 emptyFM = EmptyFM; 24.96/11.40 24.96/11.40 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 filterFM p EmptyFM = emptyFM; 24.96/11.40 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 24.96/11.40 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 24.96/11.40 24.96/11.40 findMax :: FiniteMap a b -> (a,b); 24.96/11.40 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 24.96/11.40 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 24.96/11.40 24.96/11.40 findMin :: FiniteMap b a -> (b,a); 24.96/11.40 findMin (Branch key elt _ EmptyFM _) = (key,elt); 24.96/11.40 findMin (Branch key elt _ fm_l _) = findMin fm_l; 24.96/11.40 24.96/11.40 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 glueBal EmptyFM fm2 = fm2; 24.96/11.40 glueBal fm1 EmptyFM = fm1; 24.96/11.40 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 24.96/11.40 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 24.96/11.40 mid_elt1 = (\(_,mid_elt1) ->mid_elt1) vv2; 24.96/11.40 mid_elt2 = (\(_,mid_elt2) ->mid_elt2) vv3; 24.96/11.40 mid_key1 = (\(mid_key1,_) ->mid_key1) vv2; 24.96/11.40 mid_key2 = (\(mid_key2,_) ->mid_key2) vv3; 24.96/11.40 vv2 = findMax fm1; 24.96/11.40 vv3 = findMin fm2; 24.96/11.40 }; 24.96/11.40 24.96/11.40 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 glueVBal EmptyFM fm2 = fm2; 24.96/11.40 glueVBal fm1 EmptyFM = fm1; 24.96/11.40 glueVBal fm_l@(Branch key_l elt_l _ fm_ll fm_lr) fm_r@(Branch key_r elt_r _ fm_rl fm_rr) | sIZE_RATIO * size_l < size_r = mkBalBranch key_r elt_r (glueVBal fm_l fm_rl) fm_rr 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 24.96/11.40 | otherwise = glueBal fm_l fm_r where { 24.96/11.40 size_l = sizeFM fm_l; 24.96/11.40 size_r = sizeFM fm_r; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 24.96/11.40 | size_r > sIZE_RATIO * size_l = case fm_R of { 24.96/11.40 Branch _ _ _ fm_rl fm_rr | sizeFM fm_rl < 2 * sizeFM fm_rr -> single_L fm_L fm_R 24.96/11.40 | otherwise -> double_L fm_L fm_R; 24.96/11.40 } 24.96/11.40 | size_l > sIZE_RATIO * size_r = case fm_L of { 24.96/11.40 Branch _ _ _ fm_ll fm_lr | sizeFM fm_lr < 2 * sizeFM fm_ll -> single_R fm_L fm_R 24.96/11.40 | otherwise -> double_R fm_L fm_R; 24.96/11.40 } 24.96/11.40 | otherwise = mkBranch 2 key elt fm_L fm_R where { 24.96/11.40 double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 24.96/11.40 double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 24.96/11.40 single_L fm_l (Branch key_r elt_r _ fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 24.96/11.40 single_R (Branch key_l elt_l _ fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 24.96/11.40 size_l = sizeFM fm_L; 24.96/11.40 size_r = sizeFM fm_R; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkBranch which key elt fm_l fm_r = let { 24.96/11.40 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 24.96/11.40 } in result where { 24.96/11.40 balance_ok = True; 24.96/11.40 left_ok = case fm_l of { 24.96/11.40 EmptyFM-> True; 24.96/11.40 Branch left_key _ _ _ _-> let { 24.96/11.40 biggest_left_key = fst (findMax fm_l); 24.96/11.40 } in biggest_left_key < key; 24.96/11.40 } ; 24.96/11.40 left_size = sizeFM fm_l; 24.96/11.40 right_ok = case fm_r of { 24.96/11.40 EmptyFM-> True; 24.96/11.40 Branch right_key _ _ _ _-> let { 24.96/11.40 smallest_right_key = fst (findMin fm_r); 24.96/11.40 } in key < smallest_right_key; 24.96/11.40 } ; 24.96/11.40 right_size = sizeFM fm_r; 24.96/11.40 unbox :: Int -> Int; 24.96/11.40 unbox x = x; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 24.96/11.40 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 24.96/11.40 mkVBalBranch key elt fm_l@(Branch key_l elt_l _ fm_ll fm_lr) fm_r@(Branch key_r elt_r _ fm_rl fm_rr) | sIZE_RATIO * size_l < size_r = mkBalBranch key_r elt_r (mkVBalBranch key elt fm_l fm_rl) fm_rr 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 24.96/11.40 | otherwise = mkBranch 13 key elt fm_l fm_r where { 24.96/11.40 size_l = sizeFM fm_l; 24.96/11.40 size_r = sizeFM fm_r; 24.96/11.40 }; 24.96/11.40 24.96/11.40 sIZE_RATIO :: Int; 24.96/11.40 sIZE_RATIO = 5; 24.96/11.40 24.96/11.40 sizeFM :: FiniteMap b a -> Int; 24.96/11.40 sizeFM EmptyFM = 0; 24.96/11.40 sizeFM (Branch _ _ size _ _) = size; 24.96/11.40 24.96/11.40 unitFM :: a -> b -> FiniteMap a b; 24.96/11.40 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 24.96/11.40 24.96/11.40 } 24.96/11.40 module Maybe where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 module Main where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (1) LR (EQUIVALENT) 24.96/11.40 Lambda Reductions: 24.96/11.40 The following Lambda expression 24.96/11.40 "\oldnew->new" 24.96/11.40 is transformed to 24.96/11.40 "addToFM0 old new = new; 24.96/11.40 " 24.96/11.40 The following Lambda expression 24.96/11.40 "\(_,mid_elt2)->mid_elt2" 24.96/11.40 is transformed to 24.96/11.40 "mid_elt20 (_,mid_elt2) = mid_elt2; 24.96/11.40 " 24.96/11.40 The following Lambda expression 24.96/11.40 "\(mid_key2,_)->mid_key2" 24.96/11.40 is transformed to 24.96/11.40 "mid_key20 (mid_key2,_) = mid_key2; 24.96/11.40 " 24.96/11.40 The following Lambda expression 24.96/11.40 "\(mid_key1,_)->mid_key1" 24.96/11.40 is transformed to 24.96/11.40 "mid_key10 (mid_key1,_) = mid_key1; 24.96/11.40 " 24.96/11.40 The following Lambda expression 24.96/11.40 "\(_,mid_elt1)->mid_elt1" 24.96/11.40 is transformed to 24.96/11.40 "mid_elt10 (_,mid_elt1) = mid_elt1; 24.96/11.40 " 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (2) 24.96/11.40 Obligation: 24.96/11.40 mainModule Main 24.96/11.40 module FiniteMap where { 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 24.96/11.40 24.96/11.40 instance (Eq a, Eq b) => Eq FiniteMap b a where { 24.96/11.40 } 24.96/11.40 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 24.96/11.40 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 24.96/11.40 24.96/11.40 addToFM0 old new = new; 24.96/11.40 24.96/11.40 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 24.96/11.40 addToFM_C combiner EmptyFM key elt = unitFM key elt; 24.96/11.40 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt | new_key < key = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r 24.96/11.40 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 24.96/11.40 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 24.96/11.40 24.96/11.40 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 24.96/11.40 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 24.96/11.40 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 24.96/11.40 24.96/11.40 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 24.96/11.40 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 24.96/11.40 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 24.96/11.40 24.96/11.40 emptyFM :: FiniteMap a b; 24.96/11.40 emptyFM = EmptyFM; 24.96/11.40 24.96/11.40 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 filterFM p EmptyFM = emptyFM; 24.96/11.40 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 24.96/11.40 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 24.96/11.40 24.96/11.40 findMax :: FiniteMap b a -> (b,a); 24.96/11.40 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 24.96/11.40 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 24.96/11.40 24.96/11.40 findMin :: FiniteMap b a -> (b,a); 24.96/11.40 findMin (Branch key elt _ EmptyFM _) = (key,elt); 24.96/11.40 findMin (Branch key elt _ fm_l _) = findMin fm_l; 24.96/11.40 24.96/11.40 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 glueBal EmptyFM fm2 = fm2; 24.96/11.40 glueBal fm1 EmptyFM = fm1; 24.96/11.40 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 24.96/11.40 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 24.96/11.40 mid_elt1 = mid_elt10 vv2; 24.96/11.40 mid_elt10 (_,mid_elt1) = mid_elt1; 24.96/11.40 mid_elt2 = mid_elt20 vv3; 24.96/11.40 mid_elt20 (_,mid_elt2) = mid_elt2; 24.96/11.40 mid_key1 = mid_key10 vv2; 24.96/11.40 mid_key10 (mid_key1,_) = mid_key1; 24.96/11.40 mid_key2 = mid_key20 vv3; 24.96/11.40 mid_key20 (mid_key2,_) = mid_key2; 24.96/11.40 vv2 = findMax fm1; 24.96/11.40 vv3 = findMin fm2; 24.96/11.40 }; 24.96/11.40 24.96/11.40 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 glueVBal EmptyFM fm2 = fm2; 24.96/11.40 glueVBal fm1 EmptyFM = fm1; 24.96/11.40 glueVBal fm_l@(Branch key_l elt_l _ fm_ll fm_lr) fm_r@(Branch key_r elt_r _ fm_rl fm_rr) | sIZE_RATIO * size_l < size_r = mkBalBranch key_r elt_r (glueVBal fm_l fm_rl) fm_rr 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 24.96/11.40 | otherwise = glueBal fm_l fm_r where { 24.96/11.40 size_l = sizeFM fm_l; 24.96/11.40 size_r = sizeFM fm_r; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 24.96/11.40 | size_r > sIZE_RATIO * size_l = case fm_R of { 24.96/11.40 Branch _ _ _ fm_rl fm_rr | sizeFM fm_rl < 2 * sizeFM fm_rr -> single_L fm_L fm_R 24.96/11.40 | otherwise -> double_L fm_L fm_R; 24.96/11.40 } 24.96/11.40 | size_l > sIZE_RATIO * size_r = case fm_L of { 24.96/11.40 Branch _ _ _ fm_ll fm_lr | sizeFM fm_lr < 2 * sizeFM fm_ll -> single_R fm_L fm_R 24.96/11.40 | otherwise -> double_R fm_L fm_R; 24.96/11.40 } 24.96/11.40 | otherwise = mkBranch 2 key elt fm_L fm_R where { 24.96/11.40 double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 24.96/11.40 double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 24.96/11.40 single_L fm_l (Branch key_r elt_r _ fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 24.96/11.40 single_R (Branch key_l elt_l _ fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 24.96/11.40 size_l = sizeFM fm_L; 24.96/11.40 size_r = sizeFM fm_R; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkBranch which key elt fm_l fm_r = let { 24.96/11.40 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 24.96/11.40 } in result where { 24.96/11.40 balance_ok = True; 24.96/11.40 left_ok = case fm_l of { 24.96/11.40 EmptyFM-> True; 24.96/11.40 Branch left_key _ _ _ _-> let { 24.96/11.40 biggest_left_key = fst (findMax fm_l); 24.96/11.40 } in biggest_left_key < key; 24.96/11.40 } ; 24.96/11.40 left_size = sizeFM fm_l; 24.96/11.40 right_ok = case fm_r of { 24.96/11.40 EmptyFM-> True; 24.96/11.40 Branch right_key _ _ _ _-> let { 24.96/11.40 smallest_right_key = fst (findMin fm_r); 24.96/11.40 } in key < smallest_right_key; 24.96/11.40 } ; 24.96/11.40 right_size = sizeFM fm_r; 24.96/11.40 unbox :: Int -> Int; 24.96/11.40 unbox x = x; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 24.96/11.40 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 24.96/11.40 mkVBalBranch key elt fm_l@(Branch key_l elt_l _ fm_ll fm_lr) fm_r@(Branch key_r elt_r _ fm_rl fm_rr) | sIZE_RATIO * size_l < size_r = mkBalBranch key_r elt_r (mkVBalBranch key elt fm_l fm_rl) fm_rr 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 24.96/11.40 | otherwise = mkBranch 13 key elt fm_l fm_r where { 24.96/11.40 size_l = sizeFM fm_l; 24.96/11.40 size_r = sizeFM fm_r; 24.96/11.40 }; 24.96/11.40 24.96/11.40 sIZE_RATIO :: Int; 24.96/11.40 sIZE_RATIO = 5; 24.96/11.40 24.96/11.40 sizeFM :: FiniteMap b a -> Int; 24.96/11.40 sizeFM EmptyFM = 0; 24.96/11.40 sizeFM (Branch _ _ size _ _) = size; 24.96/11.40 24.96/11.40 unitFM :: b -> a -> FiniteMap b a; 24.96/11.40 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 24.96/11.40 24.96/11.40 } 24.96/11.40 module Maybe where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 module Main where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (3) CR (EQUIVALENT) 24.96/11.40 Case Reductions: 24.96/11.40 The following Case expression 24.96/11.40 "case fm_r of { 24.96/11.40 EmptyFM -> True; 24.96/11.40 Branch right_key _ _ _ _ -> let { 24.96/11.40 smallest_right_key = fst (findMin fm_r); 24.96/11.40 } in key < smallest_right_key} 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "right_ok0 fm_r key EmptyFM = True; 24.96/11.40 right_ok0 fm_r key (Branch right_key _ _ _ _) = let { 24.96/11.40 smallest_right_key = fst (findMin fm_r); 24.96/11.40 } in key < smallest_right_key; 24.96/11.40 " 24.96/11.40 The following Case expression 24.96/11.40 "case fm_l of { 24.96/11.40 EmptyFM -> True; 24.96/11.40 Branch left_key _ _ _ _ -> let { 24.96/11.40 biggest_left_key = fst (findMax fm_l); 24.96/11.40 } in biggest_left_key < key} 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "left_ok0 fm_l key EmptyFM = True; 24.96/11.40 left_ok0 fm_l key (Branch left_key _ _ _ _) = let { 24.96/11.40 biggest_left_key = fst (findMax fm_l); 24.96/11.40 } in biggest_left_key < key; 24.96/11.40 " 24.96/11.40 The following Case expression 24.96/11.40 "case fm_R of { 24.96/11.40 Branch _ _ _ fm_rl fm_rr |sizeFM fm_rl < 2 * sizeFM fm_rrsingle_L fm_L fm_R|otherwisedouble_L fm_L fm_R} 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr)|sizeFM fm_rl < 2 * sizeFM fm_rrsingle_L fm_L fm_R|otherwisedouble_L fm_L fm_R; 24.96/11.40 " 24.96/11.40 The following Case expression 24.96/11.40 "case fm_L of { 24.96/11.40 Branch _ _ _ fm_ll fm_lr |sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R} 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr)|sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R; 24.96/11.40 " 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (4) 24.96/11.40 Obligation: 24.96/11.40 mainModule Main 24.96/11.40 module FiniteMap where { 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 24.96/11.40 24.96/11.40 instance (Eq a, Eq b) => Eq FiniteMap a b where { 24.96/11.40 } 24.96/11.40 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 24.96/11.40 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 24.96/11.40 24.96/11.40 addToFM0 old new = new; 24.96/11.40 24.96/11.40 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 24.96/11.40 addToFM_C combiner EmptyFM key elt = unitFM key elt; 24.96/11.40 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt | new_key < key = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r 24.96/11.40 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 24.96/11.40 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 24.96/11.40 24.96/11.40 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 24.96/11.40 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 24.96/11.40 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 24.96/11.40 24.96/11.40 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 24.96/11.40 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 24.96/11.40 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 24.96/11.40 24.96/11.40 emptyFM :: FiniteMap b a; 24.96/11.40 emptyFM = EmptyFM; 24.96/11.40 24.96/11.40 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 filterFM p EmptyFM = emptyFM; 24.96/11.40 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 24.96/11.40 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 24.96/11.40 24.96/11.40 findMax :: FiniteMap a b -> (a,b); 24.96/11.40 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 24.96/11.40 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 24.96/11.40 24.96/11.40 findMin :: FiniteMap a b -> (a,b); 24.96/11.40 findMin (Branch key elt _ EmptyFM _) = (key,elt); 24.96/11.40 findMin (Branch key elt _ fm_l _) = findMin fm_l; 24.96/11.40 24.96/11.40 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 glueBal EmptyFM fm2 = fm2; 24.96/11.40 glueBal fm1 EmptyFM = fm1; 24.96/11.40 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 24.96/11.40 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 24.96/11.40 mid_elt1 = mid_elt10 vv2; 24.96/11.40 mid_elt10 (_,mid_elt1) = mid_elt1; 24.96/11.40 mid_elt2 = mid_elt20 vv3; 24.96/11.40 mid_elt20 (_,mid_elt2) = mid_elt2; 24.96/11.40 mid_key1 = mid_key10 vv2; 24.96/11.40 mid_key10 (mid_key1,_) = mid_key1; 24.96/11.40 mid_key2 = mid_key20 vv3; 24.96/11.40 mid_key20 (mid_key2,_) = mid_key2; 24.96/11.40 vv2 = findMax fm1; 24.96/11.40 vv3 = findMin fm2; 24.96/11.40 }; 24.96/11.40 24.96/11.40 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 glueVBal EmptyFM fm2 = fm2; 24.96/11.40 glueVBal fm1 EmptyFM = fm1; 24.96/11.40 glueVBal fm_l@(Branch key_l elt_l _ fm_ll fm_lr) fm_r@(Branch key_r elt_r _ fm_rl fm_rr) | sIZE_RATIO * size_l < size_r = mkBalBranch key_r elt_r (glueVBal fm_l fm_rl) fm_rr 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 24.96/11.40 | otherwise = glueBal fm_l fm_r where { 24.96/11.40 size_l = sizeFM fm_l; 24.96/11.40 size_r = sizeFM fm_r; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 24.96/11.40 | size_r > sIZE_RATIO * size_l = mkBalBranch0 fm_L fm_R fm_R 24.96/11.40 | size_l > sIZE_RATIO * size_r = mkBalBranch1 fm_L fm_R fm_L 24.96/11.40 | otherwise = mkBranch 2 key elt fm_L fm_R where { 24.96/11.40 double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 24.96/11.40 double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 24.96/11.40 mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr) | sizeFM fm_rl < 2 * sizeFM fm_rr = single_L fm_L fm_R 24.96/11.40 | otherwise = double_L fm_L fm_R; 24.96/11.40 mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr) | sizeFM fm_lr < 2 * sizeFM fm_ll = single_R fm_L fm_R 24.96/11.40 | otherwise = double_R fm_L fm_R; 24.96/11.40 single_L fm_l (Branch key_r elt_r _ fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 24.96/11.40 single_R (Branch key_l elt_l _ fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 24.96/11.40 size_l = sizeFM fm_L; 24.96/11.40 size_r = sizeFM fm_R; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkBranch which key elt fm_l fm_r = let { 24.96/11.40 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 24.96/11.40 } in result where { 24.96/11.40 balance_ok = True; 24.96/11.40 left_ok = left_ok0 fm_l key fm_l; 24.96/11.40 left_ok0 fm_l key EmptyFM = True; 24.96/11.40 left_ok0 fm_l key (Branch left_key _ _ _ _) = let { 24.96/11.40 biggest_left_key = fst (findMax fm_l); 24.96/11.40 } in biggest_left_key < key; 24.96/11.40 left_size = sizeFM fm_l; 24.96/11.40 right_ok = right_ok0 fm_r key fm_r; 24.96/11.40 right_ok0 fm_r key EmptyFM = True; 24.96/11.40 right_ok0 fm_r key (Branch right_key _ _ _ _) = let { 24.96/11.40 smallest_right_key = fst (findMin fm_r); 24.96/11.40 } in key < smallest_right_key; 24.96/11.40 right_size = sizeFM fm_r; 24.96/11.40 unbox :: Int -> Int; 24.96/11.40 unbox x = x; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 24.96/11.40 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 24.96/11.40 mkVBalBranch key elt fm_l@(Branch key_l elt_l _ fm_ll fm_lr) fm_r@(Branch key_r elt_r _ fm_rl fm_rr) | sIZE_RATIO * size_l < size_r = mkBalBranch key_r elt_r (mkVBalBranch key elt fm_l fm_rl) fm_rr 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 24.96/11.40 | otherwise = mkBranch 13 key elt fm_l fm_r where { 24.96/11.40 size_l = sizeFM fm_l; 24.96/11.40 size_r = sizeFM fm_r; 24.96/11.40 }; 24.96/11.40 24.96/11.40 sIZE_RATIO :: Int; 24.96/11.40 sIZE_RATIO = 5; 24.96/11.40 24.96/11.40 sizeFM :: FiniteMap a b -> Int; 24.96/11.40 sizeFM EmptyFM = 0; 24.96/11.40 sizeFM (Branch _ _ size _ _) = size; 24.96/11.40 24.96/11.40 unitFM :: b -> a -> FiniteMap b a; 24.96/11.40 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 24.96/11.40 24.96/11.40 } 24.96/11.40 module Maybe where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 module Main where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (5) BR (EQUIVALENT) 24.96/11.40 Replaced joker patterns by fresh variables and removed binding patterns. 24.96/11.40 24.96/11.40 Binding Reductions: 24.96/11.40 The bind variable of the following binding Pattern 24.96/11.40 "fm_l@(Branch wu wv ww wx wy)" 24.96/11.40 is replaced by the following term 24.96/11.40 "Branch wu wv ww wx wy" 24.96/11.40 The bind variable of the following binding Pattern 24.96/11.40 "fm_r@(Branch xu xv xw xx xy)" 24.96/11.40 is replaced by the following term 24.96/11.40 "Branch xu xv xw xx xy" 24.96/11.40 The bind variable of the following binding Pattern 24.96/11.40 "fm_l@(Branch vxu vxv vxw vxx vxy)" 24.96/11.40 is replaced by the following term 24.96/11.40 "Branch vxu vxv vxw vxx vxy" 24.96/11.40 The bind variable of the following binding Pattern 24.96/11.40 "fm_r@(Branch vyu vyv vyw vyx vyy)" 24.96/11.40 is replaced by the following term 24.96/11.40 "Branch vyu vyv vyw vyx vyy" 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (6) 24.96/11.40 Obligation: 24.96/11.40 mainModule Main 24.96/11.40 module FiniteMap where { 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 24.96/11.40 24.96/11.40 instance (Eq a, Eq b) => Eq FiniteMap b a where { 24.96/11.40 } 24.96/11.40 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 24.96/11.40 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 24.96/11.40 24.96/11.40 addToFM0 old new = new; 24.96/11.40 24.96/11.40 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 24.96/11.40 addToFM_C combiner EmptyFM key elt = unitFM key elt; 24.96/11.40 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt | new_key < key = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r 24.96/11.40 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 24.96/11.40 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 24.96/11.40 24.96/11.40 deleteMax :: Ord a => FiniteMap a b -> FiniteMap a b; 24.96/11.40 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 24.96/11.40 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 24.96/11.40 24.96/11.40 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 24.96/11.40 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 24.96/11.40 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 24.96/11.40 24.96/11.40 emptyFM :: FiniteMap a b; 24.96/11.40 emptyFM = EmptyFM; 24.96/11.40 24.96/11.40 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 filterFM p EmptyFM = emptyFM; 24.96/11.40 filterFM p (Branch key elt vzz fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 24.96/11.40 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 24.96/11.40 24.96/11.40 findMax :: FiniteMap b a -> (b,a); 24.96/11.40 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 24.96/11.40 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 24.96/11.40 24.96/11.40 findMin :: FiniteMap b a -> (b,a); 24.96/11.40 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 24.96/11.40 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 24.96/11.40 24.96/11.40 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 glueBal EmptyFM fm2 = fm2; 24.96/11.40 glueBal fm1 EmptyFM = fm1; 24.96/11.40 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 24.96/11.40 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 24.96/11.40 mid_elt1 = mid_elt10 vv2; 24.96/11.40 mid_elt10 (vww,mid_elt1) = mid_elt1; 24.96/11.40 mid_elt2 = mid_elt20 vv3; 24.96/11.40 mid_elt20 (vwv,mid_elt2) = mid_elt2; 24.96/11.40 mid_key1 = mid_key10 vv2; 24.96/11.40 mid_key10 (mid_key1,vwx) = mid_key1; 24.96/11.40 mid_key2 = mid_key20 vv3; 24.96/11.40 mid_key20 (mid_key2,vwy) = mid_key2; 24.96/11.40 vv2 = findMax fm1; 24.96/11.40 vv3 = findMin fm2; 24.96/11.40 }; 24.96/11.40 24.96/11.40 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 glueVBal EmptyFM fm2 = fm2; 24.96/11.40 glueVBal fm1 EmptyFM = fm1; 24.96/11.40 glueVBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) | sIZE_RATIO * size_l < size_r = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)) 24.96/11.40 | otherwise = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) where { 24.96/11.40 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 24.96/11.40 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 24.96/11.40 | size_r > sIZE_RATIO * size_l = mkBalBranch0 fm_L fm_R fm_R 24.96/11.40 | size_l > sIZE_RATIO * size_r = mkBalBranch1 fm_L fm_R fm_L 24.96/11.40 | otherwise = mkBranch 2 key elt fm_L fm_R where { 24.96/11.40 double_L fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 24.96/11.40 double_R (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 24.96/11.40 mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) | sizeFM fm_rl < 2 * sizeFM fm_rr = single_L fm_L fm_R 24.96/11.40 | otherwise = double_L fm_L fm_R; 24.96/11.40 mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) | sizeFM fm_lr < 2 * sizeFM fm_ll = single_R fm_L fm_R 24.96/11.40 | otherwise = double_R fm_L fm_R; 24.96/11.40 single_L fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 24.96/11.40 single_R (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 24.96/11.40 size_l = sizeFM fm_L; 24.96/11.40 size_r = sizeFM fm_R; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 24.96/11.40 mkBranch which key elt fm_l fm_r = let { 24.96/11.40 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 24.96/11.40 } in result where { 24.96/11.40 balance_ok = True; 24.96/11.40 left_ok = left_ok0 fm_l key fm_l; 24.96/11.40 left_ok0 fm_l key EmptyFM = True; 24.96/11.40 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 24.96/11.40 biggest_left_key = fst (findMax fm_l); 24.96/11.40 } in biggest_left_key < key; 24.96/11.40 left_size = sizeFM fm_l; 24.96/11.40 right_ok = right_ok0 fm_r key fm_r; 24.96/11.40 right_ok0 fm_r key EmptyFM = True; 24.96/11.40 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 24.96/11.40 smallest_right_key = fst (findMin fm_r); 24.96/11.40 } in key < smallest_right_key; 24.96/11.40 right_size = sizeFM fm_r; 24.96/11.40 unbox :: Int -> Int; 24.96/11.40 unbox x = x; 24.96/11.40 }; 24.96/11.40 24.96/11.40 mkVBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 24.96/11.40 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 24.96/11.40 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 24.96/11.40 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) | sIZE_RATIO * size_l < size_r = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy 24.96/11.40 | sIZE_RATIO * size_r < size_l = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)) 24.96/11.40 | otherwise = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) where { 24.96/11.40 size_l = sizeFM (Branch wu wv ww wx wy); 24.96/11.40 size_r = sizeFM (Branch xu xv xw xx xy); 24.96/11.40 }; 24.96/11.40 24.96/11.40 sIZE_RATIO :: Int; 24.96/11.40 sIZE_RATIO = 5; 24.96/11.40 24.96/11.40 sizeFM :: FiniteMap b a -> Int; 24.96/11.40 sizeFM EmptyFM = 0; 24.96/11.40 sizeFM (Branch vyz vzu size vzv vzw) = size; 24.96/11.40 24.96/11.40 unitFM :: a -> b -> FiniteMap a b; 24.96/11.40 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 24.96/11.40 24.96/11.40 } 24.96/11.40 module Maybe where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Main; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 module Main where { 24.96/11.40 import qualified FiniteMap; 24.96/11.40 import qualified Maybe; 24.96/11.40 import qualified Prelude; 24.96/11.40 } 24.96/11.40 24.96/11.40 ---------------------------------------- 24.96/11.40 24.96/11.40 (7) COR (EQUIVALENT) 24.96/11.40 Cond Reductions: 24.96/11.40 The following Function with conditions 24.96/11.40 "undefined |Falseundefined; 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "undefined = undefined1; 24.96/11.40 " 24.96/11.40 "undefined0 True = undefined; 24.96/11.40 " 24.96/11.40 "undefined1 = undefined0 False; 24.96/11.40 " 24.96/11.40 The following Function with conditions 24.96/11.40 "addToFM_C combiner EmptyFM key elt = unitFM key elt; 24.96/11.40 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt|new_key < keymkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r|new_key > keymkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt)|otherwiseBranch new_key (combiner elt new_elt) size fm_l fm_r; 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 24.96/11.40 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt; 24.96/11.40 " 24.96/11.40 "addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt True = Branch new_key (combiner elt new_elt) size fm_l fm_r; 24.96/11.40 " 24.96/11.40 "addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt); 24.96/11.40 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt otherwise; 24.96/11.40 " 24.96/11.40 "addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r; 24.96/11.40 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt (new_key > key); 24.96/11.40 " 24.96/11.40 "addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt (new_key < key); 24.96/11.40 " 24.96/11.40 "addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 24.96/11.40 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 24.96/11.40 " 24.96/11.40 The following Function with conditions 24.96/11.40 "mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 24.96/11.40 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 24.96/11.40 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy)|sIZE_RATIO * size_l < size_rmkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy|sIZE_RATIO * size_r < size_lmkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy))|otherwisemkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) where { 24.96/11.40 size_l = sizeFM (Branch wu wv ww wx wy); 24.96/11.40 ; 24.96/11.40 size_r = sizeFM (Branch xu xv xw xx xy); 24.96/11.40 } 24.96/11.40 ; 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 24.96/11.40 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 24.96/11.40 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 24.96/11.40 " 24.96/11.40 "mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_l < size_r) where { 24.96/11.40 mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 24.96/11.40 ; 24.96/11.40 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 24.96/11.40 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy otherwise; 24.96/11.40 ; 24.96/11.40 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 24.96/11.40 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_r < size_l); 24.96/11.40 ; 24.96/11.40 size_l = sizeFM (Branch wu wv ww wx wy); 24.96/11.40 ; 24.96/11.40 size_r = sizeFM (Branch xu xv xw xx xy); 24.96/11.40 } 24.96/11.40 ; 24.96/11.40 " 24.96/11.40 "mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 24.96/11.40 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 24.96/11.40 " 24.96/11.40 "mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 24.96/11.40 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 24.96/11.40 " 24.96/11.40 The following Function with conditions 24.96/11.40 "mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr)|sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R; 24.96/11.40 " 24.96/11.40 is transformed to 24.96/11.40 "mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 24.96/11.40 " 24.96/11.40 "mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 24.96/11.40 " 24.96/11.40 "mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 24.96/11.40 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 24.96/11.40 " 24.96/11.40 "mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll); 25.41/11.55 " 25.41/11.55 The following Function with conditions 25.41/11.55 "mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr)|sizeFM fm_rl < 2 * sizeFM fm_rrsingle_L fm_L fm_R|otherwisedouble_L fm_L fm_R; 25.41/11.55 " 25.41/11.55 is transformed to 25.41/11.55 "mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.41/11.55 " 25.41/11.55 "mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 25.41/11.55 " 25.41/11.55 "mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.41/11.55 " 25.41/11.55 "mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr); 25.41/11.55 " 25.41/11.55 The following Function with conditions 25.41/11.55 "mkBalBranch key elt fm_L fm_R|size_l + size_r < 2mkBranch 1 key elt fm_L fm_R|size_r > sIZE_RATIO * size_lmkBalBranch0 fm_L fm_R fm_R|size_l > sIZE_RATIO * size_rmkBalBranch1 fm_L fm_R fm_L|otherwisemkBranch 2 key elt fm_L fm_R where { 25.41/11.55 double_L fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.41/11.55 ; 25.41/11.55 double_R (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 25.41/11.55 ; 25.41/11.55 mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr)|sizeFM fm_rl < 2 * sizeFM fm_rrsingle_L fm_L fm_R|otherwisedouble_L fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr)|sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R; 25.41/11.55 ; 25.41/11.55 single_L fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 25.41/11.55 ; 25.41/11.55 single_R (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 25.41/11.55 ; 25.41/11.55 size_l = sizeFM fm_L; 25.41/11.55 ; 25.41/11.55 size_r = sizeFM fm_R; 25.41/11.55 } 25.41/11.55 ; 25.41/11.55 " 25.41/11.55 is transformed to 25.41/11.55 "mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 25.41/11.55 " 25.41/11.55 "mkBalBranch6 key elt fm_L fm_R = mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 25.41/11.55 double_L fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.41/11.55 ; 25.41/11.55 double_R (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 25.41/11.55 ; 25.41/11.55 mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.41/11.55 ; 25.41/11.55 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.41/11.55 ; 25.41/11.55 mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr); 25.41/11.55 ; 25.41/11.55 mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 25.41/11.55 ; 25.41/11.55 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 25.41/11.55 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 25.41/11.55 ; 25.41/11.55 mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll); 25.41/11.55 ; 25.41/11.55 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 25.41/11.55 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 25.41/11.55 ; 25.41/11.55 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 25.41/11.55 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 25.41/11.55 ; 25.41/11.55 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 25.41/11.55 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 25.41/11.55 ; 25.41/11.55 single_L fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 25.41/11.55 ; 25.41/11.55 single_R (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 25.41/11.55 ; 25.41/11.55 size_l = sizeFM fm_L; 25.41/11.55 ; 25.41/11.55 size_r = sizeFM fm_R; 25.41/11.55 } 25.41/11.55 ; 25.41/11.55 " 25.41/11.55 The following Function with conditions 25.41/11.55 "glueBal EmptyFM fm2 = fm2; 25.41/11.55 glueBal fm1 EmptyFM = fm1; 25.41/11.55 glueBal fm1 fm2|sizeFM fm2 > sizeFM fm1mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)|otherwisemkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 25.41/11.55 mid_elt1 = mid_elt10 vv2; 25.41/11.55 ; 25.41/11.55 mid_elt10 (vww,mid_elt1) = mid_elt1; 25.41/11.55 ; 25.41/11.55 mid_elt2 = mid_elt20 vv3; 25.41/11.55 ; 25.41/11.55 mid_elt20 (vwv,mid_elt2) = mid_elt2; 25.41/11.55 ; 25.41/11.55 mid_key1 = mid_key10 vv2; 25.41/11.55 ; 25.41/11.55 mid_key10 (mid_key1,vwx) = mid_key1; 25.41/11.55 ; 25.41/11.55 mid_key2 = mid_key20 vv3; 25.41/11.55 ; 25.41/11.55 mid_key20 (mid_key2,vwy) = mid_key2; 25.41/11.55 ; 25.41/11.55 vv2 = findMax fm1; 25.41/11.55 ; 25.41/11.55 vv3 = findMin fm2; 25.41/11.55 } 25.41/11.55 ; 25.41/11.55 " 25.41/11.55 is transformed to 25.41/11.55 "glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 25.41/11.55 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 25.41/11.55 glueBal fm1 fm2 = glueBal2 fm1 fm2; 25.41/11.55 " 25.41/11.55 "glueBal2 fm1 fm2 = glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 25.41/11.55 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 25.41/11.55 ; 25.41/11.55 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 25.41/11.55 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 25.41/11.55 ; 25.41/11.55 mid_elt1 = mid_elt10 vv2; 25.41/11.55 ; 25.41/11.55 mid_elt10 (vww,mid_elt1) = mid_elt1; 25.41/11.55 ; 25.41/11.55 mid_elt2 = mid_elt20 vv3; 25.41/11.55 ; 25.41/11.55 mid_elt20 (vwv,mid_elt2) = mid_elt2; 25.41/11.55 ; 25.41/11.55 mid_key1 = mid_key10 vv2; 25.41/11.55 ; 25.41/11.55 mid_key10 (mid_key1,vwx) = mid_key1; 25.41/11.55 ; 25.41/11.55 mid_key2 = mid_key20 vv3; 25.41/11.55 ; 25.41/11.55 mid_key20 (mid_key2,vwy) = mid_key2; 25.41/11.55 ; 25.41/11.55 vv2 = findMax fm1; 25.41/11.55 ; 25.41/11.55 vv3 = findMin fm2; 25.41/11.55 } 25.41/11.55 ; 25.41/11.55 " 25.41/11.55 "glueBal3 fm1 EmptyFM = fm1; 25.41/11.55 glueBal3 wyv wyw = glueBal2 wyv wyw; 25.41/11.55 " 25.41/11.55 "glueBal4 EmptyFM fm2 = fm2; 25.41/11.55 glueBal4 wyy wyz = glueBal3 wyy wyz; 25.41/11.55 " 25.41/11.55 The following Function with conditions 25.41/11.55 "glueVBal EmptyFM fm2 = fm2; 25.41/11.55 glueVBal fm1 EmptyFM = fm1; 25.41/11.55 glueVBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy)|sIZE_RATIO * size_l < size_rmkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy|sIZE_RATIO * size_r < size_lmkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy))|otherwiseglueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) where { 25.41/11.55 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 25.41/11.55 ; 25.41/11.55 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 25.41/11.55 } 25.41/11.55 ; 25.41/11.55 " 25.41/11.55 is transformed to 25.41/11.55 "glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 25.41/11.55 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 25.41/11.55 glueVBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.41/11.55 " 25.41/11.55 "glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_l < size_r) where { 25.41/11.55 glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.41/11.55 ; 25.41/11.55 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 25.41/11.55 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 25.41/11.55 ; 25.41/11.55 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 25.41/11.55 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_r < size_l); 25.41/11.55 ; 25.41/11.55 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 25.41/11.55 ; 25.41/11.55 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 25.41/11.55 } 25.41/11.55 ; 25.41/11.55 " 25.41/11.55 "glueVBal4 fm1 EmptyFM = fm1; 25.41/11.55 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 25.41/11.55 " 25.41/11.55 "glueVBal5 EmptyFM fm2 = fm2; 25.41/11.55 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 25.41/11.55 " 25.41/11.55 The following Function with conditions 25.41/11.55 "filterFM p EmptyFM = emptyFM; 25.41/11.55 filterFM p (Branch key elt vzz fm_l fm_r)|p key eltmkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r)|otherwiseglueVBal (filterFM p fm_l) (filterFM p fm_r); 25.41/11.55 " 25.41/11.55 is transformed to 25.41/11.55 "filterFM p EmptyFM = filterFM3 p EmptyFM; 25.41/11.55 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 25.41/11.55 " 25.41/11.55 "filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.41/11.55 " 25.41/11.55 "filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 25.41/11.55 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 25.41/11.55 " 25.41/11.55 "filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 25.41/11.55 " 25.41/11.55 "filterFM3 p EmptyFM = emptyFM; 25.41/11.55 filterFM3 xuy xuz = filterFM2 xuy xuz; 25.41/11.55 " 25.41/11.55 25.41/11.55 ---------------------------------------- 25.41/11.55 25.41/11.55 (8) 25.41/11.55 Obligation: 25.41/11.55 mainModule Main 25.41/11.55 module FiniteMap where { 25.41/11.55 import qualified Main; 25.41/11.55 import qualified Maybe; 25.41/11.55 import qualified Prelude; 25.41/11.55 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 25.41/11.55 25.41/11.55 instance (Eq a, Eq b) => Eq FiniteMap a b where { 25.41/11.55 } 25.41/11.55 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 25.41/11.55 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 25.41/11.55 25.41/11.55 addToFM0 old new = new; 25.41/11.55 25.41/11.55 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 25.41/11.55 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 25.41/11.55 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt; 25.41/11.55 25.41/11.55 addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt True = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.41/11.55 25.41/11.55 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt); 25.41/11.55 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt otherwise; 25.41/11.55 25.41/11.55 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r; 25.41/11.55 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt (new_key > key); 25.41/11.55 25.41/11.55 addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt (new_key < key); 25.41/11.55 25.41/11.55 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 25.41/11.55 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 25.41/11.55 25.41/11.55 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.41/11.55 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 25.41/11.55 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.41/11.55 25.41/11.55 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 25.41/11.55 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 25.41/11.55 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.41/11.55 25.41/11.55 emptyFM :: FiniteMap a b; 25.41/11.55 emptyFM = EmptyFM; 25.41/11.55 25.41/11.55 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 25.41/11.55 filterFM p EmptyFM = filterFM3 p EmptyFM; 25.41/11.55 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 25.41/11.55 25.41/11.55 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.41/11.55 25.41/11.55 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 25.41/11.55 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 25.41/11.55 25.41/11.55 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 25.41/11.55 25.41/11.55 filterFM3 p EmptyFM = emptyFM; 25.41/11.55 filterFM3 xuy xuz = filterFM2 xuy xuz; 25.41/11.55 25.41/11.55 findMax :: FiniteMap a b -> (a,b); 25.41/11.55 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 25.41/11.55 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 25.41/11.55 25.41/11.55 findMin :: FiniteMap a b -> (a,b); 25.41/11.55 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 25.41/11.55 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 25.41/11.55 25.41/11.55 glueBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.41/11.55 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 25.41/11.55 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 25.41/11.55 glueBal fm1 fm2 = glueBal2 fm1 fm2; 25.41/11.55 25.41/11.55 glueBal2 fm1 fm2 = glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 25.41/11.55 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 25.41/11.55 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 25.41/11.55 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 25.41/11.55 mid_elt1 = mid_elt10 vv2; 25.41/11.55 mid_elt10 (vww,mid_elt1) = mid_elt1; 25.41/11.55 mid_elt2 = mid_elt20 vv3; 25.41/11.55 mid_elt20 (vwv,mid_elt2) = mid_elt2; 25.41/11.55 mid_key1 = mid_key10 vv2; 25.41/11.55 mid_key10 (mid_key1,vwx) = mid_key1; 25.41/11.55 mid_key2 = mid_key20 vv3; 25.41/11.55 mid_key20 (mid_key2,vwy) = mid_key2; 25.41/11.55 vv2 = findMax fm1; 25.41/11.55 vv3 = findMin fm2; 25.41/11.55 }; 25.41/11.55 25.41/11.55 glueBal3 fm1 EmptyFM = fm1; 25.41/11.55 glueBal3 wyv wyw = glueBal2 wyv wyw; 25.41/11.55 25.41/11.55 glueBal4 EmptyFM fm2 = fm2; 25.41/11.55 glueBal4 wyy wyz = glueBal3 wyy wyz; 25.41/11.55 25.41/11.55 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.41/11.55 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 25.41/11.55 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 25.41/11.55 glueVBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.41/11.55 25.41/11.55 glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_l < size_r) where { 25.41/11.55 glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.41/11.55 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 25.41/11.55 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 25.41/11.55 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 25.41/11.55 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_r < size_l); 25.41/11.55 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 25.41/11.55 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 25.41/11.55 }; 25.41/11.55 25.41/11.55 glueVBal4 fm1 EmptyFM = fm1; 25.41/11.55 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 25.41/11.55 25.41/11.55 glueVBal5 EmptyFM fm2 = fm2; 25.41/11.55 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 25.41/11.55 25.41/11.55 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.41/11.55 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 25.41/11.55 25.41/11.55 mkBalBranch6 key elt fm_L fm_R = mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 25.41/11.55 double_L fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.41/11.55 double_R (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 25.41/11.55 mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.41/11.55 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.41/11.55 mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr); 25.41/11.55 mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 25.41/11.55 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 25.41/11.55 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 25.41/11.55 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 25.41/11.55 mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll); 25.41/11.55 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 25.41/11.55 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 25.41/11.55 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 25.41/11.55 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 25.41/11.55 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 25.41/11.55 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 25.41/11.55 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 25.41/11.55 single_L fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 25.41/11.55 single_R (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 25.41/11.55 size_l = sizeFM fm_L; 25.41/11.55 size_r = sizeFM fm_R; 25.41/11.55 }; 25.41/11.55 25.41/11.55 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.41/11.55 mkBranch which key elt fm_l fm_r = let { 25.41/11.55 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.41/11.55 } in result where { 25.41/11.55 balance_ok = True; 25.41/11.55 left_ok = left_ok0 fm_l key fm_l; 25.41/11.55 left_ok0 fm_l key EmptyFM = True; 25.41/11.55 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 25.41/11.55 biggest_left_key = fst (findMax fm_l); 25.41/11.55 } in biggest_left_key < key; 25.41/11.55 left_size = sizeFM fm_l; 25.41/11.55 right_ok = right_ok0 fm_r key fm_r; 25.41/11.55 right_ok0 fm_r key EmptyFM = True; 25.41/11.55 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 25.41/11.55 smallest_right_key = fst (findMin fm_r); 25.41/11.55 } in key < smallest_right_key; 25.41/11.55 right_size = sizeFM fm_r; 25.41/11.55 unbox :: Int -> Int; 25.41/11.55 unbox x = x; 25.41/11.55 }; 25.41/11.55 25.41/11.55 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.41/11.55 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 25.41/11.55 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 25.41/11.55 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.41/11.55 25.41/11.55 mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_l < size_r) where { 25.41/11.55 mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.41/11.55 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 25.41/11.55 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy otherwise; 25.41/11.55 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 25.41/11.55 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_r < size_l); 25.41/11.55 size_l = sizeFM (Branch wu wv ww wx wy); 25.41/11.55 size_r = sizeFM (Branch xu xv xw xx xy); 25.41/11.55 }; 25.41/11.55 25.41/11.55 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 25.41/11.55 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 25.41/11.55 25.41/11.55 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 25.41/11.55 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 25.41/11.55 25.41/11.55 sIZE_RATIO :: Int; 25.41/11.55 sIZE_RATIO = 5; 25.41/11.55 25.41/11.55 sizeFM :: FiniteMap a b -> Int; 25.41/11.55 sizeFM EmptyFM = 0; 25.41/11.55 sizeFM (Branch vyz vzu size vzv vzw) = size; 25.41/11.55 25.41/11.55 unitFM :: a -> b -> FiniteMap a b; 25.41/11.55 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 25.41/11.55 25.41/11.55 } 25.41/11.55 module Maybe where { 25.41/11.55 import qualified FiniteMap; 25.41/11.55 import qualified Main; 25.41/11.55 import qualified Prelude; 25.41/11.55 } 25.41/11.55 module Main where { 25.41/11.55 import qualified FiniteMap; 25.41/11.55 import qualified Maybe; 25.41/11.55 import qualified Prelude; 25.41/11.55 } 25.41/11.55 25.41/11.55 ---------------------------------------- 25.41/11.55 25.41/11.55 (9) LetRed (EQUIVALENT) 25.41/11.55 Let/Where Reductions: 25.41/11.55 The bindings of the following Let/Where expression 25.41/11.55 "mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 25.41/11.55 double_L fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.41/11.55 ; 25.41/11.55 double_R (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 25.41/11.55 ; 25.41/11.55 mkBalBranch0 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.41/11.55 ; 25.41/11.55 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 25.41/11.55 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.41/11.55 ; 25.41/11.55 mkBalBranch02 fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr); 25.41/11.55 ; 25.41/11.55 mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 25.41/11.55 ; 25.41/11.55 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 25.41/11.55 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 25.41/11.55 ; 25.41/11.55 mkBalBranch12 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll); 25.41/11.55 ; 25.41/11.55 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 25.41/11.55 ; 25.41/11.55 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 25.41/11.55 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 25.41/11.55 ; 25.41/11.55 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 25.41/11.55 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 25.41/11.55 ; 25.41/11.55 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 25.41/11.55 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 25.41/11.55 ; 25.41/11.55 single_L fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 25.41/11.55 ; 25.41/11.55 single_R (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 25.41/11.55 ; 25.41/11.55 size_l = sizeFM fm_L; 25.41/11.55 ; 25.41/11.55 size_r = sizeFM fm_R; 25.41/11.55 } 25.41/11.55 " 25.41/11.55 are unpacked to the following functions on top level 25.41/11.55 "mkBalBranch6Double_L xvu xvv xvw xvx fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 xvu xvv fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.41/11.55 " 25.41/11.55 "mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvw; 25.41/11.55 " 25.41/11.55 "mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvx; 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch02 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr); 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 25.41/11.55 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R (mkBalBranch6Size_r xvu xvv xvw xvx > sIZE_RATIO * mkBalBranch6Size_l xvu xvv xvw xvx); 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr True = mkBalBranch6Single_R xvu xvv xvw xvx fm_L fm_R; 25.41/11.55 mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch6MkBalBranch10 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch6MkBalBranch12 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch10 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr True = mkBalBranch6Double_R xvu xvv xvw xvx fm_L fm_R; 25.41/11.55 " 25.41/11.55 "mkBalBranch6Double_R xvu xvv xvw xvx (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 xvu xvv fm_lrr fm_r); 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch00 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr True = mkBalBranch6Double_L xvu xvv xvw xvx fm_L fm_R; 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 25.41/11.55 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch12 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll); 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr True = mkBalBranch6Single_L xvu xvv xvw xvx fm_L fm_R; 25.41/11.55 mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch6MkBalBranch00 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.41/11.55 " 25.41/11.55 "mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch6MkBalBranch02 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.41/11.55 " 25.41/11.55 "mkBalBranch6Single_L xvu xvv xvw xvx fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 xvu xvv fm_l fm_rl) fm_rr; 25.79/11.65 " 25.79/11.65 "mkBalBranch6Single_R xvu xvv xvw xvx (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 xvu xvv fm_lr fm_r); 25.79/11.65 " 25.79/11.65 "mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 25.79/11.65 " 25.79/11.65 "mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 25.79/11.65 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R (mkBalBranch6Size_l xvu xvv xvw xvx > sIZE_RATIO * mkBalBranch6Size_r xvu xvv xvw xvx); 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "let { 25.79/11.65 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.79/11.65 } in result where { 25.79/11.65 balance_ok = True; 25.79/11.65 ; 25.79/11.65 left_ok = left_ok0 fm_l key fm_l; 25.79/11.65 ; 25.79/11.65 left_ok0 fm_l key EmptyFM = True; 25.79/11.65 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 25.79/11.65 biggest_left_key = fst (findMax fm_l); 25.79/11.65 } in biggest_left_key < key; 25.79/11.65 ; 25.79/11.65 left_size = sizeFM fm_l; 25.79/11.65 ; 25.79/11.65 right_ok = right_ok0 fm_r key fm_r; 25.79/11.65 ; 25.79/11.65 right_ok0 fm_r key EmptyFM = True; 25.79/11.65 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 25.79/11.65 smallest_right_key = fst (findMin fm_r); 25.79/11.65 } in key < smallest_right_key; 25.79/11.65 ; 25.79/11.65 right_size = sizeFM fm_r; 25.79/11.65 ; 25.79/11.65 unbox x = x; 25.79/11.65 } 25.79/11.65 " 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "mkBranchUnbox xvy xvz xwu x = x; 25.79/11.65 " 25.79/11.65 "mkBranchBalance_ok xvy xvz xwu = True; 25.79/11.65 " 25.79/11.65 "mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 25.79/11.65 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 25.79/11.65 " 25.79/11.65 "mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xvz xvy; 25.79/11.65 " 25.79/11.65 "mkBranchRight_size xvy xvz xwu = sizeFM xwu; 25.79/11.65 " 25.79/11.65 "mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 25.79/11.65 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 25.79/11.65 " 25.79/11.65 "mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xwu xvz xwu; 25.79/11.65 " 25.79/11.65 "mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "let { 25.79/11.65 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.79/11.65 } in result" 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwv xwy (1 + mkBranchLeft_size xwx xwv xwy + mkBranchRight_size xwx xwv xwy)) xwx xwy; 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_l < size_r) where { 25.79/11.65 glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.79/11.65 ; 25.79/11.65 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 25.79/11.65 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 25.79/11.65 ; 25.79/11.65 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 25.79/11.65 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_r < size_l); 25.79/11.65 ; 25.79/11.65 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 25.79/11.65 ; 25.79/11.65 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 25.79/11.65 } 25.79/11.65 " 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 25.79/11.65 " 25.79/11.65 "glueVBal3GlueVBal2 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 25.79/11.65 glueVBal3GlueVBal2 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw < glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw); 25.79/11.65 " 25.79/11.65 "glueVBal3GlueVBal0 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.79/11.65 " 25.79/11.65 "glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 25.79/11.65 glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal3GlueVBal0 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 25.79/11.65 " 25.79/11.65 "glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 25.79/11.65 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 25.79/11.65 ; 25.79/11.65 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 25.79/11.65 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 25.79/11.65 ; 25.79/11.65 mid_elt1 = mid_elt10 vv2; 25.79/11.65 ; 25.79/11.65 mid_elt10 (vww,mid_elt1) = mid_elt1; 25.79/11.65 ; 25.79/11.65 mid_elt2 = mid_elt20 vv3; 25.79/11.65 ; 25.79/11.65 mid_elt20 (vwv,mid_elt2) = mid_elt2; 25.79/11.65 ; 25.79/11.65 mid_key1 = mid_key10 vv2; 25.79/11.65 ; 25.79/11.65 mid_key10 (mid_key1,vwx) = mid_key1; 25.79/11.65 ; 25.79/11.65 mid_key2 = mid_key20 vv3; 25.79/11.65 ; 25.79/11.65 mid_key20 (mid_key2,vwy) = mid_key2; 25.79/11.65 ; 25.79/11.65 vv2 = findMax fm1; 25.79/11.65 ; 25.79/11.65 vv3 = findMin fm2; 25.79/11.65 } 25.79/11.65 " 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 25.79/11.65 " 25.79/11.65 "glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 25.79/11.65 " 25.79/11.65 "glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 25.79/11.65 " 25.79/11.65 "glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 25.79/11.65 " 25.79/11.65 "glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 25.79/11.65 " 25.79/11.65 "glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 25.79/11.65 " 25.79/11.65 "glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 25.79/11.65 " 25.79/11.65 "glueBal2Vv2 xyx xyy = findMax xyx; 25.79/11.65 " 25.79/11.65 "glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 25.79/11.65 " 25.79/11.65 "glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 25.79/11.65 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 25.79/11.65 " 25.79/11.65 "glueBal2Vv3 xyx xyy = findMin xyy; 25.79/11.65 " 25.79/11.65 "glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_l < size_r) where { 25.79/11.65 mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.79/11.65 ; 25.79/11.65 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 25.79/11.65 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy otherwise; 25.79/11.65 ; 25.79/11.65 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 25.79/11.65 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_r < size_l); 25.79/11.65 ; 25.79/11.65 size_l = sizeFM (Branch wu wv ww wx wy); 25.79/11.65 ; 25.79/11.65 size_r = sizeFM (Branch xu xv xw xx xy); 25.79/11.65 } 25.79/11.65 " 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 25.79/11.65 mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch3MkVBalBranch0 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy otherwise; 25.79/11.65 " 25.79/11.65 "mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 25.79/11.65 " 25.79/11.65 "mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 25.79/11.65 " 25.79/11.65 "mkVBalBranch3MkVBalBranch2 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 25.79/11.65 mkVBalBranch3MkVBalBranch2 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw < mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw); 25.79/11.65 " 25.79/11.65 "mkVBalBranch3MkVBalBranch0 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "let { 25.79/11.65 biggest_left_key = fst (findMax fm_l); 25.79/11.65 } in biggest_left_key < key" 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "mkBranchLeft_ok0Biggest_left_key yux = fst (findMax yux); 25.79/11.65 " 25.79/11.65 The bindings of the following Let/Where expression 25.79/11.65 "let { 25.79/11.65 smallest_right_key = fst (findMin fm_r); 25.79/11.65 } in key < smallest_right_key" 25.79/11.65 are unpacked to the following functions on top level 25.79/11.65 "mkBranchRight_ok0Smallest_right_key yuy = fst (findMin yuy); 25.79/11.65 " 25.79/11.65 25.79/11.65 ---------------------------------------- 25.79/11.65 25.79/11.65 (10) 25.79/11.65 Obligation: 25.79/11.65 mainModule Main 25.79/11.65 module FiniteMap where { 25.79/11.65 import qualified Main; 25.79/11.65 import qualified Maybe; 25.79/11.65 import qualified Prelude; 25.79/11.65 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 25.79/11.65 25.79/11.65 instance (Eq a, Eq b) => Eq FiniteMap a b where { 25.79/11.65 } 25.79/11.65 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 25.79/11.65 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 25.79/11.65 25.79/11.65 addToFM0 old new = new; 25.79/11.65 25.79/11.65 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 25.79/11.65 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 25.79/11.65 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt; 25.79/11.65 25.79/11.65 addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt True = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.79/11.65 25.79/11.65 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt); 25.79/11.65 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt otherwise; 25.79/11.65 25.79/11.65 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r; 25.79/11.65 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt (new_key > key); 25.79/11.65 25.79/11.65 addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt (new_key < key); 25.79/11.65 25.79/11.65 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 25.79/11.65 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 25.79/11.65 25.79/11.65 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.79/11.65 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 25.79/11.65 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.79/11.65 25.79/11.65 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 25.79/11.65 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 25.79/11.65 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.79/11.65 25.79/11.65 emptyFM :: FiniteMap a b; 25.79/11.65 emptyFM = EmptyFM; 25.79/11.65 25.79/11.65 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 25.79/11.65 filterFM p EmptyFM = filterFM3 p EmptyFM; 25.79/11.65 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 25.79/11.65 25.79/11.65 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.79/11.65 25.79/11.65 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 25.79/11.65 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 25.79/11.65 25.79/11.65 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 25.79/11.65 25.79/11.65 filterFM3 p EmptyFM = emptyFM; 25.79/11.65 filterFM3 xuy xuz = filterFM2 xuy xuz; 25.79/11.65 25.79/11.65 findMax :: FiniteMap b a -> (b,a); 25.79/11.65 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 25.79/11.65 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 25.79/11.65 25.79/11.65 findMin :: FiniteMap b a -> (b,a); 25.79/11.65 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 25.79/11.65 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 25.79/11.65 25.79/11.65 glueBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.79/11.65 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 25.79/11.65 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 25.79/11.65 glueBal fm1 fm2 = glueBal2 fm1 fm2; 25.79/11.65 25.79/11.65 glueBal2 fm1 fm2 = glueBal2GlueBal1 fm1 fm2 fm1 fm2 (sizeFM fm2 > sizeFM fm1); 25.79/11.65 25.79/11.65 glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 25.79/11.65 25.79/11.65 glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 25.79/11.65 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 25.79/11.65 25.79/11.65 glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 25.79/11.65 25.79/11.65 glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 25.79/11.65 25.79/11.65 glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 25.79/11.65 25.79/11.65 glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 25.79/11.65 25.79/11.65 glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 25.79/11.65 25.79/11.65 glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 25.79/11.65 25.79/11.65 glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 25.79/11.65 25.79/11.65 glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 25.79/11.65 25.79/11.65 glueBal2Vv2 xyx xyy = findMax xyx; 25.79/11.65 25.79/11.65 glueBal2Vv3 xyx xyy = findMin xyy; 25.79/11.65 25.79/11.65 glueBal3 fm1 EmptyFM = fm1; 25.79/11.65 glueBal3 wyv wyw = glueBal2 wyv wyw; 25.79/11.65 25.79/11.65 glueBal4 EmptyFM fm2 = fm2; 25.79/11.65 glueBal4 wyy wyz = glueBal3 wyy wyz; 25.79/11.65 25.79/11.65 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.79/11.65 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 25.79/11.65 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 25.79/11.65 glueVBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.79/11.65 25.79/11.65 glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3GlueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_l vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy < glueVBal3Size_r vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy); 25.79/11.65 25.79/11.65 glueVBal3GlueVBal0 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.79/11.65 25.79/11.65 glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 25.79/11.65 glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal3GlueVBal0 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 25.79/11.65 25.79/11.65 glueVBal3GlueVBal2 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 25.79/11.65 glueVBal3GlueVBal2 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw < glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw); 25.79/11.65 25.79/11.65 glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 25.79/11.65 25.79/11.65 glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 25.79/11.65 25.79/11.65 glueVBal4 fm1 EmptyFM = fm1; 25.79/11.65 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 25.79/11.65 25.79/11.65 glueVBal5 EmptyFM fm2 = fm2; 25.79/11.65 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 25.79/11.65 25.79/11.65 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.79/11.65 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 25.79/11.65 25.79/11.65 mkBalBranch6 key elt fm_L fm_R = mkBalBranch6MkBalBranch5 key elt fm_R fm_L key elt fm_L fm_R (mkBalBranch6Size_l key elt fm_R fm_L + mkBalBranch6Size_r key elt fm_R fm_L < 2); 25.79/11.65 25.79/11.65 mkBalBranch6Double_L xvu xvv xvw xvx fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 xvu xvv fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.79/11.65 25.79/11.65 mkBalBranch6Double_R xvu xvv xvw xvx (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 xvu xvv fm_lrr fm_r); 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch6MkBalBranch02 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch00 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr True = mkBalBranch6Double_L xvu xvv xvw xvx fm_L fm_R; 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr True = mkBalBranch6Single_L xvu xvv xvw xvx fm_L fm_R; 25.79/11.65 mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch6MkBalBranch00 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch02 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr); 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch6MkBalBranch12 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch10 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr True = mkBalBranch6Double_R xvu xvv xvw xvx fm_L fm_R; 25.79/11.65 25.79/11.65 mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr True = mkBalBranch6Single_R xvu xvv xvw xvx fm_L fm_R; 25.79/11.66 mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch6MkBalBranch10 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch12 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 25.79/11.66 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 25.79/11.66 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R (mkBalBranch6Size_l xvu xvv xvw xvx > sIZE_RATIO * mkBalBranch6Size_r xvu xvv xvw xvx); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 25.79/11.66 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R (mkBalBranch6Size_r xvu xvv xvw xvx > sIZE_RATIO * mkBalBranch6Size_l xvu xvv xvw xvx); 25.79/11.66 25.79/11.66 mkBalBranch6Single_L xvu xvv xvw xvx fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 xvu xvv fm_l fm_rl) fm_rr; 25.79/11.66 25.79/11.66 mkBalBranch6Single_R xvu xvv xvw xvx (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 xvu xvv fm_lr fm_r); 25.79/11.66 25.79/11.66 mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvx; 25.79/11.66 25.79/11.66 mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvw; 25.79/11.66 25.79/11.66 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.79/11.66 mkBranch which key elt fm_l fm_r = mkBranchResult key elt fm_l fm_r; 25.79/11.66 25.79/11.66 mkBranchBalance_ok xvy xvz xwu = True; 25.79/11.66 25.79/11.66 mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xvz xvy; 25.79/11.66 25.79/11.66 mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 25.79/11.66 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 25.79/11.66 25.79/11.66 mkBranchLeft_ok0Biggest_left_key yux = fst (findMax yux); 25.79/11.66 25.79/11.66 mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 25.79/11.66 25.79/11.66 mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwv xwy (1 + mkBranchLeft_size xwx xwv xwy + mkBranchRight_size xwx xwv xwy)) xwx xwy; 25.79/11.66 25.79/11.66 mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xwu xvz xwu; 25.79/11.66 25.79/11.66 mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 25.79/11.66 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 25.79/11.66 25.79/11.66 mkBranchRight_ok0Smallest_right_key yuy = fst (findMin yuy); 25.79/11.66 25.79/11.66 mkBranchRight_size xvy xvz xwu = sizeFM xwu; 25.79/11.66 25.79/11.66 mkBranchUnbox :: Ord a => -> (FiniteMap a b) ( -> a ( -> (FiniteMap a b) (Int -> Int))); 25.79/11.66 mkBranchUnbox xvy xvz xwu x = x; 25.79/11.66 25.79/11.66 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.79/11.66 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 25.79/11.66 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 25.79/11.66 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.79/11.66 25.79/11.66 mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3MkVBalBranch2 xu xv xw xx xy wu wv ww wx wy key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_l xu xv xw xx xy wu wv ww wx wy < mkVBalBranch3Size_r xu xv xw xx xy wu wv ww wx wy); 25.79/11.66 25.79/11.66 mkVBalBranch3MkVBalBranch0 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.79/11.66 25.79/11.66 mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 25.79/11.66 mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch3MkVBalBranch0 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy otherwise; 25.79/11.66 25.79/11.66 mkVBalBranch3MkVBalBranch2 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 25.79/11.66 mkVBalBranch3MkVBalBranch2 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw < mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw); 25.79/11.66 25.79/11.66 mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 25.79/11.66 25.79/11.66 mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 25.79/11.66 25.79/11.66 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 25.79/11.66 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 25.79/11.66 25.79/11.66 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 25.79/11.66 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 25.79/11.66 25.79/11.66 sIZE_RATIO :: Int; 25.79/11.66 sIZE_RATIO = 5; 25.79/11.66 25.79/11.66 sizeFM :: FiniteMap a b -> Int; 25.79/11.66 sizeFM EmptyFM = 0; 25.79/11.66 sizeFM (Branch vyz vzu size vzv vzw) = size; 25.79/11.66 25.79/11.66 unitFM :: a -> b -> FiniteMap a b; 25.79/11.66 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 25.79/11.66 25.79/11.66 } 25.79/11.66 module Maybe where { 25.79/11.66 import qualified FiniteMap; 25.79/11.66 import qualified Main; 25.79/11.66 import qualified Prelude; 25.79/11.66 } 25.79/11.66 module Main where { 25.79/11.66 import qualified FiniteMap; 25.79/11.66 import qualified Maybe; 25.79/11.66 import qualified Prelude; 25.79/11.66 } 25.79/11.66 25.79/11.66 ---------------------------------------- 25.79/11.66 25.79/11.66 (11) NumRed (SOUND) 25.79/11.66 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 25.79/11.66 ---------------------------------------- 25.79/11.66 25.79/11.66 (12) 25.79/11.66 Obligation: 25.79/11.66 mainModule Main 25.79/11.66 module FiniteMap where { 25.79/11.66 import qualified Main; 25.79/11.66 import qualified Maybe; 25.79/11.66 import qualified Prelude; 25.79/11.66 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 25.79/11.66 25.79/11.66 instance (Eq a, Eq b) => Eq FiniteMap b a where { 25.79/11.66 } 25.79/11.66 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 25.79/11.66 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 25.79/11.66 25.79/11.66 addToFM0 old new = new; 25.79/11.66 25.79/11.66 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 25.79/11.66 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 25.79/11.66 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt; 25.79/11.66 25.79/11.66 addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt True = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.79/11.66 25.79/11.66 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt); 25.79/11.66 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt otherwise; 25.79/11.66 25.79/11.66 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r; 25.79/11.66 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt (new_key > key); 25.79/11.66 25.79/11.66 addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt (new_key < key); 25.79/11.66 25.79/11.66 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 25.79/11.66 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 25.79/11.66 25.79/11.66 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.79/11.66 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 25.79/11.66 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.79/11.66 25.79/11.66 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 25.79/11.66 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 25.79/11.66 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.79/11.66 25.79/11.66 emptyFM :: FiniteMap a b; 25.79/11.66 emptyFM = EmptyFM; 25.79/11.66 25.79/11.66 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 25.79/11.66 filterFM p EmptyFM = filterFM3 p EmptyFM; 25.79/11.66 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 25.79/11.66 25.79/11.66 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.79/11.66 25.79/11.66 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 25.79/11.66 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 25.79/11.66 25.79/11.66 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 25.79/11.66 25.79/11.66 filterFM3 p EmptyFM = emptyFM; 25.79/11.66 filterFM3 xuy xuz = filterFM2 xuy xuz; 25.79/11.66 25.79/11.66 findMax :: FiniteMap b a -> (b,a); 25.79/11.66 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 25.79/11.66 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 25.79/11.66 25.79/11.66 findMin :: FiniteMap b a -> (b,a); 25.79/11.66 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 25.79/11.66 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 25.79/11.66 25.79/11.66 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.79/11.66 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 25.79/11.66 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 25.79/11.66 glueBal fm1 fm2 = glueBal2 fm1 fm2; 25.79/11.66 25.79/11.66 glueBal2 fm1 fm2 = glueBal2GlueBal1 fm1 fm2 fm1 fm2 (sizeFM fm2 > sizeFM fm1); 25.79/11.66 25.79/11.66 glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 25.79/11.66 25.79/11.66 glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 25.79/11.66 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 25.79/11.66 25.79/11.66 glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 25.79/11.66 25.79/11.66 glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 25.79/11.66 25.79/11.66 glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 25.79/11.66 25.79/11.66 glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 25.79/11.66 25.79/11.66 glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 25.79/11.66 25.79/11.66 glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 25.79/11.66 25.79/11.66 glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 25.79/11.66 25.79/11.66 glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 25.79/11.66 25.79/11.66 glueBal2Vv2 xyx xyy = findMax xyx; 25.79/11.66 25.79/11.66 glueBal2Vv3 xyx xyy = findMin xyy; 25.79/11.66 25.79/11.66 glueBal3 fm1 EmptyFM = fm1; 25.79/11.66 glueBal3 wyv wyw = glueBal2 wyv wyw; 25.79/11.66 25.79/11.66 glueBal4 EmptyFM fm2 = fm2; 25.79/11.66 glueBal4 wyy wyz = glueBal3 wyy wyz; 25.79/11.66 25.79/11.66 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.79/11.66 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 25.79/11.66 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 25.79/11.66 glueVBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.79/11.66 25.79/11.66 glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3GlueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_l vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy < glueVBal3Size_r vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy); 25.79/11.66 25.79/11.66 glueVBal3GlueVBal0 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy); 25.79/11.66 25.79/11.66 glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 25.79/11.66 glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal3GlueVBal0 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 25.79/11.66 25.79/11.66 glueVBal3GlueVBal2 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 25.79/11.66 glueVBal3GlueVBal2 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal3GlueVBal1 xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw < glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw); 25.79/11.66 25.79/11.66 glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 25.79/11.66 25.79/11.66 glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 25.79/11.66 25.79/11.66 glueVBal4 fm1 EmptyFM = fm1; 25.79/11.66 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 25.79/11.66 25.79/11.66 glueVBal5 EmptyFM fm2 = fm2; 25.79/11.66 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 25.79/11.66 25.79/11.66 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.79/11.66 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 25.79/11.66 25.79/11.66 mkBalBranch6 key elt fm_L fm_R = mkBalBranch6MkBalBranch5 key elt fm_R fm_L key elt fm_L fm_R (mkBalBranch6Size_l key elt fm_R fm_L + mkBalBranch6Size_r key elt fm_R fm_L < Pos (Succ (Succ Zero))); 25.79/11.66 25.79/11.66 mkBalBranch6Double_L xvu xvv xvw xvx fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) key_rl elt_rl (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) xvu xvv fm_l fm_rll) (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))) key_r elt_r fm_rlr fm_rr); 25.79/11.66 25.79/11.66 mkBalBranch6Double_R xvu xvv xvw xvx (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))) key_lr elt_lr (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) key_l elt_l fm_ll fm_lrl) (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) xvu xvv fm_lrr fm_r); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch6MkBalBranch02 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch00 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr True = mkBalBranch6Double_L xvu xvv xvw xvx fm_L fm_R; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr True = mkBalBranch6Single_L xvu xvv xvw xvx fm_L fm_R; 25.79/11.66 mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr False = mkBalBranch6MkBalBranch00 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr otherwise; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch02 xvu xvv xvw xvx fm_L fm_R (Branch vvx vvy vvz fm_rl fm_rr) = mkBalBranch6MkBalBranch01 xvu xvv xvw xvx fm_L fm_R vvx vvy vvz fm_rl fm_rr (sizeFM fm_rl < Pos (Succ (Succ Zero)) * sizeFM fm_rr); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch6MkBalBranch12 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch10 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr True = mkBalBranch6Double_R xvu xvv xvw xvx fm_L fm_R; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr True = mkBalBranch6Single_R xvu xvv xvw xvx fm_L fm_R; 25.79/11.66 mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr False = mkBalBranch6MkBalBranch10 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr otherwise; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch12 xvu xvv xvw xvx fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr) = mkBalBranch6MkBalBranch11 xvu xvv xvw xvx fm_L fm_R vuy vuz vvu fm_ll fm_lr (sizeFM fm_lr < Pos (Succ (Succ Zero)) * sizeFM fm_ll); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch (Pos (Succ (Succ Zero))) key elt fm_L fm_R; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 25.79/11.66 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 25.79/11.66 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R (mkBalBranch6Size_l xvu xvv xvw xvx > sIZE_RATIO * mkBalBranch6Size_r xvu xvv xvw xvx); 25.79/11.66 25.79/11.66 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch (Pos (Succ Zero)) key elt fm_L fm_R; 25.79/11.66 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R (mkBalBranch6Size_r xvu xvv xvw xvx > sIZE_RATIO * mkBalBranch6Size_l xvu xvv xvw xvx); 25.79/11.66 25.79/11.66 mkBalBranch6Single_L xvu xvv xvw xvx fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch (Pos (Succ (Succ (Succ Zero)))) key_r elt_r (mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) xvu xvv fm_l fm_rl) fm_rr; 25.79/11.66 25.79/11.66 mkBalBranch6Single_R xvu xvv xvw xvx (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))) key_l elt_l fm_ll (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))) xvu xvv fm_lr fm_r); 25.79/11.66 25.79/11.66 mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvx; 25.79/11.66 25.79/11.66 mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvw; 25.79/11.66 25.79/11.66 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.79/11.66 mkBranch which key elt fm_l fm_r = mkBranchResult key elt fm_l fm_r; 25.79/11.66 25.79/11.66 mkBranchBalance_ok xvy xvz xwu = True; 25.79/11.66 25.79/11.66 mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xvz xvy; 25.79/11.66 25.79/11.66 mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 25.79/11.66 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 25.79/11.66 25.79/11.66 mkBranchLeft_ok0Biggest_left_key yux = fst (findMax yux); 25.79/11.66 25.79/11.66 mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 25.79/11.66 25.79/11.66 mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwv xwy (Pos (Succ Zero) + mkBranchLeft_size xwx xwv xwy + mkBranchRight_size xwx xwv xwy)) xwx xwy; 25.79/11.66 25.79/11.66 mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xwu xvz xwu; 25.79/11.66 25.79/11.66 mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 25.79/11.66 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 25.79/11.66 25.79/11.66 mkBranchRight_ok0Smallest_right_key yuy = fst (findMin yuy); 25.79/11.66 25.79/11.66 mkBranchRight_size xvy xvz xwu = sizeFM xwu; 25.79/11.66 25.79/11.66 mkBranchUnbox :: Ord a => -> (FiniteMap a b) ( -> a ( -> (FiniteMap a b) (Int -> Int))); 25.79/11.66 mkBranchUnbox xvy xvz xwu x = x; 25.79/11.66 25.79/11.66 mkVBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.79/11.66 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 25.79/11.66 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 25.79/11.66 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.79/11.66 25.79/11.66 mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3MkVBalBranch2 xu xv xw xx xy wu wv ww wx wy key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_l xu xv xw xx xy wu wv ww wx wy < mkVBalBranch3Size_r xu xv xw xx xy wu wv ww wx wy); 25.79/11.66 25.79/11.66 mkVBalBranch3MkVBalBranch0 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))) key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.79/11.66 25.79/11.66 mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 25.79/11.66 mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch3MkVBalBranch0 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy otherwise; 25.79/11.66 25.79/11.66 mkVBalBranch3MkVBalBranch2 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 25.79/11.66 mkVBalBranch3MkVBalBranch2 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch3MkVBalBranch1 xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw < mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw); 25.79/11.66 25.79/11.66 mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 25.79/11.66 25.79/11.66 mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 25.79/11.66 25.79/11.66 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 25.79/11.66 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 25.79/11.66 25.79/11.66 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 25.79/11.66 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 25.79/11.66 25.79/11.66 sIZE_RATIO :: Int; 25.79/11.66 sIZE_RATIO = Pos (Succ (Succ (Succ (Succ (Succ Zero))))); 25.79/11.66 25.79/11.66 sizeFM :: FiniteMap a b -> Int; 25.79/11.66 sizeFM EmptyFM = Pos Zero; 25.79/11.66 sizeFM (Branch vyz vzu size vzv vzw) = size; 25.79/11.66 25.79/11.66 unitFM :: b -> a -> FiniteMap b a; 25.79/11.66 unitFM key elt = Branch key elt (Pos (Succ Zero)) emptyFM emptyFM; 25.79/11.66 25.79/11.66 } 25.79/11.66 module Maybe where { 25.79/11.66 import qualified FiniteMap; 25.79/11.66 import qualified Main; 25.79/11.66 import qualified Prelude; 25.79/11.66 } 25.79/11.66 module Main where { 25.79/11.66 import qualified FiniteMap; 25.79/11.66 import qualified Maybe; 25.79/11.66 import qualified Prelude; 25.79/11.66 } 25.79/11.66 25.79/11.66 ---------------------------------------- 25.79/11.66 25.79/11.66 (13) Narrow (SOUND) 25.79/11.66 Haskell To QDPs 25.79/11.66 25.79/11.66 digraph dp_graph { 25.79/11.66 node [outthreshold=100, inthreshold=100];1[label="FiniteMap.filterFM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 25.79/11.66 3[label="FiniteMap.filterFM yuz3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 25.79/11.66 4[label="FiniteMap.filterFM yuz3 yuz4",fontsize=16,color="burlywood",shape="triangle"];12541[label="yuz4/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];4 -> 12541[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12541 -> 5[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12542[label="yuz4/FiniteMap.Branch yuz40 yuz41 yuz42 yuz43 yuz44",fontsize=10,color="white",style="solid",shape="box"];4 -> 12542[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12542 -> 6[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 5[label="FiniteMap.filterFM yuz3 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];5 -> 7[label="",style="solid", color="black", weight=3]; 25.79/11.66 6[label="FiniteMap.filterFM yuz3 (FiniteMap.Branch yuz40 yuz41 yuz42 yuz43 yuz44)",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 25.79/11.66 7[label="FiniteMap.filterFM3 yuz3 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 25.79/11.66 8[label="FiniteMap.filterFM2 yuz3 (FiniteMap.Branch yuz40 yuz41 yuz42 yuz43 yuz44)",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 25.79/11.66 9[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];9 -> 11[label="",style="solid", color="black", weight=3]; 25.79/11.66 10 -> 12[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10[label="FiniteMap.filterFM1 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 (yuz3 yuz40 yuz41)",fontsize=16,color="magenta"];10 -> 13[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11[label="FiniteMap.EmptyFM",fontsize=16,color="green",shape="box"];13[label="yuz3 yuz40 yuz41",fontsize=16,color="green",shape="box"];13 -> 18[label="",style="dashed", color="green", weight=3]; 25.79/11.66 13 -> 19[label="",style="dashed", color="green", weight=3]; 25.79/11.66 12[label="FiniteMap.filterFM1 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 yuz5",fontsize=16,color="burlywood",shape="triangle"];12543[label="yuz5/False",fontsize=10,color="white",style="solid",shape="box"];12 -> 12543[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12543 -> 16[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12544[label="yuz5/True",fontsize=10,color="white",style="solid",shape="box"];12 -> 12544[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12544 -> 17[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 18[label="yuz40",fontsize=16,color="green",shape="box"];19[label="yuz41",fontsize=16,color="green",shape="box"];16[label="FiniteMap.filterFM1 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 False",fontsize=16,color="black",shape="box"];16 -> 20[label="",style="solid", color="black", weight=3]; 25.79/11.66 17[label="FiniteMap.filterFM1 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 True",fontsize=16,color="black",shape="box"];17 -> 21[label="",style="solid", color="black", weight=3]; 25.79/11.66 20[label="FiniteMap.filterFM0 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 otherwise",fontsize=16,color="black",shape="box"];20 -> 22[label="",style="solid", color="black", weight=3]; 25.79/11.66 21 -> 23[label="",style="dashed", color="red", weight=0]; 25.79/11.66 21[label="FiniteMap.mkVBalBranch yuz40 yuz41 (FiniteMap.filterFM yuz3 yuz43) (FiniteMap.filterFM yuz3 yuz44)",fontsize=16,color="magenta"];21 -> 24[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 21 -> 25[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 22[label="FiniteMap.filterFM0 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 True",fontsize=16,color="black",shape="box"];22 -> 26[label="",style="solid", color="black", weight=3]; 25.79/11.66 24 -> 4[label="",style="dashed", color="red", weight=0]; 25.79/11.66 24[label="FiniteMap.filterFM yuz3 yuz43",fontsize=16,color="magenta"];24 -> 27[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 25 -> 4[label="",style="dashed", color="red", weight=0]; 25.79/11.66 25[label="FiniteMap.filterFM yuz3 yuz44",fontsize=16,color="magenta"];25 -> 28[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 23[label="FiniteMap.mkVBalBranch yuz40 yuz41 yuz7 yuz6",fontsize=16,color="burlywood",shape="triangle"];12545[label="yuz7/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];23 -> 12545[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12545 -> 29[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12546[label="yuz7/FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=10,color="white",style="solid",shape="box"];23 -> 12546[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12546 -> 30[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 26 -> 31[label="",style="dashed", color="red", weight=0]; 25.79/11.66 26[label="FiniteMap.glueVBal (FiniteMap.filterFM yuz3 yuz43) (FiniteMap.filterFM yuz3 yuz44)",fontsize=16,color="magenta"];26 -> 32[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 26 -> 33[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 27[label="yuz43",fontsize=16,color="green",shape="box"];28[label="yuz44",fontsize=16,color="green",shape="box"];29[label="FiniteMap.mkVBalBranch yuz40 yuz41 FiniteMap.EmptyFM yuz6",fontsize=16,color="black",shape="box"];29 -> 34[label="",style="solid", color="black", weight=3]; 25.79/11.66 30[label="FiniteMap.mkVBalBranch yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) yuz6",fontsize=16,color="burlywood",shape="box"];12547[label="yuz6/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];30 -> 12547[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12547 -> 35[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12548[label="yuz6/FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=10,color="white",style="solid",shape="box"];30 -> 12548[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12548 -> 36[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 32 -> 4[label="",style="dashed", color="red", weight=0]; 25.79/11.66 32[label="FiniteMap.filterFM yuz3 yuz44",fontsize=16,color="magenta"];32 -> 37[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 33 -> 4[label="",style="dashed", color="red", weight=0]; 25.79/11.66 33[label="FiniteMap.filterFM yuz3 yuz43",fontsize=16,color="magenta"];33 -> 38[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 31[label="FiniteMap.glueVBal yuz9 yuz8",fontsize=16,color="burlywood",shape="triangle"];12549[label="yuz9/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];31 -> 12549[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12549 -> 39[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12550[label="yuz9/FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=10,color="white",style="solid",shape="box"];31 -> 12550[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12550 -> 40[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 34[label="FiniteMap.mkVBalBranch5 yuz40 yuz41 FiniteMap.EmptyFM yuz6",fontsize=16,color="black",shape="box"];34 -> 41[label="",style="solid", color="black", weight=3]; 25.79/11.66 35[label="FiniteMap.mkVBalBranch yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];35 -> 42[label="",style="solid", color="black", weight=3]; 25.79/11.66 36[label="FiniteMap.mkVBalBranch yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="black",shape="box"];36 -> 43[label="",style="solid", color="black", weight=3]; 25.79/11.66 37[label="yuz44",fontsize=16,color="green",shape="box"];38[label="yuz43",fontsize=16,color="green",shape="box"];39[label="FiniteMap.glueVBal FiniteMap.EmptyFM yuz8",fontsize=16,color="black",shape="box"];39 -> 44[label="",style="solid", color="black", weight=3]; 25.79/11.66 40[label="FiniteMap.glueVBal (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) yuz8",fontsize=16,color="burlywood",shape="box"];12551[label="yuz8/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];40 -> 12551[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12551 -> 45[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12552[label="yuz8/FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=10,color="white",style="solid",shape="box"];40 -> 12552[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12552 -> 46[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 41[label="FiniteMap.addToFM yuz6 yuz40 yuz41",fontsize=16,color="black",shape="triangle"];41 -> 47[label="",style="solid", color="black", weight=3]; 25.79/11.66 42[label="FiniteMap.mkVBalBranch4 yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];42 -> 48[label="",style="solid", color="black", weight=3]; 25.79/11.66 43[label="FiniteMap.mkVBalBranch3 yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="black",shape="box"];43 -> 49[label="",style="solid", color="black", weight=3]; 25.79/11.66 44[label="FiniteMap.glueVBal5 FiniteMap.EmptyFM yuz8",fontsize=16,color="black",shape="box"];44 -> 50[label="",style="solid", color="black", weight=3]; 25.79/11.66 45[label="FiniteMap.glueVBal (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];45 -> 51[label="",style="solid", color="black", weight=3]; 25.79/11.66 46[label="FiniteMap.glueVBal (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) (FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84)",fontsize=16,color="black",shape="box"];46 -> 52[label="",style="solid", color="black", weight=3]; 25.79/11.66 47[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz6 yuz40 yuz41",fontsize=16,color="burlywood",shape="box"];12553[label="yuz6/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];47 -> 12553[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12553 -> 53[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12554[label="yuz6/FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=10,color="white",style="solid",shape="box"];47 -> 12554[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12554 -> 54[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 48 -> 41[label="",style="dashed", color="red", weight=0]; 25.79/11.66 48[label="FiniteMap.addToFM (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) yuz40 yuz41",fontsize=16,color="magenta"];48 -> 55[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7486[label="",style="dashed", color="red", weight=0]; 25.79/11.66 49[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74 yuz40 yuz41 yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74 < FiniteMap.mkVBalBranch3Size_r yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74)",fontsize=16,color="magenta"];49 -> 7487[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7488[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7489[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7490[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7491[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7492[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7493[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7494[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7495[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7496[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7497[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7498[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 49 -> 7499[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 50[label="yuz8",fontsize=16,color="green",shape="box"];51[label="FiniteMap.glueVBal4 (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];51 -> 57[label="",style="solid", color="black", weight=3]; 25.79/11.66 52[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) (FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84)",fontsize=16,color="black",shape="box"];52 -> 58[label="",style="solid", color="black", weight=3]; 25.79/11.66 53[label="FiniteMap.addToFM_C FiniteMap.addToFM0 FiniteMap.EmptyFM yuz40 yuz41",fontsize=16,color="black",shape="box"];53 -> 59[label="",style="solid", color="black", weight=3]; 25.79/11.66 54[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64) yuz40 yuz41",fontsize=16,color="black",shape="box"];54 -> 60[label="",style="solid", color="black", weight=3]; 25.79/11.66 55[label="FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="green",shape="box"];7487[label="yuz61",fontsize=16,color="green",shape="box"];7488[label="yuz72",fontsize=16,color="green",shape="box"];7489[label="yuz64",fontsize=16,color="green",shape="box"];7490[label="yuz60",fontsize=16,color="green",shape="box"];7491[label="yuz71",fontsize=16,color="green",shape="box"];7492[label="yuz41",fontsize=16,color="green",shape="box"];7493[label="yuz62",fontsize=16,color="green",shape="box"];7494[label="yuz74",fontsize=16,color="green",shape="box"];7495[label="yuz63",fontsize=16,color="green",shape="box"];7496[label="yuz70",fontsize=16,color="green",shape="box"];7497[label="yuz73",fontsize=16,color="green",shape="box"];7498 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 7498[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74 < FiniteMap.mkVBalBranch3Size_r yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="magenta"];7498 -> 9078[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 7498 -> 9079[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 7499[label="yuz40",fontsize=16,color="green",shape="box"];7486[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz425",fontsize=16,color="burlywood",shape="triangle"];12555[label="yuz425/False",fontsize=10,color="white",style="solid",shape="box"];7486 -> 12555[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12555 -> 9080[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12556[label="yuz425/True",fontsize=10,color="white",style="solid",shape="box"];7486 -> 12556[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12556 -> 9081[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 57[label="FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="green",shape="box"];58 -> 9187[label="",style="dashed", color="red", weight=0]; 25.79/11.66 58[label="FiniteMap.glueVBal3GlueVBal2 yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84 < FiniteMap.glueVBal3Size_r yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84)",fontsize=16,color="magenta"];58 -> 9188[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9189[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9190[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9191[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9192[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9193[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9194[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9195[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9196[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9197[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 58 -> 9198[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 59[label="FiniteMap.addToFM_C4 FiniteMap.addToFM0 FiniteMap.EmptyFM yuz40 yuz41",fontsize=16,color="black",shape="box"];59 -> 63[label="",style="solid", color="black", weight=3]; 25.79/11.66 60[label="FiniteMap.addToFM_C3 FiniteMap.addToFM0 (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64) yuz40 yuz41",fontsize=16,color="black",shape="box"];60 -> 64[label="",style="solid", color="black", weight=3]; 25.79/11.66 9078[label="FiniteMap.mkVBalBranch3Size_r yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="black",shape="box"];9078 -> 9116[label="",style="solid", color="black", weight=3]; 25.79/11.66 9079 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9079[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="magenta"];9079 -> 9126[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4040[label="yuz185 < yuz180",fontsize=16,color="black",shape="triangle"];4040 -> 4186[label="",style="solid", color="black", weight=3]; 25.79/11.66 9080[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 False",fontsize=16,color="black",shape="box"];9080 -> 9118[label="",style="solid", color="black", weight=3]; 25.79/11.66 9081[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 True",fontsize=16,color="black",shape="box"];9081 -> 9119[label="",style="solid", color="black", weight=3]; 25.79/11.66 9188[label="yuz90",fontsize=16,color="green",shape="box"];9189[label="yuz82",fontsize=16,color="green",shape="box"];9190[label="yuz92",fontsize=16,color="green",shape="box"];9191[label="yuz83",fontsize=16,color="green",shape="box"];9192[label="yuz80",fontsize=16,color="green",shape="box"];9193[label="yuz94",fontsize=16,color="green",shape="box"];9194[label="yuz84",fontsize=16,color="green",shape="box"];9195[label="yuz93",fontsize=16,color="green",shape="box"];9196[label="yuz91",fontsize=16,color="green",shape="box"];9197 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9197[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84 < FiniteMap.glueVBal3Size_r yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="magenta"];9197 -> 10251[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9197 -> 10252[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9198[label="yuz81",fontsize=16,color="green",shape="box"];9187[label="FiniteMap.glueVBal3GlueVBal2 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz431",fontsize=16,color="burlywood",shape="triangle"];12557[label="yuz431/False",fontsize=10,color="white",style="solid",shape="box"];9187 -> 12557[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12557 -> 10253[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12558[label="yuz431/True",fontsize=10,color="white",style="solid",shape="box"];9187 -> 12558[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12558 -> 10254[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 63[label="FiniteMap.unitFM yuz40 yuz41",fontsize=16,color="black",shape="box"];63 -> 67[label="",style="solid", color="black", weight=3]; 25.79/11.66 64 -> 10837[label="",style="dashed", color="red", weight=0]; 25.79/11.66 64[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz60 yuz61 yuz62 yuz63 yuz64 yuz40 yuz41 (yuz40 < yuz60)",fontsize=16,color="magenta"];64 -> 10838[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10839[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10840[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10841[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10842[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10843[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10844[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 64 -> 10845[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9116 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9116[label="FiniteMap.sizeFM (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="magenta"];9116 -> 10499[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9126[label="FiniteMap.mkVBalBranch3Size_l yuz60 yuz61 yuz62 yuz63 yuz64 yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="black",shape="box"];9126 -> 9136[label="",style="solid", color="black", weight=3]; 25.79/11.66 9125[label="FiniteMap.sIZE_RATIO * yuz427",fontsize=16,color="black",shape="triangle"];9125 -> 9137[label="",style="solid", color="black", weight=3]; 25.79/11.66 4186[label="compare yuz185 yuz180 == LT",fontsize=16,color="black",shape="box"];4186 -> 4334[label="",style="solid", color="black", weight=3]; 25.79/11.66 9118 -> 9138[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9118[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 < FiniteMap.mkVBalBranch3Size_l yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844)",fontsize=16,color="magenta"];9118 -> 9139[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9119 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9119[label="FiniteMap.mkBalBranch yuz1780 yuz1781 (FiniteMap.mkVBalBranch yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) yuz1783) yuz1784",fontsize=16,color="magenta"];9119 -> 11618[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9119 -> 11619[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9119 -> 11620[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9119 -> 11621[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10251[label="FiniteMap.glueVBal3Size_r yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="black",shape="box"];10251 -> 10257[label="",style="solid", color="black", weight=3]; 25.79/11.66 10252 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10252[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="magenta"];10252 -> 10258[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10253[label="FiniteMap.glueVBal3GlueVBal2 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 False",fontsize=16,color="black",shape="box"];10253 -> 10259[label="",style="solid", color="black", weight=3]; 25.79/11.66 10254[label="FiniteMap.glueVBal3GlueVBal2 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 True",fontsize=16,color="black",shape="box"];10254 -> 10260[label="",style="solid", color="black", weight=3]; 25.79/11.66 67[label="FiniteMap.Branch yuz40 yuz41 (Pos (Succ Zero)) FiniteMap.emptyFM FiniteMap.emptyFM",fontsize=16,color="green",shape="box"];67 -> 71[label="",style="dashed", color="green", weight=3]; 25.79/11.66 67 -> 72[label="",style="dashed", color="green", weight=3]; 25.79/11.66 10838[label="yuz62",fontsize=16,color="green",shape="box"];10839[label="yuz61",fontsize=16,color="green",shape="box"];10840[label="yuz63",fontsize=16,color="green",shape="box"];10841[label="yuz41",fontsize=16,color="green",shape="box"];10842[label="yuz40 < yuz60",fontsize=16,color="black",shape="triangle"];10842 -> 10878[label="",style="solid", color="black", weight=3]; 25.79/11.66 10843[label="yuz64",fontsize=16,color="green",shape="box"];10844[label="yuz60",fontsize=16,color="green",shape="box"];10845[label="yuz40",fontsize=16,color="green",shape="box"];10837[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz504 yuz505 yuz506 yuz507 yuz508 yuz509 yuz510 yuz511",fontsize=16,color="burlywood",shape="triangle"];12559[label="yuz511/False",fontsize=10,color="white",style="solid",shape="box"];10837 -> 12559[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12559 -> 10879[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12560[label="yuz511/True",fontsize=10,color="white",style="solid",shape="box"];10837 -> 12560[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12560 -> 10880[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10499[label="FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="green",shape="box"];10498[label="FiniteMap.sizeFM yuz473",fontsize=16,color="burlywood",shape="triangle"];12561[label="yuz473/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];10498 -> 12561[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12561 -> 10514[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12562[label="yuz473/FiniteMap.Branch yuz4730 yuz4731 yuz4732 yuz4733 yuz4734",fontsize=10,color="white",style="solid",shape="box"];10498 -> 12562[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12562 -> 10515[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 9136 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9136[label="FiniteMap.sizeFM (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74)",fontsize=16,color="magenta"];9136 -> 10501[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9137[label="primMulInt FiniteMap.sIZE_RATIO yuz427",fontsize=16,color="black",shape="box"];9137 -> 9146[label="",style="solid", color="black", weight=3]; 25.79/11.66 4334[label="primCmpInt yuz185 yuz180 == LT",fontsize=16,color="burlywood",shape="triangle"];12563[label="yuz185/Pos yuz1850",fontsize=10,color="white",style="solid",shape="box"];4334 -> 12563[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12563 -> 4373[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12564[label="yuz185/Neg yuz1850",fontsize=10,color="white",style="solid",shape="box"];4334 -> 12564[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12564 -> 4374[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 9139 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9139[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 < FiniteMap.mkVBalBranch3Size_l yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="magenta"];9139 -> 9147[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9139 -> 9148[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9138[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz428",fontsize=16,color="burlywood",shape="triangle"];12565[label="yuz428/False",fontsize=10,color="white",style="solid",shape="box"];9138 -> 12565[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12565 -> 9149[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12566[label="yuz428/True",fontsize=10,color="white",style="solid",shape="box"];9138 -> 12566[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12566 -> 9150[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11618[label="yuz1780",fontsize=16,color="green",shape="box"];11619[label="yuz1784",fontsize=16,color="green",shape="box"];11620[label="FiniteMap.mkVBalBranch yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) yuz1783",fontsize=16,color="burlywood",shape="box"];12567[label="yuz1783/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11620 -> 12567[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12567 -> 11648[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12568[label="yuz1783/FiniteMap.Branch yuz17830 yuz17831 yuz17832 yuz17833 yuz17834",fontsize=10,color="white",style="solid",shape="box"];11620 -> 12568[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12568 -> 11649[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11621[label="yuz1781",fontsize=16,color="green",shape="box"];11617[label="FiniteMap.mkBalBranch yuz2440 yuz2441 yuz561 yuz2444",fontsize=16,color="black",shape="triangle"];11617 -> 11650[label="",style="solid", color="black", weight=3]; 25.79/11.66 10257 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10257[label="FiniteMap.sizeFM (FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84)",fontsize=16,color="magenta"];10257 -> 10502[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10258[label="FiniteMap.glueVBal3Size_l yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="black",shape="box"];10258 -> 10280[label="",style="solid", color="black", weight=3]; 25.79/11.66 10259 -> 10281[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10259[label="FiniteMap.glueVBal3GlueVBal1 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 < FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="magenta"];10259 -> 10282[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10260 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10260[label="FiniteMap.mkBalBranch yuz2440 yuz2441 (FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) yuz2443) yuz2444",fontsize=16,color="magenta"];10260 -> 11622[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 71 -> 9[label="",style="dashed", color="red", weight=0]; 25.79/11.66 71[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];72 -> 9[label="",style="dashed", color="red", weight=0]; 25.79/11.66 72[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];10878[label="compare yuz40 yuz60 == LT",fontsize=16,color="burlywood",shape="box"];12569[label="yuz40/()",fontsize=10,color="white",style="solid",shape="box"];10878 -> 12569[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12569 -> 10898[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10879[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz504 yuz505 yuz506 yuz507 yuz508 yuz509 yuz510 False",fontsize=16,color="black",shape="box"];10879 -> 10899[label="",style="solid", color="black", weight=3]; 25.79/11.66 10880[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz504 yuz505 yuz506 yuz507 yuz508 yuz509 yuz510 True",fontsize=16,color="black",shape="box"];10880 -> 10900[label="",style="solid", color="black", weight=3]; 25.79/11.66 10514[label="FiniteMap.sizeFM FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];10514 -> 10527[label="",style="solid", color="black", weight=3]; 25.79/11.66 10515[label="FiniteMap.sizeFM (FiniteMap.Branch yuz4730 yuz4731 yuz4732 yuz4733 yuz4734)",fontsize=16,color="black",shape="box"];10515 -> 10528[label="",style="solid", color="black", weight=3]; 25.79/11.66 10501[label="FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="green",shape="box"];9146[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) yuz427",fontsize=16,color="burlywood",shape="box"];12570[label="yuz427/Pos yuz4270",fontsize=10,color="white",style="solid",shape="box"];9146 -> 12570[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12570 -> 9162[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12571[label="yuz427/Neg yuz4270",fontsize=10,color="white",style="solid",shape="box"];9146 -> 12571[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12571 -> 9163[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4373[label="primCmpInt (Pos yuz1850) yuz180 == LT",fontsize=16,color="burlywood",shape="box"];12572[label="yuz1850/Succ yuz18500",fontsize=10,color="white",style="solid",shape="box"];4373 -> 12572[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12572 -> 4506[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12573[label="yuz1850/Zero",fontsize=10,color="white",style="solid",shape="box"];4373 -> 12573[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12573 -> 4507[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4374[label="primCmpInt (Neg yuz1850) yuz180 == LT",fontsize=16,color="burlywood",shape="box"];12574[label="yuz1850/Succ yuz18500",fontsize=10,color="white",style="solid",shape="box"];4374 -> 12574[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12574 -> 4508[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12575[label="yuz1850/Zero",fontsize=10,color="white",style="solid",shape="box"];4374 -> 12575[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12575 -> 4509[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 9147[label="FiniteMap.mkVBalBranch3Size_l yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="black",shape="triangle"];9147 -> 9164[label="",style="solid", color="black", weight=3]; 25.79/11.66 9148 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9148[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="magenta"];9148 -> 9165[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9149[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 False",fontsize=16,color="black",shape="box"];9149 -> 9166[label="",style="solid", color="black", weight=3]; 25.79/11.66 9150[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 True",fontsize=16,color="black",shape="box"];9150 -> 9167[label="",style="solid", color="black", weight=3]; 25.79/11.66 11648[label="FiniteMap.mkVBalBranch yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11648 -> 11670[label="",style="solid", color="black", weight=3]; 25.79/11.66 11649[label="FiniteMap.mkVBalBranch yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) (FiniteMap.Branch yuz17830 yuz17831 yuz17832 yuz17833 yuz17834)",fontsize=16,color="black",shape="box"];11649 -> 11671[label="",style="solid", color="black", weight=3]; 25.79/11.66 11650[label="FiniteMap.mkBalBranch6 yuz2440 yuz2441 yuz561 yuz2444",fontsize=16,color="black",shape="box"];11650 -> 11672[label="",style="solid", color="black", weight=3]; 25.79/11.66 10502[label="FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="green",shape="box"];10280 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10280[label="FiniteMap.sizeFM (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94)",fontsize=16,color="magenta"];10280 -> 10503[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10282 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10282[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 < FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="magenta"];10282 -> 10289[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10282 -> 10290[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10281[label="FiniteMap.glueVBal3GlueVBal1 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz434",fontsize=16,color="burlywood",shape="triangle"];12576[label="yuz434/False",fontsize=10,color="white",style="solid",shape="box"];10281 -> 12576[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12576 -> 10291[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12577[label="yuz434/True",fontsize=10,color="white",style="solid",shape="box"];10281 -> 12577[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12577 -> 10292[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11622[label="FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) yuz2443",fontsize=16,color="burlywood",shape="box"];12578[label="yuz2443/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11622 -> 12578[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12578 -> 11651[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12579[label="yuz2443/FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434",fontsize=10,color="white",style="solid",shape="box"];11622 -> 12579[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12579 -> 11652[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10898[label="compare () yuz60 == LT",fontsize=16,color="burlywood",shape="box"];12580[label="yuz60/()",fontsize=10,color="white",style="solid",shape="box"];10898 -> 12580[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12580 -> 10961[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10899 -> 10962[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10899[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz504 yuz505 yuz506 yuz507 yuz508 yuz509 yuz510 (yuz509 > yuz504)",fontsize=16,color="magenta"];10899 -> 10963[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10964[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10965[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10966[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10967[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10968[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10969[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10899 -> 10970[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10900 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10900[label="FiniteMap.mkBalBranch yuz504 yuz505 (FiniteMap.addToFM_C FiniteMap.addToFM0 yuz507 yuz509 yuz510) yuz508",fontsize=16,color="magenta"];10900 -> 11623[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10900 -> 11624[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10900 -> 11625[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10900 -> 11626[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10527[label="Pos Zero",fontsize=16,color="green",shape="box"];10528[label="yuz4732",fontsize=16,color="green",shape="box"];9162[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) (Pos yuz4270)",fontsize=16,color="black",shape="box"];9162 -> 10261[label="",style="solid", color="black", weight=3]; 25.79/11.66 9163[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) (Neg yuz4270)",fontsize=16,color="black",shape="box"];9163 -> 10262[label="",style="solid", color="black", weight=3]; 25.79/11.66 4506[label="primCmpInt (Pos (Succ yuz18500)) yuz180 == LT",fontsize=16,color="burlywood",shape="box"];12581[label="yuz180/Pos yuz1800",fontsize=10,color="white",style="solid",shape="box"];4506 -> 12581[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12581 -> 4541[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12582[label="yuz180/Neg yuz1800",fontsize=10,color="white",style="solid",shape="box"];4506 -> 12582[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12582 -> 4542[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4507[label="primCmpInt (Pos Zero) yuz180 == LT",fontsize=16,color="burlywood",shape="box"];12583[label="yuz180/Pos yuz1800",fontsize=10,color="white",style="solid",shape="box"];4507 -> 12583[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12583 -> 4543[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12584[label="yuz180/Neg yuz1800",fontsize=10,color="white",style="solid",shape="box"];4507 -> 12584[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12584 -> 4544[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4508[label="primCmpInt (Neg (Succ yuz18500)) yuz180 == LT",fontsize=16,color="burlywood",shape="box"];12585[label="yuz180/Pos yuz1800",fontsize=10,color="white",style="solid",shape="box"];4508 -> 12585[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12585 -> 4545[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12586[label="yuz180/Neg yuz1800",fontsize=10,color="white",style="solid",shape="box"];4508 -> 12586[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12586 -> 4546[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4509[label="primCmpInt (Neg Zero) yuz180 == LT",fontsize=16,color="burlywood",shape="box"];12587[label="yuz180/Pos yuz1800",fontsize=10,color="white",style="solid",shape="box"];4509 -> 12587[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12587 -> 4547[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12588[label="yuz180/Neg yuz1800",fontsize=10,color="white",style="solid",shape="box"];4509 -> 12588[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12588 -> 4548[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 9164 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9164[label="FiniteMap.sizeFM (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844)",fontsize=16,color="magenta"];9164 -> 10504[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9165[label="FiniteMap.mkVBalBranch3Size_r yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="black",shape="triangle"];9165 -> 10268[label="",style="solid", color="black", weight=3]; 25.79/11.66 9166[label="FiniteMap.mkVBalBranch3MkVBalBranch0 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 otherwise",fontsize=16,color="black",shape="box"];9166 -> 10269[label="",style="solid", color="black", weight=3]; 25.79/11.66 9167 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 9167[label="FiniteMap.mkBalBranch yuz1840 yuz1841 yuz1843 (FiniteMap.mkVBalBranch yuz185 yuz186 yuz1844 (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784))",fontsize=16,color="magenta"];9167 -> 11627[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9167 -> 11628[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9167 -> 11629[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 9167 -> 11630[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11670[label="FiniteMap.mkVBalBranch4 yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11670 -> 11689[label="",style="solid", color="black", weight=3]; 25.79/11.66 11671[label="FiniteMap.mkVBalBranch3 yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) (FiniteMap.Branch yuz17830 yuz17831 yuz17832 yuz17833 yuz17834)",fontsize=16,color="black",shape="triangle"];11671 -> 11690[label="",style="solid", color="black", weight=3]; 25.79/11.66 11672 -> 11691[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11672[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 (FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561 + FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561 < Pos (Succ (Succ Zero)))",fontsize=16,color="magenta"];11672 -> 11692[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10503[label="FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="green",shape="box"];10289[label="FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="black",shape="triangle"];10289 -> 10306[label="",style="solid", color="black", weight=3]; 25.79/11.66 10290 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10290[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="magenta"];10290 -> 10307[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10291[label="FiniteMap.glueVBal3GlueVBal1 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 False",fontsize=16,color="black",shape="box"];10291 -> 10308[label="",style="solid", color="black", weight=3]; 25.79/11.66 10292[label="FiniteMap.glueVBal3GlueVBal1 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 True",fontsize=16,color="black",shape="box"];10292 -> 10309[label="",style="solid", color="black", weight=3]; 25.79/11.66 11651[label="FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11651 -> 11673[label="",style="solid", color="black", weight=3]; 25.79/11.66 11652[label="FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434)",fontsize=16,color="black",shape="box"];11652 -> 11674[label="",style="solid", color="black", weight=3]; 25.79/11.66 10961[label="compare () () == LT",fontsize=16,color="black",shape="box"];10961 -> 10972[label="",style="solid", color="black", weight=3]; 25.79/11.66 10963[label="yuz510",fontsize=16,color="green",shape="box"];10964[label="yuz506",fontsize=16,color="green",shape="box"];10965[label="yuz509 > yuz504",fontsize=16,color="blue",shape="box"];12589[label="> :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12589[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12589 -> 10973[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12590[label="> :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12590[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12590 -> 10974[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12591[label="> :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12591[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12591 -> 10975[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12592[label="> :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12592[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12592 -> 10976[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12593[label="> :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12593[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12593 -> 10977[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12594[label="> :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12594[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12594 -> 10978[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12595[label="> :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12595[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12595 -> 10979[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12596[label="> :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12596[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12596 -> 10980[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12597[label="> :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12597[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12597 -> 10981[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12598[label="> :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12598[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12598 -> 10982[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12599[label="> :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12599[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12599 -> 10983[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12600[label="> :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12600[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12600 -> 10984[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12601[label="> :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12601[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12601 -> 10985[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12602[label="> :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];10965 -> 12602[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12602 -> 10986[label="",style="solid", color="blue", weight=3]; 25.79/11.66 10966[label="yuz509",fontsize=16,color="green",shape="box"];10967[label="yuz507",fontsize=16,color="green",shape="box"];10968[label="yuz505",fontsize=16,color="green",shape="box"];10969[label="yuz508",fontsize=16,color="green",shape="box"];10970[label="yuz504",fontsize=16,color="green",shape="box"];10962[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz522 yuz523 yuz524 yuz525 yuz526 yuz527 yuz528 yuz529",fontsize=16,color="burlywood",shape="triangle"];12603[label="yuz529/False",fontsize=10,color="white",style="solid",shape="box"];10962 -> 12603[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12603 -> 10987[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12604[label="yuz529/True",fontsize=10,color="white",style="solid",shape="box"];10962 -> 12604[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12604 -> 10988[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11623[label="yuz504",fontsize=16,color="green",shape="box"];11624[label="yuz508",fontsize=16,color="green",shape="box"];11625[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz507 yuz509 yuz510",fontsize=16,color="burlywood",shape="triangle"];12605[label="yuz507/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11625 -> 12605[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12605 -> 11653[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12606[label="yuz507/FiniteMap.Branch yuz5070 yuz5071 yuz5072 yuz5073 yuz5074",fontsize=10,color="white",style="solid",shape="box"];11625 -> 12606[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12606 -> 11654[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11626[label="yuz505",fontsize=16,color="green",shape="box"];10261[label="Pos (primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz4270)",fontsize=16,color="green",shape="box"];10261 -> 10293[label="",style="dashed", color="green", weight=3]; 25.79/11.66 10262[label="Neg (primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz4270)",fontsize=16,color="green",shape="box"];10262 -> 10294[label="",style="dashed", color="green", weight=3]; 25.79/11.66 4541[label="primCmpInt (Pos (Succ yuz18500)) (Pos yuz1800) == LT",fontsize=16,color="black",shape="box"];4541 -> 4582[label="",style="solid", color="black", weight=3]; 25.79/11.66 4542[label="primCmpInt (Pos (Succ yuz18500)) (Neg yuz1800) == LT",fontsize=16,color="black",shape="box"];4542 -> 4583[label="",style="solid", color="black", weight=3]; 25.79/11.66 4543[label="primCmpInt (Pos Zero) (Pos yuz1800) == LT",fontsize=16,color="burlywood",shape="box"];12607[label="yuz1800/Succ yuz18000",fontsize=10,color="white",style="solid",shape="box"];4543 -> 12607[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12607 -> 4584[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12608[label="yuz1800/Zero",fontsize=10,color="white",style="solid",shape="box"];4543 -> 12608[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12608 -> 4585[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4544[label="primCmpInt (Pos Zero) (Neg yuz1800) == LT",fontsize=16,color="burlywood",shape="box"];12609[label="yuz1800/Succ yuz18000",fontsize=10,color="white",style="solid",shape="box"];4544 -> 12609[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12609 -> 4586[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12610[label="yuz1800/Zero",fontsize=10,color="white",style="solid",shape="box"];4544 -> 12610[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12610 -> 4587[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4545[label="primCmpInt (Neg (Succ yuz18500)) (Pos yuz1800) == LT",fontsize=16,color="black",shape="box"];4545 -> 4588[label="",style="solid", color="black", weight=3]; 25.79/11.66 4546[label="primCmpInt (Neg (Succ yuz18500)) (Neg yuz1800) == LT",fontsize=16,color="black",shape="box"];4546 -> 4589[label="",style="solid", color="black", weight=3]; 25.79/11.66 4547[label="primCmpInt (Neg Zero) (Pos yuz1800) == LT",fontsize=16,color="burlywood",shape="box"];12611[label="yuz1800/Succ yuz18000",fontsize=10,color="white",style="solid",shape="box"];4547 -> 12611[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12611 -> 4590[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12612[label="yuz1800/Zero",fontsize=10,color="white",style="solid",shape="box"];4547 -> 12612[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12612 -> 4591[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4548[label="primCmpInt (Neg Zero) (Neg yuz1800) == LT",fontsize=16,color="burlywood",shape="box"];12613[label="yuz1800/Succ yuz18000",fontsize=10,color="white",style="solid",shape="box"];4548 -> 12613[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12613 -> 4592[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12614[label="yuz1800/Zero",fontsize=10,color="white",style="solid",shape="box"];4548 -> 12614[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12614 -> 4593[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10504[label="FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="green",shape="box"];10268 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10268[label="FiniteMap.sizeFM (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="magenta"];10268 -> 10505[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10269[label="FiniteMap.mkVBalBranch3MkVBalBranch0 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz1780 yuz1781 yuz1782 yuz1783 yuz1784 True",fontsize=16,color="black",shape="box"];10269 -> 10300[label="",style="solid", color="black", weight=3]; 25.79/11.66 11627[label="yuz1840",fontsize=16,color="green",shape="box"];11628[label="FiniteMap.mkVBalBranch yuz185 yuz186 yuz1844 (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="burlywood",shape="box"];12615[label="yuz1844/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11628 -> 12615[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12615 -> 11655[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12616[label="yuz1844/FiniteMap.Branch yuz18440 yuz18441 yuz18442 yuz18443 yuz18444",fontsize=10,color="white",style="solid",shape="box"];11628 -> 12616[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12616 -> 11656[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11629[label="yuz1843",fontsize=16,color="green",shape="box"];11630[label="yuz1841",fontsize=16,color="green",shape="box"];11689[label="FiniteMap.addToFM (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) yuz185 yuz186",fontsize=16,color="black",shape="triangle"];11689 -> 11693[label="",style="solid", color="black", weight=3]; 25.79/11.66 11690 -> 7486[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11690[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz185 yuz186 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 < FiniteMap.mkVBalBranch3Size_r yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844)",fontsize=16,color="magenta"];11690 -> 11694[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11690 -> 11695[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11690 -> 11696[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11690 -> 11697[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11690 -> 11698[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11690 -> 11699[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11692 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11692[label="FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561 + FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561 < Pos (Succ (Succ Zero))",fontsize=16,color="magenta"];11692 -> 11700[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11692 -> 11701[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11691[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 yuz562",fontsize=16,color="burlywood",shape="triangle"];12617[label="yuz562/False",fontsize=10,color="white",style="solid",shape="box"];11691 -> 12617[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12617 -> 11702[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12618[label="yuz562/True",fontsize=10,color="white",style="solid",shape="box"];11691 -> 12618[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12618 -> 11703[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10306 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10306[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];10306 -> 10506[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10307[label="FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="black",shape="triangle"];10307 -> 10334[label="",style="solid", color="black", weight=3]; 25.79/11.66 10308[label="FiniteMap.glueVBal3GlueVBal0 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 otherwise",fontsize=16,color="black",shape="box"];10308 -> 10335[label="",style="solid", color="black", weight=3]; 25.79/11.66 10309 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10309[label="FiniteMap.mkBalBranch yuz2400 yuz2401 yuz2403 (FiniteMap.glueVBal yuz2404 (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="magenta"];10309 -> 11631[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10309 -> 11632[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10309 -> 11633[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10309 -> 11634[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11673[label="FiniteMap.glueVBal4 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11673 -> 11704[label="",style="solid", color="black", weight=3]; 25.79/11.66 11674[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434)",fontsize=16,color="black",shape="triangle"];11674 -> 11705[label="",style="solid", color="black", weight=3]; 25.79/11.66 10972 -> 4631[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10972[label="EQ == LT",fontsize=16,color="magenta"];10973[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10973 -> 11001[label="",style="solid", color="black", weight=3]; 25.79/11.66 10974[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10974 -> 11002[label="",style="solid", color="black", weight=3]; 25.79/11.66 10975[label="yuz509 > yuz504",fontsize=16,color="black",shape="triangle"];10975 -> 11003[label="",style="solid", color="black", weight=3]; 25.79/11.66 10976[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10976 -> 11004[label="",style="solid", color="black", weight=3]; 25.79/11.66 10977[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10977 -> 11005[label="",style="solid", color="black", weight=3]; 25.79/11.66 10978[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10978 -> 11006[label="",style="solid", color="black", weight=3]; 25.79/11.66 10979[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10979 -> 11007[label="",style="solid", color="black", weight=3]; 25.79/11.66 10980[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10980 -> 11008[label="",style="solid", color="black", weight=3]; 25.79/11.66 10981[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10981 -> 11009[label="",style="solid", color="black", weight=3]; 25.79/11.66 10982[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10982 -> 11010[label="",style="solid", color="black", weight=3]; 25.79/11.66 10983[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10983 -> 11011[label="",style="solid", color="black", weight=3]; 25.79/11.66 10984[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10984 -> 11012[label="",style="solid", color="black", weight=3]; 25.79/11.66 10985[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10985 -> 11013[label="",style="solid", color="black", weight=3]; 25.79/11.66 10986[label="yuz509 > yuz504",fontsize=16,color="black",shape="box"];10986 -> 11014[label="",style="solid", color="black", weight=3]; 25.79/11.66 10987[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz522 yuz523 yuz524 yuz525 yuz526 yuz527 yuz528 False",fontsize=16,color="black",shape="box"];10987 -> 11015[label="",style="solid", color="black", weight=3]; 25.79/11.66 10988[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz522 yuz523 yuz524 yuz525 yuz526 yuz527 yuz528 True",fontsize=16,color="black",shape="box"];10988 -> 11016[label="",style="solid", color="black", weight=3]; 25.79/11.66 11653[label="FiniteMap.addToFM_C FiniteMap.addToFM0 FiniteMap.EmptyFM yuz509 yuz510",fontsize=16,color="black",shape="box"];11653 -> 11675[label="",style="solid", color="black", weight=3]; 25.79/11.66 11654[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz5070 yuz5071 yuz5072 yuz5073 yuz5074) yuz509 yuz510",fontsize=16,color="black",shape="box"];11654 -> 11676[label="",style="solid", color="black", weight=3]; 25.79/11.66 10293[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz4270",fontsize=16,color="burlywood",shape="triangle"];12619[label="yuz4270/Succ yuz42700",fontsize=10,color="white",style="solid",shape="box"];10293 -> 12619[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12619 -> 10310[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12620[label="yuz4270/Zero",fontsize=10,color="white",style="solid",shape="box"];10293 -> 12620[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12620 -> 10311[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10294 -> 10293[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10294[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz4270",fontsize=16,color="magenta"];10294 -> 10312[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4582[label="primCmpNat (Succ yuz18500) yuz1800 == LT",fontsize=16,color="burlywood",shape="triangle"];12621[label="yuz1800/Succ yuz18000",fontsize=10,color="white",style="solid",shape="box"];4582 -> 12621[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12621 -> 4627[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12622[label="yuz1800/Zero",fontsize=10,color="white",style="solid",shape="box"];4582 -> 12622[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12622 -> 4628[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4583[label="GT == LT",fontsize=16,color="black",shape="triangle"];4583 -> 4629[label="",style="solid", color="black", weight=3]; 25.79/11.66 4584[label="primCmpInt (Pos Zero) (Pos (Succ yuz18000)) == LT",fontsize=16,color="black",shape="box"];4584 -> 4630[label="",style="solid", color="black", weight=3]; 25.79/11.66 4585[label="primCmpInt (Pos Zero) (Pos Zero) == LT",fontsize=16,color="black",shape="box"];4585 -> 4631[label="",style="solid", color="black", weight=3]; 25.79/11.66 4586[label="primCmpInt (Pos Zero) (Neg (Succ yuz18000)) == LT",fontsize=16,color="black",shape="box"];4586 -> 4632[label="",style="solid", color="black", weight=3]; 25.79/11.66 4587[label="primCmpInt (Pos Zero) (Neg Zero) == LT",fontsize=16,color="black",shape="box"];4587 -> 4633[label="",style="solid", color="black", weight=3]; 25.79/11.66 4588[label="LT == LT",fontsize=16,color="black",shape="triangle"];4588 -> 4634[label="",style="solid", color="black", weight=3]; 25.79/11.66 4589[label="primCmpNat yuz1800 (Succ yuz18500) == LT",fontsize=16,color="burlywood",shape="triangle"];12623[label="yuz1800/Succ yuz18000",fontsize=10,color="white",style="solid",shape="box"];4589 -> 12623[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12623 -> 4635[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12624[label="yuz1800/Zero",fontsize=10,color="white",style="solid",shape="box"];4589 -> 12624[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12624 -> 4636[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4590[label="primCmpInt (Neg Zero) (Pos (Succ yuz18000)) == LT",fontsize=16,color="black",shape="box"];4590 -> 4637[label="",style="solid", color="black", weight=3]; 25.79/11.66 4591[label="primCmpInt (Neg Zero) (Pos Zero) == LT",fontsize=16,color="black",shape="box"];4591 -> 4638[label="",style="solid", color="black", weight=3]; 25.79/11.66 4592[label="primCmpInt (Neg Zero) (Neg (Succ yuz18000)) == LT",fontsize=16,color="black",shape="box"];4592 -> 4639[label="",style="solid", color="black", weight=3]; 25.79/11.66 4593[label="primCmpInt (Neg Zero) (Neg Zero) == LT",fontsize=16,color="black",shape="box"];4593 -> 4640[label="",style="solid", color="black", weight=3]; 25.79/11.66 10505[label="FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784",fontsize=16,color="green",shape="box"];10300 -> 10313[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10300[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))) yuz185 yuz186 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="magenta"];10300 -> 10314[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10315[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10316[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10317[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10318[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10319[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10320[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10321[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10322[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10323[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10324[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10325[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10300 -> 10326[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11655[label="FiniteMap.mkVBalBranch yuz185 yuz186 FiniteMap.EmptyFM (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="black",shape="box"];11655 -> 11677[label="",style="solid", color="black", weight=3]; 25.79/11.66 11656[label="FiniteMap.mkVBalBranch yuz185 yuz186 (FiniteMap.Branch yuz18440 yuz18441 yuz18442 yuz18443 yuz18444) (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="black",shape="box"];11656 -> 11678[label="",style="solid", color="black", weight=3]; 25.79/11.66 11693 -> 11625[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11693[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844) yuz185 yuz186",fontsize=16,color="magenta"];11693 -> 11743[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11693 -> 11744[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11693 -> 11745[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11694[label="yuz17831",fontsize=16,color="green",shape="box"];11695[label="yuz17834",fontsize=16,color="green",shape="box"];11696[label="yuz17830",fontsize=16,color="green",shape="box"];11697[label="yuz17832",fontsize=16,color="green",shape="box"];11698[label="yuz17833",fontsize=16,color="green",shape="box"];11699 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11699[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844 < FiniteMap.mkVBalBranch3Size_r yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="magenta"];11699 -> 11746[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11699 -> 11747[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11700[label="Pos (Succ (Succ Zero))",fontsize=16,color="green",shape="box"];11701 -> 11148[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11701[label="FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561 + FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11701 -> 11748[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11701 -> 11749[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11702[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 False",fontsize=16,color="black",shape="box"];11702 -> 11750[label="",style="solid", color="black", weight=3]; 25.79/11.66 11703[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 True",fontsize=16,color="black",shape="box"];11703 -> 11751[label="",style="solid", color="black", weight=3]; 25.79/11.66 10506[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];10334 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10334[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="magenta"];10334 -> 10507[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10335[label="FiniteMap.glueVBal3GlueVBal0 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2440 yuz2441 yuz2442 yuz2443 yuz2444 True",fontsize=16,color="black",shape="box"];10335 -> 10347[label="",style="solid", color="black", weight=3]; 25.79/11.66 11631[label="yuz2400",fontsize=16,color="green",shape="box"];11632[label="FiniteMap.glueVBal yuz2404 (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="burlywood",shape="box"];12625[label="yuz2404/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11632 -> 12625[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12625 -> 11657[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12626[label="yuz2404/FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044",fontsize=10,color="white",style="solid",shape="box"];11632 -> 12626[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12626 -> 11658[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11633[label="yuz2403",fontsize=16,color="green",shape="box"];11634[label="yuz2401",fontsize=16,color="green",shape="box"];11704[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];11705 -> 9187[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11705[label="FiniteMap.glueVBal3GlueVBal2 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434 < FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434)",fontsize=16,color="magenta"];11705 -> 11752[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11705 -> 11753[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11705 -> 11754[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11705 -> 11755[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11705 -> 11756[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11705 -> 11757[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4631[label="EQ == LT",fontsize=16,color="black",shape="triangle"];4631 -> 4711[label="",style="solid", color="black", weight=3]; 25.79/11.66 11001[label="compare yuz509 yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12627[label="yuz509/()",fontsize=10,color="white",style="solid",shape="box"];11001 -> 12627[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12627 -> 11082[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11002[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11002 -> 11083[label="",style="solid", color="black", weight=3]; 25.79/11.66 11003[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11003 -> 11084[label="",style="solid", color="black", weight=3]; 25.79/11.66 11004[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11004 -> 11085[label="",style="solid", color="black", weight=3]; 25.79/11.66 11005[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11005 -> 11086[label="",style="solid", color="black", weight=3]; 25.79/11.66 11006[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11006 -> 11087[label="",style="solid", color="black", weight=3]; 25.79/11.66 11007[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11007 -> 11088[label="",style="solid", color="black", weight=3]; 25.79/11.66 11008[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11008 -> 11089[label="",style="solid", color="black", weight=3]; 25.79/11.66 11009[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11009 -> 11090[label="",style="solid", color="black", weight=3]; 25.79/11.66 11010[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11010 -> 11091[label="",style="solid", color="black", weight=3]; 25.79/11.66 11011[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11011 -> 11092[label="",style="solid", color="black", weight=3]; 25.79/11.66 11012[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11012 -> 11093[label="",style="solid", color="black", weight=3]; 25.79/11.66 11013[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11013 -> 11094[label="",style="solid", color="black", weight=3]; 25.79/11.66 11014[label="compare yuz509 yuz504 == GT",fontsize=16,color="black",shape="box"];11014 -> 11095[label="",style="solid", color="black", weight=3]; 25.79/11.66 11015[label="FiniteMap.addToFM_C0 FiniteMap.addToFM0 yuz522 yuz523 yuz524 yuz525 yuz526 yuz527 yuz528 otherwise",fontsize=16,color="black",shape="box"];11015 -> 11096[label="",style="solid", color="black", weight=3]; 25.79/11.66 11016 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11016[label="FiniteMap.mkBalBranch yuz522 yuz523 yuz525 (FiniteMap.addToFM_C FiniteMap.addToFM0 yuz526 yuz527 yuz528)",fontsize=16,color="magenta"];11016 -> 11635[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11016 -> 11636[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11016 -> 11637[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11016 -> 11638[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11675[label="FiniteMap.addToFM_C4 FiniteMap.addToFM0 FiniteMap.EmptyFM yuz509 yuz510",fontsize=16,color="black",shape="box"];11675 -> 11706[label="",style="solid", color="black", weight=3]; 25.79/11.66 11676[label="FiniteMap.addToFM_C3 FiniteMap.addToFM0 (FiniteMap.Branch yuz5070 yuz5071 yuz5072 yuz5073 yuz5074) yuz509 yuz510",fontsize=16,color="black",shape="box"];11676 -> 11707[label="",style="solid", color="black", weight=3]; 25.79/11.66 10310[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10310 -> 10352[label="",style="solid", color="black", weight=3]; 25.79/11.66 10311[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) Zero",fontsize=16,color="black",shape="box"];10311 -> 10353[label="",style="solid", color="black", weight=3]; 25.79/11.66 10312[label="yuz4270",fontsize=16,color="green",shape="box"];4627[label="primCmpNat (Succ yuz18500) (Succ yuz18000) == LT",fontsize=16,color="black",shape="box"];4627 -> 4707[label="",style="solid", color="black", weight=3]; 25.79/11.66 4628[label="primCmpNat (Succ yuz18500) Zero == LT",fontsize=16,color="black",shape="box"];4628 -> 4708[label="",style="solid", color="black", weight=3]; 25.79/11.66 4629[label="False",fontsize=16,color="green",shape="box"];4630 -> 4589[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4630[label="primCmpNat Zero (Succ yuz18000) == LT",fontsize=16,color="magenta"];4630 -> 4709[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4630 -> 4710[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4632 -> 4583[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4632[label="GT == LT",fontsize=16,color="magenta"];4633 -> 4631[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4633[label="EQ == LT",fontsize=16,color="magenta"];4634[label="True",fontsize=16,color="green",shape="box"];4635[label="primCmpNat (Succ yuz18000) (Succ yuz18500) == LT",fontsize=16,color="black",shape="box"];4635 -> 4712[label="",style="solid", color="black", weight=3]; 25.79/11.66 4636[label="primCmpNat Zero (Succ yuz18500) == LT",fontsize=16,color="black",shape="box"];4636 -> 4713[label="",style="solid", color="black", weight=3]; 25.79/11.66 4637 -> 4588[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4637[label="LT == LT",fontsize=16,color="magenta"];4638 -> 4631[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4638[label="EQ == LT",fontsize=16,color="magenta"];4639 -> 4582[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4639[label="primCmpNat (Succ yuz18000) Zero == LT",fontsize=16,color="magenta"];4639 -> 4714[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4639 -> 4715[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4640 -> 4631[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4640[label="EQ == LT",fontsize=16,color="magenta"];10314[label="yuz1781",fontsize=16,color="green",shape="box"];10315[label="yuz1840",fontsize=16,color="green",shape="box"];10316[label="yuz1842",fontsize=16,color="green",shape="box"];10317[label="yuz1841",fontsize=16,color="green",shape="box"];10318[label="yuz1843",fontsize=16,color="green",shape="box"];10319[label="yuz1844",fontsize=16,color="green",shape="box"];10320[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))",fontsize=16,color="green",shape="box"];10321[label="yuz1783",fontsize=16,color="green",shape="box"];10322[label="yuz186",fontsize=16,color="green",shape="box"];10323[label="yuz185",fontsize=16,color="green",shape="box"];10324[label="yuz1782",fontsize=16,color="green",shape="box"];10325[label="yuz1784",fontsize=16,color="green",shape="box"];10326[label="yuz1780",fontsize=16,color="green",shape="box"];10313[label="FiniteMap.mkBranch (Pos (Succ yuz437)) yuz438 yuz439 (FiniteMap.Branch yuz440 yuz441 yuz442 yuz443 yuz444) (FiniteMap.Branch yuz445 yuz446 yuz447 yuz448 yuz449)",fontsize=16,color="black",shape="triangle"];10313 -> 10354[label="",style="solid", color="black", weight=3]; 25.79/11.66 11677[label="FiniteMap.mkVBalBranch5 yuz185 yuz186 FiniteMap.EmptyFM (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="black",shape="box"];11677 -> 11708[label="",style="solid", color="black", weight=3]; 25.79/11.66 11678 -> 11671[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11678[label="FiniteMap.mkVBalBranch3 yuz185 yuz186 (FiniteMap.Branch yuz18440 yuz18441 yuz18442 yuz18443 yuz18444) (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784)",fontsize=16,color="magenta"];11678 -> 11709[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11710[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11711[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11712[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11713[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11714[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11715[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11716[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11717[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11678 -> 11718[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11743[label="FiniteMap.Branch yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="green",shape="box"];11744[label="yuz186",fontsize=16,color="green",shape="box"];11745[label="yuz185",fontsize=16,color="green",shape="box"];11746 -> 9165[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11746[label="FiniteMap.mkVBalBranch3Size_r yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="magenta"];11746 -> 11788[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11746 -> 11789[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11746 -> 11790[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11746 -> 11791[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11746 -> 11792[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11747 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11747[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="magenta"];11747 -> 11793[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11748[label="FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="black",shape="triangle"];11748 -> 11794[label="",style="solid", color="black", weight=3]; 25.79/11.66 11749[label="FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="black",shape="triangle"];11749 -> 11795[label="",style="solid", color="black", weight=3]; 25.79/11.66 11148[label="yuz538 + yuz537",fontsize=16,color="black",shape="triangle"];11148 -> 11168[label="",style="solid", color="black", weight=3]; 25.79/11.66 11750 -> 11796[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11750[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 (FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561)",fontsize=16,color="magenta"];11750 -> 11797[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11751[label="FiniteMap.mkBranch (Pos (Succ Zero)) yuz2440 yuz2441 yuz561 yuz2444",fontsize=16,color="black",shape="box"];11751 -> 11798[label="",style="solid", color="black", weight=3]; 25.79/11.66 10507[label="FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="green",shape="box"];10347[label="FiniteMap.glueBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];10347 -> 10364[label="",style="solid", color="black", weight=3]; 25.79/11.66 11657[label="FiniteMap.glueVBal FiniteMap.EmptyFM (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11657 -> 11679[label="",style="solid", color="black", weight=3]; 25.79/11.66 11658[label="FiniteMap.glueVBal (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11658 -> 11680[label="",style="solid", color="black", weight=3]; 25.79/11.66 11752[label="yuz24432",fontsize=16,color="green",shape="box"];11753[label="yuz24433",fontsize=16,color="green",shape="box"];11754[label="yuz24430",fontsize=16,color="green",shape="box"];11755[label="yuz24434",fontsize=16,color="green",shape="box"];11756 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11756[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434 < FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434",fontsize=16,color="magenta"];11756 -> 11799[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11756 -> 11800[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11757[label="yuz24431",fontsize=16,color="green",shape="box"];4711[label="False",fontsize=16,color="green",shape="box"];11082[label="compare () yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12628[label="yuz504/()",fontsize=10,color="white",style="solid",shape="box"];11082 -> 12628[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12628 -> 11143[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11083[label="error []",fontsize=16,color="red",shape="box"];11084[label="primCmpInt yuz509 yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12629[label="yuz509/Pos yuz5090",fontsize=10,color="white",style="solid",shape="box"];11084 -> 12629[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12629 -> 11144[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12630[label="yuz509/Neg yuz5090",fontsize=10,color="white",style="solid",shape="box"];11084 -> 12630[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12630 -> 11145[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11085[label="error []",fontsize=16,color="red",shape="box"];11086[label="error []",fontsize=16,color="red",shape="box"];11087[label="error []",fontsize=16,color="red",shape="box"];11088[label="error []",fontsize=16,color="red",shape="box"];11089[label="error []",fontsize=16,color="red",shape="box"];11090[label="error []",fontsize=16,color="red",shape="box"];11091[label="error []",fontsize=16,color="red",shape="box"];11092[label="error []",fontsize=16,color="red",shape="box"];11093[label="error []",fontsize=16,color="red",shape="box"];11094[label="error []",fontsize=16,color="red",shape="box"];11095[label="error []",fontsize=16,color="red",shape="box"];11096[label="FiniteMap.addToFM_C0 FiniteMap.addToFM0 yuz522 yuz523 yuz524 yuz525 yuz526 yuz527 yuz528 True",fontsize=16,color="black",shape="box"];11096 -> 11146[label="",style="solid", color="black", weight=3]; 25.79/11.66 11635[label="yuz522",fontsize=16,color="green",shape="box"];11636 -> 11625[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11636[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz526 yuz527 yuz528",fontsize=16,color="magenta"];11636 -> 11659[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11636 -> 11660[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11636 -> 11661[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11637[label="yuz525",fontsize=16,color="green",shape="box"];11638[label="yuz523",fontsize=16,color="green",shape="box"];11706[label="FiniteMap.unitFM yuz509 yuz510",fontsize=16,color="black",shape="box"];11706 -> 11758[label="",style="solid", color="black", weight=3]; 25.79/11.66 11707 -> 10837[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11707[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz5070 yuz5071 yuz5072 yuz5073 yuz5074 yuz509 yuz510 (yuz509 < yuz5070)",fontsize=16,color="magenta"];11707 -> 11759[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11707 -> 11760[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11707 -> 11761[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11707 -> 11762[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11707 -> 11763[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11707 -> 11764[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10352[label="primPlusNat (primMulNat (Succ (Succ (Succ (Succ Zero)))) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10352 -> 10371[label="",style="solid", color="black", weight=3]; 25.79/11.66 10353[label="Zero",fontsize=16,color="green",shape="box"];4707[label="primCmpNat yuz18500 yuz18000 == LT",fontsize=16,color="burlywood",shape="triangle"];12631[label="yuz18500/Succ yuz185000",fontsize=10,color="white",style="solid",shape="box"];4707 -> 12631[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12631 -> 4998[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12632[label="yuz18500/Zero",fontsize=10,color="white",style="solid",shape="box"];4707 -> 12632[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12632 -> 4999[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4708 -> 4583[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4708[label="GT == LT",fontsize=16,color="magenta"];4709[label="yuz18000",fontsize=16,color="green",shape="box"];4710[label="Zero",fontsize=16,color="green",shape="box"];4712 -> 4707[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4712[label="primCmpNat yuz18000 yuz18500 == LT",fontsize=16,color="magenta"];4712 -> 5000[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4712 -> 5001[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 4713 -> 4588[label="",style="dashed", color="red", weight=0]; 25.79/11.66 4713[label="LT == LT",fontsize=16,color="magenta"];4714[label="yuz18000",fontsize=16,color="green",shape="box"];4715[label="Zero",fontsize=16,color="green",shape="box"];10354 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10354[label="FiniteMap.mkBranchResult yuz438 yuz439 (FiniteMap.Branch yuz440 yuz441 yuz442 yuz443 yuz444) (FiniteMap.Branch yuz445 yuz446 yuz447 yuz448 yuz449)",fontsize=16,color="magenta"];10354 -> 10682[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10354 -> 10683[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10354 -> 10684[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10354 -> 10685[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11708 -> 11689[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11708[label="FiniteMap.addToFM (FiniteMap.Branch yuz1780 yuz1781 yuz1782 yuz1783 yuz1784) yuz185 yuz186",fontsize=16,color="magenta"];11708 -> 11765[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11708 -> 11766[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11708 -> 11767[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11708 -> 11768[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11708 -> 11769[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11709[label="yuz1782",fontsize=16,color="green",shape="box"];11710[label="yuz18442",fontsize=16,color="green",shape="box"];11711[label="yuz18440",fontsize=16,color="green",shape="box"];11712[label="yuz18443",fontsize=16,color="green",shape="box"];11713[label="yuz1780",fontsize=16,color="green",shape="box"];11714[label="yuz1783",fontsize=16,color="green",shape="box"];11715[label="yuz1784",fontsize=16,color="green",shape="box"];11716[label="yuz1781",fontsize=16,color="green",shape="box"];11717[label="yuz18441",fontsize=16,color="green",shape="box"];11718[label="yuz18444",fontsize=16,color="green",shape="box"];11788[label="yuz17831",fontsize=16,color="green",shape="box"];11789[label="yuz17833",fontsize=16,color="green",shape="box"];11790[label="yuz17834",fontsize=16,color="green",shape="box"];11791[label="yuz17830",fontsize=16,color="green",shape="box"];11792[label="yuz17832",fontsize=16,color="green",shape="box"];11793 -> 9147[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11793[label="FiniteMap.mkVBalBranch3Size_l yuz17830 yuz17831 yuz17832 yuz17833 yuz17834 yuz1840 yuz1841 yuz1842 yuz1843 yuz1844",fontsize=16,color="magenta"];11793 -> 11801[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11793 -> 11802[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11793 -> 11803[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11793 -> 11804[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11793 -> 11805[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11794 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11794[label="FiniteMap.sizeFM yuz2444",fontsize=16,color="magenta"];11794 -> 11806[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11795 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11795[label="FiniteMap.sizeFM yuz561",fontsize=16,color="magenta"];11795 -> 11807[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11168[label="primPlusInt yuz538 yuz537",fontsize=16,color="burlywood",shape="box"];12633[label="yuz538/Pos yuz5380",fontsize=10,color="white",style="solid",shape="box"];11168 -> 12633[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12633 -> 11187[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12634[label="yuz538/Neg yuz5380",fontsize=10,color="white",style="solid",shape="box"];11168 -> 12634[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12634 -> 11188[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11797 -> 10975[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11797[label="FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11797 -> 11808[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11797 -> 11809[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11796[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 yuz564",fontsize=16,color="burlywood",shape="triangle"];12635[label="yuz564/False",fontsize=10,color="white",style="solid",shape="box"];11796 -> 12635[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12635 -> 11810[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12636[label="yuz564/True",fontsize=10,color="white",style="solid",shape="box"];11796 -> 12636[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12636 -> 11811[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11798 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11798[label="FiniteMap.mkBranchResult yuz2440 yuz2441 yuz561 yuz2444",fontsize=16,color="magenta"];11798 -> 11840[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11798 -> 11841[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11798 -> 11842[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11798 -> 11843[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10364[label="FiniteMap.glueBal2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];10364 -> 10382[label="",style="solid", color="black", weight=3]; 25.79/11.66 11679[label="FiniteMap.glueVBal5 FiniteMap.EmptyFM (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11679 -> 11719[label="",style="solid", color="black", weight=3]; 25.79/11.66 11680 -> 11674[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11680[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="magenta"];11680 -> 11720[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11721[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11722[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11723[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11724[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11725[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11726[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11727[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11728[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11680 -> 11729[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11799 -> 10307[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11799[label="FiniteMap.glueVBal3Size_r yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434",fontsize=16,color="magenta"];11799 -> 11844[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11799 -> 11845[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11799 -> 11846[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11799 -> 11847[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11799 -> 11848[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11800 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11800[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434",fontsize=16,color="magenta"];11800 -> 11849[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11143[label="compare () () == GT",fontsize=16,color="black",shape="box"];11143 -> 11179[label="",style="solid", color="black", weight=3]; 25.79/11.66 11144[label="primCmpInt (Pos yuz5090) yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12637[label="yuz5090/Succ yuz50900",fontsize=10,color="white",style="solid",shape="box"];11144 -> 12637[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12637 -> 11180[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12638[label="yuz5090/Zero",fontsize=10,color="white",style="solid",shape="box"];11144 -> 12638[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12638 -> 11181[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11145[label="primCmpInt (Neg yuz5090) yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12639[label="yuz5090/Succ yuz50900",fontsize=10,color="white",style="solid",shape="box"];11145 -> 12639[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12639 -> 11182[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12640[label="yuz5090/Zero",fontsize=10,color="white",style="solid",shape="box"];11145 -> 12640[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12640 -> 11183[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11146[label="FiniteMap.Branch yuz527 (FiniteMap.addToFM0 yuz523 yuz528) yuz524 yuz525 yuz526",fontsize=16,color="green",shape="box"];11146 -> 11184[label="",style="dashed", color="green", weight=3]; 25.79/11.66 11659[label="yuz526",fontsize=16,color="green",shape="box"];11660[label="yuz528",fontsize=16,color="green",shape="box"];11661[label="yuz527",fontsize=16,color="green",shape="box"];11758[label="FiniteMap.Branch yuz509 yuz510 (Pos (Succ Zero)) FiniteMap.emptyFM FiniteMap.emptyFM",fontsize=16,color="green",shape="box"];11758 -> 11812[label="",style="dashed", color="green", weight=3]; 25.79/11.66 11758 -> 11813[label="",style="dashed", color="green", weight=3]; 25.79/11.66 11759[label="yuz5072",fontsize=16,color="green",shape="box"];11760[label="yuz5071",fontsize=16,color="green",shape="box"];11761[label="yuz5073",fontsize=16,color="green",shape="box"];11762[label="yuz509 < yuz5070",fontsize=16,color="blue",shape="box"];12641[label="< :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12641[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12641 -> 11814[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12642[label="< :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12642[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12642 -> 11815[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12643[label="< :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12643[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12643 -> 11816[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12644[label="< :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12644[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12644 -> 11817[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12645[label="< :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12645[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12645 -> 11818[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12646[label="< :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12646[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12646 -> 11819[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12647[label="< :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12647[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12647 -> 11820[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12648[label="< :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12648[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12648 -> 11821[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12649[label="< :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12649[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12649 -> 11822[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12650[label="< :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12650[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12650 -> 11823[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12651[label="< :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12651[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12651 -> 11824[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12652[label="< :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12652[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12652 -> 11825[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12653[label="< :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12653[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12653 -> 11826[label="",style="solid", color="blue", weight=3]; 25.79/11.66 12654[label="< :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11762 -> 12654[label="",style="solid", color="blue", weight=9]; 25.79/11.66 12654 -> 11827[label="",style="solid", color="blue", weight=3]; 25.79/11.66 11763[label="yuz5074",fontsize=16,color="green",shape="box"];11764[label="yuz5070",fontsize=16,color="green",shape="box"];10371[label="primPlusNat (primPlusNat (primMulNat (Succ (Succ (Succ Zero))) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10371 -> 10392[label="",style="solid", color="black", weight=3]; 25.79/11.66 4998[label="primCmpNat (Succ yuz185000) yuz18000 == LT",fontsize=16,color="burlywood",shape="box"];12655[label="yuz18000/Succ yuz180000",fontsize=10,color="white",style="solid",shape="box"];4998 -> 12655[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12655 -> 5035[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12656[label="yuz18000/Zero",fontsize=10,color="white",style="solid",shape="box"];4998 -> 12656[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12656 -> 5036[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 4999[label="primCmpNat Zero yuz18000 == LT",fontsize=16,color="burlywood",shape="box"];12657[label="yuz18000/Succ yuz180000",fontsize=10,color="white",style="solid",shape="box"];4999 -> 12657[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12657 -> 5037[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12658[label="yuz18000/Zero",fontsize=10,color="white",style="solid",shape="box"];4999 -> 12658[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12658 -> 5038[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 5000[label="yuz18500",fontsize=16,color="green",shape="box"];5001[label="yuz18000",fontsize=16,color="green",shape="box"];10682[label="yuz438",fontsize=16,color="green",shape="box"];10683[label="FiniteMap.Branch yuz440 yuz441 yuz442 yuz443 yuz444",fontsize=16,color="green",shape="box"];10684[label="yuz439",fontsize=16,color="green",shape="box"];10685[label="FiniteMap.Branch yuz445 yuz446 yuz447 yuz448 yuz449",fontsize=16,color="green",shape="box"];10677[label="FiniteMap.mkBranchResult yuz2400 yuz2401 yuz2403 yuz492",fontsize=16,color="black",shape="triangle"];10677 -> 10700[label="",style="solid", color="black", weight=3]; 25.79/11.66 11765[label="yuz1782",fontsize=16,color="green",shape="box"];11766[label="yuz1780",fontsize=16,color="green",shape="box"];11767[label="yuz1783",fontsize=16,color="green",shape="box"];11768[label="yuz1781",fontsize=16,color="green",shape="box"];11769[label="yuz1784",fontsize=16,color="green",shape="box"];11801[label="yuz17831",fontsize=16,color="green",shape="box"];11802[label="yuz17833",fontsize=16,color="green",shape="box"];11803[label="yuz17834",fontsize=16,color="green",shape="box"];11804[label="yuz17830",fontsize=16,color="green",shape="box"];11805[label="yuz17832",fontsize=16,color="green",shape="box"];11806[label="yuz2444",fontsize=16,color="green",shape="box"];11807[label="yuz561",fontsize=16,color="green",shape="box"];11187[label="primPlusInt (Pos yuz5380) yuz537",fontsize=16,color="burlywood",shape="box"];12659[label="yuz537/Pos yuz5370",fontsize=10,color="white",style="solid",shape="box"];11187 -> 12659[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12659 -> 11268[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12660[label="yuz537/Neg yuz5370",fontsize=10,color="white",style="solid",shape="box"];11187 -> 12660[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12660 -> 11269[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11188[label="primPlusInt (Neg yuz5380) yuz537",fontsize=16,color="burlywood",shape="box"];12661[label="yuz537/Pos yuz5370",fontsize=10,color="white",style="solid",shape="box"];11188 -> 12661[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12661 -> 11270[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12662[label="yuz537/Neg yuz5370",fontsize=10,color="white",style="solid",shape="box"];11188 -> 12662[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12662 -> 11271[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11808 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11808[label="FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11808 -> 11850[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11809 -> 11748[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11809[label="FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11810[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 False",fontsize=16,color="black",shape="box"];11810 -> 11851[label="",style="solid", color="black", weight=3]; 25.79/11.66 11811[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 True",fontsize=16,color="black",shape="box"];11811 -> 11852[label="",style="solid", color="black", weight=3]; 25.79/11.66 11840[label="yuz2440",fontsize=16,color="green",shape="box"];11841[label="yuz561",fontsize=16,color="green",shape="box"];11842[label="yuz2441",fontsize=16,color="green",shape="box"];11843[label="yuz2444",fontsize=16,color="green",shape="box"];10382 -> 11247[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10382[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.sizeFM (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) > FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="magenta"];10382 -> 11248[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11719[label="FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="green",shape="box"];11720[label="yuz24040",fontsize=16,color="green",shape="box"];11721[label="yuz24042",fontsize=16,color="green",shape="box"];11722[label="yuz2444",fontsize=16,color="green",shape="box"];11723[label="yuz2441",fontsize=16,color="green",shape="box"];11724[label="yuz24044",fontsize=16,color="green",shape="box"];11725[label="yuz2442",fontsize=16,color="green",shape="box"];11726[label="yuz24043",fontsize=16,color="green",shape="box"];11727[label="yuz24041",fontsize=16,color="green",shape="box"];11728[label="yuz2443",fontsize=16,color="green",shape="box"];11729[label="yuz2440",fontsize=16,color="green",shape="box"];11844[label="yuz24432",fontsize=16,color="green",shape="box"];11845[label="yuz24433",fontsize=16,color="green",shape="box"];11846[label="yuz24430",fontsize=16,color="green",shape="box"];11847[label="yuz24434",fontsize=16,color="green",shape="box"];11848[label="yuz24431",fontsize=16,color="green",shape="box"];11849 -> 10289[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11849[label="FiniteMap.glueVBal3Size_l yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz24430 yuz24431 yuz24432 yuz24433 yuz24434",fontsize=16,color="magenta"];11849 -> 11878[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11849 -> 11879[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11849 -> 11880[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11849 -> 11881[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11849 -> 11882[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11179[label="EQ == GT",fontsize=16,color="black",shape="triangle"];11179 -> 11210[label="",style="solid", color="black", weight=3]; 25.79/11.66 11180[label="primCmpInt (Pos (Succ yuz50900)) yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12663[label="yuz504/Pos yuz5040",fontsize=10,color="white",style="solid",shape="box"];11180 -> 12663[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12663 -> 11211[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12664[label="yuz504/Neg yuz5040",fontsize=10,color="white",style="solid",shape="box"];11180 -> 12664[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12664 -> 11212[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11181[label="primCmpInt (Pos Zero) yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12665[label="yuz504/Pos yuz5040",fontsize=10,color="white",style="solid",shape="box"];11181 -> 12665[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12665 -> 11213[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12666[label="yuz504/Neg yuz5040",fontsize=10,color="white",style="solid",shape="box"];11181 -> 12666[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12666 -> 11214[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11182[label="primCmpInt (Neg (Succ yuz50900)) yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12667[label="yuz504/Pos yuz5040",fontsize=10,color="white",style="solid",shape="box"];11182 -> 12667[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12667 -> 11215[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12668[label="yuz504/Neg yuz5040",fontsize=10,color="white",style="solid",shape="box"];11182 -> 12668[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12668 -> 11216[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11183[label="primCmpInt (Neg Zero) yuz504 == GT",fontsize=16,color="burlywood",shape="box"];12669[label="yuz504/Pos yuz5040",fontsize=10,color="white",style="solid",shape="box"];11183 -> 12669[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12669 -> 11217[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12670[label="yuz504/Neg yuz5040",fontsize=10,color="white",style="solid",shape="box"];11183 -> 12670[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12670 -> 11218[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11184[label="FiniteMap.addToFM0 yuz523 yuz528",fontsize=16,color="black",shape="box"];11184 -> 11219[label="",style="solid", color="black", weight=3]; 25.79/11.66 11812[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];11812 -> 11853[label="",style="solid", color="black", weight=3]; 25.79/11.66 11813 -> 11812[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11813[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];11814 -> 10842[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11814[label="yuz509 < yuz5070",fontsize=16,color="magenta"];11814 -> 11854[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11814 -> 11855[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11815[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11815 -> 11856[label="",style="solid", color="black", weight=3]; 25.79/11.66 11816 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11816[label="yuz509 < yuz5070",fontsize=16,color="magenta"];11816 -> 11857[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11816 -> 11858[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11817[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11817 -> 11859[label="",style="solid", color="black", weight=3]; 25.79/11.66 11818[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11818 -> 11860[label="",style="solid", color="black", weight=3]; 25.79/11.66 11819[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11819 -> 11861[label="",style="solid", color="black", weight=3]; 25.79/11.66 11820[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11820 -> 11862[label="",style="solid", color="black", weight=3]; 25.79/11.66 11821[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11821 -> 11863[label="",style="solid", color="black", weight=3]; 25.79/11.66 11822[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11822 -> 11864[label="",style="solid", color="black", weight=3]; 25.79/11.66 11823[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11823 -> 11865[label="",style="solid", color="black", weight=3]; 25.79/11.66 11824[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11824 -> 11866[label="",style="solid", color="black", weight=3]; 25.79/11.66 11825[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11825 -> 11867[label="",style="solid", color="black", weight=3]; 25.79/11.66 11826[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11826 -> 11868[label="",style="solid", color="black", weight=3]; 25.79/11.66 11827[label="yuz509 < yuz5070",fontsize=16,color="black",shape="box"];11827 -> 11869[label="",style="solid", color="black", weight=3]; 25.79/11.66 10392[label="primPlusNat (primPlusNat (primPlusNat (primMulNat (Succ (Succ Zero)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10392 -> 10418[label="",style="solid", color="black", weight=3]; 25.79/11.66 5035[label="primCmpNat (Succ yuz185000) (Succ yuz180000) == LT",fontsize=16,color="black",shape="box"];5035 -> 5401[label="",style="solid", color="black", weight=3]; 25.79/11.66 5036[label="primCmpNat (Succ yuz185000) Zero == LT",fontsize=16,color="black",shape="box"];5036 -> 5402[label="",style="solid", color="black", weight=3]; 25.79/11.66 5037[label="primCmpNat Zero (Succ yuz180000) == LT",fontsize=16,color="black",shape="box"];5037 -> 5403[label="",style="solid", color="black", weight=3]; 25.79/11.66 5038[label="primCmpNat Zero Zero == LT",fontsize=16,color="black",shape="box"];5038 -> 5404[label="",style="solid", color="black", weight=3]; 25.79/11.66 10700[label="FiniteMap.Branch yuz2400 yuz2401 (FiniteMap.mkBranchUnbox yuz2403 yuz2400 yuz492 (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz2403 yuz2400 yuz492 + FiniteMap.mkBranchRight_size yuz2403 yuz2400 yuz492)) yuz2403 yuz492",fontsize=16,color="green",shape="box"];10700 -> 10729[label="",style="dashed", color="green", weight=3]; 25.79/11.66 11268[label="primPlusInt (Pos yuz5380) (Pos yuz5370)",fontsize=16,color="black",shape="box"];11268 -> 11310[label="",style="solid", color="black", weight=3]; 25.79/11.66 11269[label="primPlusInt (Pos yuz5380) (Neg yuz5370)",fontsize=16,color="black",shape="box"];11269 -> 11311[label="",style="solid", color="black", weight=3]; 25.79/11.66 11270[label="primPlusInt (Neg yuz5380) (Pos yuz5370)",fontsize=16,color="black",shape="box"];11270 -> 11312[label="",style="solid", color="black", weight=3]; 25.79/11.66 11271[label="primPlusInt (Neg yuz5380) (Neg yuz5370)",fontsize=16,color="black",shape="box"];11271 -> 11313[label="",style="solid", color="black", weight=3]; 25.79/11.66 11850 -> 11749[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11850[label="FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11851 -> 11883[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11851[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 (FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561)",fontsize=16,color="magenta"];11851 -> 11884[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11852[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz2440 yuz2441 yuz2444 yuz561 yuz561 yuz2444 yuz2444",fontsize=16,color="burlywood",shape="box"];12671[label="yuz2444/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11852 -> 12671[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12671 -> 11885[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12672[label="yuz2444/FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444",fontsize=10,color="white",style="solid",shape="box"];11852 -> 12672[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12672 -> 11886[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11248 -> 10975[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11248[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) > FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];11248 -> 11283[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11248 -> 11284[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11247[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) yuz543",fontsize=16,color="burlywood",shape="triangle"];12673[label="yuz543/False",fontsize=10,color="white",style="solid",shape="box"];11247 -> 12673[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12673 -> 11285[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12674[label="yuz543/True",fontsize=10,color="white",style="solid",shape="box"];11247 -> 12674[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12674 -> 11286[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11878[label="yuz24432",fontsize=16,color="green",shape="box"];11879[label="yuz24433",fontsize=16,color="green",shape="box"];11880[label="yuz24430",fontsize=16,color="green",shape="box"];11881[label="yuz24434",fontsize=16,color="green",shape="box"];11882[label="yuz24431",fontsize=16,color="green",shape="box"];11210[label="False",fontsize=16,color="green",shape="box"];11211[label="primCmpInt (Pos (Succ yuz50900)) (Pos yuz5040) == GT",fontsize=16,color="black",shape="box"];11211 -> 11287[label="",style="solid", color="black", weight=3]; 25.79/11.66 11212[label="primCmpInt (Pos (Succ yuz50900)) (Neg yuz5040) == GT",fontsize=16,color="black",shape="box"];11212 -> 11288[label="",style="solid", color="black", weight=3]; 25.79/11.66 11213[label="primCmpInt (Pos Zero) (Pos yuz5040) == GT",fontsize=16,color="burlywood",shape="box"];12675[label="yuz5040/Succ yuz50400",fontsize=10,color="white",style="solid",shape="box"];11213 -> 12675[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12675 -> 11289[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12676[label="yuz5040/Zero",fontsize=10,color="white",style="solid",shape="box"];11213 -> 12676[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12676 -> 11290[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11214[label="primCmpInt (Pos Zero) (Neg yuz5040) == GT",fontsize=16,color="burlywood",shape="box"];12677[label="yuz5040/Succ yuz50400",fontsize=10,color="white",style="solid",shape="box"];11214 -> 12677[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12677 -> 11291[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12678[label="yuz5040/Zero",fontsize=10,color="white",style="solid",shape="box"];11214 -> 12678[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12678 -> 11292[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11215[label="primCmpInt (Neg (Succ yuz50900)) (Pos yuz5040) == GT",fontsize=16,color="black",shape="box"];11215 -> 11293[label="",style="solid", color="black", weight=3]; 25.79/11.66 11216[label="primCmpInt (Neg (Succ yuz50900)) (Neg yuz5040) == GT",fontsize=16,color="black",shape="box"];11216 -> 11294[label="",style="solid", color="black", weight=3]; 25.79/11.66 11217[label="primCmpInt (Neg Zero) (Pos yuz5040) == GT",fontsize=16,color="burlywood",shape="box"];12679[label="yuz5040/Succ yuz50400",fontsize=10,color="white",style="solid",shape="box"];11217 -> 12679[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12679 -> 11295[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12680[label="yuz5040/Zero",fontsize=10,color="white",style="solid",shape="box"];11217 -> 12680[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12680 -> 11296[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11218[label="primCmpInt (Neg Zero) (Neg yuz5040) == GT",fontsize=16,color="burlywood",shape="box"];12681[label="yuz5040/Succ yuz50400",fontsize=10,color="white",style="solid",shape="box"];11218 -> 12681[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12681 -> 11297[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12682[label="yuz5040/Zero",fontsize=10,color="white",style="solid",shape="box"];11218 -> 12682[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12682 -> 11298[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11219[label="yuz528",fontsize=16,color="green",shape="box"];11853[label="FiniteMap.EmptyFM",fontsize=16,color="green",shape="box"];11854[label="yuz5070",fontsize=16,color="green",shape="box"];11855[label="yuz509",fontsize=16,color="green",shape="box"];11856[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11856 -> 11887[label="",style="solid", color="black", weight=3]; 25.79/11.66 11857[label="yuz5070",fontsize=16,color="green",shape="box"];11858[label="yuz509",fontsize=16,color="green",shape="box"];11859[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11859 -> 11888[label="",style="solid", color="black", weight=3]; 25.79/11.66 11860[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11860 -> 11889[label="",style="solid", color="black", weight=3]; 25.79/11.66 11861[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11861 -> 11890[label="",style="solid", color="black", weight=3]; 25.79/11.66 11862[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11862 -> 11891[label="",style="solid", color="black", weight=3]; 25.79/11.66 11863[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11863 -> 11892[label="",style="solid", color="black", weight=3]; 25.79/11.66 11864[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11864 -> 11893[label="",style="solid", color="black", weight=3]; 25.79/11.66 11865[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11865 -> 11894[label="",style="solid", color="black", weight=3]; 25.79/11.66 11866[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11866 -> 11895[label="",style="solid", color="black", weight=3]; 25.79/11.66 11867[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11867 -> 11896[label="",style="solid", color="black", weight=3]; 25.79/11.66 11868[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11868 -> 11897[label="",style="solid", color="black", weight=3]; 25.79/11.66 11869[label="compare yuz509 yuz5070 == LT",fontsize=16,color="black",shape="box"];11869 -> 11898[label="",style="solid", color="black", weight=3]; 25.79/11.66 10418[label="primPlusNat (primPlusNat (primPlusNat (primPlusNat (primMulNat (Succ Zero) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10418 -> 10553[label="",style="solid", color="black", weight=3]; 25.79/11.66 5401 -> 4707[label="",style="dashed", color="red", weight=0]; 25.79/11.66 5401[label="primCmpNat yuz185000 yuz180000 == LT",fontsize=16,color="magenta"];5401 -> 5513[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 5401 -> 5514[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 5402 -> 4583[label="",style="dashed", color="red", weight=0]; 25.79/11.66 5402[label="GT == LT",fontsize=16,color="magenta"];5403 -> 4588[label="",style="dashed", color="red", weight=0]; 25.79/11.66 5403[label="LT == LT",fontsize=16,color="magenta"];5404 -> 4631[label="",style="dashed", color="red", weight=0]; 25.79/11.66 5404[label="EQ == LT",fontsize=16,color="magenta"];10729[label="FiniteMap.mkBranchUnbox yuz2403 yuz2400 yuz492 (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz2403 yuz2400 yuz492 + FiniteMap.mkBranchRight_size yuz2403 yuz2400 yuz492)",fontsize=16,color="black",shape="box"];10729 -> 10738[label="",style="solid", color="black", weight=3]; 25.79/11.66 11310[label="Pos (primPlusNat yuz5380 yuz5370)",fontsize=16,color="green",shape="box"];11310 -> 11376[label="",style="dashed", color="green", weight=3]; 25.79/11.66 11311[label="primMinusNat yuz5380 yuz5370",fontsize=16,color="burlywood",shape="triangle"];12683[label="yuz5380/Succ yuz53800",fontsize=10,color="white",style="solid",shape="box"];11311 -> 12683[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12683 -> 11377[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12684[label="yuz5380/Zero",fontsize=10,color="white",style="solid",shape="box"];11311 -> 12684[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12684 -> 11378[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11312 -> 11311[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11312[label="primMinusNat yuz5370 yuz5380",fontsize=16,color="magenta"];11312 -> 11379[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11312 -> 11380[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11313[label="Neg (primPlusNat yuz5380 yuz5370)",fontsize=16,color="green",shape="box"];11313 -> 11381[label="",style="dashed", color="green", weight=3]; 25.79/11.66 11884 -> 10975[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11884[label="FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11884 -> 11899[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11884 -> 11900[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11883[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 yuz568",fontsize=16,color="burlywood",shape="triangle"];12685[label="yuz568/False",fontsize=10,color="white",style="solid",shape="box"];11883 -> 12685[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12685 -> 11901[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12686[label="yuz568/True",fontsize=10,color="white",style="solid",shape="box"];11883 -> 12686[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12686 -> 11902[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11885[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz2440 yuz2441 FiniteMap.EmptyFM yuz561 yuz561 FiniteMap.EmptyFM FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11885 -> 11915[label="",style="solid", color="black", weight=3]; 25.79/11.66 11886[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444)",fontsize=16,color="black",shape="box"];11886 -> 11916[label="",style="solid", color="black", weight=3]; 25.79/11.66 11283 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11283[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];11283 -> 11320[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11284 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11284[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="magenta"];11284 -> 11321[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11285[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) False",fontsize=16,color="black",shape="box"];11285 -> 11322[label="",style="solid", color="black", weight=3]; 25.79/11.66 11286[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) True",fontsize=16,color="black",shape="box"];11286 -> 11323[label="",style="solid", color="black", weight=3]; 25.79/11.66 11287[label="primCmpNat (Succ yuz50900) yuz5040 == GT",fontsize=16,color="burlywood",shape="triangle"];12687[label="yuz5040/Succ yuz50400",fontsize=10,color="white",style="solid",shape="box"];11287 -> 12687[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12687 -> 11324[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12688[label="yuz5040/Zero",fontsize=10,color="white",style="solid",shape="box"];11287 -> 12688[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12688 -> 11325[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11288[label="GT == GT",fontsize=16,color="black",shape="triangle"];11288 -> 11326[label="",style="solid", color="black", weight=3]; 25.79/11.66 11289[label="primCmpInt (Pos Zero) (Pos (Succ yuz50400)) == GT",fontsize=16,color="black",shape="box"];11289 -> 11327[label="",style="solid", color="black", weight=3]; 25.79/11.66 11290[label="primCmpInt (Pos Zero) (Pos Zero) == GT",fontsize=16,color="black",shape="box"];11290 -> 11328[label="",style="solid", color="black", weight=3]; 25.79/11.66 11291[label="primCmpInt (Pos Zero) (Neg (Succ yuz50400)) == GT",fontsize=16,color="black",shape="box"];11291 -> 11329[label="",style="solid", color="black", weight=3]; 25.79/11.66 11292[label="primCmpInt (Pos Zero) (Neg Zero) == GT",fontsize=16,color="black",shape="box"];11292 -> 11330[label="",style="solid", color="black", weight=3]; 25.79/11.66 11293[label="LT == GT",fontsize=16,color="black",shape="triangle"];11293 -> 11331[label="",style="solid", color="black", weight=3]; 25.79/11.66 11294[label="primCmpNat yuz5040 (Succ yuz50900) == GT",fontsize=16,color="burlywood",shape="triangle"];12689[label="yuz5040/Succ yuz50400",fontsize=10,color="white",style="solid",shape="box"];11294 -> 12689[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12689 -> 11332[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12690[label="yuz5040/Zero",fontsize=10,color="white",style="solid",shape="box"];11294 -> 12690[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12690 -> 11333[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11295[label="primCmpInt (Neg Zero) (Pos (Succ yuz50400)) == GT",fontsize=16,color="black",shape="box"];11295 -> 11334[label="",style="solid", color="black", weight=3]; 25.79/11.66 11296[label="primCmpInt (Neg Zero) (Pos Zero) == GT",fontsize=16,color="black",shape="box"];11296 -> 11335[label="",style="solid", color="black", weight=3]; 25.79/11.66 11297[label="primCmpInt (Neg Zero) (Neg (Succ yuz50400)) == GT",fontsize=16,color="black",shape="box"];11297 -> 11336[label="",style="solid", color="black", weight=3]; 25.79/11.66 11298[label="primCmpInt (Neg Zero) (Neg Zero) == GT",fontsize=16,color="black",shape="box"];11298 -> 11337[label="",style="solid", color="black", weight=3]; 25.79/11.66 11887[label="error []",fontsize=16,color="red",shape="box"];11888[label="error []",fontsize=16,color="red",shape="box"];11889[label="error []",fontsize=16,color="red",shape="box"];11890[label="error []",fontsize=16,color="red",shape="box"];11891[label="error []",fontsize=16,color="red",shape="box"];11892[label="error []",fontsize=16,color="red",shape="box"];11893[label="error []",fontsize=16,color="red",shape="box"];11894[label="error []",fontsize=16,color="red",shape="box"];11895[label="error []",fontsize=16,color="red",shape="box"];11896[label="error []",fontsize=16,color="red",shape="box"];11897[label="error []",fontsize=16,color="red",shape="box"];11898[label="error []",fontsize=16,color="red",shape="box"];10553[label="primPlusNat (primPlusNat (primPlusNat (primPlusNat (primPlusNat (primMulNat Zero (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10553 -> 10716[label="",style="solid", color="black", weight=3]; 25.79/11.66 5513[label="yuz180000",fontsize=16,color="green",shape="box"];5514[label="yuz185000",fontsize=16,color="green",shape="box"];10738 -> 11148[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10738[label="Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz2403 yuz2400 yuz492 + FiniteMap.mkBranchRight_size yuz2403 yuz2400 yuz492",fontsize=16,color="magenta"];10738 -> 11159[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10738 -> 11160[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11376 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11376[label="primPlusNat yuz5380 yuz5370",fontsize=16,color="magenta"];11376 -> 11440[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11376 -> 11441[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11377[label="primMinusNat (Succ yuz53800) yuz5370",fontsize=16,color="burlywood",shape="box"];12691[label="yuz5370/Succ yuz53700",fontsize=10,color="white",style="solid",shape="box"];11377 -> 12691[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12691 -> 11442[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12692[label="yuz5370/Zero",fontsize=10,color="white",style="solid",shape="box"];11377 -> 12692[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12692 -> 11443[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11378[label="primMinusNat Zero yuz5370",fontsize=16,color="burlywood",shape="box"];12693[label="yuz5370/Succ yuz53700",fontsize=10,color="white",style="solid",shape="box"];11378 -> 12693[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12693 -> 11444[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12694[label="yuz5370/Zero",fontsize=10,color="white",style="solid",shape="box"];11378 -> 12694[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12694 -> 11445[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11379[label="yuz5370",fontsize=16,color="green",shape="box"];11380[label="yuz5380",fontsize=16,color="green",shape="box"];11381 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11381[label="primPlusNat yuz5380 yuz5370",fontsize=16,color="magenta"];11381 -> 11446[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11381 -> 11447[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11899 -> 9125[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11899[label="FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11899 -> 11917[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11900 -> 11749[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11900[label="FiniteMap.mkBalBranch6Size_l yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11901[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 False",fontsize=16,color="black",shape="box"];11901 -> 11918[label="",style="solid", color="black", weight=3]; 25.79/11.66 11902[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 True",fontsize=16,color="black",shape="box"];11902 -> 11919[label="",style="solid", color="black", weight=3]; 25.79/11.66 11915[label="error []",fontsize=16,color="red",shape="box"];11916[label="FiniteMap.mkBalBranch6MkBalBranch02 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444)",fontsize=16,color="black",shape="box"];11916 -> 11928[label="",style="solid", color="black", weight=3]; 25.79/11.66 11320[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];11321[label="FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="green",shape="box"];11322[label="FiniteMap.glueBal2GlueBal0 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) otherwise",fontsize=16,color="black",shape="box"];11322 -> 11390[label="",style="solid", color="black", weight=3]; 25.79/11.66 11323 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11323[label="FiniteMap.mkBalBranch (FiniteMap.glueBal2Mid_key2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)) (FiniteMap.glueBal2Mid_elt2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.deleteMin (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="magenta"];11323 -> 11639[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11323 -> 11640[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11323 -> 11641[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11323 -> 11642[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11324[label="primCmpNat (Succ yuz50900) (Succ yuz50400) == GT",fontsize=16,color="black",shape="box"];11324 -> 11392[label="",style="solid", color="black", weight=3]; 25.79/11.66 11325[label="primCmpNat (Succ yuz50900) Zero == GT",fontsize=16,color="black",shape="box"];11325 -> 11393[label="",style="solid", color="black", weight=3]; 25.79/11.66 11326[label="True",fontsize=16,color="green",shape="box"];11327 -> 11294[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11327[label="primCmpNat Zero (Succ yuz50400) == GT",fontsize=16,color="magenta"];11327 -> 11394[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11327 -> 11395[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11328 -> 11179[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11328[label="EQ == GT",fontsize=16,color="magenta"];11329 -> 11288[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11329[label="GT == GT",fontsize=16,color="magenta"];11330 -> 11179[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11330[label="EQ == GT",fontsize=16,color="magenta"];11331[label="False",fontsize=16,color="green",shape="box"];11332[label="primCmpNat (Succ yuz50400) (Succ yuz50900) == GT",fontsize=16,color="black",shape="box"];11332 -> 11396[label="",style="solid", color="black", weight=3]; 25.79/11.66 11333[label="primCmpNat Zero (Succ yuz50900) == GT",fontsize=16,color="black",shape="box"];11333 -> 11397[label="",style="solid", color="black", weight=3]; 25.79/11.66 11334 -> 11293[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11334[label="LT == GT",fontsize=16,color="magenta"];11335 -> 11179[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11335[label="EQ == GT",fontsize=16,color="magenta"];11336 -> 11287[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11336[label="primCmpNat (Succ yuz50400) Zero == GT",fontsize=16,color="magenta"];11336 -> 11398[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11336 -> 11399[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11337 -> 11179[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11337[label="EQ == GT",fontsize=16,color="magenta"];10716[label="primPlusNat (primPlusNat (primPlusNat (primPlusNat (primPlusNat Zero (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10716 -> 10758[label="",style="solid", color="black", weight=3]; 25.79/11.66 11159[label="FiniteMap.mkBranchRight_size yuz2403 yuz2400 yuz492",fontsize=16,color="black",shape="box"];11159 -> 11232[label="",style="solid", color="black", weight=3]; 25.79/11.66 11160 -> 11148[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11160[label="Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz2403 yuz2400 yuz492",fontsize=16,color="magenta"];11160 -> 11233[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11160 -> 11234[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11440[label="yuz5380",fontsize=16,color="green",shape="box"];11441[label="yuz5370",fontsize=16,color="green",shape="box"];10783[label="primPlusNat yuz45920 yuz4930",fontsize=16,color="burlywood",shape="triangle"];12695[label="yuz45920/Succ yuz459200",fontsize=10,color="white",style="solid",shape="box"];10783 -> 12695[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12695 -> 10831[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12696[label="yuz45920/Zero",fontsize=10,color="white",style="solid",shape="box"];10783 -> 12696[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12696 -> 10832[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11442[label="primMinusNat (Succ yuz53800) (Succ yuz53700)",fontsize=16,color="black",shape="box"];11442 -> 11467[label="",style="solid", color="black", weight=3]; 25.79/11.66 11443[label="primMinusNat (Succ yuz53800) Zero",fontsize=16,color="black",shape="box"];11443 -> 11468[label="",style="solid", color="black", weight=3]; 25.79/11.66 11444[label="primMinusNat Zero (Succ yuz53700)",fontsize=16,color="black",shape="box"];11444 -> 11469[label="",style="solid", color="black", weight=3]; 25.79/11.66 11445[label="primMinusNat Zero Zero",fontsize=16,color="black",shape="box"];11445 -> 11470[label="",style="solid", color="black", weight=3]; 25.79/11.66 11446[label="yuz5380",fontsize=16,color="green",shape="box"];11447[label="yuz5370",fontsize=16,color="green",shape="box"];11917 -> 11748[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11917[label="FiniteMap.mkBalBranch6Size_r yuz2440 yuz2441 yuz2444 yuz561",fontsize=16,color="magenta"];11918[label="FiniteMap.mkBalBranch6MkBalBranch2 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 otherwise",fontsize=16,color="black",shape="box"];11918 -> 11929[label="",style="solid", color="black", weight=3]; 25.79/11.66 11919[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz2440 yuz2441 yuz2444 yuz561 yuz561 yuz2444 yuz561",fontsize=16,color="burlywood",shape="box"];12697[label="yuz561/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11919 -> 12697[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12697 -> 11930[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12698[label="yuz561/FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614",fontsize=10,color="white",style="solid",shape="box"];11919 -> 12698[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12698 -> 11931[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11928 -> 11944[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11928[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz24440 yuz24441 yuz24442 yuz24443 yuz24444 (FiniteMap.sizeFM yuz24443 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz24444)",fontsize=16,color="magenta"];11928 -> 11945[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11390[label="FiniteMap.glueBal2GlueBal0 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) True",fontsize=16,color="black",shape="box"];11390 -> 11449[label="",style="solid", color="black", weight=3]; 25.79/11.66 11639[label="FiniteMap.glueBal2Mid_key2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11639 -> 11662[label="",style="solid", color="black", weight=3]; 25.79/11.66 11640[label="FiniteMap.deleteMin (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="burlywood",shape="triangle"];12699[label="yuz2443/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11640 -> 12699[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12699 -> 11663[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12700[label="yuz2443/FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434",fontsize=10,color="white",style="solid",shape="box"];11640 -> 12700[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12700 -> 11664[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11641[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];11642[label="FiniteMap.glueBal2Mid_elt2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11642 -> 11665[label="",style="solid", color="black", weight=3]; 25.79/11.66 11392[label="primCmpNat yuz50900 yuz50400 == GT",fontsize=16,color="burlywood",shape="triangle"];12701[label="yuz50900/Succ yuz509000",fontsize=10,color="white",style="solid",shape="box"];11392 -> 12701[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12701 -> 11451[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12702[label="yuz50900/Zero",fontsize=10,color="white",style="solid",shape="box"];11392 -> 12702[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12702 -> 11452[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11393 -> 11288[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11393[label="GT == GT",fontsize=16,color="magenta"];11394[label="yuz50400",fontsize=16,color="green",shape="box"];11395[label="Zero",fontsize=16,color="green",shape="box"];11396 -> 11392[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11396[label="primCmpNat yuz50400 yuz50900 == GT",fontsize=16,color="magenta"];11396 -> 11453[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11396 -> 11454[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11397 -> 11293[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11397[label="LT == GT",fontsize=16,color="magenta"];11398[label="yuz50400",fontsize=16,color="green",shape="box"];11399[label="Zero",fontsize=16,color="green",shape="box"];10758[label="primPlusNat (primPlusNat (primPlusNat (primPlusNat (Succ yuz42700) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="black",shape="box"];10758 -> 10810[label="",style="solid", color="black", weight=3]; 25.79/11.66 11232 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11232[label="FiniteMap.sizeFM yuz492",fontsize=16,color="magenta"];11232 -> 11303[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11233[label="FiniteMap.mkBranchLeft_size yuz2403 yuz2400 yuz492",fontsize=16,color="black",shape="box"];11233 -> 11304[label="",style="solid", color="black", weight=3]; 25.79/11.66 11234[label="Pos (Succ Zero)",fontsize=16,color="green",shape="box"];10831[label="primPlusNat (Succ yuz459200) yuz4930",fontsize=16,color="burlywood",shape="box"];12703[label="yuz4930/Succ yuz49300",fontsize=10,color="white",style="solid",shape="box"];10831 -> 12703[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12703 -> 10936[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12704[label="yuz4930/Zero",fontsize=10,color="white",style="solid",shape="box"];10831 -> 12704[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12704 -> 10937[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 10832[label="primPlusNat Zero yuz4930",fontsize=16,color="burlywood",shape="box"];12705[label="yuz4930/Succ yuz49300",fontsize=10,color="white",style="solid",shape="box"];10832 -> 12705[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12705 -> 10938[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12706[label="yuz4930/Zero",fontsize=10,color="white",style="solid",shape="box"];10832 -> 12706[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12706 -> 10939[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11467 -> 11311[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11467[label="primMinusNat yuz53800 yuz53700",fontsize=16,color="magenta"];11467 -> 11476[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11467 -> 11477[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11468[label="Pos (Succ yuz53800)",fontsize=16,color="green",shape="box"];11469[label="Neg (Succ yuz53700)",fontsize=16,color="green",shape="box"];11470[label="Pos Zero",fontsize=16,color="green",shape="box"];11929[label="FiniteMap.mkBalBranch6MkBalBranch2 yuz2440 yuz2441 yuz2444 yuz561 yuz2440 yuz2441 yuz561 yuz2444 True",fontsize=16,color="black",shape="box"];11929 -> 11946[label="",style="solid", color="black", weight=3]; 25.79/11.66 11930[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz2440 yuz2441 yuz2444 FiniteMap.EmptyFM FiniteMap.EmptyFM yuz2444 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11930 -> 11947[label="",style="solid", color="black", weight=3]; 25.79/11.66 11931[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614)",fontsize=16,color="black",shape="box"];11931 -> 11948[label="",style="solid", color="black", weight=3]; 25.79/11.66 11945 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11945[label="FiniteMap.sizeFM yuz24443 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz24444",fontsize=16,color="magenta"];11945 -> 11949[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11945 -> 11950[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11944[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz24440 yuz24441 yuz24442 yuz24443 yuz24444 yuz572",fontsize=16,color="burlywood",shape="triangle"];12707[label="yuz572/False",fontsize=10,color="white",style="solid",shape="box"];11944 -> 12707[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12707 -> 11951[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12708[label="yuz572/True",fontsize=10,color="white",style="solid",shape="box"];11944 -> 12708[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12708 -> 11952[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11449 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11449[label="FiniteMap.mkBalBranch (FiniteMap.glueBal2Mid_key1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)) (FiniteMap.glueBal2Mid_elt1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)) (FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="magenta"];11449 -> 11643[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11449 -> 11644[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11449 -> 11645[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11449 -> 11646[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11662[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.glueBal2Vv3 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="black",shape="box"];11662 -> 11681[label="",style="solid", color="black", weight=3]; 25.79/11.66 11663[label="FiniteMap.deleteMin (FiniteMap.Branch yuz2440 yuz2441 yuz2442 FiniteMap.EmptyFM yuz2444)",fontsize=16,color="black",shape="box"];11663 -> 11682[label="",style="solid", color="black", weight=3]; 25.79/11.66 11664[label="FiniteMap.deleteMin (FiniteMap.Branch yuz2440 yuz2441 yuz2442 (FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434) yuz2444)",fontsize=16,color="black",shape="box"];11664 -> 11683[label="",style="solid", color="black", weight=3]; 25.79/11.66 11665[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.glueBal2Vv3 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="black",shape="box"];11665 -> 11684[label="",style="solid", color="black", weight=3]; 25.79/11.66 11451[label="primCmpNat (Succ yuz509000) yuz50400 == GT",fontsize=16,color="burlywood",shape="box"];12709[label="yuz50400/Succ yuz504000",fontsize=10,color="white",style="solid",shape="box"];11451 -> 12709[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12709 -> 11478[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12710[label="yuz50400/Zero",fontsize=10,color="white",style="solid",shape="box"];11451 -> 12710[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12710 -> 11479[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11452[label="primCmpNat Zero yuz50400 == GT",fontsize=16,color="burlywood",shape="box"];12711[label="yuz50400/Succ yuz504000",fontsize=10,color="white",style="solid",shape="box"];11452 -> 12711[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12711 -> 11480[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12712[label="yuz50400/Zero",fontsize=10,color="white",style="solid",shape="box"];11452 -> 12712[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12712 -> 11481[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11453[label="yuz50900",fontsize=16,color="green",shape="box"];11454[label="yuz50400",fontsize=16,color="green",shape="box"];10810 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.66 10810[label="primPlusNat (primPlusNat (primPlusNat (Succ (Succ (primPlusNat yuz42700 yuz42700))) (Succ yuz42700)) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="magenta"];10810 -> 10934[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10810 -> 10935[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11303[label="yuz492",fontsize=16,color="green",shape="box"];11304 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11304[label="FiniteMap.sizeFM yuz2403",fontsize=16,color="magenta"];11304 -> 11420[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 10936[label="primPlusNat (Succ yuz459200) (Succ yuz49300)",fontsize=16,color="black",shape="box"];10936 -> 11043[label="",style="solid", color="black", weight=3]; 25.79/11.66 10937[label="primPlusNat (Succ yuz459200) Zero",fontsize=16,color="black",shape="box"];10937 -> 11044[label="",style="solid", color="black", weight=3]; 25.79/11.66 10938[label="primPlusNat Zero (Succ yuz49300)",fontsize=16,color="black",shape="box"];10938 -> 11045[label="",style="solid", color="black", weight=3]; 25.79/11.66 10939[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];10939 -> 11046[label="",style="solid", color="black", weight=3]; 25.79/11.66 11476[label="yuz53800",fontsize=16,color="green",shape="box"];11477[label="yuz53700",fontsize=16,color="green",shape="box"];11946[label="FiniteMap.mkBranch (Pos (Succ (Succ Zero))) yuz2440 yuz2441 yuz561 yuz2444",fontsize=16,color="black",shape="box"];11946 -> 11961[label="",style="solid", color="black", weight=3]; 25.79/11.66 11947[label="error []",fontsize=16,color="red",shape="box"];11948[label="FiniteMap.mkBalBranch6MkBalBranch12 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614)",fontsize=16,color="black",shape="box"];11948 -> 11962[label="",style="solid", color="black", weight=3]; 25.79/11.66 11949 -> 11963[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11949[label="Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz24444",fontsize=16,color="magenta"];11949 -> 11964[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11950 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11950[label="FiniteMap.sizeFM yuz24443",fontsize=16,color="magenta"];11950 -> 11965[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11951[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz24440 yuz24441 yuz24442 yuz24443 yuz24444 False",fontsize=16,color="black",shape="box"];11951 -> 11966[label="",style="solid", color="black", weight=3]; 25.79/11.66 11952[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz24440 yuz24441 yuz24442 yuz24443 yuz24444 True",fontsize=16,color="black",shape="box"];11952 -> 11967[label="",style="solid", color="black", weight=3]; 25.79/11.66 11643[label="FiniteMap.glueBal2Mid_key1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11643 -> 11666[label="",style="solid", color="black", weight=3]; 25.79/11.66 11644[label="FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444",fontsize=16,color="green",shape="box"];11645[label="FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="burlywood",shape="triangle"];12713[label="yuz2404/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11645 -> 12713[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12713 -> 11667[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 12714[label="yuz2404/FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044",fontsize=10,color="white",style="solid",shape="box"];11645 -> 12714[label="",style="solid", color="burlywood", weight=9]; 25.79/11.66 12714 -> 11668[label="",style="solid", color="burlywood", weight=3]; 25.79/11.66 11646[label="FiniteMap.glueBal2Mid_elt1 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444)",fontsize=16,color="black",shape="box"];11646 -> 11669[label="",style="solid", color="black", weight=3]; 25.79/11.66 11681 -> 12022[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11681[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.findMin (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="magenta"];11681 -> 12023[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12024[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12025[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12026[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12027[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12028[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12029[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12030[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12031[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12032[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12033[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12034[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12035[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12036[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11681 -> 12037[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11682[label="yuz2444",fontsize=16,color="green",shape="box"];11683 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11683[label="FiniteMap.mkBalBranch yuz2440 yuz2441 (FiniteMap.deleteMin (FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434)) yuz2444",fontsize=16,color="magenta"];11683 -> 11732[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12203[label="",style="dashed", color="red", weight=0]; 25.79/11.66 11684[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.findMin (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="magenta"];11684 -> 12204[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12205[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12206[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12207[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12208[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12209[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12210[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12211[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12212[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12213[label="",style="dashed", color="magenta", weight=3]; 25.79/11.66 11684 -> 12214[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11684 -> 12215[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11684 -> 12216[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11684 -> 12217[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11684 -> 12218[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11478[label="primCmpNat (Succ yuz509000) (Succ yuz504000) == GT",fontsize=16,color="black",shape="box"];11478 -> 11498[label="",style="solid", color="black", weight=3]; 25.79/11.67 11479[label="primCmpNat (Succ yuz509000) Zero == GT",fontsize=16,color="black",shape="box"];11479 -> 11499[label="",style="solid", color="black", weight=3]; 25.79/11.67 11480[label="primCmpNat Zero (Succ yuz504000) == GT",fontsize=16,color="black",shape="box"];11480 -> 11500[label="",style="solid", color="black", weight=3]; 25.79/11.67 11481[label="primCmpNat Zero Zero == GT",fontsize=16,color="black",shape="box"];11481 -> 11501[label="",style="solid", color="black", weight=3]; 25.79/11.67 10934 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.67 10934[label="primPlusNat (primPlusNat (Succ (Succ (primPlusNat yuz42700 yuz42700))) (Succ yuz42700)) (Succ yuz42700)",fontsize=16,color="magenta"];10934 -> 11041[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 10934 -> 11042[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 10935[label="Succ yuz42700",fontsize=16,color="green",shape="box"];11420[label="yuz2403",fontsize=16,color="green",shape="box"];11043[label="Succ (Succ (primPlusNat yuz459200 yuz49300))",fontsize=16,color="green",shape="box"];11043 -> 11125[label="",style="dashed", color="green", weight=3]; 25.79/11.67 11044[label="Succ yuz459200",fontsize=16,color="green",shape="box"];11045[label="Succ yuz49300",fontsize=16,color="green",shape="box"];11046[label="Zero",fontsize=16,color="green",shape="box"];11961 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11961[label="FiniteMap.mkBranchResult yuz2440 yuz2441 yuz561 yuz2444",fontsize=16,color="magenta"];11961 -> 11968[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11961 -> 11969[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11961 -> 11970[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11961 -> 11971[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11962 -> 11972[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11962[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 (FiniteMap.sizeFM yuz5614 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz5613)",fontsize=16,color="magenta"];11962 -> 11973[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11964 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11964[label="FiniteMap.sizeFM yuz24444",fontsize=16,color="magenta"];11964 -> 11974[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11963[label="Pos (Succ (Succ Zero)) * yuz575",fontsize=16,color="black",shape="triangle"];11963 -> 11975[label="",style="solid", color="black", weight=3]; 25.79/11.67 11965[label="yuz24443",fontsize=16,color="green",shape="box"];11966[label="FiniteMap.mkBalBranch6MkBalBranch00 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz24440 yuz24441 yuz24442 yuz24443 yuz24444 otherwise",fontsize=16,color="black",shape="box"];11966 -> 11976[label="",style="solid", color="black", weight=3]; 25.79/11.67 11967[label="FiniteMap.mkBalBranch6Single_L yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444)",fontsize=16,color="black",shape="box"];11967 -> 11977[label="",style="solid", color="black", weight=3]; 25.79/11.67 11666[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.glueBal2Vv2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="black",shape="box"];11666 -> 11685[label="",style="solid", color="black", weight=3]; 25.79/11.67 11667[label="FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 FiniteMap.EmptyFM)",fontsize=16,color="black",shape="box"];11667 -> 11686[label="",style="solid", color="black", weight=3]; 25.79/11.67 11668[label="FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044))",fontsize=16,color="black",shape="box"];11668 -> 11687[label="",style="solid", color="black", weight=3]; 25.79/11.67 11669[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.glueBal2Vv2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444))",fontsize=16,color="black",shape="box"];11669 -> 11688[label="",style="solid", color="black", weight=3]; 25.79/11.67 12023[label="yuz2442",fontsize=16,color="green",shape="box"];12024[label="yuz2444",fontsize=16,color="green",shape="box"];12025[label="yuz2442",fontsize=16,color="green",shape="box"];12026[label="yuz2441",fontsize=16,color="green",shape="box"];12027[label="yuz2443",fontsize=16,color="green",shape="box"];12028[label="yuz2402",fontsize=16,color="green",shape="box"];12029[label="yuz2441",fontsize=16,color="green",shape="box"];12030[label="yuz2440",fontsize=16,color="green",shape="box"];12031[label="yuz2444",fontsize=16,color="green",shape="box"];12032[label="yuz2440",fontsize=16,color="green",shape="box"];12033[label="yuz2400",fontsize=16,color="green",shape="box"];12034[label="yuz2403",fontsize=16,color="green",shape="box"];12035[label="yuz2404",fontsize=16,color="green",shape="box"];12036[label="yuz2443",fontsize=16,color="green",shape="box"];12037[label="yuz2401",fontsize=16,color="green",shape="box"];12022[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz581 yuz582 yuz583 yuz584 yuz585) (FiniteMap.Branch yuz586 yuz587 yuz588 yuz589 yuz590) (FiniteMap.findMin (FiniteMap.Branch yuz591 yuz592 yuz593 yuz594 yuz595))",fontsize=16,color="burlywood",shape="triangle"];12715[label="yuz594/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12022 -> 12715[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12715 -> 12113[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12716[label="yuz594/FiniteMap.Branch yuz5940 yuz5941 yuz5942 yuz5943 yuz5944",fontsize=10,color="white",style="solid",shape="box"];12022 -> 12716[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12716 -> 12114[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 11732 -> 11640[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11732[label="FiniteMap.deleteMin (FiniteMap.Branch yuz24430 yuz24431 yuz24432 yuz24433 yuz24434)",fontsize=16,color="magenta"];11732 -> 11772[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11732 -> 11773[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11732 -> 11774[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11732 -> 11775[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11732 -> 11776[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12204[label="yuz2440",fontsize=16,color="green",shape="box"];12205[label="yuz2440",fontsize=16,color="green",shape="box"];12206[label="yuz2402",fontsize=16,color="green",shape="box"];12207[label="yuz2404",fontsize=16,color="green",shape="box"];12208[label="yuz2441",fontsize=16,color="green",shape="box"];12209[label="yuz2444",fontsize=16,color="green",shape="box"];12210[label="yuz2400",fontsize=16,color="green",shape="box"];12211[label="yuz2442",fontsize=16,color="green",shape="box"];12212[label="yuz2441",fontsize=16,color="green",shape="box"];12213[label="yuz2401",fontsize=16,color="green",shape="box"];12214[label="yuz2442",fontsize=16,color="green",shape="box"];12215[label="yuz2444",fontsize=16,color="green",shape="box"];12216[label="yuz2443",fontsize=16,color="green",shape="box"];12217[label="yuz2403",fontsize=16,color="green",shape="box"];12218[label="yuz2443",fontsize=16,color="green",shape="box"];12203[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz628 yuz629 yuz630 yuz631 yuz632) (FiniteMap.Branch yuz633 yuz634 yuz635 yuz636 yuz637) (FiniteMap.findMin (FiniteMap.Branch yuz638 yuz639 yuz640 yuz641 yuz642))",fontsize=16,color="burlywood",shape="triangle"];12717[label="yuz641/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12203 -> 12717[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12717 -> 12294[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12718[label="yuz641/FiniteMap.Branch yuz6410 yuz6411 yuz6412 yuz6413 yuz6414",fontsize=10,color="white",style="solid",shape="box"];12203 -> 12718[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12718 -> 12295[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 11498 -> 11392[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11498[label="primCmpNat yuz509000 yuz504000 == GT",fontsize=16,color="magenta"];11498 -> 11508[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11498 -> 11509[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11499 -> 11288[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11499[label="GT == GT",fontsize=16,color="magenta"];11500 -> 11293[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11500[label="LT == GT",fontsize=16,color="magenta"];11501 -> 11179[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11501[label="EQ == GT",fontsize=16,color="magenta"];11041 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11041[label="primPlusNat (Succ (Succ (primPlusNat yuz42700 yuz42700))) (Succ yuz42700)",fontsize=16,color="magenta"];11041 -> 11123[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11041 -> 11124[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11042[label="Succ yuz42700",fontsize=16,color="green",shape="box"];11125 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11125[label="primPlusNat yuz459200 yuz49300",fontsize=16,color="magenta"];11125 -> 11434[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11125 -> 11435[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11968[label="yuz2440",fontsize=16,color="green",shape="box"];11969[label="yuz561",fontsize=16,color="green",shape="box"];11970[label="yuz2441",fontsize=16,color="green",shape="box"];11971[label="yuz2444",fontsize=16,color="green",shape="box"];11973 -> 4040[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11973[label="FiniteMap.sizeFM yuz5614 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz5613",fontsize=16,color="magenta"];11973 -> 11978[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11973 -> 11979[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11972[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 yuz576",fontsize=16,color="burlywood",shape="triangle"];12719[label="yuz576/False",fontsize=10,color="white",style="solid",shape="box"];11972 -> 12719[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12719 -> 11980[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12720[label="yuz576/True",fontsize=10,color="white",style="solid",shape="box"];11972 -> 12720[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12720 -> 11981[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 11974[label="yuz24444",fontsize=16,color="green",shape="box"];11975[label="primMulInt (Pos (Succ (Succ Zero))) yuz575",fontsize=16,color="burlywood",shape="box"];12721[label="yuz575/Pos yuz5750",fontsize=10,color="white",style="solid",shape="box"];11975 -> 12721[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12721 -> 11994[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12722[label="yuz575/Neg yuz5750",fontsize=10,color="white",style="solid",shape="box"];11975 -> 12722[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12722 -> 11995[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 11976[label="FiniteMap.mkBalBranch6MkBalBranch00 yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz24440 yuz24441 yuz24442 yuz24443 yuz24444 True",fontsize=16,color="black",shape="box"];11976 -> 11996[label="",style="solid", color="black", weight=3]; 25.79/11.67 11977[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ Zero)))) yuz24440 yuz24441 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz2440 yuz2441 yuz561 yuz24443) yuz24444",fontsize=16,color="black",shape="box"];11977 -> 11997[label="",style="solid", color="black", weight=3]; 25.79/11.67 11685 -> 12316[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11685[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.findMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="magenta"];11685 -> 12317[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12318[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12319[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12320[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12321[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12322[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12323[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12324[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12325[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12326[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12327[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12328[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12329[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12330[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11685 -> 12331[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11686[label="yuz2403",fontsize=16,color="green",shape="box"];11687 -> 11617[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11687[label="FiniteMap.mkBalBranch yuz2400 yuz2401 yuz2403 (FiniteMap.deleteMax (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044))",fontsize=16,color="magenta"];11687 -> 11737[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11687 -> 11738[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11687 -> 11739[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11687 -> 11740[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12419[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11688[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2440 yuz2441 yuz2442 yuz2443 yuz2444) (FiniteMap.findMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="magenta"];11688 -> 12420[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12421[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12422[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12423[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12424[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12425[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12426[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12427[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12428[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12429[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12430[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12431[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12432[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12433[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11688 -> 12434[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12113[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz581 yuz582 yuz583 yuz584 yuz585) (FiniteMap.Branch yuz586 yuz587 yuz588 yuz589 yuz590) (FiniteMap.findMin (FiniteMap.Branch yuz591 yuz592 yuz593 FiniteMap.EmptyFM yuz595))",fontsize=16,color="black",shape="box"];12113 -> 12130[label="",style="solid", color="black", weight=3]; 25.79/11.67 12114[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz581 yuz582 yuz583 yuz584 yuz585) (FiniteMap.Branch yuz586 yuz587 yuz588 yuz589 yuz590) (FiniteMap.findMin (FiniteMap.Branch yuz591 yuz592 yuz593 (FiniteMap.Branch yuz5940 yuz5941 yuz5942 yuz5943 yuz5944) yuz595))",fontsize=16,color="black",shape="box"];12114 -> 12131[label="",style="solid", color="black", weight=3]; 25.79/11.67 11772[label="yuz24432",fontsize=16,color="green",shape="box"];11773[label="yuz24433",fontsize=16,color="green",shape="box"];11774[label="yuz24430",fontsize=16,color="green",shape="box"];11775[label="yuz24434",fontsize=16,color="green",shape="box"];11776[label="yuz24431",fontsize=16,color="green",shape="box"];12294[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz628 yuz629 yuz630 yuz631 yuz632) (FiniteMap.Branch yuz633 yuz634 yuz635 yuz636 yuz637) (FiniteMap.findMin (FiniteMap.Branch yuz638 yuz639 yuz640 FiniteMap.EmptyFM yuz642))",fontsize=16,color="black",shape="box"];12294 -> 12407[label="",style="solid", color="black", weight=3]; 25.79/11.67 12295[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz628 yuz629 yuz630 yuz631 yuz632) (FiniteMap.Branch yuz633 yuz634 yuz635 yuz636 yuz637) (FiniteMap.findMin (FiniteMap.Branch yuz638 yuz639 yuz640 (FiniteMap.Branch yuz6410 yuz6411 yuz6412 yuz6413 yuz6414) yuz642))",fontsize=16,color="black",shape="box"];12295 -> 12408[label="",style="solid", color="black", weight=3]; 25.79/11.67 11508[label="yuz504000",fontsize=16,color="green",shape="box"];11509[label="yuz509000",fontsize=16,color="green",shape="box"];11123[label="Succ (Succ (primPlusNat yuz42700 yuz42700))",fontsize=16,color="green",shape="box"];11123 -> 11305[label="",style="dashed", color="green", weight=3]; 25.79/11.67 11124[label="Succ yuz42700",fontsize=16,color="green",shape="box"];11434[label="yuz459200",fontsize=16,color="green",shape="box"];11435[label="yuz49300",fontsize=16,color="green",shape="box"];11978 -> 11963[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11978[label="Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz5613",fontsize=16,color="magenta"];11978 -> 11998[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11979 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11979[label="FiniteMap.sizeFM yuz5614",fontsize=16,color="magenta"];11979 -> 11999[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11980[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 False",fontsize=16,color="black",shape="box"];11980 -> 12000[label="",style="solid", color="black", weight=3]; 25.79/11.67 11981[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 True",fontsize=16,color="black",shape="box"];11981 -> 12001[label="",style="solid", color="black", weight=3]; 25.79/11.67 11994[label="primMulInt (Pos (Succ (Succ Zero))) (Pos yuz5750)",fontsize=16,color="black",shape="box"];11994 -> 12010[label="",style="solid", color="black", weight=3]; 25.79/11.67 11995[label="primMulInt (Pos (Succ (Succ Zero))) (Neg yuz5750)",fontsize=16,color="black",shape="box"];11995 -> 12011[label="",style="solid", color="black", weight=3]; 25.79/11.67 11996[label="FiniteMap.mkBalBranch6Double_L yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 yuz24443 yuz24444)",fontsize=16,color="burlywood",shape="box"];12723[label="yuz24443/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11996 -> 12723[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12723 -> 12012[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12724[label="yuz24443/FiniteMap.Branch yuz244430 yuz244431 yuz244432 yuz244433 yuz244434",fontsize=10,color="white",style="solid",shape="box"];11996 -> 12724[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12724 -> 12013[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 11997 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11997[label="FiniteMap.mkBranchResult yuz24440 yuz24441 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz2440 yuz2441 yuz561 yuz24443) yuz24444",fontsize=16,color="magenta"];11997 -> 12014[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11997 -> 12015[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11997 -> 12016[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11997 -> 12017[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12317[label="yuz2441",fontsize=16,color="green",shape="box"];12318[label="yuz2401",fontsize=16,color="green",shape="box"];12319[label="yuz2402",fontsize=16,color="green",shape="box"];12320[label="yuz2404",fontsize=16,color="green",shape="box"];12321[label="yuz2442",fontsize=16,color="green",shape="box"];12322[label="yuz2440",fontsize=16,color="green",shape="box"];12323[label="yuz2401",fontsize=16,color="green",shape="box"];12324[label="yuz2400",fontsize=16,color="green",shape="box"];12325[label="yuz2402",fontsize=16,color="green",shape="box"];12326[label="yuz2400",fontsize=16,color="green",shape="box"];12327[label="yuz2444",fontsize=16,color="green",shape="box"];12328[label="yuz2443",fontsize=16,color="green",shape="box"];12329[label="yuz2404",fontsize=16,color="green",shape="box"];12330[label="yuz2403",fontsize=16,color="green",shape="box"];12331[label="yuz2403",fontsize=16,color="green",shape="box"];12316[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz644 yuz645 yuz646 yuz647 yuz648) (FiniteMap.Branch yuz649 yuz650 yuz651 yuz652 yuz653) (FiniteMap.findMax (FiniteMap.Branch yuz654 yuz655 yuz656 yuz657 yuz658))",fontsize=16,color="burlywood",shape="triangle"];12725[label="yuz658/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12316 -> 12725[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12725 -> 12409[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12726[label="yuz658/FiniteMap.Branch yuz6580 yuz6581 yuz6582 yuz6583 yuz6584",fontsize=10,color="white",style="solid",shape="box"];12316 -> 12726[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12726 -> 12410[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 11737[label="yuz2400",fontsize=16,color="green",shape="box"];11738 -> 11645[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11738[label="FiniteMap.deleteMax (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044)",fontsize=16,color="magenta"];11738 -> 11781[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11738 -> 11782[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11738 -> 11783[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11738 -> 11784[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11738 -> 11785[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11739[label="yuz2403",fontsize=16,color="green",shape="box"];11740[label="yuz2401",fontsize=16,color="green",shape="box"];12420[label="yuz2403",fontsize=16,color="green",shape="box"];12421[label="yuz2401",fontsize=16,color="green",shape="box"];12422[label="yuz2400",fontsize=16,color="green",shape="box"];12423[label="yuz2402",fontsize=16,color="green",shape="box"];12424[label="yuz2442",fontsize=16,color="green",shape="box"];12425[label="yuz2402",fontsize=16,color="green",shape="box"];12426[label="yuz2441",fontsize=16,color="green",shape="box"];12427[label="yuz2444",fontsize=16,color="green",shape="box"];12428[label="yuz2443",fontsize=16,color="green",shape="box"];12429[label="yuz2440",fontsize=16,color="green",shape="box"];12430[label="yuz2400",fontsize=16,color="green",shape="box"];12431[label="yuz2403",fontsize=16,color="green",shape="box"];12432[label="yuz2404",fontsize=16,color="green",shape="box"];12433[label="yuz2404",fontsize=16,color="green",shape="box"];12434[label="yuz2401",fontsize=16,color="green",shape="box"];12419[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz660 yuz661 yuz662 yuz663 yuz664) (FiniteMap.Branch yuz665 yuz666 yuz667 yuz668 yuz669) (FiniteMap.findMax (FiniteMap.Branch yuz670 yuz671 yuz672 yuz673 yuz674))",fontsize=16,color="burlywood",shape="triangle"];12727[label="yuz674/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12419 -> 12727[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12727 -> 12510[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12728[label="yuz674/FiniteMap.Branch yuz6740 yuz6741 yuz6742 yuz6743 yuz6744",fontsize=10,color="white",style="solid",shape="box"];12419 -> 12728[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12728 -> 12511[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12130[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz581 yuz582 yuz583 yuz584 yuz585) (FiniteMap.Branch yuz586 yuz587 yuz588 yuz589 yuz590) (yuz591,yuz592)",fontsize=16,color="black",shape="box"];12130 -> 12147[label="",style="solid", color="black", weight=3]; 25.79/11.67 12131 -> 12022[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12131[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz581 yuz582 yuz583 yuz584 yuz585) (FiniteMap.Branch yuz586 yuz587 yuz588 yuz589 yuz590) (FiniteMap.findMin (FiniteMap.Branch yuz5940 yuz5941 yuz5942 yuz5943 yuz5944))",fontsize=16,color="magenta"];12131 -> 12148[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12131 -> 12149[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12131 -> 12150[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12131 -> 12151[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12131 -> 12152[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12407[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz628 yuz629 yuz630 yuz631 yuz632) (FiniteMap.Branch yuz633 yuz634 yuz635 yuz636 yuz637) (yuz638,yuz639)",fontsize=16,color="black",shape="box"];12407 -> 12512[label="",style="solid", color="black", weight=3]; 25.79/11.67 12408 -> 12203[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12408[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz628 yuz629 yuz630 yuz631 yuz632) (FiniteMap.Branch yuz633 yuz634 yuz635 yuz636 yuz637) (FiniteMap.findMin (FiniteMap.Branch yuz6410 yuz6411 yuz6412 yuz6413 yuz6414))",fontsize=16,color="magenta"];12408 -> 12513[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12408 -> 12514[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12408 -> 12515[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12408 -> 12516[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12408 -> 12517[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11305 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11305[label="primPlusNat yuz42700 yuz42700",fontsize=16,color="magenta"];11305 -> 11428[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11305 -> 11429[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11998 -> 10498[label="",style="dashed", color="red", weight=0]; 25.79/11.67 11998[label="FiniteMap.sizeFM yuz5613",fontsize=16,color="magenta"];11998 -> 12018[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 11999[label="yuz5614",fontsize=16,color="green",shape="box"];12000[label="FiniteMap.mkBalBranch6MkBalBranch10 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 otherwise",fontsize=16,color="black",shape="box"];12000 -> 12019[label="",style="solid", color="black", weight=3]; 25.79/11.67 12001[label="FiniteMap.mkBalBranch6Single_R yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444",fontsize=16,color="black",shape="box"];12001 -> 12020[label="",style="solid", color="black", weight=3]; 25.79/11.67 12010[label="Pos (primMulNat (Succ (Succ Zero)) yuz5750)",fontsize=16,color="green",shape="box"];12010 -> 12115[label="",style="dashed", color="green", weight=3]; 25.79/11.67 12011[label="Neg (primMulNat (Succ (Succ Zero)) yuz5750)",fontsize=16,color="green",shape="box"];12011 -> 12116[label="",style="dashed", color="green", weight=3]; 25.79/11.67 12012[label="FiniteMap.mkBalBranch6Double_L yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 FiniteMap.EmptyFM yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 FiniteMap.EmptyFM yuz24444)",fontsize=16,color="black",shape="box"];12012 -> 12117[label="",style="solid", color="black", weight=3]; 25.79/11.67 12013[label="FiniteMap.mkBalBranch6Double_L yuz2440 yuz2441 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 (FiniteMap.Branch yuz244430 yuz244431 yuz244432 yuz244433 yuz244434) yuz24444) yuz561 yuz561 (FiniteMap.Branch yuz24440 yuz24441 yuz24442 (FiniteMap.Branch yuz244430 yuz244431 yuz244432 yuz244433 yuz244434) yuz24444)",fontsize=16,color="black",shape="box"];12013 -> 12118[label="",style="solid", color="black", weight=3]; 25.79/11.67 12014[label="yuz24440",fontsize=16,color="green",shape="box"];12015[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz2440 yuz2441 yuz561 yuz24443",fontsize=16,color="black",shape="box"];12015 -> 12119[label="",style="solid", color="black", weight=3]; 25.79/11.67 12016[label="yuz24441",fontsize=16,color="green",shape="box"];12017[label="yuz24444",fontsize=16,color="green",shape="box"];12409[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz644 yuz645 yuz646 yuz647 yuz648) (FiniteMap.Branch yuz649 yuz650 yuz651 yuz652 yuz653) (FiniteMap.findMax (FiniteMap.Branch yuz654 yuz655 yuz656 yuz657 FiniteMap.EmptyFM))",fontsize=16,color="black",shape="box"];12409 -> 12518[label="",style="solid", color="black", weight=3]; 25.79/11.67 12410[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz644 yuz645 yuz646 yuz647 yuz648) (FiniteMap.Branch yuz649 yuz650 yuz651 yuz652 yuz653) (FiniteMap.findMax (FiniteMap.Branch yuz654 yuz655 yuz656 yuz657 (FiniteMap.Branch yuz6580 yuz6581 yuz6582 yuz6583 yuz6584)))",fontsize=16,color="black",shape="box"];12410 -> 12519[label="",style="solid", color="black", weight=3]; 25.79/11.67 11781[label="yuz24040",fontsize=16,color="green",shape="box"];11782[label="yuz24042",fontsize=16,color="green",shape="box"];11783[label="yuz24044",fontsize=16,color="green",shape="box"];11784[label="yuz24043",fontsize=16,color="green",shape="box"];11785[label="yuz24041",fontsize=16,color="green",shape="box"];12510[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz660 yuz661 yuz662 yuz663 yuz664) (FiniteMap.Branch yuz665 yuz666 yuz667 yuz668 yuz669) (FiniteMap.findMax (FiniteMap.Branch yuz670 yuz671 yuz672 yuz673 FiniteMap.EmptyFM))",fontsize=16,color="black",shape="box"];12510 -> 12526[label="",style="solid", color="black", weight=3]; 25.79/11.67 12511[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz660 yuz661 yuz662 yuz663 yuz664) (FiniteMap.Branch yuz665 yuz666 yuz667 yuz668 yuz669) (FiniteMap.findMax (FiniteMap.Branch yuz670 yuz671 yuz672 yuz673 (FiniteMap.Branch yuz6740 yuz6741 yuz6742 yuz6743 yuz6744)))",fontsize=16,color="black",shape="box"];12511 -> 12527[label="",style="solid", color="black", weight=3]; 25.79/11.67 12147[label="yuz591",fontsize=16,color="green",shape="box"];12148[label="yuz5942",fontsize=16,color="green",shape="box"];12149[label="yuz5943",fontsize=16,color="green",shape="box"];12150[label="yuz5941",fontsize=16,color="green",shape="box"];12151[label="yuz5940",fontsize=16,color="green",shape="box"];12152[label="yuz5944",fontsize=16,color="green",shape="box"];12512[label="yuz639",fontsize=16,color="green",shape="box"];12513[label="yuz6410",fontsize=16,color="green",shape="box"];12514[label="yuz6411",fontsize=16,color="green",shape="box"];12515[label="yuz6414",fontsize=16,color="green",shape="box"];12516[label="yuz6412",fontsize=16,color="green",shape="box"];12517[label="yuz6413",fontsize=16,color="green",shape="box"];11428[label="yuz42700",fontsize=16,color="green",shape="box"];11429[label="yuz42700",fontsize=16,color="green",shape="box"];12018[label="yuz5613",fontsize=16,color="green",shape="box"];12019[label="FiniteMap.mkBalBranch6MkBalBranch10 yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 True",fontsize=16,color="black",shape="box"];12019 -> 12120[label="",style="solid", color="black", weight=3]; 25.79/11.67 12020 -> 12159[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12020[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))) yuz5610 yuz5611 yuz5613 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))) yuz2440 yuz2441 yuz5614 yuz2444)",fontsize=16,color="magenta"];12020 -> 12160[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12161[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12162[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12163[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12164[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12165[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12166[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12167[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12020 -> 12168[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12115[label="primMulNat (Succ (Succ Zero)) yuz5750",fontsize=16,color="burlywood",shape="triangle"];12729[label="yuz5750/Succ yuz57500",fontsize=10,color="white",style="solid",shape="box"];12115 -> 12729[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12729 -> 12132[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12730[label="yuz5750/Zero",fontsize=10,color="white",style="solid",shape="box"];12115 -> 12730[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12730 -> 12133[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12116 -> 12115[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12116[label="primMulNat (Succ (Succ Zero)) yuz5750",fontsize=16,color="magenta"];12116 -> 12134[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12117[label="error []",fontsize=16,color="red",shape="box"];12118 -> 12159[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12118[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) yuz244430 yuz244431 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) yuz2440 yuz2441 yuz561 yuz244433) (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))) yuz24440 yuz24441 yuz244434 yuz24444)",fontsize=16,color="magenta"];12118 -> 12169[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12170[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12171[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12172[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12173[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12174[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12175[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12176[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12118 -> 12177[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12119 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12119[label="FiniteMap.mkBranchResult yuz2440 yuz2441 yuz561 yuz24443",fontsize=16,color="magenta"];12119 -> 12153[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12119 -> 12154[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12119 -> 12155[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12119 -> 12156[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12518[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz644 yuz645 yuz646 yuz647 yuz648) (FiniteMap.Branch yuz649 yuz650 yuz651 yuz652 yuz653) (yuz654,yuz655)",fontsize=16,color="black",shape="box"];12518 -> 12528[label="",style="solid", color="black", weight=3]; 25.79/11.67 12519 -> 12316[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12519[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz644 yuz645 yuz646 yuz647 yuz648) (FiniteMap.Branch yuz649 yuz650 yuz651 yuz652 yuz653) (FiniteMap.findMax (FiniteMap.Branch yuz6580 yuz6581 yuz6582 yuz6583 yuz6584))",fontsize=16,color="magenta"];12519 -> 12529[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12519 -> 12530[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12519 -> 12531[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12519 -> 12532[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12519 -> 12533[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12526[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz660 yuz661 yuz662 yuz663 yuz664) (FiniteMap.Branch yuz665 yuz666 yuz667 yuz668 yuz669) (yuz670,yuz671)",fontsize=16,color="black",shape="box"];12526 -> 12535[label="",style="solid", color="black", weight=3]; 25.79/11.67 12527 -> 12419[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12527[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz660 yuz661 yuz662 yuz663 yuz664) (FiniteMap.Branch yuz665 yuz666 yuz667 yuz668 yuz669) (FiniteMap.findMax (FiniteMap.Branch yuz6740 yuz6741 yuz6742 yuz6743 yuz6744))",fontsize=16,color="magenta"];12527 -> 12536[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12527 -> 12537[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12527 -> 12538[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12527 -> 12539[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12527 -> 12540[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12120[label="FiniteMap.mkBalBranch6Double_R yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz2444",fontsize=16,color="burlywood",shape="box"];12731[label="yuz5614/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12120 -> 12731[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12731 -> 12157[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12732[label="yuz5614/FiniteMap.Branch yuz56140 yuz56141 yuz56142 yuz56143 yuz56144",fontsize=10,color="white",style="solid",shape="box"];12120 -> 12732[label="",style="solid", color="burlywood", weight=9]; 25.79/11.67 12732 -> 12158[label="",style="solid", color="burlywood", weight=3]; 25.79/11.67 12160[label="yuz2441",fontsize=16,color="green",shape="box"];12161[label="yuz2444",fontsize=16,color="green",shape="box"];12162[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))",fontsize=16,color="green",shape="box"];12163[label="yuz5611",fontsize=16,color="green",shape="box"];12164[label="yuz5613",fontsize=16,color="green",shape="box"];12165[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))",fontsize=16,color="green",shape="box"];12166[label="yuz5614",fontsize=16,color="green",shape="box"];12167[label="yuz5610",fontsize=16,color="green",shape="box"];12168[label="yuz2440",fontsize=16,color="green",shape="box"];12159[label="FiniteMap.mkBranch (Pos (Succ yuz618)) yuz619 yuz620 yuz621 (FiniteMap.mkBranch (Pos (Succ yuz622)) yuz623 yuz624 yuz625 yuz626)",fontsize=16,color="black",shape="triangle"];12159 -> 12196[label="",style="solid", color="black", weight=3]; 25.79/11.67 12132[label="primMulNat (Succ (Succ Zero)) (Succ yuz57500)",fontsize=16,color="black",shape="box"];12132 -> 12197[label="",style="solid", color="black", weight=3]; 25.79/11.67 12133[label="primMulNat (Succ (Succ Zero)) Zero",fontsize=16,color="black",shape="box"];12133 -> 12198[label="",style="solid", color="black", weight=3]; 25.79/11.67 12134[label="yuz5750",fontsize=16,color="green",shape="box"];12169[label="yuz24441",fontsize=16,color="green",shape="box"];12170[label="yuz24444",fontsize=16,color="green",shape="box"];12171[label="Succ (Succ (Succ (Succ Zero)))",fontsize=16,color="green",shape="box"];12172[label="yuz244431",fontsize=16,color="green",shape="box"];12173[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) yuz2440 yuz2441 yuz561 yuz244433",fontsize=16,color="black",shape="box"];12173 -> 12199[label="",style="solid", color="black", weight=3]; 25.79/11.67 12174[label="Succ (Succ (Succ (Succ (Succ (Succ Zero)))))",fontsize=16,color="green",shape="box"];12175[label="yuz244434",fontsize=16,color="green",shape="box"];12176[label="yuz244430",fontsize=16,color="green",shape="box"];12177[label="yuz24440",fontsize=16,color="green",shape="box"];12153[label="yuz2440",fontsize=16,color="green",shape="box"];12154[label="yuz561",fontsize=16,color="green",shape="box"];12155[label="yuz2441",fontsize=16,color="green",shape="box"];12156[label="yuz24443",fontsize=16,color="green",shape="box"];12528[label="yuz654",fontsize=16,color="green",shape="box"];12529[label="yuz6581",fontsize=16,color="green",shape="box"];12530[label="yuz6580",fontsize=16,color="green",shape="box"];12531[label="yuz6582",fontsize=16,color="green",shape="box"];12532[label="yuz6584",fontsize=16,color="green",shape="box"];12533[label="yuz6583",fontsize=16,color="green",shape="box"];12535[label="yuz671",fontsize=16,color="green",shape="box"];12536[label="yuz6743",fontsize=16,color="green",shape="box"];12537[label="yuz6741",fontsize=16,color="green",shape="box"];12538[label="yuz6740",fontsize=16,color="green",shape="box"];12539[label="yuz6742",fontsize=16,color="green",shape="box"];12540[label="yuz6744",fontsize=16,color="green",shape="box"];12157[label="FiniteMap.mkBalBranch6Double_R yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 FiniteMap.EmptyFM) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 FiniteMap.EmptyFM) yuz2444",fontsize=16,color="black",shape="box"];12157 -> 12200[label="",style="solid", color="black", weight=3]; 25.79/11.67 12158[label="FiniteMap.mkBalBranch6Double_R yuz2440 yuz2441 yuz2444 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 (FiniteMap.Branch yuz56140 yuz56141 yuz56142 yuz56143 yuz56144)) (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 (FiniteMap.Branch yuz56140 yuz56141 yuz56142 yuz56143 yuz56144)) yuz2444",fontsize=16,color="black",shape="box"];12158 -> 12201[label="",style="solid", color="black", weight=3]; 25.79/11.67 12196 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12196[label="FiniteMap.mkBranchResult yuz619 yuz620 yuz621 (FiniteMap.mkBranch (Pos (Succ yuz622)) yuz623 yuz624 yuz625 yuz626)",fontsize=16,color="magenta"];12196 -> 12296[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12196 -> 12297[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12196 -> 12298[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12196 -> 12299[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12197 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12197[label="primPlusNat (primMulNat (Succ Zero) (Succ yuz57500)) (Succ yuz57500)",fontsize=16,color="magenta"];12197 -> 12300[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12197 -> 12301[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12198[label="Zero",fontsize=16,color="green",shape="box"];12199 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12199[label="FiniteMap.mkBranchResult yuz2440 yuz2441 yuz561 yuz244433",fontsize=16,color="magenta"];12199 -> 12302[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12199 -> 12303[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12199 -> 12304[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12199 -> 12305[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12200[label="error []",fontsize=16,color="red",shape="box"];12201 -> 12159[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12201[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))) yuz56140 yuz56141 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) yuz5610 yuz5611 yuz5613 yuz56143) (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) yuz2440 yuz2441 yuz56144 yuz2444)",fontsize=16,color="magenta"];12201 -> 12306[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12307[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12308[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12309[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12310[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12311[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12312[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12313[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12201 -> 12314[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12296[label="yuz619",fontsize=16,color="green",shape="box"];12297[label="yuz621",fontsize=16,color="green",shape="box"];12298[label="yuz620",fontsize=16,color="green",shape="box"];12299[label="FiniteMap.mkBranch (Pos (Succ yuz622)) yuz623 yuz624 yuz625 yuz626",fontsize=16,color="black",shape="triangle"];12299 -> 12411[label="",style="solid", color="black", weight=3]; 25.79/11.67 12300[label="primMulNat (Succ Zero) (Succ yuz57500)",fontsize=16,color="black",shape="box"];12300 -> 12412[label="",style="solid", color="black", weight=3]; 25.79/11.67 12301[label="Succ yuz57500",fontsize=16,color="green",shape="box"];12302[label="yuz2440",fontsize=16,color="green",shape="box"];12303[label="yuz561",fontsize=16,color="green",shape="box"];12304[label="yuz2441",fontsize=16,color="green",shape="box"];12305[label="yuz244433",fontsize=16,color="green",shape="box"];12306[label="yuz2441",fontsize=16,color="green",shape="box"];12307[label="yuz2444",fontsize=16,color="green",shape="box"];12308[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];12309[label="yuz56141",fontsize=16,color="green",shape="box"];12310 -> 12299[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12310[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) yuz5610 yuz5611 yuz5613 yuz56143",fontsize=16,color="magenta"];12310 -> 12413[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12310 -> 12414[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12310 -> 12415[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12310 -> 12416[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12310 -> 12417[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12311[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))",fontsize=16,color="green",shape="box"];12312[label="yuz56144",fontsize=16,color="green",shape="box"];12313[label="yuz56140",fontsize=16,color="green",shape="box"];12314[label="yuz2440",fontsize=16,color="green",shape="box"];12411 -> 10677[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12411[label="FiniteMap.mkBranchResult yuz623 yuz624 yuz625 yuz626",fontsize=16,color="magenta"];12411 -> 12520[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12411 -> 12521[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12411 -> 12522[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12411 -> 12523[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12412 -> 10783[label="",style="dashed", color="red", weight=0]; 25.79/11.67 12412[label="primPlusNat (primMulNat Zero (Succ yuz57500)) (Succ yuz57500)",fontsize=16,color="magenta"];12412 -> 12524[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12412 -> 12525[label="",style="dashed", color="magenta", weight=3]; 25.79/11.67 12413[label="yuz5611",fontsize=16,color="green",shape="box"];12414[label="yuz56143",fontsize=16,color="green",shape="box"];12415[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))",fontsize=16,color="green",shape="box"];12416[label="yuz5613",fontsize=16,color="green",shape="box"];12417[label="yuz5610",fontsize=16,color="green",shape="box"];12520[label="yuz623",fontsize=16,color="green",shape="box"];12521[label="yuz625",fontsize=16,color="green",shape="box"];12522[label="yuz624",fontsize=16,color="green",shape="box"];12523[label="yuz626",fontsize=16,color="green",shape="box"];12524[label="primMulNat Zero (Succ yuz57500)",fontsize=16,color="black",shape="box"];12524 -> 12534[label="",style="solid", color="black", weight=3]; 25.79/11.67 12525[label="Succ yuz57500",fontsize=16,color="green",shape="box"];12534[label="Zero",fontsize=16,color="green",shape="box"];} 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (14) 25.79/11.67 Complex Obligation (AND) 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (15) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_addToFM_C1(yuz522, yuz523, yuz524, yuz525, yuz526, yuz527, yuz528, True, bb, bc) -> new_addToFM_C(yuz526, yuz527, yuz528, bb, bc) 25.79/11.67 new_addToFM_C2(yuz504, yuz505, yuz506, yuz507, yuz508, yuz509, yuz510, False, h, ba) -> new_addToFM_C1(yuz504, yuz505, yuz506, yuz507, yuz508, yuz509, yuz510, new_gt(yuz509, yuz504, h), h, ba) 25.79/11.67 new_addToFM_C2(yuz504, yuz505, yuz506, Branch(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074), yuz508, yuz509, yuz510, True, h, ba) -> new_addToFM_C2(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074, yuz509, yuz510, new_lt(yuz509, yuz5070, h), h, ba) 25.79/11.67 new_addToFM_C(Branch(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074), yuz509, yuz510, h, ba) -> new_addToFM_C2(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074, yuz509, yuz510, new_lt(yuz509, yuz5070, h), h, ba) 25.79/11.67 25.79/11.67 The TRS R consists of the following rules: 25.79/11.67 25.79/11.67 new_lt1(yuz185, yuz180) -> new_esEs1(yuz185, yuz180) 25.79/11.67 new_esEs10(Zero, Succ(yuz504000)) -> new_esEs12 25.79/11.67 new_esEs7 -> False 25.79/11.67 new_esEs2(yuz18500, Succ(yuz18000)) -> new_esEs8(yuz18500, yuz18000) 25.79/11.67 new_lt(yuz509, yuz5070, ty_Int) -> new_lt1(yuz509, yuz5070) 25.79/11.67 new_gt(yuz509, yuz504, ty_Ordering) -> error([]) 25.79/11.67 new_lt(yuz509, yuz5070, ty_Ordering) -> error([]) 25.79/11.67 new_lt(yuz509, yuz5070, app(ty_Ratio, bd)) -> error([]) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Neg(Zero), Pos(Zero)) -> new_esEs5 25.79/11.67 new_gt0(Pos(Zero), Pos(Succ(yuz50400))) -> new_esEs13(Zero, yuz50400) 25.79/11.67 new_lt(yuz509, yuz5070, app(app(app(ty_@3, cb), cc), cd)) -> error([]) 25.79/11.67 new_esEs9(yuz50900, Succ(yuz50400)) -> new_esEs10(yuz50900, yuz50400) 25.79/11.67 new_esEs3 -> False 25.79/11.67 new_esEs2(yuz18500, Zero) -> new_esEs3 25.79/11.67 new_esEs4(Succ(yuz18000), yuz18500) -> new_esEs8(yuz18000, yuz18500) 25.79/11.67 new_gt(yuz509, yuz504, app(app(app(ty_@3, cb), cc), cd)) -> error([]) 25.79/11.67 new_esEs10(Succ(yuz509000), Zero) -> new_esEs11 25.79/11.67 new_gt0(Neg(Zero), Pos(Succ(yuz50400))) -> new_esEs12 25.79/11.67 new_esEs1(Pos(Succ(yuz18500)), Neg(yuz1800)) -> new_esEs3 25.79/11.67 new_esEs13(Zero, yuz50900) -> new_esEs12 25.79/11.67 new_esEs10(Succ(yuz509000), Succ(yuz504000)) -> new_esEs10(yuz509000, yuz504000) 25.79/11.67 new_esEs13(Succ(yuz50400), yuz50900) -> new_esEs10(yuz50400, yuz50900) 25.79/11.67 new_esEs12 -> False 25.79/11.67 new_lt(yuz509, yuz5070, ty_Char) -> error([]) 25.79/11.67 new_esEs11 -> True 25.79/11.67 new_lt0(@0, @0) -> new_esEs5 25.79/11.67 new_lt(yuz509, yuz5070, ty_Float) -> error([]) 25.79/11.67 new_gt(yuz509, yuz504, app(app(ty_Either, bh), ca)) -> error([]) 25.79/11.67 new_gt(yuz509, yuz504, ty_Integer) -> error([]) 25.79/11.67 new_gt0(Pos(Succ(yuz50900)), Neg(yuz5040)) -> new_esEs11 25.79/11.67 new_lt(yuz509, yuz5070, app(ty_Maybe, be)) -> error([]) 25.79/11.67 new_lt(yuz509, yuz5070, ty_@0) -> new_lt0(yuz509, yuz5070) 25.79/11.67 new_lt(yuz509, yuz5070, ty_Bool) -> error([]) 25.79/11.67 new_gt(yuz509, yuz504, app(ty_[], ce)) -> error([]) 25.79/11.67 new_esEs4(Zero, yuz18500) -> new_esEs6 25.79/11.67 new_lt(yuz509, yuz5070, ty_Double) -> error([]) 25.79/11.67 new_lt(yuz509, yuz5070, app(app(ty_@2, bf), bg)) -> error([]) 25.79/11.67 new_esEs5 -> False 25.79/11.67 new_esEs1(Pos(Zero), Pos(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Pos(Succ(yuz18500)), Pos(yuz1800)) -> new_esEs2(yuz18500, yuz1800) 25.79/11.67 new_gt0(Neg(Zero), Neg(Succ(yuz50400))) -> new_esEs9(yuz50400, Zero) 25.79/11.67 new_gt0(Pos(Succ(yuz50900)), Pos(yuz5040)) -> new_esEs9(yuz50900, yuz5040) 25.79/11.67 new_gt(yuz509, yuz504, app(app(ty_@2, bf), bg)) -> error([]) 25.79/11.67 new_gt(yuz509, yuz504, ty_Double) -> error([]) 25.79/11.67 new_gt(yuz509, yuz504, ty_Bool) -> error([]) 25.79/11.67 new_lt(yuz509, yuz5070, app(ty_[], ce)) -> error([]) 25.79/11.67 new_esEs1(Neg(Succ(yuz18500)), Neg(yuz1800)) -> new_esEs4(yuz1800, yuz18500) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Succ(yuz18000))) -> new_esEs2(yuz18000, Zero) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Neg(Zero), Pos(Succ(yuz18000))) -> new_esEs6 25.79/11.67 new_esEs8(Succ(yuz185000), Zero) -> new_esEs3 25.79/11.67 new_gt0(Neg(Zero), Neg(Zero)) -> new_esEs7 25.79/11.67 new_lt(yuz509, yuz5070, app(app(ty_Either, bh), ca)) -> error([]) 25.79/11.67 new_gt(@0, @0, ty_@0) -> new_esEs7 25.79/11.67 new_esEs8(Zero, Zero) -> new_esEs5 25.79/11.67 new_gt(yuz509, yuz504, ty_Char) -> error([]) 25.79/11.67 new_esEs6 -> True 25.79/11.67 new_gt0(Pos(Zero), Pos(Zero)) -> new_esEs7 25.79/11.67 new_gt(yuz509, yuz504, ty_Float) -> error([]) 25.79/11.67 new_gt0(Pos(Zero), Neg(Zero)) -> new_esEs7 25.79/11.67 new_gt0(Neg(Zero), Pos(Zero)) -> new_esEs7 25.79/11.67 new_esEs1(Neg(Succ(yuz18500)), Pos(yuz1800)) -> new_esEs6 25.79/11.67 new_gt(yuz509, yuz504, app(ty_Maybe, be)) -> error([]) 25.79/11.67 new_gt0(Pos(Zero), Neg(Succ(yuz50400))) -> new_esEs11 25.79/11.67 new_esEs1(Pos(Zero), Pos(Succ(yuz18000))) -> new_esEs4(Zero, yuz18000) 25.79/11.67 new_lt(yuz509, yuz5070, ty_Integer) -> error([]) 25.79/11.67 new_gt(yuz509, yuz504, ty_Int) -> new_gt0(yuz509, yuz504) 25.79/11.67 new_gt0(Neg(Succ(yuz50900)), Pos(yuz5040)) -> new_esEs12 25.79/11.67 new_esEs9(yuz50900, Zero) -> new_esEs11 25.79/11.67 new_esEs8(Succ(yuz185000), Succ(yuz180000)) -> new_esEs8(yuz185000, yuz180000) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Succ(yuz18000))) -> new_esEs3 25.79/11.67 new_esEs8(Zero, Succ(yuz180000)) -> new_esEs6 25.79/11.67 new_gt0(Neg(Succ(yuz50900)), Neg(yuz5040)) -> new_esEs13(yuz5040, yuz50900) 25.79/11.67 new_esEs10(Zero, Zero) -> new_esEs7 25.79/11.67 new_gt(yuz509, yuz504, app(ty_Ratio, bd)) -> error([]) 25.79/11.67 25.79/11.67 The set Q consists of the following terms: 25.79/11.67 25.79/11.67 new_lt(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 25.79/11.67 new_lt0(@0, @0) 25.79/11.67 new_lt(x0, x1, app(app(ty_@2, x2), x3)) 25.79/11.67 new_esEs10(Succ(x0), Zero) 25.79/11.67 new_lt1(x0, x1) 25.79/11.67 new_gt0(Neg(Succ(x0)), Neg(x1)) 25.79/11.67 new_esEs8(Succ(x0), Succ(x1)) 25.79/11.67 new_gt(x0, x1, ty_Ordering) 25.79/11.67 new_esEs10(Zero, Zero) 25.79/11.67 new_gt(x0, x1, app(app(ty_@2, x2), x3)) 25.79/11.67 new_esEs13(Zero, x0) 25.79/11.67 new_esEs8(Zero, Succ(x0)) 25.79/11.67 new_gt(@0, @0, ty_@0) 25.79/11.67 new_gt(x0, x1, ty_Float) 25.79/11.67 new_esEs8(Zero, Zero) 25.79/11.67 new_lt(x0, x1, ty_Int) 25.79/11.67 new_lt(x0, x1, app(ty_[], x2)) 25.79/11.67 new_gt(x0, x1, ty_Bool) 25.79/11.67 new_gt0(Pos(Succ(x0)), Neg(x1)) 25.79/11.67 new_gt0(Neg(Succ(x0)), Pos(x1)) 25.79/11.67 new_lt(x0, x1, ty_Double) 25.79/11.67 new_gt0(Pos(Zero), Pos(Zero)) 25.79/11.67 new_esEs9(x0, Succ(x1)) 25.79/11.67 new_esEs4(Succ(x0), x1) 25.79/11.67 new_gt0(Neg(Zero), Pos(Succ(x0))) 25.79/11.67 new_gt0(Pos(Zero), Neg(Succ(x0))) 25.79/11.67 new_gt(x0, x1, app(app(ty_Either, x2), x3)) 25.79/11.67 new_esEs10(Zero, Succ(x0)) 25.79/11.67 new_lt(x0, x1, app(ty_Ratio, x2)) 25.79/11.67 new_lt(x0, x1, app(ty_Maybe, x2)) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Zero)) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Zero)) 25.79/11.67 new_esEs3 25.79/11.67 new_gt0(Pos(Zero), Pos(Succ(x0))) 25.79/11.67 new_lt(x0, x1, app(app(ty_Either, x2), x3)) 25.79/11.67 new_lt(x0, x1, ty_Char) 25.79/11.67 new_lt(x0, x1, ty_@0) 25.79/11.67 new_esEs1(Pos(Succ(x0)), Pos(x1)) 25.79/11.67 new_gt(x0, x1, app(ty_Ratio, x2)) 25.79/11.67 new_esEs13(Succ(x0), x1) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Zero)) 25.79/11.67 new_esEs5 25.79/11.67 new_lt(x0, x1, ty_Integer) 25.79/11.67 new_gt(x0, x1, ty_Integer) 25.79/11.67 new_esEs2(x0, Succ(x1)) 25.79/11.67 new_esEs11 25.79/11.67 new_esEs1(Neg(Zero), Pos(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Zero)) 25.79/11.67 new_gt(x0, x1, ty_Int) 25.79/11.67 new_esEs10(Succ(x0), Succ(x1)) 25.79/11.67 new_gt(x0, x1, app(ty_Maybe, x2)) 25.79/11.67 new_esEs6 25.79/11.67 new_gt0(Neg(Zero), Neg(Succ(x0))) 25.79/11.67 new_lt(x0, x1, ty_Bool) 25.79/11.67 new_gt0(Pos(Succ(x0)), Pos(x1)) 25.79/11.67 new_gt0(Pos(Zero), Neg(Zero)) 25.79/11.67 new_gt0(Neg(Zero), Pos(Zero)) 25.79/11.67 new_esEs2(x0, Zero) 25.79/11.67 new_esEs12 25.79/11.67 new_esEs1(Neg(Succ(x0)), Neg(x1)) 25.79/11.67 new_esEs1(Pos(Succ(x0)), Neg(x1)) 25.79/11.67 new_lt(x0, x1, ty_Float) 25.79/11.67 new_gt(x0, x1, ty_Double) 25.79/11.67 new_esEs1(Neg(Succ(x0)), Pos(x1)) 25.79/11.67 new_esEs9(x0, Zero) 25.79/11.67 new_lt(x0, x1, ty_Ordering) 25.79/11.67 new_esEs7 25.79/11.67 new_gt(x0, x1, app(ty_[], x2)) 25.79/11.67 new_gt(x0, x1, ty_Char) 25.79/11.67 new_gt0(Neg(Zero), Neg(Zero)) 25.79/11.67 new_gt(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Succ(x0))) 25.79/11.67 new_esEs4(Zero, x0) 25.79/11.67 new_esEs8(Succ(x0), Zero) 25.79/11.67 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (16) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_addToFM_C(Branch(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074), yuz509, yuz510, h, ba) -> new_addToFM_C2(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074, yuz509, yuz510, new_lt(yuz509, yuz5070, h), h, ba) 25.79/11.67 The graph contains the following edges 1 > 1, 1 > 2, 1 > 3, 1 > 4, 1 > 5, 2 >= 6, 3 >= 7, 4 >= 9, 5 >= 10 25.79/11.67 25.79/11.67 25.79/11.67 *new_addToFM_C2(yuz504, yuz505, yuz506, yuz507, yuz508, yuz509, yuz510, False, h, ba) -> new_addToFM_C1(yuz504, yuz505, yuz506, yuz507, yuz508, yuz509, yuz510, new_gt(yuz509, yuz504, h), h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 9 >= 9, 10 >= 10 25.79/11.67 25.79/11.67 25.79/11.67 *new_addToFM_C1(yuz522, yuz523, yuz524, yuz525, yuz526, yuz527, yuz528, True, bb, bc) -> new_addToFM_C(yuz526, yuz527, yuz528, bb, bc) 25.79/11.67 The graph contains the following edges 5 >= 1, 6 >= 2, 7 >= 3, 9 >= 4, 10 >= 5 25.79/11.67 25.79/11.67 25.79/11.67 *new_addToFM_C2(yuz504, yuz505, yuz506, Branch(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074), yuz508, yuz509, yuz510, True, h, ba) -> new_addToFM_C2(yuz5070, yuz5071, yuz5072, yuz5073, yuz5074, yuz509, yuz510, new_lt(yuz509, yuz5070, h), h, ba) 25.79/11.67 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7, 9 >= 9, 10 >= 10 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (17) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (18) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_mkVBalBranch3MkVBalBranch1(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, Branch(yuz18440, yuz18441, yuz18442, yuz18443, yuz18444), yuz185, yuz186, True, h, ba) -> new_mkVBalBranch3(yuz185, yuz186, yuz18440, yuz18441, yuz18442, yuz18443, yuz18444, yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, h, ba) 25.79/11.67 new_mkVBalBranch3(yuz185, yuz186, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, new_lt1(new_sr(new_mkVBalBranch3Size_l(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), new_mkVBalBranch3Size_r(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), h, ba) 25.79/11.67 new_mkVBalBranch3MkVBalBranch2(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, False, h, ba) -> new_mkVBalBranch3MkVBalBranch1(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, new_lt1(new_sr(new_mkVBalBranch3Size_r(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), new_mkVBalBranch3Size_l(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), h, ba) 25.79/11.67 new_mkVBalBranch3MkVBalBranch2(yuz1780, yuz1781, yuz1782, Branch(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834), yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, True, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, new_lt1(new_sr(new_mkVBalBranch3Size_l(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), new_mkVBalBranch3Size_r(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), h, ba) 25.79/11.67 25.79/11.67 The TRS R consists of the following rules: 25.79/11.67 25.79/11.67 new_lt1(yuz185, yuz180) -> new_esEs1(yuz185, yuz180) 25.79/11.67 new_primMulNat(Succ(yuz42700)) -> new_primPlusNat0(new_primPlusNat0(new_primPlusNat0(Succ(Succ(new_primPlusNat0(yuz42700, yuz42700))), Succ(yuz42700)), Succ(yuz42700)), Succ(yuz42700)) 25.79/11.67 new_sr(Pos(yuz4270)) -> Pos(new_primMulNat(yuz4270)) 25.79/11.67 new_esEs4(Zero, yuz18500) -> new_esEs6 25.79/11.67 new_esEs2(yuz18500, Succ(yuz18000)) -> new_esEs8(yuz18500, yuz18000) 25.79/11.67 new_esEs5 -> False 25.79/11.67 new_primPlusNat0(Succ(yuz459200), Zero) -> Succ(yuz459200) 25.79/11.67 new_primPlusNat0(Zero, Succ(yuz49300)) -> Succ(yuz49300) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Pos(Succ(yuz18500)), Pos(yuz1800)) -> new_esEs2(yuz18500, yuz1800) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Neg(Zero), Pos(Zero)) -> new_esEs5 25.79/11.67 new_primPlusNat0(Zero, Zero) -> Zero 25.79/11.67 new_esEs3 -> False 25.79/11.67 new_primMulNat(Zero) -> Zero 25.79/11.67 new_sizeFM(Branch(yuz4730, yuz4731, yuz4732, yuz4733, yuz4734), bb, bc) -> yuz4732 25.79/11.67 new_esEs1(Neg(Succ(yuz18500)), Neg(yuz1800)) -> new_esEs4(yuz1800, yuz18500) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Succ(yuz18000))) -> new_esEs2(yuz18000, Zero) 25.79/11.67 new_esEs2(yuz18500, Zero) -> new_esEs3 25.79/11.67 new_esEs1(Neg(Zero), Neg(Zero)) -> new_esEs5 25.79/11.67 new_esEs4(Succ(yuz18000), yuz18500) -> new_esEs8(yuz18000, yuz18500) 25.79/11.67 new_mkVBalBranch3Size_l(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba) -> new_sizeFM(Branch(yuz1840, yuz1841, yuz1842, yuz1843, yuz1844), h, ba) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Succ(yuz18000))) -> new_esEs6 25.79/11.67 new_esEs8(Succ(yuz185000), Zero) -> new_esEs3 25.79/11.67 new_esEs1(Pos(Succ(yuz18500)), Neg(yuz1800)) -> new_esEs3 25.79/11.67 new_esEs8(Zero, Zero) -> new_esEs5 25.79/11.67 new_esEs6 -> True 25.79/11.67 new_mkVBalBranch3Size_r(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba) -> new_sizeFM(Branch(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784), h, ba) 25.79/11.67 new_esEs1(Neg(Succ(yuz18500)), Pos(yuz1800)) -> new_esEs6 25.79/11.67 new_esEs1(Pos(Zero), Pos(Succ(yuz18000))) -> new_esEs4(Zero, yuz18000) 25.79/11.67 new_sr(Neg(yuz4270)) -> Neg(new_primMulNat(yuz4270)) 25.79/11.67 new_esEs8(Succ(yuz185000), Succ(yuz180000)) -> new_esEs8(yuz185000, yuz180000) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Succ(yuz18000))) -> new_esEs3 25.79/11.67 new_esEs8(Zero, Succ(yuz180000)) -> new_esEs6 25.79/11.67 new_sizeFM(EmptyFM, bb, bc) -> Pos(Zero) 25.79/11.67 new_primPlusNat0(Succ(yuz459200), Succ(yuz49300)) -> Succ(Succ(new_primPlusNat0(yuz459200, yuz49300))) 25.79/11.67 25.79/11.67 The set Q consists of the following terms: 25.79/11.67 25.79/11.67 new_mkVBalBranch3Size_l(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Zero)) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Zero)) 25.79/11.67 new_esEs3 25.79/11.67 new_lt1(x0, x1) 25.79/11.67 new_esEs8(Succ(x0), Succ(x1)) 25.79/11.67 new_esEs1(Pos(Succ(x0)), Pos(x1)) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Zero)) 25.79/11.67 new_esEs5 25.79/11.67 new_primMulNat(Zero) 25.79/11.67 new_sizeFM(EmptyFM, x0, x1) 25.79/11.67 new_primMulNat(Succ(x0)) 25.79/11.67 new_esEs2(x0, Succ(x1)) 25.79/11.67 new_esEs8(Zero, Succ(x0)) 25.79/11.67 new_sr(Pos(x0)) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Succ(x0))) 25.79/11.67 new_mkVBalBranch3Size_r(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Zero)) 25.79/11.67 new_esEs6 25.79/11.67 new_primPlusNat0(Succ(x0), Zero) 25.79/11.67 new_esEs8(Zero, Zero) 25.79/11.67 new_esEs2(x0, Zero) 25.79/11.67 new_esEs1(Neg(Succ(x0)), Neg(x1)) 25.79/11.67 new_primPlusNat0(Zero, Succ(x0)) 25.79/11.67 new_esEs1(Pos(Succ(x0)), Neg(x1)) 25.79/11.67 new_esEs1(Neg(Succ(x0)), Pos(x1)) 25.79/11.67 new_sizeFM(Branch(x0, x1, x2, x3, x4), x5, x6) 25.79/11.67 new_primPlusNat0(Succ(x0), Succ(x1)) 25.79/11.67 new_sr(Neg(x0)) 25.79/11.67 new_esEs4(Succ(x0), x1) 25.79/11.67 new_primPlusNat0(Zero, Zero) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Succ(x0))) 25.79/11.67 new_esEs4(Zero, x0) 25.79/11.67 new_esEs8(Succ(x0), Zero) 25.79/11.67 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (19) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_mkVBalBranch3(yuz185, yuz186, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, new_lt1(new_sr(new_mkVBalBranch3Size_l(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), new_mkVBalBranch3Size_r(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), h, ba) 25.79/11.67 The graph contains the following edges 8 >= 1, 9 >= 2, 10 >= 3, 11 >= 4, 12 >= 5, 3 >= 6, 4 >= 7, 5 >= 8, 6 >= 9, 7 >= 10, 1 >= 11, 2 >= 12, 13 >= 14, 14 >= 15 25.79/11.67 25.79/11.67 25.79/11.67 *new_mkVBalBranch3MkVBalBranch2(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, False, h, ba) -> new_mkVBalBranch3MkVBalBranch1(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, new_lt1(new_sr(new_mkVBalBranch3Size_r(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), new_mkVBalBranch3Size_l(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 11 >= 11, 12 >= 12, 14 >= 14, 15 >= 15 25.79/11.67 25.79/11.67 25.79/11.67 *new_mkVBalBranch3MkVBalBranch2(yuz1780, yuz1781, yuz1782, Branch(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834), yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, True, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, yuz185, yuz186, new_lt1(new_sr(new_mkVBalBranch3Size_l(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), new_mkVBalBranch3Size_r(yuz17830, yuz17831, yuz17832, yuz17833, yuz17834, yuz1840, yuz1841, yuz1842, yuz1843, yuz1844, h, ba)), h, ba) 25.79/11.67 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 11 >= 11, 12 >= 12, 14 >= 14, 15 >= 15 25.79/11.67 25.79/11.67 25.79/11.67 *new_mkVBalBranch3MkVBalBranch1(yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, yuz1840, yuz1841, yuz1842, yuz1843, Branch(yuz18440, yuz18441, yuz18442, yuz18443, yuz18444), yuz185, yuz186, True, h, ba) -> new_mkVBalBranch3(yuz185, yuz186, yuz18440, yuz18441, yuz18442, yuz18443, yuz18444, yuz1780, yuz1781, yuz1782, yuz1783, yuz1784, h, ba) 25.79/11.67 The graph contains the following edges 11 >= 1, 12 >= 2, 10 > 3, 10 > 4, 10 > 5, 10 > 6, 10 > 7, 1 >= 8, 2 >= 9, 3 >= 10, 4 >= 11, 5 >= 12, 14 >= 13, 15 >= 14 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (20) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (21) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_glueVBal3GlueVBal1(yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, True, h, ba) -> new_glueVBal3(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba) 25.79/11.67 new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, Branch(yuz24430, yuz24431, yuz24432, yuz24433, yuz24434), yuz2444, True, h, ba) -> new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, new_lt1(new_sr(new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), h, ba) 25.79/11.67 new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, False, h, ba) -> new_glueVBal3GlueVBal1(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, new_lt1(new_sr(new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba)), new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba)), h, ba) 25.79/11.67 new_glueVBal3(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba) -> new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, new_lt1(new_sr(new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), h, ba) 25.79/11.67 25.79/11.67 The TRS R consists of the following rules: 25.79/11.67 25.79/11.67 new_lt1(yuz185, yuz180) -> new_esEs1(yuz185, yuz180) 25.79/11.67 new_primMulNat(Succ(yuz42700)) -> new_primPlusNat0(new_primPlusNat0(new_primPlusNat0(Succ(Succ(new_primPlusNat0(yuz42700, yuz42700))), Succ(yuz42700)), Succ(yuz42700)), Succ(yuz42700)) 25.79/11.67 new_sr(Pos(yuz4270)) -> Pos(new_primMulNat(yuz4270)) 25.79/11.67 new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba) -> new_sizeFM(Branch(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404), h, ba) 25.79/11.67 new_esEs4(Zero, yuz18500) -> new_esEs6 25.79/11.67 new_esEs2(yuz18500, Succ(yuz18000)) -> new_esEs8(yuz18500, yuz18000) 25.79/11.67 new_esEs5 -> False 25.79/11.67 new_primPlusNat0(Succ(yuz459200), Zero) -> Succ(yuz459200) 25.79/11.67 new_primPlusNat0(Zero, Succ(yuz49300)) -> Succ(yuz49300) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Pos(Succ(yuz18500)), Pos(yuz1800)) -> new_esEs2(yuz18500, yuz1800) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Zero)) -> new_esEs5 25.79/11.67 new_esEs1(Neg(Zero), Pos(Zero)) -> new_esEs5 25.79/11.67 new_primPlusNat0(Zero, Zero) -> Zero 25.79/11.67 new_esEs3 -> False 25.79/11.67 new_primMulNat(Zero) -> Zero 25.79/11.67 new_sizeFM(Branch(yuz4730, yuz4731, yuz4732, yuz4733, yuz4734), h, ba) -> yuz4732 25.79/11.67 new_esEs1(Neg(Succ(yuz18500)), Neg(yuz1800)) -> new_esEs4(yuz1800, yuz18500) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Succ(yuz18000))) -> new_esEs2(yuz18000, Zero) 25.79/11.67 new_esEs2(yuz18500, Zero) -> new_esEs3 25.79/11.67 new_esEs1(Neg(Zero), Neg(Zero)) -> new_esEs5 25.79/11.67 new_esEs4(Succ(yuz18000), yuz18500) -> new_esEs8(yuz18000, yuz18500) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Succ(yuz18000))) -> new_esEs6 25.79/11.67 new_esEs8(Succ(yuz185000), Zero) -> new_esEs3 25.79/11.67 new_esEs1(Pos(Succ(yuz18500)), Neg(yuz1800)) -> new_esEs3 25.79/11.67 new_esEs8(Zero, Zero) -> new_esEs5 25.79/11.67 new_esEs6 -> True 25.79/11.67 new_esEs1(Neg(Succ(yuz18500)), Pos(yuz1800)) -> new_esEs6 25.79/11.67 new_esEs1(Pos(Zero), Pos(Succ(yuz18000))) -> new_esEs4(Zero, yuz18000) 25.79/11.67 new_sr(Neg(yuz4270)) -> Neg(new_primMulNat(yuz4270)) 25.79/11.67 new_esEs8(Succ(yuz185000), Succ(yuz180000)) -> new_esEs8(yuz185000, yuz180000) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Succ(yuz18000))) -> new_esEs3 25.79/11.67 new_esEs8(Zero, Succ(yuz180000)) -> new_esEs6 25.79/11.67 new_sizeFM(EmptyFM, h, ba) -> Pos(Zero) 25.79/11.67 new_primPlusNat0(Succ(yuz459200), Succ(yuz49300)) -> Succ(Succ(new_primPlusNat0(yuz459200, yuz49300))) 25.79/11.67 new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba) -> new_sizeFM(Branch(yuz2440, yuz2441, yuz2442, yuz2443, yuz2444), h, ba) 25.79/11.67 25.79/11.67 The set Q consists of the following terms: 25.79/11.67 25.79/11.67 new_sizeFM(Branch(x0, x1, x2, x3, x4), x5, x6) 25.79/11.67 new_glueVBal3Size_r(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 25.79/11.67 new_sizeFM(EmptyFM, x0, x1) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Zero)) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Zero)) 25.79/11.67 new_esEs3 25.79/11.67 new_lt1(x0, x1) 25.79/11.67 new_glueVBal3Size_l(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 25.79/11.67 new_esEs8(Succ(x0), Succ(x1)) 25.79/11.67 new_esEs1(Pos(Succ(x0)), Pos(x1)) 25.79/11.67 new_esEs1(Neg(Zero), Neg(Zero)) 25.79/11.67 new_esEs5 25.79/11.67 new_primMulNat(Zero) 25.79/11.67 new_primMulNat(Succ(x0)) 25.79/11.67 new_esEs2(x0, Succ(x1)) 25.79/11.67 new_esEs8(Zero, Succ(x0)) 25.79/11.67 new_sr(Pos(x0)) 25.79/11.67 new_esEs1(Neg(Zero), Pos(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Neg(Succ(x0))) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Zero)) 25.79/11.67 new_esEs6 25.79/11.67 new_primPlusNat0(Succ(x0), Zero) 25.79/11.67 new_esEs8(Zero, Zero) 25.79/11.67 new_esEs2(x0, Zero) 25.79/11.67 new_esEs1(Neg(Succ(x0)), Neg(x1)) 25.79/11.67 new_primPlusNat0(Zero, Succ(x0)) 25.79/11.67 new_esEs1(Pos(Succ(x0)), Neg(x1)) 25.79/11.67 new_esEs1(Neg(Succ(x0)), Pos(x1)) 25.79/11.67 new_primPlusNat0(Succ(x0), Succ(x1)) 25.79/11.67 new_sr(Neg(x0)) 25.79/11.67 new_esEs4(Succ(x0), x1) 25.79/11.67 new_primPlusNat0(Zero, Zero) 25.79/11.67 new_esEs1(Pos(Zero), Pos(Succ(x0))) 25.79/11.67 new_esEs4(Zero, x0) 25.79/11.67 new_esEs8(Succ(x0), Zero) 25.79/11.67 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (22) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_glueVBal3(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba) -> new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, new_lt1(new_sr(new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 11 >= 12, 12 >= 13 25.79/11.67 25.79/11.67 25.79/11.67 *new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, False, h, ba) -> new_glueVBal3GlueVBal1(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, new_lt1(new_sr(new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba)), new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba)), h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 12 >= 12, 13 >= 13 25.79/11.67 25.79/11.67 25.79/11.67 *new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz2440, yuz2441, yuz2442, Branch(yuz24430, yuz24431, yuz24432, yuz24433, yuz24434), yuz2444, True, h, ba) -> new_glueVBal3GlueVBal2(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, new_lt1(new_sr(new_glueVBal3Size_l(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), new_glueVBal3Size_r(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba)), h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 9 > 6, 9 > 7, 9 > 8, 9 > 9, 9 > 10, 12 >= 12, 13 >= 13 25.79/11.67 25.79/11.67 25.79/11.67 *new_glueVBal3GlueVBal1(yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, True, h, ba) -> new_glueVBal3(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, yuz2440, yuz2441, yuz2442, yuz2443, yuz2444, h, ba) 25.79/11.67 The graph contains the following edges 5 > 1, 5 > 2, 5 > 3, 5 > 4, 5 > 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 12 >= 11, 13 >= 12 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (23) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (24) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz43, h) 25.79/11.67 new_filterFM(yuz3, Branch(yuz40, yuz41, yuz42, yuz43, yuz44), h) -> new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) 25.79/11.67 new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz44, h) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (25) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_filterFM(yuz3, Branch(yuz40, yuz41, yuz42, yuz43, yuz44), h) -> new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 > 2, 2 > 3, 2 > 4, 2 > 5, 2 > 6, 3 >= 7 25.79/11.67 25.79/11.67 25.79/11.67 *new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz43, h) 25.79/11.67 The graph contains the following edges 1 >= 1, 5 >= 2, 7 >= 3 25.79/11.67 25.79/11.67 25.79/11.67 *new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz44, h) 25.79/11.67 The graph contains the following edges 1 >= 1, 6 >= 2, 7 >= 3 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (26) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (27) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_primMinusNat(Succ(yuz53800), Succ(yuz53700)) -> new_primMinusNat(yuz53800, yuz53700) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (28) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_primMinusNat(Succ(yuz53800), Succ(yuz53700)) -> new_primMinusNat(yuz53800, yuz53700) 25.79/11.67 The graph contains the following edges 1 > 1, 2 > 2 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (29) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (30) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_primPlusNat(Succ(yuz459200), Succ(yuz49300)) -> new_primPlusNat(yuz459200, yuz49300) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (31) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_primPlusNat(Succ(yuz459200), Succ(yuz49300)) -> new_primPlusNat(yuz459200, yuz49300) 25.79/11.67 The graph contains the following edges 1 > 1, 2 > 2 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (32) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (33) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_glueBal2Mid_key10(yuz644, yuz645, yuz646, yuz647, yuz648, yuz649, yuz650, yuz651, yuz652, yuz653, yuz654, yuz655, yuz656, yuz657, Branch(yuz6580, yuz6581, yuz6582, yuz6583, yuz6584), h, ba) -> new_glueBal2Mid_key10(yuz644, yuz645, yuz646, yuz647, yuz648, yuz649, yuz650, yuz651, yuz652, yuz653, yuz6580, yuz6581, yuz6582, yuz6583, yuz6584, h, ba) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (34) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_glueBal2Mid_key10(yuz644, yuz645, yuz646, yuz647, yuz648, yuz649, yuz650, yuz651, yuz652, yuz653, yuz654, yuz655, yuz656, yuz657, Branch(yuz6580, yuz6581, yuz6582, yuz6583, yuz6584), h, ba) -> new_glueBal2Mid_key10(yuz644, yuz645, yuz646, yuz647, yuz648, yuz649, yuz650, yuz651, yuz652, yuz653, yuz6580, yuz6581, yuz6582, yuz6583, yuz6584, h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 15 > 11, 15 > 12, 15 > 13, 15 > 14, 15 > 15, 16 >= 16, 17 >= 17 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (35) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (36) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_deleteMin(yuz2440, yuz2441, yuz2442, Branch(yuz24430, yuz24431, yuz24432, yuz24433, yuz24434), yuz2444, h, ba) -> new_deleteMin(yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (37) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_deleteMin(yuz2440, yuz2441, yuz2442, Branch(yuz24430, yuz24431, yuz24432, yuz24433, yuz24434), yuz2444, h, ba) -> new_deleteMin(yuz24430, yuz24431, yuz24432, yuz24433, yuz24434, h, ba) 25.79/11.67 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (38) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (39) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_glueBal2Mid_elt20(yuz628, yuz629, yuz630, yuz631, yuz632, yuz633, yuz634, yuz635, yuz636, yuz637, yuz638, yuz639, yuz640, Branch(yuz6410, yuz6411, yuz6412, yuz6413, yuz6414), yuz642, h, ba) -> new_glueBal2Mid_elt20(yuz628, yuz629, yuz630, yuz631, yuz632, yuz633, yuz634, yuz635, yuz636, yuz637, yuz6410, yuz6411, yuz6412, yuz6413, yuz6414, h, ba) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (40) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_glueBal2Mid_elt20(yuz628, yuz629, yuz630, yuz631, yuz632, yuz633, yuz634, yuz635, yuz636, yuz637, yuz638, yuz639, yuz640, Branch(yuz6410, yuz6411, yuz6412, yuz6413, yuz6414), yuz642, h, ba) -> new_glueBal2Mid_elt20(yuz628, yuz629, yuz630, yuz631, yuz632, yuz633, yuz634, yuz635, yuz636, yuz637, yuz6410, yuz6411, yuz6412, yuz6413, yuz6414, h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 14 > 11, 14 > 12, 14 > 13, 14 > 14, 14 > 15, 16 >= 16, 17 >= 17 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (41) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (42) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_glueBal2Mid_key20(yuz581, yuz582, yuz583, yuz584, yuz585, yuz586, yuz587, yuz588, yuz589, yuz590, yuz591, yuz592, yuz593, Branch(yuz5940, yuz5941, yuz5942, yuz5943, yuz5944), yuz595, h, ba) -> new_glueBal2Mid_key20(yuz581, yuz582, yuz583, yuz584, yuz585, yuz586, yuz587, yuz588, yuz589, yuz590, yuz5940, yuz5941, yuz5942, yuz5943, yuz5944, h, ba) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (43) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_glueBal2Mid_key20(yuz581, yuz582, yuz583, yuz584, yuz585, yuz586, yuz587, yuz588, yuz589, yuz590, yuz591, yuz592, yuz593, Branch(yuz5940, yuz5941, yuz5942, yuz5943, yuz5944), yuz595, h, ba) -> new_glueBal2Mid_key20(yuz581, yuz582, yuz583, yuz584, yuz585, yuz586, yuz587, yuz588, yuz589, yuz590, yuz5940, yuz5941, yuz5942, yuz5943, yuz5944, h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 14 > 11, 14 > 12, 14 > 13, 14 > 14, 14 > 15, 16 >= 16, 17 >= 17 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (44) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (45) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_deleteMax(yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), h, ba) -> new_deleteMax(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, h, ba) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (46) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_deleteMax(yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), h, ba) -> new_deleteMax(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, h, ba) 25.79/11.67 The graph contains the following edges 5 > 1, 5 > 2, 5 > 3, 5 > 4, 5 > 5, 6 >= 6, 7 >= 7 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (47) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (48) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_glueBal2Mid_elt10(yuz660, yuz661, yuz662, yuz663, yuz664, yuz665, yuz666, yuz667, yuz668, yuz669, yuz670, yuz671, yuz672, yuz673, Branch(yuz6740, yuz6741, yuz6742, yuz6743, yuz6744), h, ba) -> new_glueBal2Mid_elt10(yuz660, yuz661, yuz662, yuz663, yuz664, yuz665, yuz666, yuz667, yuz668, yuz669, yuz6740, yuz6741, yuz6742, yuz6743, yuz6744, h, ba) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (49) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_glueBal2Mid_elt10(yuz660, yuz661, yuz662, yuz663, yuz664, yuz665, yuz666, yuz667, yuz668, yuz669, yuz670, yuz671, yuz672, yuz673, Branch(yuz6740, yuz6741, yuz6742, yuz6743, yuz6744), h, ba) -> new_glueBal2Mid_elt10(yuz660, yuz661, yuz662, yuz663, yuz664, yuz665, yuz666, yuz667, yuz668, yuz669, yuz6740, yuz6741, yuz6742, yuz6743, yuz6744, h, ba) 25.79/11.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 8, 9 >= 9, 10 >= 10, 15 > 11, 15 > 12, 15 > 13, 15 > 14, 15 > 15, 16 >= 16, 17 >= 17 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (50) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (51) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_esEs0(Succ(yuz185000), Succ(yuz180000)) -> new_esEs0(yuz185000, yuz180000) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (52) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_esEs0(Succ(yuz185000), Succ(yuz180000)) -> new_esEs0(yuz185000, yuz180000) 25.79/11.67 The graph contains the following edges 1 > 1, 2 > 2 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (53) 25.79/11.67 YES 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (54) 25.79/11.67 Obligation: 25.79/11.67 Q DP problem: 25.79/11.67 The TRS P consists of the following rules: 25.79/11.67 25.79/11.67 new_esEs(Succ(yuz509000), Succ(yuz504000)) -> new_esEs(yuz509000, yuz504000) 25.79/11.67 25.79/11.67 R is empty. 25.79/11.67 Q is empty. 25.79/11.67 We have to consider all minimal (P,Q,R)-chains. 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (55) QDPSizeChangeProof (EQUIVALENT) 25.79/11.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 25.79/11.67 25.79/11.67 From the DPs we obtained the following set of size-change graphs: 25.79/11.67 *new_esEs(Succ(yuz509000), Succ(yuz504000)) -> new_esEs(yuz509000, yuz504000) 25.79/11.67 The graph contains the following edges 1 > 1, 2 > 2 25.79/11.67 25.79/11.67 25.79/11.67 ---------------------------------------- 25.79/11.67 25.79/11.67 (56) 25.79/11.67 YES 26.03/11.71 EOF