25.00/11.41 YES 28.12/12.24 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 28.12/12.24 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 28.12/12.24 28.12/12.24 28.12/12.24 H-Termination with start terms of the given HASKELL could be proven: 28.12/12.24 28.12/12.24 (0) HASKELL 28.12/12.24 (1) LR [EQUIVALENT, 0 ms] 28.12/12.24 (2) HASKELL 28.12/12.24 (3) CR [EQUIVALENT, 0 ms] 28.12/12.24 (4) HASKELL 28.12/12.24 (5) BR [EQUIVALENT, 0 ms] 28.12/12.24 (6) HASKELL 28.12/12.24 (7) COR [EQUIVALENT, 5 ms] 28.12/12.24 (8) HASKELL 28.12/12.24 (9) LetRed [EQUIVALENT, 33 ms] 28.12/12.24 (10) HASKELL 28.12/12.24 (11) NumRed [SOUND, 0 ms] 28.12/12.24 (12) HASKELL 28.12/12.24 (13) Narrow [SOUND, 0 ms] 28.12/12.24 (14) AND 28.12/12.24 (15) QDP 28.12/12.24 (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (17) YES 28.12/12.24 (18) QDP 28.12/12.24 (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (20) YES 28.12/12.24 (21) QDP 28.12/12.24 (22) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (23) YES 28.12/12.24 (24) QDP 28.12/12.24 (25) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (26) YES 28.12/12.24 (27) QDP 28.12/12.24 (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (29) YES 28.12/12.24 (30) QDP 28.12/12.24 (31) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (32) YES 28.12/12.24 (33) QDP 28.12/12.24 (34) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (35) YES 28.12/12.24 (36) QDP 28.12/12.24 (37) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (38) YES 28.12/12.24 (39) QDP 28.12/12.24 (40) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (41) YES 28.12/12.24 (42) QDP 28.12/12.24 (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (44) YES 28.12/12.24 (45) QDP 28.12/12.24 (46) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (47) YES 28.12/12.24 (48) QDP 28.12/12.24 (49) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (50) YES 28.12/12.24 (51) QDP 28.12/12.24 (52) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (53) YES 28.12/12.24 (54) QDP 28.12/12.24 (55) QDPSizeChangeProof [EQUIVALENT, 0 ms] 28.12/12.24 (56) YES 28.12/12.24 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (0) 28.12/12.24 Obligation: 28.12/12.24 mainModule Main 28.12/12.24 module FiniteMap where { 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 28.12/12.24 28.12/12.24 instance (Eq a, Eq b) => Eq FiniteMap a b where { 28.12/12.24 } 28.12/12.24 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 28.12/12.24 addToFM fm key elt = addToFM_C (\old new ->new) fm key elt; 28.12/12.24 28.12/12.24 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 28.12/12.24 addToFM_C combiner EmptyFM key elt = unitFM key elt; 28.12/12.24 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 28.12/12.24 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 28.12/12.24 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 28.12/12.24 28.12/12.24 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 28.12/12.24 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 28.12/12.24 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 28.12/12.24 28.12/12.24 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 28.12/12.24 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 28.12/12.24 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 28.12/12.24 28.12/12.24 emptyFM :: FiniteMap a b; 28.12/12.24 emptyFM = EmptyFM; 28.12/12.24 28.12/12.24 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 filterFM p EmptyFM = emptyFM; 28.12/12.24 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 28.12/12.24 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 28.12/12.24 28.12/12.24 findMax :: FiniteMap b a -> (b,a); 28.12/12.24 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 28.12/12.24 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 28.12/12.24 28.12/12.24 findMin :: FiniteMap a b -> (a,b); 28.12/12.24 findMin (Branch key elt _ EmptyFM _) = (key,elt); 28.12/12.24 findMin (Branch key elt _ fm_l _) = findMin fm_l; 28.12/12.24 28.12/12.24 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 glueBal EmptyFM fm2 = fm2; 28.12/12.24 glueBal fm1 EmptyFM = fm1; 28.12/12.24 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 28.12/12.24 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 28.12/12.24 mid_elt1 = (\(_,mid_elt1) ->mid_elt1) vv2; 28.12/12.24 mid_elt2 = (\(_,mid_elt2) ->mid_elt2) vv3; 28.12/12.24 mid_key1 = (\(mid_key1,_) ->mid_key1) vv2; 28.12/12.24 mid_key2 = (\(mid_key2,_) ->mid_key2) vv3; 28.12/12.24 vv2 = findMax fm1; 28.12/12.24 vv3 = findMin fm2; 28.12/12.24 }; 28.12/12.24 28.12/12.24 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 glueVBal EmptyFM fm2 = fm2; 28.12/12.24 glueVBal fm1 EmptyFM = fm1; 28.12/12.24 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 28.12/12.24 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 28.12/12.24 | otherwise = glueBal fm_l fm_r where { 28.12/12.24 size_l = sizeFM fm_l; 28.12/12.24 size_r = sizeFM fm_r; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 28.12/12.24 | size_r > sIZE_RATIO * size_l = case fm_R of { 28.12/12.24 Branch _ _ _ fm_rl fm_rr | sizeFM fm_rl < 2 * sizeFM fm_rr -> single_L fm_L fm_R 28.12/12.24 | otherwise -> double_L fm_L fm_R; 28.12/12.24 } 28.12/12.24 | size_l > sIZE_RATIO * size_r = case fm_L of { 28.12/12.24 Branch _ _ _ fm_ll fm_lr | sizeFM fm_lr < 2 * sizeFM fm_ll -> single_R fm_L fm_R 28.12/12.24 | otherwise -> double_R fm_L fm_R; 28.12/12.24 } 28.12/12.24 | otherwise = mkBranch 2 key elt fm_L fm_R where { 28.12/12.24 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); 28.12/12.24 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); 28.12/12.24 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; 28.12/12.24 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); 28.12/12.24 size_l = sizeFM fm_L; 28.12/12.24 size_r = sizeFM fm_R; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkBranch which key elt fm_l fm_r = let { 28.12/12.24 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.12/12.24 } in result where { 28.12/12.24 balance_ok = True; 28.12/12.24 left_ok = case fm_l of { 28.12/12.24 EmptyFM-> True; 28.12/12.24 Branch left_key _ _ _ _-> let { 28.12/12.24 biggest_left_key = fst (findMax fm_l); 28.12/12.24 } in biggest_left_key < key; 28.12/12.24 } ; 28.12/12.24 left_size = sizeFM fm_l; 28.12/12.24 right_ok = case fm_r of { 28.12/12.24 EmptyFM-> True; 28.12/12.24 Branch right_key _ _ _ _-> let { 28.12/12.24 smallest_right_key = fst (findMin fm_r); 28.12/12.24 } in key < smallest_right_key; 28.12/12.24 } ; 28.12/12.24 right_size = sizeFM fm_r; 28.12/12.24 unbox :: Int -> Int; 28.12/12.24 unbox x = x; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 28.12/12.24 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 28.12/12.24 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 28.12/12.24 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 28.12/12.24 | otherwise = mkBranch 13 key elt fm_l fm_r where { 28.12/12.24 size_l = sizeFM fm_l; 28.12/12.24 size_r = sizeFM fm_r; 28.12/12.24 }; 28.12/12.24 28.12/12.24 sIZE_RATIO :: Int; 28.12/12.24 sIZE_RATIO = 5; 28.12/12.24 28.12/12.24 sizeFM :: FiniteMap a b -> Int; 28.12/12.24 sizeFM EmptyFM = 0; 28.12/12.24 sizeFM (Branch _ _ size _ _) = size; 28.12/12.24 28.12/12.24 unitFM :: b -> a -> FiniteMap b a; 28.12/12.24 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 28.12/12.24 28.12/12.24 } 28.12/12.24 module Maybe where { 28.12/12.24 import qualified FiniteMap; 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Prelude; 28.12/12.24 } 28.12/12.24 module Main where { 28.12/12.24 import qualified FiniteMap; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 } 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (1) LR (EQUIVALENT) 28.12/12.24 Lambda Reductions: 28.12/12.24 The following Lambda expression 28.12/12.24 "\oldnew->new" 28.12/12.24 is transformed to 28.12/12.24 "addToFM0 old new = new; 28.12/12.24 " 28.12/12.24 The following Lambda expression 28.12/12.24 "\(_,mid_elt2)->mid_elt2" 28.12/12.24 is transformed to 28.12/12.24 "mid_elt20 (_,mid_elt2) = mid_elt2; 28.12/12.24 " 28.12/12.24 The following Lambda expression 28.12/12.24 "\(mid_key2,_)->mid_key2" 28.12/12.24 is transformed to 28.12/12.24 "mid_key20 (mid_key2,_) = mid_key2; 28.12/12.24 " 28.12/12.24 The following Lambda expression 28.12/12.24 "\(mid_key1,_)->mid_key1" 28.12/12.24 is transformed to 28.12/12.24 "mid_key10 (mid_key1,_) = mid_key1; 28.12/12.24 " 28.12/12.24 The following Lambda expression 28.12/12.24 "\(_,mid_elt1)->mid_elt1" 28.12/12.24 is transformed to 28.12/12.24 "mid_elt10 (_,mid_elt1) = mid_elt1; 28.12/12.24 " 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (2) 28.12/12.24 Obligation: 28.12/12.24 mainModule Main 28.12/12.24 module FiniteMap where { 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 28.12/12.24 28.12/12.24 instance (Eq a, Eq b) => Eq FiniteMap a b where { 28.12/12.24 } 28.12/12.24 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 28.12/12.24 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 28.12/12.24 28.12/12.24 addToFM0 old new = new; 28.12/12.24 28.12/12.24 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 28.12/12.24 addToFM_C combiner EmptyFM key elt = unitFM key elt; 28.12/12.24 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 28.12/12.24 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 28.12/12.24 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 28.12/12.24 28.12/12.24 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 28.12/12.24 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 28.12/12.24 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 28.12/12.24 28.12/12.24 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 28.12/12.24 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 28.12/12.24 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 28.12/12.24 28.12/12.24 emptyFM :: FiniteMap b a; 28.12/12.24 emptyFM = EmptyFM; 28.12/12.24 28.12/12.24 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 filterFM p EmptyFM = emptyFM; 28.12/12.24 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 28.12/12.24 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 28.12/12.24 28.12/12.24 findMax :: FiniteMap a b -> (a,b); 28.12/12.24 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 28.12/12.24 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 28.12/12.24 28.12/12.24 findMin :: FiniteMap a b -> (a,b); 28.12/12.24 findMin (Branch key elt _ EmptyFM _) = (key,elt); 28.12/12.24 findMin (Branch key elt _ fm_l _) = findMin fm_l; 28.12/12.24 28.12/12.24 glueBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 glueBal EmptyFM fm2 = fm2; 28.12/12.24 glueBal fm1 EmptyFM = fm1; 28.12/12.24 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 28.12/12.24 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 28.12/12.24 mid_elt1 = mid_elt10 vv2; 28.12/12.24 mid_elt10 (_,mid_elt1) = mid_elt1; 28.12/12.24 mid_elt2 = mid_elt20 vv3; 28.12/12.24 mid_elt20 (_,mid_elt2) = mid_elt2; 28.12/12.24 mid_key1 = mid_key10 vv2; 28.12/12.24 mid_key10 (mid_key1,_) = mid_key1; 28.12/12.24 mid_key2 = mid_key20 vv3; 28.12/12.24 mid_key20 (mid_key2,_) = mid_key2; 28.12/12.24 vv2 = findMax fm1; 28.12/12.24 vv3 = findMin fm2; 28.12/12.24 }; 28.12/12.24 28.12/12.24 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 glueVBal EmptyFM fm2 = fm2; 28.12/12.24 glueVBal fm1 EmptyFM = fm1; 28.12/12.24 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 28.12/12.24 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 28.12/12.24 | otherwise = glueBal fm_l fm_r where { 28.12/12.24 size_l = sizeFM fm_l; 28.12/12.24 size_r = sizeFM fm_r; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 28.12/12.24 | size_r > sIZE_RATIO * size_l = case fm_R of { 28.12/12.24 Branch _ _ _ fm_rl fm_rr | sizeFM fm_rl < 2 * sizeFM fm_rr -> single_L fm_L fm_R 28.12/12.24 | otherwise -> double_L fm_L fm_R; 28.12/12.24 } 28.12/12.24 | size_l > sIZE_RATIO * size_r = case fm_L of { 28.12/12.24 Branch _ _ _ fm_ll fm_lr | sizeFM fm_lr < 2 * sizeFM fm_ll -> single_R fm_L fm_R 28.12/12.24 | otherwise -> double_R fm_L fm_R; 28.12/12.24 } 28.12/12.24 | otherwise = mkBranch 2 key elt fm_L fm_R where { 28.12/12.24 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); 28.12/12.24 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); 28.12/12.24 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; 28.12/12.24 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); 28.12/12.24 size_l = sizeFM fm_L; 28.12/12.24 size_r = sizeFM fm_R; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkBranch which key elt fm_l fm_r = let { 28.12/12.24 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.12/12.24 } in result where { 28.12/12.24 balance_ok = True; 28.12/12.24 left_ok = case fm_l of { 28.12/12.24 EmptyFM-> True; 28.12/12.24 Branch left_key _ _ _ _-> let { 28.12/12.24 biggest_left_key = fst (findMax fm_l); 28.12/12.24 } in biggest_left_key < key; 28.12/12.24 } ; 28.12/12.24 left_size = sizeFM fm_l; 28.12/12.24 right_ok = case fm_r of { 28.12/12.24 EmptyFM-> True; 28.12/12.24 Branch right_key _ _ _ _-> let { 28.12/12.24 smallest_right_key = fst (findMin fm_r); 28.12/12.24 } in key < smallest_right_key; 28.12/12.24 } ; 28.12/12.24 right_size = sizeFM fm_r; 28.12/12.24 unbox :: Int -> Int; 28.12/12.24 unbox x = x; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 28.12/12.24 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 28.12/12.24 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 28.12/12.24 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 28.12/12.24 | otherwise = mkBranch 13 key elt fm_l fm_r where { 28.12/12.24 size_l = sizeFM fm_l; 28.12/12.24 size_r = sizeFM fm_r; 28.12/12.24 }; 28.12/12.24 28.12/12.24 sIZE_RATIO :: Int; 28.12/12.24 sIZE_RATIO = 5; 28.12/12.24 28.12/12.24 sizeFM :: FiniteMap a b -> Int; 28.12/12.24 sizeFM EmptyFM = 0; 28.12/12.24 sizeFM (Branch _ _ size _ _) = size; 28.12/12.24 28.12/12.24 unitFM :: a -> b -> FiniteMap a b; 28.12/12.24 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 28.12/12.24 28.12/12.24 } 28.12/12.24 module Maybe where { 28.12/12.24 import qualified FiniteMap; 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Prelude; 28.12/12.24 } 28.12/12.24 module Main where { 28.12/12.24 import qualified FiniteMap; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 } 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (3) CR (EQUIVALENT) 28.12/12.24 Case Reductions: 28.12/12.24 The following Case expression 28.12/12.24 "case fm_r of { 28.12/12.24 EmptyFM -> True; 28.12/12.24 Branch right_key _ _ _ _ -> let { 28.12/12.24 smallest_right_key = fst (findMin fm_r); 28.12/12.24 } in key < smallest_right_key} 28.12/12.24 " 28.12/12.24 is transformed to 28.12/12.24 "right_ok0 fm_r key EmptyFM = True; 28.12/12.24 right_ok0 fm_r key (Branch right_key _ _ _ _) = let { 28.12/12.24 smallest_right_key = fst (findMin fm_r); 28.12/12.24 } in key < smallest_right_key; 28.12/12.24 " 28.12/12.24 The following Case expression 28.12/12.24 "case fm_l of { 28.12/12.24 EmptyFM -> True; 28.12/12.24 Branch left_key _ _ _ _ -> let { 28.12/12.24 biggest_left_key = fst (findMax fm_l); 28.12/12.24 } in biggest_left_key < key} 28.12/12.24 " 28.12/12.24 is transformed to 28.12/12.24 "left_ok0 fm_l key EmptyFM = True; 28.12/12.24 left_ok0 fm_l key (Branch left_key _ _ _ _) = let { 28.12/12.24 biggest_left_key = fst (findMax fm_l); 28.12/12.24 } in biggest_left_key < key; 28.12/12.24 " 28.12/12.24 The following Case expression 28.12/12.24 "case fm_R of { 28.12/12.24 Branch _ _ _ fm_rl fm_rr |sizeFM fm_rl < 2 * sizeFM fm_rrsingle_L fm_L fm_R|otherwisedouble_L fm_L fm_R} 28.12/12.24 " 28.12/12.24 is transformed to 28.12/12.24 "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; 28.12/12.24 " 28.12/12.24 The following Case expression 28.12/12.24 "case fm_L of { 28.12/12.24 Branch _ _ _ fm_ll fm_lr |sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R} 28.12/12.24 " 28.12/12.24 is transformed to 28.12/12.24 "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; 28.12/12.24 " 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (4) 28.12/12.24 Obligation: 28.12/12.24 mainModule Main 28.12/12.24 module FiniteMap where { 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 28.12/12.24 28.12/12.24 instance (Eq a, Eq b) => Eq FiniteMap a b where { 28.12/12.24 } 28.12/12.24 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 28.12/12.24 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 28.12/12.24 28.12/12.24 addToFM0 old new = new; 28.12/12.24 28.12/12.24 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 28.12/12.24 addToFM_C combiner EmptyFM key elt = unitFM key elt; 28.12/12.24 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 28.12/12.24 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 28.12/12.24 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 28.12/12.24 28.12/12.24 deleteMax :: Ord a => FiniteMap a b -> FiniteMap a b; 28.12/12.24 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 28.12/12.24 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 28.12/12.24 28.12/12.24 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 28.12/12.24 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 28.12/12.24 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 28.12/12.24 28.12/12.24 emptyFM :: FiniteMap b a; 28.12/12.24 emptyFM = EmptyFM; 28.12/12.24 28.12/12.24 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 filterFM p EmptyFM = emptyFM; 28.12/12.24 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 28.12/12.24 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 28.12/12.24 28.12/12.24 findMax :: FiniteMap b a -> (b,a); 28.12/12.24 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 28.12/12.24 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 28.12/12.24 28.12/12.24 findMin :: FiniteMap a b -> (a,b); 28.12/12.24 findMin (Branch key elt _ EmptyFM _) = (key,elt); 28.12/12.24 findMin (Branch key elt _ fm_l _) = findMin fm_l; 28.12/12.24 28.12/12.24 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 glueBal EmptyFM fm2 = fm2; 28.12/12.24 glueBal fm1 EmptyFM = fm1; 28.12/12.24 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 28.12/12.24 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 28.12/12.24 mid_elt1 = mid_elt10 vv2; 28.12/12.24 mid_elt10 (_,mid_elt1) = mid_elt1; 28.12/12.24 mid_elt2 = mid_elt20 vv3; 28.12/12.24 mid_elt20 (_,mid_elt2) = mid_elt2; 28.12/12.24 mid_key1 = mid_key10 vv2; 28.12/12.24 mid_key10 (mid_key1,_) = mid_key1; 28.12/12.24 mid_key2 = mid_key20 vv3; 28.12/12.24 mid_key20 (mid_key2,_) = mid_key2; 28.12/12.24 vv2 = findMax fm1; 28.12/12.24 vv3 = findMin fm2; 28.12/12.24 }; 28.12/12.24 28.12/12.24 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 glueVBal EmptyFM fm2 = fm2; 28.12/12.24 glueVBal fm1 EmptyFM = fm1; 28.12/12.24 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 28.12/12.24 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 28.12/12.24 | otherwise = glueBal fm_l fm_r where { 28.12/12.24 size_l = sizeFM fm_l; 28.12/12.24 size_r = sizeFM fm_r; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 28.12/12.24 | size_r > sIZE_RATIO * size_l = mkBalBranch0 fm_L fm_R fm_R 28.12/12.24 | size_l > sIZE_RATIO * size_r = mkBalBranch1 fm_L fm_R fm_L 28.12/12.24 | otherwise = mkBranch 2 key elt fm_L fm_R where { 28.12/12.24 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); 28.12/12.24 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); 28.12/12.24 mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr) | sizeFM fm_rl < 2 * sizeFM fm_rr = single_L fm_L fm_R 28.12/12.24 | otherwise = double_L fm_L fm_R; 28.12/12.24 mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr) | sizeFM fm_lr < 2 * sizeFM fm_ll = single_R fm_L fm_R 28.12/12.24 | otherwise = double_R fm_L fm_R; 28.12/12.24 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; 28.12/12.24 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); 28.12/12.24 size_l = sizeFM fm_L; 28.12/12.24 size_r = sizeFM fm_R; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 mkBranch which key elt fm_l fm_r = let { 28.12/12.24 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.12/12.24 } in result where { 28.12/12.24 balance_ok = True; 28.12/12.24 left_ok = left_ok0 fm_l key fm_l; 28.12/12.24 left_ok0 fm_l key EmptyFM = True; 28.12/12.24 left_ok0 fm_l key (Branch left_key _ _ _ _) = let { 28.12/12.24 biggest_left_key = fst (findMax fm_l); 28.12/12.24 } in biggest_left_key < key; 28.12/12.24 left_size = sizeFM fm_l; 28.12/12.24 right_ok = right_ok0 fm_r key fm_r; 28.12/12.24 right_ok0 fm_r key EmptyFM = True; 28.12/12.24 right_ok0 fm_r key (Branch right_key _ _ _ _) = let { 28.12/12.24 smallest_right_key = fst (findMin fm_r); 28.12/12.24 } in key < smallest_right_key; 28.12/12.24 right_size = sizeFM fm_r; 28.12/12.24 unbox :: Int -> Int; 28.12/12.24 unbox x = x; 28.12/12.24 }; 28.12/12.24 28.12/12.24 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.24 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 28.12/12.24 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 28.12/12.24 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 28.12/12.24 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 28.12/12.24 | otherwise = mkBranch 13 key elt fm_l fm_r where { 28.12/12.24 size_l = sizeFM fm_l; 28.12/12.24 size_r = sizeFM fm_r; 28.12/12.24 }; 28.12/12.24 28.12/12.24 sIZE_RATIO :: Int; 28.12/12.24 sIZE_RATIO = 5; 28.12/12.24 28.12/12.24 sizeFM :: FiniteMap a b -> Int; 28.12/12.24 sizeFM EmptyFM = 0; 28.12/12.24 sizeFM (Branch _ _ size _ _) = size; 28.12/12.24 28.12/12.24 unitFM :: a -> b -> FiniteMap a b; 28.12/12.24 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 28.12/12.24 28.12/12.24 } 28.12/12.24 module Maybe where { 28.12/12.24 import qualified FiniteMap; 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Prelude; 28.12/12.24 } 28.12/12.24 module Main where { 28.12/12.24 import qualified FiniteMap; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 } 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (5) BR (EQUIVALENT) 28.12/12.24 Replaced joker patterns by fresh variables and removed binding patterns. 28.12/12.24 28.12/12.24 Binding Reductions: 28.12/12.24 The bind variable of the following binding Pattern 28.12/12.24 "fm_l@(Branch wu wv ww wx wy)" 28.12/12.24 is replaced by the following term 28.12/12.24 "Branch wu wv ww wx wy" 28.12/12.24 The bind variable of the following binding Pattern 28.12/12.24 "fm_r@(Branch xu xv xw xx xy)" 28.12/12.24 is replaced by the following term 28.12/12.24 "Branch xu xv xw xx xy" 28.12/12.24 The bind variable of the following binding Pattern 28.12/12.24 "fm_l@(Branch vxu vxv vxw vxx vxy)" 28.12/12.24 is replaced by the following term 28.12/12.24 "Branch vxu vxv vxw vxx vxy" 28.12/12.24 The bind variable of the following binding Pattern 28.12/12.24 "fm_r@(Branch vyu vyv vyw vyx vyy)" 28.12/12.24 is replaced by the following term 28.12/12.24 "Branch vyu vyv vyw vyx vyy" 28.12/12.24 28.12/12.24 ---------------------------------------- 28.12/12.24 28.12/12.24 (6) 28.12/12.24 Obligation: 28.12/12.24 mainModule Main 28.12/12.24 module FiniteMap where { 28.12/12.24 import qualified Main; 28.12/12.24 import qualified Maybe; 28.12/12.24 import qualified Prelude; 28.12/12.24 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 28.12/12.24 28.12/12.24 instance (Eq a, Eq b) => Eq FiniteMap b a where { 28.12/12.24 } 28.12/12.24 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 28.12/12.24 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 28.12/12.24 28.12/12.24 addToFM0 old new = new; 28.12/12.24 28.12/12.24 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 28.12/12.24 addToFM_C combiner EmptyFM key elt = unitFM key elt; 28.12/12.24 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 28.12/12.24 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 28.12/12.24 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 28.12/12.24 28.12/12.24 deleteMax :: Ord a => FiniteMap a b -> FiniteMap a b; 28.12/12.24 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 28.12/12.24 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 28.12/12.24 28.12/12.24 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 28.12/12.24 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 28.12/12.24 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 28.12/12.24 28.12/12.24 emptyFM :: FiniteMap b a; 28.12/12.24 emptyFM = EmptyFM; 28.12/12.24 28.12/12.24 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 filterFM p EmptyFM = emptyFM; 28.12/12.24 filterFM p (Branch key elt vzz fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 28.12/12.24 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 28.12/12.24 28.12/12.24 findMax :: FiniteMap a b -> (a,b); 28.12/12.24 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 28.12/12.24 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 28.12/12.24 28.12/12.24 findMin :: FiniteMap b a -> (b,a); 28.12/12.24 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 28.12/12.24 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 28.12/12.24 28.12/12.24 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.24 glueBal EmptyFM fm2 = fm2; 28.12/12.24 glueBal fm1 EmptyFM = fm1; 28.12/12.24 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 28.12/12.24 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 28.12/12.24 mid_elt1 = mid_elt10 vv2; 28.12/12.24 mid_elt10 (vww,mid_elt1) = mid_elt1; 28.12/12.24 mid_elt2 = mid_elt20 vv3; 28.12/12.24 mid_elt20 (vwv,mid_elt2) = mid_elt2; 28.12/12.24 mid_key1 = mid_key10 vv2; 28.12/12.24 mid_key10 (mid_key1,vwx) = mid_key1; 28.12/12.24 mid_key2 = mid_key20 vv3; 28.12/12.24 mid_key20 (mid_key2,vwy) = mid_key2; 28.12/12.24 vv2 = findMax fm1; 28.12/12.24 vv3 = findMin fm2; 28.12/12.24 }; 28.12/12.24 28.12/12.24 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.25 glueVBal EmptyFM fm2 = fm2; 28.12/12.25 glueVBal fm1 EmptyFM = fm1; 28.12/12.25 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 28.12/12.25 | sIZE_RATIO * size_r < size_l = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)) 28.12/12.25 | otherwise = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) where { 28.12/12.25 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 28.12/12.25 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 28.12/12.25 }; 28.12/12.25 28.12/12.25 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.25 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 28.12/12.25 | size_r > sIZE_RATIO * size_l = mkBalBranch0 fm_L fm_R fm_R 28.12/12.25 | size_l > sIZE_RATIO * size_r = mkBalBranch1 fm_L fm_R fm_L 28.12/12.25 | otherwise = mkBranch 2 key elt fm_L fm_R where { 28.12/12.25 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); 28.12/12.25 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); 28.12/12.25 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 28.12/12.25 | otherwise = double_L fm_L fm_R; 28.12/12.25 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 28.12/12.25 | otherwise = double_R fm_L fm_R; 28.12/12.25 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; 28.12/12.25 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); 28.12/12.25 size_l = sizeFM fm_L; 28.12/12.25 size_r = sizeFM fm_R; 28.12/12.25 }; 28.12/12.25 28.12/12.25 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.12/12.25 mkBranch which key elt fm_l fm_r = let { 28.12/12.25 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.12/12.25 } in result where { 28.12/12.25 balance_ok = True; 28.12/12.25 left_ok = left_ok0 fm_l key fm_l; 28.12/12.25 left_ok0 fm_l key EmptyFM = True; 28.12/12.25 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 28.12/12.25 biggest_left_key = fst (findMax fm_l); 28.12/12.25 } in biggest_left_key < key; 28.12/12.25 left_size = sizeFM fm_l; 28.12/12.25 right_ok = right_ok0 fm_r key fm_r; 28.12/12.25 right_ok0 fm_r key EmptyFM = True; 28.12/12.25 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 28.12/12.25 smallest_right_key = fst (findMin fm_r); 28.12/12.25 } in key < smallest_right_key; 28.12/12.25 right_size = sizeFM fm_r; 28.12/12.25 unbox :: Int -> Int; 28.12/12.25 unbox x = x; 28.12/12.25 }; 28.12/12.25 28.12/12.25 mkVBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.12/12.25 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 28.12/12.25 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 28.12/12.25 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 28.12/12.25 | sIZE_RATIO * size_r < size_l = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)) 28.12/12.25 | otherwise = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) where { 28.12/12.25 size_l = sizeFM (Branch wu wv ww wx wy); 28.12/12.25 size_r = sizeFM (Branch xu xv xw xx xy); 28.12/12.25 }; 28.12/12.25 28.12/12.25 sIZE_RATIO :: Int; 28.12/12.25 sIZE_RATIO = 5; 28.12/12.25 28.12/12.25 sizeFM :: FiniteMap a b -> Int; 28.12/12.25 sizeFM EmptyFM = 0; 28.12/12.25 sizeFM (Branch vyz vzu size vzv vzw) = size; 28.12/12.25 28.12/12.25 unitFM :: b -> a -> FiniteMap b a; 28.12/12.25 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 28.12/12.25 28.12/12.25 } 28.12/12.25 module Maybe where { 28.12/12.25 import qualified FiniteMap; 28.12/12.25 import qualified Main; 28.12/12.25 import qualified Prelude; 28.12/12.25 } 28.12/12.25 module Main where { 28.12/12.25 import qualified FiniteMap; 28.12/12.25 import qualified Maybe; 28.12/12.25 import qualified Prelude; 28.12/12.25 } 28.12/12.25 28.12/12.25 ---------------------------------------- 28.12/12.25 28.12/12.25 (7) COR (EQUIVALENT) 28.12/12.25 Cond Reductions: 28.12/12.25 The following Function with conditions 28.12/12.25 "undefined |Falseundefined; 28.12/12.25 " 28.12/12.25 is transformed to 28.12/12.25 "undefined = undefined1; 28.12/12.25 " 28.12/12.25 "undefined0 True = undefined; 28.12/12.25 " 28.12/12.25 "undefined1 = undefined0 False; 28.12/12.25 " 28.12/12.25 The following Function with conditions 28.12/12.25 "addToFM_C combiner EmptyFM key elt = unitFM key elt; 28.12/12.25 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; 28.12/12.25 " 28.12/12.25 is transformed to 28.12/12.25 "addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 28.12/12.25 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; 28.12/12.25 " 28.12/12.25 "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); 28.12/12.25 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; 28.12/12.25 " 28.12/12.25 "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; 28.12/12.25 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); 28.12/12.25 " 28.12/12.25 "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; 28.12/12.25 " 28.12/12.25 "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); 28.12/12.25 " 28.12/12.25 "addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 28.12/12.25 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 28.12/12.25 " 28.12/12.25 The following Function with conditions 28.12/12.25 "mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 28.12/12.25 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 28.12/12.25 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 { 28.12/12.25 size_l = sizeFM (Branch wu wv ww wx wy); 28.12/12.25 ; 28.12/12.25 size_r = sizeFM (Branch xu xv xw xx xy); 28.12/12.25 } 28.12/12.25 ; 28.12/12.25 " 28.12/12.25 is transformed to 28.12/12.25 "mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 28.12/12.25 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 28.12/12.25 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); 28.12/12.25 " 28.12/12.25 "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 { 28.12/12.25 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); 28.12/12.25 ; 28.12/12.25 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)); 28.12/12.25 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; 28.12/12.25 ; 28.12/12.25 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; 28.12/12.25 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); 28.12/12.25 ; 28.12/12.25 size_l = sizeFM (Branch wu wv ww wx wy); 28.12/12.25 ; 28.12/12.25 size_r = sizeFM (Branch xu xv xw xx xy); 28.12/12.25 } 28.12/12.25 ; 28.12/12.25 " 28.12/12.25 "mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 28.12/12.25 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 28.12/12.25 " 28.12/12.25 "mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 28.12/12.25 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 28.12/12.25 " 28.12/12.25 The following Function with conditions 28.12/12.25 "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; 28.12/12.25 " 28.12/12.25 is transformed to 28.12/12.25 "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); 28.12/12.25 " 28.12/12.25 "mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 28.12/12.25 " 28.12/12.25 "mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 28.12/12.25 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; 28.12/12.25 " 28.12/12.25 "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); 28.67/12.45 " 28.67/12.45 The following Function with conditions 28.67/12.45 "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; 28.67/12.45 " 28.67/12.45 is transformed to 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 28.67/12.45 " 28.67/12.45 "mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 28.67/12.45 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; 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 The following Function with conditions 28.67/12.45 "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 { 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 size_l = sizeFM fm_L; 28.67/12.45 ; 28.67/12.45 size_r = sizeFM fm_R; 28.67/12.45 } 28.67/12.45 ; 28.67/12.45 " 28.67/12.45 is transformed to 28.67/12.45 "mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 28.67/12.45 " 28.67/12.45 "mkBalBranch6 key elt fm_L fm_R = mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 28.67/12.45 ; 28.67/12.45 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 28.67/12.45 ; 28.67/12.45 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 28.67/12.45 ; 28.67/12.45 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 28.67/12.45 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 28.67/12.45 ; 28.67/12.45 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 28.67/12.45 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 28.67/12.45 ; 28.67/12.45 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 28.67/12.45 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 28.67/12.45 ; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 size_l = sizeFM fm_L; 28.67/12.45 ; 28.67/12.45 size_r = sizeFM fm_R; 28.67/12.45 } 28.67/12.45 ; 28.67/12.45 " 28.67/12.45 The following Function with conditions 28.67/12.45 "glueBal EmptyFM fm2 = fm2; 28.67/12.45 glueBal fm1 EmptyFM = fm1; 28.67/12.45 glueBal fm1 fm2|sizeFM fm2 > sizeFM fm1mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)|otherwisemkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 28.67/12.45 mid_elt1 = mid_elt10 vv2; 28.67/12.45 ; 28.67/12.45 mid_elt10 (vww,mid_elt1) = mid_elt1; 28.67/12.45 ; 28.67/12.45 mid_elt2 = mid_elt20 vv3; 28.67/12.45 ; 28.67/12.45 mid_elt20 (vwv,mid_elt2) = mid_elt2; 28.67/12.45 ; 28.67/12.45 mid_key1 = mid_key10 vv2; 28.67/12.45 ; 28.67/12.45 mid_key10 (mid_key1,vwx) = mid_key1; 28.67/12.45 ; 28.67/12.45 mid_key2 = mid_key20 vv3; 28.67/12.45 ; 28.67/12.45 mid_key20 (mid_key2,vwy) = mid_key2; 28.67/12.45 ; 28.67/12.45 vv2 = findMax fm1; 28.67/12.45 ; 28.67/12.45 vv3 = findMin fm2; 28.67/12.45 } 28.67/12.45 ; 28.67/12.45 " 28.67/12.45 is transformed to 28.67/12.45 "glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 28.67/12.45 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 28.67/12.45 glueBal fm1 fm2 = glueBal2 fm1 fm2; 28.67/12.45 " 28.67/12.45 "glueBal2 fm1 fm2 = glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 28.67/12.45 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 28.67/12.45 ; 28.67/12.45 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 28.67/12.45 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 28.67/12.45 ; 28.67/12.45 mid_elt1 = mid_elt10 vv2; 28.67/12.45 ; 28.67/12.45 mid_elt10 (vww,mid_elt1) = mid_elt1; 28.67/12.45 ; 28.67/12.45 mid_elt2 = mid_elt20 vv3; 28.67/12.45 ; 28.67/12.45 mid_elt20 (vwv,mid_elt2) = mid_elt2; 28.67/12.45 ; 28.67/12.45 mid_key1 = mid_key10 vv2; 28.67/12.45 ; 28.67/12.45 mid_key10 (mid_key1,vwx) = mid_key1; 28.67/12.45 ; 28.67/12.45 mid_key2 = mid_key20 vv3; 28.67/12.45 ; 28.67/12.45 mid_key20 (mid_key2,vwy) = mid_key2; 28.67/12.45 ; 28.67/12.45 vv2 = findMax fm1; 28.67/12.45 ; 28.67/12.45 vv3 = findMin fm2; 28.67/12.45 } 28.67/12.45 ; 28.67/12.45 " 28.67/12.45 "glueBal3 fm1 EmptyFM = fm1; 28.67/12.45 glueBal3 wyv wyw = glueBal2 wyv wyw; 28.67/12.45 " 28.67/12.45 "glueBal4 EmptyFM fm2 = fm2; 28.67/12.45 glueBal4 wyy wyz = glueBal3 wyy wyz; 28.67/12.45 " 28.67/12.45 The following Function with conditions 28.67/12.45 "glueVBal EmptyFM fm2 = fm2; 28.67/12.45 glueVBal fm1 EmptyFM = fm1; 28.67/12.45 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 { 28.67/12.45 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 28.67/12.45 ; 28.67/12.45 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 28.67/12.45 } 28.67/12.45 ; 28.67/12.45 " 28.67/12.45 is transformed to 28.67/12.45 "glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 28.67/12.45 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 28.67/12.45 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); 28.67/12.45 " 28.67/12.45 "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 { 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 28.67/12.45 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 28.67/12.45 ; 28.67/12.45 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 28.67/12.45 ; 28.67/12.45 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 28.67/12.45 } 28.67/12.45 ; 28.67/12.45 " 28.67/12.45 "glueVBal4 fm1 EmptyFM = fm1; 28.67/12.45 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 28.67/12.45 " 28.67/12.45 "glueVBal5 EmptyFM fm2 = fm2; 28.67/12.45 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 28.67/12.45 " 28.67/12.45 The following Function with conditions 28.67/12.45 "filterFM p EmptyFM = emptyFM; 28.67/12.45 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); 28.67/12.45 " 28.67/12.45 is transformed to 28.67/12.45 "filterFM p EmptyFM = filterFM3 p EmptyFM; 28.67/12.45 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 28.67/12.45 " 28.67/12.45 "filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 28.67/12.45 " 28.67/12.45 "filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 28.67/12.45 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 28.67/12.45 " 28.67/12.45 "filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 28.67/12.45 " 28.67/12.45 "filterFM3 p EmptyFM = emptyFM; 28.67/12.45 filterFM3 xuy xuz = filterFM2 xuy xuz; 28.67/12.45 " 28.67/12.45 28.67/12.45 ---------------------------------------- 28.67/12.45 28.67/12.45 (8) 28.67/12.45 Obligation: 28.67/12.45 mainModule Main 28.67/12.45 module FiniteMap where { 28.67/12.45 import qualified Main; 28.67/12.45 import qualified Maybe; 28.67/12.45 import qualified Prelude; 28.67/12.45 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 28.67/12.45 28.67/12.45 instance (Eq a, Eq b) => Eq FiniteMap b a where { 28.67/12.45 } 28.67/12.45 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 28.67/12.45 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 28.67/12.45 28.67/12.45 addToFM0 old new = new; 28.67/12.45 28.67/12.45 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 28.67/12.45 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 28.67/12.45 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; 28.67/12.45 28.67/12.45 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; 28.67/12.45 28.67/12.45 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); 28.67/12.45 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; 28.67/12.45 28.67/12.45 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; 28.67/12.45 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); 28.67/12.45 28.67/12.45 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); 28.67/12.45 28.67/12.45 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 28.67/12.45 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 28.67/12.45 28.67/12.45 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 28.67/12.45 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 28.67/12.45 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 28.67/12.45 28.67/12.45 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 28.67/12.45 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 28.67/12.45 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 28.67/12.45 28.67/12.45 emptyFM :: FiniteMap a b; 28.67/12.45 emptyFM = EmptyFM; 28.67/12.45 28.67/12.45 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 28.67/12.45 filterFM p EmptyFM = filterFM3 p EmptyFM; 28.67/12.45 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 28.67/12.45 28.67/12.45 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 28.67/12.45 28.67/12.45 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 28.67/12.45 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 28.67/12.45 28.67/12.45 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 28.67/12.45 28.67/12.45 filterFM3 p EmptyFM = emptyFM; 28.67/12.45 filterFM3 xuy xuz = filterFM2 xuy xuz; 28.67/12.45 28.67/12.45 findMax :: FiniteMap b a -> (b,a); 28.67/12.45 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 28.67/12.45 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 28.67/12.45 28.67/12.45 findMin :: FiniteMap a b -> (a,b); 28.67/12.45 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 28.67/12.45 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 28.67/12.45 28.67/12.45 glueBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.67/12.45 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 28.67/12.45 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 28.67/12.45 glueBal fm1 fm2 = glueBal2 fm1 fm2; 28.67/12.45 28.67/12.45 glueBal2 fm1 fm2 = glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 28.67/12.45 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 28.67/12.45 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 28.67/12.45 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 28.67/12.45 mid_elt1 = mid_elt10 vv2; 28.67/12.45 mid_elt10 (vww,mid_elt1) = mid_elt1; 28.67/12.45 mid_elt2 = mid_elt20 vv3; 28.67/12.45 mid_elt20 (vwv,mid_elt2) = mid_elt2; 28.67/12.45 mid_key1 = mid_key10 vv2; 28.67/12.45 mid_key10 (mid_key1,vwx) = mid_key1; 28.67/12.45 mid_key2 = mid_key20 vv3; 28.67/12.45 mid_key20 (mid_key2,vwy) = mid_key2; 28.67/12.45 vv2 = findMax fm1; 28.67/12.45 vv3 = findMin fm2; 28.67/12.45 }; 28.67/12.45 28.67/12.45 glueBal3 fm1 EmptyFM = fm1; 28.67/12.45 glueBal3 wyv wyw = glueBal2 wyv wyw; 28.67/12.45 28.67/12.45 glueBal4 EmptyFM fm2 = fm2; 28.67/12.45 glueBal4 wyy wyz = glueBal3 wyy wyz; 28.67/12.45 28.67/12.45 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.67/12.45 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 28.67/12.45 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 28.67/12.45 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); 28.67/12.45 28.67/12.45 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 { 28.67/12.45 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); 28.67/12.45 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 28.67/12.45 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 28.67/12.45 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 28.67/12.45 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); 28.67/12.45 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 28.67/12.45 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 28.67/12.45 }; 28.67/12.45 28.67/12.45 glueVBal4 fm1 EmptyFM = fm1; 28.67/12.45 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 28.67/12.45 28.67/12.45 glueVBal5 EmptyFM fm2 = fm2; 28.67/12.45 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 28.67/12.45 28.67/12.45 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.67/12.45 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 28.67/12.45 28.67/12.45 mkBalBranch6 key elt fm_L fm_R = mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 28.67/12.45 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); 28.67/12.45 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); 28.67/12.45 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); 28.67/12.45 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 28.67/12.45 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 28.67/12.45 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; 28.67/12.45 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); 28.67/12.45 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); 28.67/12.45 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 28.67/12.45 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 28.67/12.45 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; 28.67/12.45 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); 28.67/12.45 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 28.67/12.45 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 28.67/12.45 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 28.67/12.45 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 28.67/12.45 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 28.67/12.45 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 28.67/12.45 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 28.67/12.45 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; 28.67/12.45 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); 28.67/12.45 size_l = sizeFM fm_L; 28.67/12.45 size_r = sizeFM fm_R; 28.67/12.45 }; 28.67/12.45 28.67/12.45 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 28.67/12.45 mkBranch which key elt fm_l fm_r = let { 28.67/12.45 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.67/12.45 } in result where { 28.67/12.45 balance_ok = True; 28.67/12.45 left_ok = left_ok0 fm_l key fm_l; 28.67/12.45 left_ok0 fm_l key EmptyFM = True; 28.67/12.45 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 28.67/12.45 biggest_left_key = fst (findMax fm_l); 28.67/12.45 } in biggest_left_key < key; 28.67/12.45 left_size = sizeFM fm_l; 28.67/12.45 right_ok = right_ok0 fm_r key fm_r; 28.67/12.45 right_ok0 fm_r key EmptyFM = True; 28.67/12.45 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 28.67/12.45 smallest_right_key = fst (findMin fm_r); 28.67/12.45 } in key < smallest_right_key; 28.67/12.45 right_size = sizeFM fm_r; 28.67/12.45 unbox :: Int -> Int; 28.67/12.45 unbox x = x; 28.67/12.45 }; 28.67/12.45 28.67/12.45 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 28.67/12.45 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 28.67/12.45 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 28.67/12.45 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); 28.67/12.45 28.67/12.45 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 { 28.67/12.45 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); 28.67/12.45 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)); 28.67/12.45 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; 28.67/12.45 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; 28.67/12.45 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); 28.67/12.45 size_l = sizeFM (Branch wu wv ww wx wy); 28.67/12.45 size_r = sizeFM (Branch xu xv xw xx xy); 28.67/12.45 }; 28.67/12.45 28.67/12.45 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 28.67/12.45 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 28.67/12.45 28.67/12.45 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 28.67/12.45 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 28.67/12.45 28.67/12.45 sIZE_RATIO :: Int; 28.67/12.45 sIZE_RATIO = 5; 28.67/12.45 28.67/12.45 sizeFM :: FiniteMap a b -> Int; 28.67/12.45 sizeFM EmptyFM = 0; 28.67/12.45 sizeFM (Branch vyz vzu size vzv vzw) = size; 28.67/12.45 28.67/12.45 unitFM :: b -> a -> FiniteMap b a; 28.67/12.45 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 28.67/12.45 28.67/12.45 } 28.67/12.45 module Maybe where { 28.67/12.45 import qualified FiniteMap; 28.67/12.45 import qualified Main; 28.67/12.45 import qualified Prelude; 28.67/12.45 } 28.67/12.45 module Main where { 28.67/12.45 import qualified FiniteMap; 28.67/12.45 import qualified Maybe; 28.67/12.45 import qualified Prelude; 28.67/12.45 } 28.67/12.45 28.67/12.45 ---------------------------------------- 28.67/12.45 28.67/12.45 (9) LetRed (EQUIVALENT) 28.67/12.45 Let/Where Reductions: 28.67/12.45 The bindings of the following Let/Where expression 28.67/12.45 "mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 28.67/12.45 ; 28.67/12.45 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 28.67/12.45 ; 28.67/12.45 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 28.67/12.45 ; 28.67/12.45 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 28.67/12.45 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 28.67/12.45 ; 28.67/12.45 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 28.67/12.45 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 28.67/12.45 ; 28.67/12.45 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 28.67/12.45 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 28.67/12.45 ; 28.67/12.45 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; 28.67/12.45 ; 28.67/12.45 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); 28.67/12.45 ; 28.67/12.45 size_l = sizeFM fm_L; 28.67/12.45 ; 28.67/12.45 size_r = sizeFM fm_R; 28.67/12.45 } 28.67/12.45 " 28.67/12.45 are unpacked to the following functions on top level 28.67/12.45 "mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 28.67/12.45 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 28.67/12.45 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); 28.67/12.45 " 28.67/12.45 "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; 28.67/12.45 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; 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "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; 28.67/12.45 " 28.67/12.45 "mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvw; 28.67/12.45 " 28.67/12.45 "mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvx; 28.67/12.45 " 28.67/12.45 "mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 28.67/12.45 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); 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "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; 28.67/12.45 " 28.67/12.45 "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); 28.67/12.45 " 28.67/12.45 "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; 28.67/12.46 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; 28.67/12.46 " 28.67/12.46 "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; 28.67/12.46 " 28.67/12.46 "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); 28.67/12.46 " 28.67/12.46 The bindings of the following Let/Where expression 28.67/12.46 "let { 28.67/12.46 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.67/12.46 } in result where { 28.67/12.46 balance_ok = True; 28.67/12.46 ; 28.67/12.46 left_ok = left_ok0 fm_l key fm_l; 28.67/12.46 ; 28.67/12.46 left_ok0 fm_l key EmptyFM = True; 28.67/12.46 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 28.67/12.46 biggest_left_key = fst (findMax fm_l); 28.67/12.46 } in biggest_left_key < key; 28.67/12.46 ; 28.67/12.46 left_size = sizeFM fm_l; 28.67/12.46 ; 28.67/12.46 right_ok = right_ok0 fm_r key fm_r; 28.67/12.47 ; 28.67/12.47 right_ok0 fm_r key EmptyFM = True; 28.67/12.47 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 28.67/12.47 smallest_right_key = fst (findMin fm_r); 28.67/12.47 } in key < smallest_right_key; 28.67/12.47 ; 28.67/12.47 right_size = sizeFM fm_r; 28.67/12.47 ; 28.67/12.47 unbox x = x; 28.67/12.47 } 28.67/12.47 " 28.67/12.47 are unpacked to the following functions on top level 28.67/12.47 "mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 28.67/12.47 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 28.67/12.47 " 28.67/12.47 "mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 28.67/12.47 " 28.67/12.47 "mkBranchRight_size xvy xvz xwu = sizeFM xvz; 28.67/12.47 " 28.67/12.47 "mkBranchUnbox xvy xvz xwu x = x; 28.67/12.47 " 28.67/12.47 "mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xvz xwu xvz; 28.67/12.47 " 28.67/12.47 "mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xwu xvy; 28.67/12.47 " 28.67/12.47 "mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 28.67/12.47 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 28.67/12.47 " 28.67/12.47 "mkBranchBalance_ok xvy xvz xwu = True; 28.67/12.47 " 28.67/12.47 The bindings of the following Let/Where expression 28.67/12.47 "let { 28.67/12.47 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 28.67/12.47 } in result" 28.67/12.47 are unpacked to the following functions on top level 28.67/12.47 "mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwy xwv (1 + mkBranchLeft_size xwx xwy xwv + mkBranchRight_size xwx xwy xwv)) xwx xwy; 28.67/12.47 " 28.67/12.47 The bindings of the following Let/Where expression 28.67/12.47 "glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_l < size_r) where { 28.67/12.47 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); 28.67/12.47 ; 28.67/12.47 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 28.67/12.47 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 28.67/12.47 ; 28.67/12.47 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 28.67/12.47 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); 28.67/12.47 ; 28.67/12.47 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 28.67/12.47 ; 28.67/12.47 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 28.67/12.47 } 28.67/12.47 " 28.67/12.47 are unpacked to the following functions on top level 28.67/12.47 "glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 28.67/12.47 " 28.67/12.47 "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)); 28.67/12.47 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; 28.67/12.47 " 28.67/12.47 "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); 28.67/12.47 " 28.67/12.47 "glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 28.67/12.47 " 28.67/12.47 "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; 28.67/12.47 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); 28.67/12.47 " 28.67/12.47 The bindings of the following Let/Where expression 28.67/12.47 "glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 28.67/12.47 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 28.67/12.47 ; 28.67/12.47 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 28.67/12.47 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 28.67/12.47 ; 28.67/12.47 mid_elt1 = mid_elt10 vv2; 28.67/12.47 ; 28.67/12.47 mid_elt10 (vww,mid_elt1) = mid_elt1; 28.67/12.47 ; 28.67/12.47 mid_elt2 = mid_elt20 vv3; 28.67/12.47 ; 28.67/12.47 mid_elt20 (vwv,mid_elt2) = mid_elt2; 28.67/12.47 ; 28.67/12.47 mid_key1 = mid_key10 vv2; 28.67/12.47 ; 28.67/12.47 mid_key10 (mid_key1,vwx) = mid_key1; 28.67/12.47 ; 28.67/12.47 mid_key2 = mid_key20 vv3; 28.67/12.47 ; 28.67/12.47 mid_key20 (mid_key2,vwy) = mid_key2; 28.67/12.47 ; 28.67/12.47 vv2 = findMax fm1; 28.67/12.47 ; 28.67/12.47 vv3 = findMin fm2; 28.67/12.47 } 28.67/12.47 " 28.67/12.47 are unpacked to the following functions on top level 28.67/12.47 "glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 28.67/12.47 " 28.67/12.47 "glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 28.67/12.47 " 28.67/12.47 "glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 28.67/12.47 " 28.67/12.47 "glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 28.67/12.47 " 28.67/12.47 "glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 28.67/12.47 " 28.67/12.47 "glueBal2Vv3 xyx xyy = findMin xyx; 28.67/12.47 " 28.67/12.47 "glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 28.67/12.47 " 28.67/12.47 "glueBal2Vv2 xyx xyy = findMax xyy; 28.67/12.47 " 28.67/12.47 "glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 28.67/12.47 " 28.67/12.47 "glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 28.67/12.47 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 28.67/12.47 " 28.67/12.47 "glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 28.67/12.47 " 28.67/12.47 "glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 28.67/12.47 " 28.67/12.47 The bindings of the following Let/Where expression 28.67/12.47 "mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_l < size_r) where { 28.67/12.47 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); 28.67/12.47 ; 28.67/12.47 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)); 28.67/12.47 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; 28.67/12.47 ; 28.67/12.47 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; 28.67/12.47 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); 28.67/12.47 ; 28.67/12.47 size_l = sizeFM (Branch wu wv ww wx wy); 28.67/12.47 ; 28.67/12.47 size_r = sizeFM (Branch xu xv xw xx xy); 28.67/12.47 } 28.67/12.47 " 28.67/12.47 are unpacked to the following functions on top level 28.67/12.47 "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)); 28.67/12.47 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; 28.67/12.47 " 28.67/12.47 "mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 28.67/12.47 " 28.67/12.47 "mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 28.67/12.47 " 28.67/12.47 "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); 28.67/12.47 " 28.67/12.47 "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; 28.67/12.47 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); 29.15/12.51 " 29.15/12.51 The bindings of the following Let/Where expression 29.15/12.51 "let { 29.15/12.51 biggest_left_key = fst (findMax fm_l); 29.15/12.51 } in biggest_left_key < key" 29.15/12.51 are unpacked to the following functions on top level 29.15/12.51 "mkBranchLeft_ok0Biggest_left_key yux = fst (findMax yux); 29.15/12.51 " 29.15/12.51 The bindings of the following Let/Where expression 29.15/12.51 "let { 29.15/12.51 smallest_right_key = fst (findMin fm_r); 29.15/12.51 } in key < smallest_right_key" 29.15/12.51 are unpacked to the following functions on top level 29.15/12.51 "mkBranchRight_ok0Smallest_right_key yuy = fst (findMin yuy); 29.15/12.51 " 29.15/12.51 29.15/12.51 ---------------------------------------- 29.15/12.51 29.15/12.51 (10) 29.15/12.51 Obligation: 29.15/12.51 mainModule Main 29.15/12.51 module FiniteMap where { 29.15/12.51 import qualified Main; 29.15/12.51 import qualified Maybe; 29.15/12.51 import qualified Prelude; 29.15/12.51 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 29.15/12.51 29.15/12.51 instance (Eq a, Eq b) => Eq FiniteMap b a where { 29.15/12.51 } 29.15/12.51 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 29.15/12.51 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 29.15/12.51 29.15/12.51 addToFM0 old new = new; 29.15/12.51 29.15/12.51 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 29.15/12.51 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 29.15/12.51 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 29.15/12.51 29.15/12.51 deleteMax :: Ord a => FiniteMap a b -> FiniteMap a b; 29.15/12.51 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 29.15/12.51 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 29.15/12.51 29.15/12.51 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 29.15/12.51 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 29.15/12.51 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 29.15/12.51 29.15/12.51 emptyFM :: FiniteMap a b; 29.15/12.51 emptyFM = EmptyFM; 29.15/12.51 29.15/12.51 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 29.15/12.51 filterFM p EmptyFM = filterFM3 p EmptyFM; 29.15/12.51 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 29.15/12.51 29.15/12.51 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 29.15/12.51 29.15/12.51 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 29.15/12.51 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 29.15/12.51 29.15/12.51 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 29.15/12.51 29.15/12.51 filterFM3 p EmptyFM = emptyFM; 29.15/12.51 filterFM3 xuy xuz = filterFM2 xuy xuz; 29.15/12.51 29.15/12.51 findMax :: FiniteMap b a -> (b,a); 29.15/12.51 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 29.15/12.51 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 29.15/12.51 29.15/12.51 findMin :: FiniteMap a b -> (a,b); 29.15/12.51 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 29.15/12.51 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 29.15/12.51 29.15/12.51 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 29.15/12.51 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 29.15/12.51 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 29.15/12.51 glueBal fm1 fm2 = glueBal2 fm1 fm2; 29.15/12.51 29.15/12.51 glueBal2 fm1 fm2 = glueBal2GlueBal1 fm2 fm1 fm1 fm2 (sizeFM fm2 > sizeFM fm1); 29.15/12.51 29.15/12.51 glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 29.15/12.51 29.15/12.51 glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 29.15/12.51 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 29.15/12.51 29.15/12.51 glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 29.15/12.51 29.15/12.51 glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 29.15/12.51 29.15/12.51 glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 29.15/12.51 29.15/12.51 glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 29.15/12.51 29.15/12.51 glueBal2Vv2 xyx xyy = findMax xyy; 29.15/12.51 29.15/12.51 glueBal2Vv3 xyx xyy = findMin xyx; 29.15/12.51 29.15/12.51 glueBal3 fm1 EmptyFM = fm1; 29.15/12.51 glueBal3 wyv wyw = glueBal2 wyv wyw; 29.15/12.51 29.15/12.51 glueBal4 EmptyFM fm2 = fm2; 29.15/12.51 glueBal4 wyy wyz = glueBal3 wyy wyz; 29.15/12.51 29.15/12.51 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 29.15/12.51 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 29.15/12.51 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 29.15/12.51 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); 29.15/12.51 29.15/12.51 glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3GlueVBal2 vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_l vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy < glueVBal3Size_r vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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)); 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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); 29.15/12.51 29.15/12.51 glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 29.15/12.51 29.15/12.51 glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 29.15/12.51 29.15/12.51 glueVBal4 fm1 EmptyFM = fm1; 29.15/12.51 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 29.15/12.51 29.15/12.51 glueVBal5 EmptyFM fm2 = fm2; 29.15/12.51 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 29.15/12.51 29.15/12.51 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 29.15/12.51 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 29.15/12.51 29.15/12.51 mkBalBranch6 key elt fm_L fm_R = mkBalBranch6MkBalBranch5 key elt fm_L fm_R key elt fm_L fm_R (mkBalBranch6Size_l key elt fm_L fm_R + mkBalBranch6Size_r key elt fm_L fm_R < 2); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 29.15/12.51 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 29.15/12.51 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); 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvw; 29.15/12.51 29.15/12.51 mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvx; 29.15/12.51 29.15/12.51 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 29.15/12.51 mkBranch which key elt fm_l fm_r = mkBranchResult key elt fm_l fm_r; 29.15/12.51 29.15/12.51 mkBranchBalance_ok xvy xvz xwu = True; 29.15/12.51 29.15/12.51 mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xwu xvy; 29.15/12.51 29.15/12.51 mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 29.15/12.51 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 29.15/12.51 29.15/12.51 mkBranchLeft_ok0Biggest_left_key yux = fst (findMax yux); 29.15/12.51 29.15/12.51 mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 29.15/12.51 29.15/12.51 mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwy xwv (1 + mkBranchLeft_size xwx xwy xwv + mkBranchRight_size xwx xwy xwv)) xwx xwy; 29.15/12.51 29.15/12.51 mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xvz xwu xvz; 29.15/12.51 29.15/12.51 mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 29.15/12.51 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 29.15/12.51 29.15/12.51 mkBranchRight_ok0Smallest_right_key yuy = fst (findMin yuy); 29.15/12.51 29.15/12.51 mkBranchRight_size xvy xvz xwu = sizeFM xvz; 29.15/12.51 29.15/12.51 mkBranchUnbox :: Ord a => -> (FiniteMap a b) ( -> (FiniteMap a b) ( -> a (Int -> Int))); 29.15/12.51 mkBranchUnbox xvy xvz xwu x = x; 29.15/12.51 29.15/12.51 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 29.15/12.51 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 29.15/12.51 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3MkVBalBranch2 wu wv ww wx wy xu xv xw xx xy key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_l wu wv ww wx wy xu xv xw xx xy < mkVBalBranch3Size_r wu wv ww wx wy xu xv xw xx xy); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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)); 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 29.15/12.51 29.15/12.51 mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 29.15/12.51 29.15/12.51 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 29.15/12.51 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 29.15/12.51 29.15/12.51 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 29.15/12.51 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 29.15/12.51 29.15/12.51 sIZE_RATIO :: Int; 29.15/12.51 sIZE_RATIO = 5; 29.15/12.51 29.15/12.51 sizeFM :: FiniteMap a b -> Int; 29.15/12.51 sizeFM EmptyFM = 0; 29.15/12.51 sizeFM (Branch vyz vzu size vzv vzw) = size; 29.15/12.51 29.15/12.51 unitFM :: b -> a -> FiniteMap b a; 29.15/12.51 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 29.15/12.51 29.15/12.51 } 29.15/12.51 module Maybe where { 29.15/12.51 import qualified FiniteMap; 29.15/12.51 import qualified Main; 29.15/12.51 import qualified Prelude; 29.15/12.51 } 29.15/12.51 module Main where { 29.15/12.51 import qualified FiniteMap; 29.15/12.51 import qualified Maybe; 29.15/12.51 import qualified Prelude; 29.15/12.51 } 29.15/12.51 29.15/12.51 ---------------------------------------- 29.15/12.51 29.15/12.51 (11) NumRed (SOUND) 29.15/12.51 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 29.15/12.51 ---------------------------------------- 29.15/12.51 29.15/12.51 (12) 29.15/12.51 Obligation: 29.15/12.51 mainModule Main 29.15/12.51 module FiniteMap where { 29.15/12.51 import qualified Main; 29.15/12.51 import qualified Maybe; 29.15/12.51 import qualified Prelude; 29.15/12.51 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 29.15/12.51 29.15/12.51 instance (Eq a, Eq b) => Eq FiniteMap b a where { 29.15/12.51 } 29.15/12.51 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 29.15/12.51 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 29.15/12.51 29.15/12.51 addToFM0 old new = new; 29.15/12.51 29.15/12.51 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 29.15/12.51 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 29.15/12.51 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 29.15/12.51 29.15/12.51 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 29.15/12.51 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 29.15/12.51 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 29.15/12.51 29.15/12.51 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 29.15/12.51 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 29.15/12.51 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 29.15/12.51 29.15/12.51 emptyFM :: FiniteMap a b; 29.15/12.51 emptyFM = EmptyFM; 29.15/12.51 29.15/12.51 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 29.15/12.51 filterFM p EmptyFM = filterFM3 p EmptyFM; 29.15/12.51 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 29.15/12.51 29.15/12.51 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 29.15/12.51 29.15/12.51 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 29.15/12.51 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 29.15/12.51 29.15/12.51 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 29.15/12.51 29.15/12.51 filterFM3 p EmptyFM = emptyFM; 29.15/12.51 filterFM3 xuy xuz = filterFM2 xuy xuz; 29.15/12.51 29.15/12.51 findMax :: FiniteMap b a -> (b,a); 29.15/12.51 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 29.15/12.51 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 29.15/12.51 29.15/12.51 findMin :: FiniteMap a b -> (a,b); 29.15/12.51 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 29.15/12.51 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 29.15/12.51 29.15/12.51 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 29.15/12.51 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 29.15/12.51 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 29.15/12.51 glueBal fm1 fm2 = glueBal2 fm1 fm2; 29.15/12.51 29.15/12.51 glueBal2 fm1 fm2 = glueBal2GlueBal1 fm2 fm1 fm1 fm2 (sizeFM fm2 > sizeFM fm1); 29.15/12.51 29.15/12.51 glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 29.15/12.51 29.15/12.51 glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 29.15/12.51 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 29.15/12.51 29.15/12.51 glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 29.15/12.51 29.15/12.51 glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 29.15/12.51 29.15/12.51 glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 29.15/12.51 29.15/12.51 glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 29.15/12.51 29.15/12.51 glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 29.15/12.51 29.15/12.51 glueBal2Vv2 xyx xyy = findMax xyy; 29.15/12.51 29.15/12.51 glueBal2Vv3 xyx xyy = findMin xyx; 29.15/12.51 29.15/12.51 glueBal3 fm1 EmptyFM = fm1; 29.15/12.51 glueBal3 wyv wyw = glueBal2 wyv wyw; 29.15/12.51 29.15/12.51 glueBal4 EmptyFM fm2 = fm2; 29.15/12.51 glueBal4 wyy wyz = glueBal3 wyy wyz; 29.15/12.51 29.15/12.51 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 29.15/12.51 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 29.15/12.51 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 29.15/12.51 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); 29.15/12.51 29.15/12.51 glueVBal3 (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) = glueVBal3GlueVBal2 vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * glueVBal3Size_l vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy < glueVBal3Size_r vyu vyv vyw vyx vyy vxu vxv vxw vxx vxy); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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)); 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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); 29.15/12.51 29.15/12.51 glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 29.15/12.51 29.15/12.51 glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 29.15/12.51 29.15/12.51 glueVBal4 fm1 EmptyFM = fm1; 29.15/12.51 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 29.15/12.51 29.15/12.51 glueVBal5 EmptyFM fm2 = fm2; 29.15/12.51 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 29.15/12.51 29.15/12.51 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 29.15/12.51 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 29.15/12.51 29.15/12.51 mkBalBranch6 key elt fm_L fm_R = mkBalBranch6MkBalBranch5 key elt fm_L fm_R key elt fm_L fm_R (mkBalBranch6Size_l key elt fm_L fm_R + mkBalBranch6Size_r key elt fm_L fm_R < Pos (Succ (Succ Zero))); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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; 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch (Pos (Succ (Succ Zero))) key elt fm_L fm_R; 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 29.15/12.51 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 29.15/12.51 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); 29.15/12.51 29.15/12.51 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch (Pos (Succ Zero)) key elt fm_L fm_R; 29.15/12.51 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); 29.15/12.51 29.15/12.51 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; 29.15/12.51 29.15/12.51 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); 29.15/12.52 29.15/12.52 mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvw; 29.15/12.52 29.15/12.52 mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvx; 29.15/12.52 29.15/12.52 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 29.15/12.52 mkBranch which key elt fm_l fm_r = mkBranchResult key elt fm_l fm_r; 29.15/12.52 29.15/12.52 mkBranchBalance_ok xvy xvz xwu = True; 29.15/12.52 29.15/12.52 mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xwu xvy; 29.15/12.52 29.15/12.52 mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 29.15/12.52 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 29.15/12.52 29.15/12.52 mkBranchLeft_ok0Biggest_left_key yux = fst (findMax yux); 29.15/12.52 29.15/12.52 mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 29.15/12.52 29.15/12.52 mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwy xwv (Pos (Succ Zero) + mkBranchLeft_size xwx xwy xwv + mkBranchRight_size xwx xwy xwv)) xwx xwy; 29.15/12.52 29.15/12.52 mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xvz xwu xvz; 29.15/12.52 29.15/12.52 mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 29.15/12.52 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 29.15/12.52 29.15/12.52 mkBranchRight_ok0Smallest_right_key yuy = fst (findMin yuy); 29.15/12.52 29.15/12.52 mkBranchRight_size xvy xvz xwu = sizeFM xvz; 29.15/12.52 29.15/12.52 mkBranchUnbox :: Ord a => -> (FiniteMap a b) ( -> (FiniteMap a b) ( -> a (Int -> Int))); 29.15/12.52 mkBranchUnbox xvy xvz xwu x = x; 29.15/12.52 29.15/12.52 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 29.15/12.52 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 29.15/12.52 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 29.15/12.52 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); 29.15/12.52 29.15/12.52 mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3MkVBalBranch2 wu wv ww wx wy xu xv xw xx xy key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * mkVBalBranch3Size_l wu wv ww wx wy xu xv xw xx xy < mkVBalBranch3Size_r wu wv ww wx wy xu xv xw xx xy); 29.15/12.52 29.15/12.52 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); 29.15/12.52 29.15/12.52 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)); 29.15/12.52 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; 29.15/12.52 29.15/12.52 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; 29.15/12.52 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); 29.15/12.52 29.15/12.52 mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 29.15/12.52 29.15/12.52 mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 29.15/12.52 29.15/12.52 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 29.15/12.52 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 29.15/12.52 29.15/12.52 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 29.15/12.52 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 29.15/12.52 29.15/12.52 sIZE_RATIO :: Int; 29.15/12.52 sIZE_RATIO = Pos (Succ (Succ (Succ (Succ (Succ Zero))))); 29.15/12.52 29.15/12.52 sizeFM :: FiniteMap a b -> Int; 29.15/12.52 sizeFM EmptyFM = Pos Zero; 29.15/12.52 sizeFM (Branch vyz vzu size vzv vzw) = size; 29.15/12.52 29.15/12.52 unitFM :: a -> b -> FiniteMap a b; 29.15/12.52 unitFM key elt = Branch key elt (Pos (Succ Zero)) emptyFM emptyFM; 29.15/12.52 29.15/12.52 } 29.15/12.52 module Maybe where { 29.15/12.52 import qualified FiniteMap; 29.15/12.52 import qualified Main; 29.15/12.52 import qualified Prelude; 29.15/12.52 } 29.15/12.52 module Main where { 29.15/12.52 import qualified FiniteMap; 29.15/12.52 import qualified Maybe; 29.15/12.52 import qualified Prelude; 29.15/12.52 } 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (13) Narrow (SOUND) 29.15/12.52 Haskell To QDPs 29.15/12.52 29.15/12.52 digraph dp_graph { 29.15/12.52 node [outthreshold=100, inthreshold=100];1[label="FiniteMap.filterFM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 29.15/12.52 3[label="FiniteMap.filterFM yuz3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 29.15/12.52 4[label="FiniteMap.filterFM yuz3 yuz4",fontsize=16,color="burlywood",shape="triangle"];14692[label="yuz4/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];4 -> 14692[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14692 -> 5[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14693[label="yuz4/FiniteMap.Branch yuz40 yuz41 yuz42 yuz43 yuz44",fontsize=10,color="white",style="solid",shape="box"];4 -> 14693[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14693 -> 6[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5[label="FiniteMap.filterFM yuz3 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];5 -> 7[label="",style="solid", color="black", weight=3]; 29.15/12.52 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]; 29.15/12.52 7[label="FiniteMap.filterFM3 yuz3 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 29.15/12.52 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]; 29.15/12.52 9[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];9 -> 11[label="",style="solid", color="black", weight=3]; 29.15/12.52 10 -> 12[label="",style="dashed", color="red", weight=0]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 13 -> 19[label="",style="dashed", color="green", weight=3]; 29.15/12.52 12[label="FiniteMap.filterFM1 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 yuz5",fontsize=16,color="burlywood",shape="triangle"];14694[label="yuz5/False",fontsize=10,color="white",style="solid",shape="box"];12 -> 14694[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14694 -> 16[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14695[label="yuz5/True",fontsize=10,color="white",style="solid",shape="box"];12 -> 14695[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14695 -> 17[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 21 -> 23[label="",style="dashed", color="red", weight=0]; 29.15/12.52 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]; 29.15/12.52 21 -> 25[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 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]; 29.15/12.52 24 -> 4[label="",style="dashed", color="red", weight=0]; 29.15/12.52 24[label="FiniteMap.filterFM yuz3 yuz44",fontsize=16,color="magenta"];24 -> 27[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 25 -> 4[label="",style="dashed", color="red", weight=0]; 29.15/12.52 25[label="FiniteMap.filterFM yuz3 yuz43",fontsize=16,color="magenta"];25 -> 28[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 23[label="FiniteMap.mkVBalBranch yuz40 yuz41 yuz7 yuz6",fontsize=16,color="burlywood",shape="triangle"];14696[label="yuz7/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];23 -> 14696[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14696 -> 29[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14697[label="yuz7/FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=10,color="white",style="solid",shape="box"];23 -> 14697[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14697 -> 30[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 26 -> 31[label="",style="dashed", color="red", weight=0]; 29.15/12.52 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]; 29.15/12.52 26 -> 33[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 27[label="yuz44",fontsize=16,color="green",shape="box"];28[label="yuz43",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]; 29.15/12.52 30[label="FiniteMap.mkVBalBranch yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) yuz6",fontsize=16,color="burlywood",shape="box"];14698[label="yuz6/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];30 -> 14698[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14698 -> 35[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14699[label="yuz6/FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=10,color="white",style="solid",shape="box"];30 -> 14699[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14699 -> 36[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 32 -> 4[label="",style="dashed", color="red", weight=0]; 29.15/12.52 32[label="FiniteMap.filterFM yuz3 yuz44",fontsize=16,color="magenta"];32 -> 37[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 33 -> 4[label="",style="dashed", color="red", weight=0]; 29.15/12.52 33[label="FiniteMap.filterFM yuz3 yuz43",fontsize=16,color="magenta"];33 -> 38[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 31[label="FiniteMap.glueVBal yuz9 yuz8",fontsize=16,color="burlywood",shape="triangle"];14700[label="yuz9/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];31 -> 14700[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14700 -> 39[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14701[label="yuz9/FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=10,color="white",style="solid",shape="box"];31 -> 14701[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14701 -> 40[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 34[label="FiniteMap.mkVBalBranch5 yuz40 yuz41 FiniteMap.EmptyFM yuz6",fontsize=16,color="black",shape="box"];34 -> 41[label="",style="solid", color="black", weight=3]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 40[label="FiniteMap.glueVBal (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) yuz8",fontsize=16,color="burlywood",shape="box"];14702[label="yuz8/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];40 -> 14702[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14702 -> 45[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14703[label="yuz8/FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=10,color="white",style="solid",shape="box"];40 -> 14703[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14703 -> 46[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 41[label="FiniteMap.addToFM yuz6 yuz40 yuz41",fontsize=16,color="black",shape="triangle"];41 -> 47[label="",style="solid", color="black", weight=3]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 44[label="FiniteMap.glueVBal5 FiniteMap.EmptyFM yuz8",fontsize=16,color="black",shape="box"];44 -> 50[label="",style="solid", color="black", weight=3]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 47[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz6 yuz40 yuz41",fontsize=16,color="burlywood",shape="triangle"];14704[label="yuz6/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];47 -> 14704[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14704 -> 53[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14705[label="yuz6/FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=10,color="white",style="solid",shape="box"];47 -> 14705[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14705 -> 54[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 48 -> 41[label="",style="dashed", color="red", weight=0]; 29.15/12.52 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]; 29.15/12.52 49 -> 7124[label="",style="dashed", color="red", weight=0]; 29.15/12.52 49[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64 yuz40 yuz41 yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64 < FiniteMap.mkVBalBranch3Size_r yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="magenta"];49 -> 7125[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7126[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7127[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7128[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7129[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7130[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7131[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7132[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7133[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7134[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7135[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7136[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 49 -> 7137[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 55[label="FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="green",shape="box"];7125[label="yuz60",fontsize=16,color="green",shape="box"];7126[label="yuz64",fontsize=16,color="green",shape="box"];7127[label="yuz73",fontsize=16,color="green",shape="box"];7128[label="yuz71",fontsize=16,color="green",shape="box"];7129[label="yuz72",fontsize=16,color="green",shape="box"];7130[label="yuz63",fontsize=16,color="green",shape="box"];7131[label="yuz70",fontsize=16,color="green",shape="box"];7132[label="yuz41",fontsize=16,color="green",shape="box"];7133[label="yuz62",fontsize=16,color="green",shape="box"];7134 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 7134[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64 < FiniteMap.mkVBalBranch3Size_r yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="magenta"];7134 -> 8560[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 7134 -> 8561[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 7135[label="yuz40",fontsize=16,color="green",shape="box"];7136[label="yuz74",fontsize=16,color="green",shape="box"];7137[label="yuz61",fontsize=16,color="green",shape="box"];7124[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz506",fontsize=16,color="burlywood",shape="triangle"];14706[label="yuz506/False",fontsize=10,color="white",style="solid",shape="box"];7124 -> 14706[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14706 -> 8562[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14707[label="yuz506/True",fontsize=10,color="white",style="solid",shape="box"];7124 -> 14707[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14707 -> 8563[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 57[label="FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="green",shape="box"];58 -> 11870[label="",style="dashed", color="red", weight=0]; 29.15/12.52 58[label="FiniteMap.glueVBal3GlueVBal2 yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94 yuz90 yuz91 yuz92 yuz93 yuz94 yuz80 yuz81 yuz82 yuz83 yuz84 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94 < FiniteMap.glueVBal3Size_r yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94)",fontsize=16,color="magenta"];58 -> 11871[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11872[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11873[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11874[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11875[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11876[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11877[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11878[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11879[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11880[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 58 -> 11881[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 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]; 29.15/12.52 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]; 29.15/12.52 8560 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8560[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="magenta"];8560 -> 9656[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8561[label="FiniteMap.mkVBalBranch3Size_r yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="black",shape="box"];8561 -> 8626[label="",style="solid", color="black", weight=3]; 29.15/12.52 4669[label="yuz200 < yuz190",fontsize=16,color="black",shape="triangle"];4669 -> 4733[label="",style="solid", color="black", weight=3]; 29.15/12.52 8562[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 False",fontsize=16,color="black",shape="box"];8562 -> 8627[label="",style="solid", color="black", weight=3]; 29.15/12.52 8563[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 True",fontsize=16,color="black",shape="box"];8563 -> 8628[label="",style="solid", color="black", weight=3]; 29.15/12.52 11871 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 11871[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94 < FiniteMap.glueVBal3Size_r yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="magenta"];11871 -> 13512[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 11871 -> 13513[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 11872[label="yuz82",fontsize=16,color="green",shape="box"];11873[label="yuz80",fontsize=16,color="green",shape="box"];11874[label="yuz83",fontsize=16,color="green",shape="box"];11875[label="yuz92",fontsize=16,color="green",shape="box"];11876[label="yuz93",fontsize=16,color="green",shape="box"];11877[label="yuz91",fontsize=16,color="green",shape="box"];11878[label="yuz94",fontsize=16,color="green",shape="box"];11879[label="yuz90",fontsize=16,color="green",shape="box"];11880[label="yuz81",fontsize=16,color="green",shape="box"];11881[label="yuz84",fontsize=16,color="green",shape="box"];11870[label="FiniteMap.glueVBal3GlueVBal2 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 yuz681",fontsize=16,color="burlywood",shape="triangle"];14708[label="yuz681/False",fontsize=10,color="white",style="solid",shape="box"];11870 -> 14708[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14708 -> 13514[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14709[label="yuz681/True",fontsize=10,color="white",style="solid",shape="box"];11870 -> 14709[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14709 -> 13515[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 63[label="FiniteMap.unitFM yuz40 yuz41",fontsize=16,color="black",shape="box"];63 -> 67[label="",style="solid", color="black", weight=3]; 29.15/12.52 64 -> 9689[label="",style="dashed", color="red", weight=0]; 29.15/12.52 64[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz60 yuz61 yuz62 yuz63 yuz64 yuz40 yuz41 (yuz40 < yuz60)",fontsize=16,color="magenta"];64 -> 9690[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9691[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9692[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9693[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9694[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9695[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9696[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 64 -> 9697[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 8638[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9656[label="FiniteMap.mkVBalBranch3Size_l yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="magenta"];9656 -> 9662[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9663[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9664[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9665[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9666[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9667[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9668[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9669[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9670[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9656 -> 9671[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9655[label="FiniteMap.sIZE_RATIO * yuz548",fontsize=16,color="black",shape="triangle"];9655 -> 9672[label="",style="solid", color="black", weight=3]; 29.15/12.52 8626 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8626[label="FiniteMap.sizeFM (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="magenta"];8626 -> 9373[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 4733[label="compare yuz200 yuz190 == LT",fontsize=16,color="black",shape="box"];4733 -> 4911[label="",style="solid", color="black", weight=3]; 29.15/12.52 8627 -> 8633[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8627[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 < FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="magenta"];8627 -> 8634[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8628 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8628[label="FiniteMap.mkBalBranch yuz1980 yuz1981 (FiniteMap.mkVBalBranch yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) yuz1983) yuz1984",fontsize=16,color="magenta"];8628 -> 13769[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8628 -> 13770[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8628 -> 13771[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8628 -> 13772[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13512 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13512[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="magenta"];13512 -> 13522[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13513[label="FiniteMap.glueVBal3Size_r yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="black",shape="box"];13513 -> 13523[label="",style="solid", color="black", weight=3]; 29.15/12.52 13514[label="FiniteMap.glueVBal3GlueVBal2 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 False",fontsize=16,color="black",shape="box"];13514 -> 13524[label="",style="solid", color="black", weight=3]; 29.15/12.52 13515[label="FiniteMap.glueVBal3GlueVBal2 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 True",fontsize=16,color="black",shape="box"];13515 -> 13525[label="",style="solid", color="black", weight=3]; 29.15/12.52 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]; 29.15/12.52 67 -> 72[label="",style="dashed", color="green", weight=3]; 29.15/12.52 9690[label="yuz60",fontsize=16,color="green",shape="box"];9691[label="yuz61",fontsize=16,color="green",shape="box"];9692[label="yuz40 < yuz60",fontsize=16,color="black",shape="triangle"];9692 -> 9850[label="",style="solid", color="black", weight=3]; 29.15/12.52 9693[label="yuz64",fontsize=16,color="green",shape="box"];9694[label="yuz41",fontsize=16,color="green",shape="box"];9695[label="yuz63",fontsize=16,color="green",shape="box"];9696[label="yuz62",fontsize=16,color="green",shape="box"];9697[label="yuz40",fontsize=16,color="green",shape="box"];9689[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz558 yuz559 yuz560 yuz561 yuz562 yuz563 yuz564 yuz565",fontsize=16,color="burlywood",shape="triangle"];14710[label="yuz565/False",fontsize=10,color="white",style="solid",shape="box"];9689 -> 14710[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14710 -> 9851[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14711[label="yuz565/True",fontsize=10,color="white",style="solid",shape="box"];9689 -> 14711[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14711 -> 9852[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9662[label="yuz70",fontsize=16,color="green",shape="box"];9663[label="yuz60",fontsize=16,color="green",shape="box"];9664[label="yuz64",fontsize=16,color="green",shape="box"];9665[label="yuz73",fontsize=16,color="green",shape="box"];9666[label="yuz71",fontsize=16,color="green",shape="box"];9667[label="yuz62",fontsize=16,color="green",shape="box"];9668[label="yuz72",fontsize=16,color="green",shape="box"];9669[label="yuz74",fontsize=16,color="green",shape="box"];9670[label="yuz63",fontsize=16,color="green",shape="box"];9671[label="yuz61",fontsize=16,color="green",shape="box"];8638[label="FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984",fontsize=16,color="black",shape="triangle"];8638 -> 8667[label="",style="solid", color="black", weight=3]; 29.15/12.52 9672[label="primMulInt FiniteMap.sIZE_RATIO yuz548",fontsize=16,color="black",shape="box"];9672 -> 9853[label="",style="solid", color="black", weight=3]; 29.15/12.52 9373[label="FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="green",shape="box"];9372[label="FiniteMap.sizeFM yuz541",fontsize=16,color="burlywood",shape="triangle"];14712[label="yuz541/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];9372 -> 14712[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14712 -> 9381[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14713[label="yuz541/FiniteMap.Branch yuz5410 yuz5411 yuz5412 yuz5413 yuz5414",fontsize=10,color="white",style="solid",shape="box"];9372 -> 14713[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14713 -> 9382[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 4911[label="primCmpInt yuz200 yuz190 == LT",fontsize=16,color="burlywood",shape="triangle"];14714[label="yuz200/Pos yuz2000",fontsize=10,color="white",style="solid",shape="box"];4911 -> 14714[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14714 -> 5104[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14715[label="yuz200/Neg yuz2000",fontsize=10,color="white",style="solid",shape="box"];4911 -> 14715[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14715 -> 5105[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 8634 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8634[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 < FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984",fontsize=16,color="magenta"];8634 -> 8637[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8634 -> 8638[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8633[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz509",fontsize=16,color="burlywood",shape="triangle"];14716[label="yuz509/False",fontsize=10,color="white",style="solid",shape="box"];8633 -> 14716[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14716 -> 8639[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14717[label="yuz509/True",fontsize=10,color="white",style="solid",shape="box"];8633 -> 14717[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14717 -> 8640[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13769[label="yuz1980",fontsize=16,color="green",shape="box"];13770[label="FiniteMap.mkVBalBranch yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) yuz1983",fontsize=16,color="burlywood",shape="box"];14718[label="yuz1983/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13770 -> 14718[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14718 -> 13799[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14719[label="yuz1983/FiniteMap.Branch yuz19830 yuz19831 yuz19832 yuz19833 yuz19834",fontsize=10,color="white",style="solid",shape="box"];13770 -> 14719[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14719 -> 13800[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13771[label="yuz1981",fontsize=16,color="green",shape="box"];13772[label="yuz1984",fontsize=16,color="green",shape="box"];13768[label="FiniteMap.mkBalBranch yuz300 yuz301 yuz704 yuz304",fontsize=16,color="black",shape="triangle"];13768 -> 13801[label="",style="solid", color="black", weight=3]; 29.15/12.52 13522[label="FiniteMap.glueVBal3Size_l yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="black",shape="box"];13522 -> 13527[label="",style="solid", color="black", weight=3]; 29.15/12.52 13523 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13523[label="FiniteMap.sizeFM (FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84)",fontsize=16,color="magenta"];13523 -> 13528[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13524 -> 13529[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13524[label="FiniteMap.glueVBal3GlueVBal1 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 < FiniteMap.glueVBal3Size_l yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="magenta"];13524 -> 13530[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13525 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13525[label="FiniteMap.mkBalBranch yuz300 yuz301 (FiniteMap.glueVBal (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) yuz303) yuz304",fontsize=16,color="magenta"];13525 -> 13773[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 71 -> 9[label="",style="dashed", color="red", weight=0]; 29.15/12.52 71[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];72 -> 9[label="",style="dashed", color="red", weight=0]; 29.15/12.52 72[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];9850[label="compare yuz40 yuz60 == LT",fontsize=16,color="black",shape="box"];9850 -> 9872[label="",style="solid", color="black", weight=3]; 29.15/12.52 9851[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz558 yuz559 yuz560 yuz561 yuz562 yuz563 yuz564 False",fontsize=16,color="black",shape="box"];9851 -> 9873[label="",style="solid", color="black", weight=3]; 29.15/12.52 9852[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz558 yuz559 yuz560 yuz561 yuz562 yuz563 yuz564 True",fontsize=16,color="black",shape="box"];9852 -> 9874[label="",style="solid", color="black", weight=3]; 29.15/12.52 8667 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8667[label="FiniteMap.sizeFM (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944)",fontsize=16,color="magenta"];8667 -> 9375[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9853[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) yuz548",fontsize=16,color="burlywood",shape="box"];14720[label="yuz548/Pos yuz5480",fontsize=10,color="white",style="solid",shape="box"];9853 -> 14720[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14720 -> 9875[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14721[label="yuz548/Neg yuz5480",fontsize=10,color="white",style="solid",shape="box"];9853 -> 14721[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14721 -> 9876[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9381[label="FiniteMap.sizeFM FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];9381 -> 9435[label="",style="solid", color="black", weight=3]; 29.15/12.52 9382[label="FiniteMap.sizeFM (FiniteMap.Branch yuz5410 yuz5411 yuz5412 yuz5413 yuz5414)",fontsize=16,color="black",shape="box"];9382 -> 9436[label="",style="solid", color="black", weight=3]; 29.15/12.52 5104[label="primCmpInt (Pos yuz2000) yuz190 == LT",fontsize=16,color="burlywood",shape="box"];14722[label="yuz2000/Succ yuz20000",fontsize=10,color="white",style="solid",shape="box"];5104 -> 14722[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14722 -> 5377[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14723[label="yuz2000/Zero",fontsize=10,color="white",style="solid",shape="box"];5104 -> 14723[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14723 -> 5378[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5105[label="primCmpInt (Neg yuz2000) yuz190 == LT",fontsize=16,color="burlywood",shape="box"];14724[label="yuz2000/Succ yuz20000",fontsize=10,color="white",style="solid",shape="box"];5105 -> 14724[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14724 -> 5379[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14725[label="yuz2000/Zero",fontsize=10,color="white",style="solid",shape="box"];5105 -> 14725[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14725 -> 5380[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 8637 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8637[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984",fontsize=16,color="magenta"];8637 -> 9657[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8639[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 False",fontsize=16,color="black",shape="box"];8639 -> 8668[label="",style="solid", color="black", weight=3]; 29.15/12.52 8640[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 True",fontsize=16,color="black",shape="box"];8640 -> 8669[label="",style="solid", color="black", weight=3]; 29.15/12.52 13799[label="FiniteMap.mkVBalBranch yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];13799 -> 13821[label="",style="solid", color="black", weight=3]; 29.15/12.52 13800[label="FiniteMap.mkVBalBranch yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) (FiniteMap.Branch yuz19830 yuz19831 yuz19832 yuz19833 yuz19834)",fontsize=16,color="black",shape="box"];13800 -> 13822[label="",style="solid", color="black", weight=3]; 29.15/12.52 13801[label="FiniteMap.mkBalBranch6 yuz300 yuz301 yuz704 yuz304",fontsize=16,color="black",shape="box"];13801 -> 13823[label="",style="solid", color="black", weight=3]; 29.15/12.52 13527 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13527[label="FiniteMap.sizeFM (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94)",fontsize=16,color="magenta"];13527 -> 13532[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13528[label="FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="green",shape="box"];13530 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13530[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 < FiniteMap.glueVBal3Size_l yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="magenta"];13530 -> 13533[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13530 -> 13534[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13529[label="FiniteMap.glueVBal3GlueVBal1 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 yuz683",fontsize=16,color="burlywood",shape="triangle"];14726[label="yuz683/False",fontsize=10,color="white",style="solid",shape="box"];13529 -> 14726[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14726 -> 13535[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14727[label="yuz683/True",fontsize=10,color="white",style="solid",shape="box"];13529 -> 14727[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14727 -> 13536[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13773[label="FiniteMap.glueVBal (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) yuz303",fontsize=16,color="burlywood",shape="box"];14728[label="yuz303/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13773 -> 14728[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14728 -> 13802[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14729[label="yuz303/FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034",fontsize=10,color="white",style="solid",shape="box"];13773 -> 14729[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14729 -> 13803[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9872[label="primCmpChar yuz40 yuz60 == LT",fontsize=16,color="burlywood",shape="box"];14730[label="yuz40/Char yuz400",fontsize=10,color="white",style="solid",shape="box"];9872 -> 14730[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14730 -> 9879[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9873 -> 9880[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9873[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz558 yuz559 yuz560 yuz561 yuz562 yuz563 yuz564 (yuz563 > yuz558)",fontsize=16,color="magenta"];9873 -> 9881[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9882[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9883[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9884[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9885[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9886[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9887[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9873 -> 9888[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9874 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9874[label="FiniteMap.mkBalBranch yuz558 yuz559 (FiniteMap.addToFM_C FiniteMap.addToFM0 yuz561 yuz563 yuz564) yuz562",fontsize=16,color="magenta"];9874 -> 13774[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9874 -> 13775[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9874 -> 13776[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9874 -> 13777[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9375[label="FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944",fontsize=16,color="green",shape="box"];9875[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) (Pos yuz5480)",fontsize=16,color="black",shape="box"];9875 -> 9890[label="",style="solid", color="black", weight=3]; 29.15/12.52 9876[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) (Neg yuz5480)",fontsize=16,color="black",shape="box"];9876 -> 9891[label="",style="solid", color="black", weight=3]; 29.15/12.52 9435[label="Pos Zero",fontsize=16,color="green",shape="box"];9436[label="yuz5412",fontsize=16,color="green",shape="box"];5377[label="primCmpInt (Pos (Succ yuz20000)) yuz190 == LT",fontsize=16,color="burlywood",shape="box"];14731[label="yuz190/Pos yuz1900",fontsize=10,color="white",style="solid",shape="box"];5377 -> 14731[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14731 -> 5395[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14732[label="yuz190/Neg yuz1900",fontsize=10,color="white",style="solid",shape="box"];5377 -> 14732[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14732 -> 5396[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5378[label="primCmpInt (Pos Zero) yuz190 == LT",fontsize=16,color="burlywood",shape="box"];14733[label="yuz190/Pos yuz1900",fontsize=10,color="white",style="solid",shape="box"];5378 -> 14733[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14733 -> 5397[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14734[label="yuz190/Neg yuz1900",fontsize=10,color="white",style="solid",shape="box"];5378 -> 14734[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14734 -> 5398[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5379[label="primCmpInt (Neg (Succ yuz20000)) yuz190 == LT",fontsize=16,color="burlywood",shape="box"];14735[label="yuz190/Pos yuz1900",fontsize=10,color="white",style="solid",shape="box"];5379 -> 14735[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14735 -> 5399[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14736[label="yuz190/Neg yuz1900",fontsize=10,color="white",style="solid",shape="box"];5379 -> 14736[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14736 -> 5400[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5380[label="primCmpInt (Neg Zero) yuz190 == LT",fontsize=16,color="burlywood",shape="box"];14737[label="yuz190/Pos yuz1900",fontsize=10,color="white",style="solid",shape="box"];5380 -> 14737[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14737 -> 5401[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14738[label="yuz190/Neg yuz1900",fontsize=10,color="white",style="solid",shape="box"];5380 -> 14738[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14738 -> 5402[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9657[label="FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984",fontsize=16,color="black",shape="triangle"];9657 -> 9673[label="",style="solid", color="black", weight=3]; 29.15/12.52 8668[label="FiniteMap.mkVBalBranch3MkVBalBranch0 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 otherwise",fontsize=16,color="black",shape="box"];8668 -> 8681[label="",style="solid", color="black", weight=3]; 29.15/12.52 8669 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8669[label="FiniteMap.mkBalBranch yuz1940 yuz1941 yuz1943 (FiniteMap.mkVBalBranch yuz200 yuz201 yuz1944 (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984))",fontsize=16,color="magenta"];8669 -> 13778[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8669 -> 13779[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8669 -> 13780[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8669 -> 13781[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13821[label="FiniteMap.mkVBalBranch4 yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];13821 -> 13840[label="",style="solid", color="black", weight=3]; 29.15/12.52 13822[label="FiniteMap.mkVBalBranch3 yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) (FiniteMap.Branch yuz19830 yuz19831 yuz19832 yuz19833 yuz19834)",fontsize=16,color="black",shape="triangle"];13822 -> 13841[label="",style="solid", color="black", weight=3]; 29.15/12.52 13823 -> 13842[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13823[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 (FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304 + FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304 < Pos (Succ (Succ Zero)))",fontsize=16,color="magenta"];13823 -> 13843[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13532[label="FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="green",shape="box"];13533 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13533[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="magenta"];13533 -> 13538[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13534[label="FiniteMap.glueVBal3Size_l yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="black",shape="triangle"];13534 -> 13539[label="",style="solid", color="black", weight=3]; 29.15/12.52 13535[label="FiniteMap.glueVBal3GlueVBal1 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 False",fontsize=16,color="black",shape="box"];13535 -> 13540[label="",style="solid", color="black", weight=3]; 29.15/12.52 13536[label="FiniteMap.glueVBal3GlueVBal1 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 True",fontsize=16,color="black",shape="box"];13536 -> 13541[label="",style="solid", color="black", weight=3]; 29.15/12.52 13802[label="FiniteMap.glueVBal (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];13802 -> 13824[label="",style="solid", color="black", weight=3]; 29.15/12.52 13803[label="FiniteMap.glueVBal (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034)",fontsize=16,color="black",shape="box"];13803 -> 13825[label="",style="solid", color="black", weight=3]; 29.15/12.52 9879[label="primCmpChar (Char yuz400) yuz60 == LT",fontsize=16,color="burlywood",shape="box"];14739[label="yuz60/Char yuz600",fontsize=10,color="white",style="solid",shape="box"];9879 -> 14739[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14739 -> 9892[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9881[label="yuz559",fontsize=16,color="green",shape="box"];9882[label="yuz558",fontsize=16,color="green",shape="box"];9883[label="yuz563",fontsize=16,color="green",shape="box"];9884[label="yuz560",fontsize=16,color="green",shape="box"];9885[label="yuz563 > yuz558",fontsize=16,color="blue",shape="box"];14740[label="> :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14740[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14740 -> 9893[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14741[label="> :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14741[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14741 -> 9894[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14742[label="> :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14742[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14742 -> 9895[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14743[label="> :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14743[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14743 -> 9896[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14744[label="> :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14744[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14744 -> 9897[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14745[label="> :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14745[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14745 -> 9898[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14746[label="> :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14746[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14746 -> 9899[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14747[label="> :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14747[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14747 -> 9900[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14748[label="> :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14748[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14748 -> 9901[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14749[label="> :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14749[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14749 -> 9902[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14750[label="> :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14750[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14750 -> 9903[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14751[label="> :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14751[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14751 -> 9904[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14752[label="> :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14752[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14752 -> 9905[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14753[label="> :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];9885 -> 14753[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14753 -> 9906[label="",style="solid", color="blue", weight=3]; 29.15/12.52 9886[label="yuz561",fontsize=16,color="green",shape="box"];9887[label="yuz562",fontsize=16,color="green",shape="box"];9888[label="yuz564",fontsize=16,color="green",shape="box"];9880[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz577 yuz578 yuz579 yuz580 yuz581 yuz582 yuz583 yuz584",fontsize=16,color="burlywood",shape="triangle"];14754[label="yuz584/False",fontsize=10,color="white",style="solid",shape="box"];9880 -> 14754[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14754 -> 9907[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14755[label="yuz584/True",fontsize=10,color="white",style="solid",shape="box"];9880 -> 14755[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14755 -> 9908[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13774[label="yuz558",fontsize=16,color="green",shape="box"];13775[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz561 yuz563 yuz564",fontsize=16,color="burlywood",shape="triangle"];14756[label="yuz561/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13775 -> 14756[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14756 -> 13804[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14757[label="yuz561/FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614",fontsize=10,color="white",style="solid",shape="box"];13775 -> 14757[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14757 -> 13805[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13776[label="yuz559",fontsize=16,color="green",shape="box"];13777[label="yuz562",fontsize=16,color="green",shape="box"];9890[label="Pos (primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz5480)",fontsize=16,color="green",shape="box"];9890 -> 9912[label="",style="dashed", color="green", weight=3]; 29.15/12.52 9891[label="Neg (primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz5480)",fontsize=16,color="green",shape="box"];9891 -> 9913[label="",style="dashed", color="green", weight=3]; 29.15/12.52 5395[label="primCmpInt (Pos (Succ yuz20000)) (Pos yuz1900) == LT",fontsize=16,color="black",shape="box"];5395 -> 5758[label="",style="solid", color="black", weight=3]; 29.15/12.52 5396[label="primCmpInt (Pos (Succ yuz20000)) (Neg yuz1900) == LT",fontsize=16,color="black",shape="box"];5396 -> 5759[label="",style="solid", color="black", weight=3]; 29.15/12.52 5397[label="primCmpInt (Pos Zero) (Pos yuz1900) == LT",fontsize=16,color="burlywood",shape="box"];14758[label="yuz1900/Succ yuz19000",fontsize=10,color="white",style="solid",shape="box"];5397 -> 14758[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14758 -> 5760[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14759[label="yuz1900/Zero",fontsize=10,color="white",style="solid",shape="box"];5397 -> 14759[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14759 -> 5761[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5398[label="primCmpInt (Pos Zero) (Neg yuz1900) == LT",fontsize=16,color="burlywood",shape="box"];14760[label="yuz1900/Succ yuz19000",fontsize=10,color="white",style="solid",shape="box"];5398 -> 14760[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14760 -> 5762[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14761[label="yuz1900/Zero",fontsize=10,color="white",style="solid",shape="box"];5398 -> 14761[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14761 -> 5763[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5399[label="primCmpInt (Neg (Succ yuz20000)) (Pos yuz1900) == LT",fontsize=16,color="black",shape="box"];5399 -> 5764[label="",style="solid", color="black", weight=3]; 29.15/12.52 5400[label="primCmpInt (Neg (Succ yuz20000)) (Neg yuz1900) == LT",fontsize=16,color="black",shape="box"];5400 -> 5765[label="",style="solid", color="black", weight=3]; 29.15/12.52 5401[label="primCmpInt (Neg Zero) (Pos yuz1900) == LT",fontsize=16,color="burlywood",shape="box"];14762[label="yuz1900/Succ yuz19000",fontsize=10,color="white",style="solid",shape="box"];5401 -> 14762[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14762 -> 5766[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14763[label="yuz1900/Zero",fontsize=10,color="white",style="solid",shape="box"];5401 -> 14763[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14763 -> 5767[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5402[label="primCmpInt (Neg Zero) (Neg yuz1900) == LT",fontsize=16,color="burlywood",shape="box"];14764[label="yuz1900/Succ yuz19000",fontsize=10,color="white",style="solid",shape="box"];5402 -> 14764[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14764 -> 5768[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14765[label="yuz1900/Zero",fontsize=10,color="white",style="solid",shape="box"];5402 -> 14765[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14765 -> 5769[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9673 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9673[label="FiniteMap.sizeFM (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="magenta"];9673 -> 9854[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8681[label="FiniteMap.mkVBalBranch3MkVBalBranch0 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz1980 yuz1981 yuz1982 yuz1983 yuz1984 True",fontsize=16,color="black",shape="box"];8681 -> 8703[label="",style="solid", color="black", weight=3]; 29.15/12.52 13778[label="yuz1940",fontsize=16,color="green",shape="box"];13779[label="yuz1943",fontsize=16,color="green",shape="box"];13780[label="yuz1941",fontsize=16,color="green",shape="box"];13781[label="FiniteMap.mkVBalBranch yuz200 yuz201 yuz1944 (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="burlywood",shape="box"];14766[label="yuz1944/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13781 -> 14766[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14766 -> 13806[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14767[label="yuz1944/FiniteMap.Branch yuz19440 yuz19441 yuz19442 yuz19443 yuz19444",fontsize=10,color="white",style="solid",shape="box"];13781 -> 14767[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14767 -> 13807[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13840[label="FiniteMap.addToFM (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) yuz200 yuz201",fontsize=16,color="black",shape="triangle"];13840 -> 13844[label="",style="solid", color="black", weight=3]; 29.15/12.52 13841 -> 7124[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13841[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834 yuz200 yuz201 yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834 < FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834)",fontsize=16,color="magenta"];13841 -> 13845[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13841 -> 13846[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13841 -> 13847[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13841 -> 13848[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13841 -> 13849[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13841 -> 13850[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13843 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13843[label="FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304 + FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304 < Pos (Succ (Succ Zero))",fontsize=16,color="magenta"];13843 -> 13851[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13843 -> 13852[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13842[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 yuz705",fontsize=16,color="burlywood",shape="triangle"];14768[label="yuz705/False",fontsize=10,color="white",style="solid",shape="box"];13842 -> 14768[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14768 -> 13853[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14769[label="yuz705/True",fontsize=10,color="white",style="solid",shape="box"];13842 -> 14769[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14769 -> 13854[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13538[label="FiniteMap.glueVBal3Size_r yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="black",shape="triangle"];13538 -> 13544[label="",style="solid", color="black", weight=3]; 29.15/12.52 13539 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13539[label="FiniteMap.sizeFM (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="magenta"];13539 -> 13545[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13540[label="FiniteMap.glueVBal3GlueVBal0 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 otherwise",fontsize=16,color="black",shape="box"];13540 -> 13546[label="",style="solid", color="black", weight=3]; 29.15/12.52 13541 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13541[label="FiniteMap.mkBalBranch yuz360 yuz361 yuz363 (FiniteMap.glueVBal yuz364 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304))",fontsize=16,color="magenta"];13541 -> 13782[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13541 -> 13783[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13541 -> 13784[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13541 -> 13785[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13824[label="FiniteMap.glueVBal4 (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];13824 -> 13855[label="",style="solid", color="black", weight=3]; 29.15/12.52 13825[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034)",fontsize=16,color="black",shape="triangle"];13825 -> 13856[label="",style="solid", color="black", weight=3]; 29.15/12.52 9892[label="primCmpChar (Char yuz400) (Char yuz600) == LT",fontsize=16,color="black",shape="box"];9892 -> 9914[label="",style="solid", color="black", weight=3]; 29.15/12.52 9893[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9893 -> 9915[label="",style="solid", color="black", weight=3]; 29.15/12.52 9894[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9894 -> 9916[label="",style="solid", color="black", weight=3]; 29.15/12.52 9895[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9895 -> 9917[label="",style="solid", color="black", weight=3]; 29.15/12.52 9896[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9896 -> 9918[label="",style="solid", color="black", weight=3]; 29.15/12.52 9897[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9897 -> 9919[label="",style="solid", color="black", weight=3]; 29.15/12.52 9898[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9898 -> 9920[label="",style="solid", color="black", weight=3]; 29.15/12.52 9899[label="yuz563 > yuz558",fontsize=16,color="black",shape="triangle"];9899 -> 9921[label="",style="solid", color="black", weight=3]; 29.15/12.52 9900[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9900 -> 9922[label="",style="solid", color="black", weight=3]; 29.15/12.52 9901[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9901 -> 9923[label="",style="solid", color="black", weight=3]; 29.15/12.52 9902[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9902 -> 9924[label="",style="solid", color="black", weight=3]; 29.15/12.52 9903[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9903 -> 9925[label="",style="solid", color="black", weight=3]; 29.15/12.52 9904[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9904 -> 9926[label="",style="solid", color="black", weight=3]; 29.15/12.52 9905[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9905 -> 9927[label="",style="solid", color="black", weight=3]; 29.15/12.52 9906[label="yuz563 > yuz558",fontsize=16,color="black",shape="box"];9906 -> 9928[label="",style="solid", color="black", weight=3]; 29.15/12.52 9907[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz577 yuz578 yuz579 yuz580 yuz581 yuz582 yuz583 False",fontsize=16,color="black",shape="box"];9907 -> 9929[label="",style="solid", color="black", weight=3]; 29.15/12.52 9908[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz577 yuz578 yuz579 yuz580 yuz581 yuz582 yuz583 True",fontsize=16,color="black",shape="box"];9908 -> 9930[label="",style="solid", color="black", weight=3]; 29.15/12.52 13804[label="FiniteMap.addToFM_C FiniteMap.addToFM0 FiniteMap.EmptyFM yuz563 yuz564",fontsize=16,color="black",shape="box"];13804 -> 13826[label="",style="solid", color="black", weight=3]; 29.15/12.52 13805[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz563 yuz564",fontsize=16,color="black",shape="box"];13805 -> 13827[label="",style="solid", color="black", weight=3]; 29.15/12.52 9912[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz5480",fontsize=16,color="burlywood",shape="triangle"];14770[label="yuz5480/Succ yuz54800",fontsize=10,color="white",style="solid",shape="box"];9912 -> 14770[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14770 -> 9935[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14771[label="yuz5480/Zero",fontsize=10,color="white",style="solid",shape="box"];9912 -> 14771[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14771 -> 9936[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9913 -> 9912[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9913[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz5480",fontsize=16,color="magenta"];9913 -> 9937[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5758[label="primCmpNat (Succ yuz20000) yuz1900 == LT",fontsize=16,color="burlywood",shape="triangle"];14772[label="yuz1900/Succ yuz19000",fontsize=10,color="white",style="solid",shape="box"];5758 -> 14772[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14772 -> 5789[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14773[label="yuz1900/Zero",fontsize=10,color="white",style="solid",shape="box"];5758 -> 14773[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14773 -> 5790[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5759[label="GT == LT",fontsize=16,color="black",shape="triangle"];5759 -> 5791[label="",style="solid", color="black", weight=3]; 29.15/12.52 5760[label="primCmpInt (Pos Zero) (Pos (Succ yuz19000)) == LT",fontsize=16,color="black",shape="box"];5760 -> 5792[label="",style="solid", color="black", weight=3]; 29.15/12.52 5761[label="primCmpInt (Pos Zero) (Pos Zero) == LT",fontsize=16,color="black",shape="box"];5761 -> 5793[label="",style="solid", color="black", weight=3]; 29.15/12.52 5762[label="primCmpInt (Pos Zero) (Neg (Succ yuz19000)) == LT",fontsize=16,color="black",shape="box"];5762 -> 5794[label="",style="solid", color="black", weight=3]; 29.15/12.52 5763[label="primCmpInt (Pos Zero) (Neg Zero) == LT",fontsize=16,color="black",shape="box"];5763 -> 5795[label="",style="solid", color="black", weight=3]; 29.15/12.52 5764[label="LT == LT",fontsize=16,color="black",shape="triangle"];5764 -> 5796[label="",style="solid", color="black", weight=3]; 29.15/12.52 5765[label="primCmpNat yuz1900 (Succ yuz20000) == LT",fontsize=16,color="burlywood",shape="triangle"];14774[label="yuz1900/Succ yuz19000",fontsize=10,color="white",style="solid",shape="box"];5765 -> 14774[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14774 -> 5797[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14775[label="yuz1900/Zero",fontsize=10,color="white",style="solid",shape="box"];5765 -> 14775[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14775 -> 5798[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5766[label="primCmpInt (Neg Zero) (Pos (Succ yuz19000)) == LT",fontsize=16,color="black",shape="box"];5766 -> 5799[label="",style="solid", color="black", weight=3]; 29.15/12.52 5767[label="primCmpInt (Neg Zero) (Pos Zero) == LT",fontsize=16,color="black",shape="box"];5767 -> 5800[label="",style="solid", color="black", weight=3]; 29.15/12.52 5768[label="primCmpInt (Neg Zero) (Neg (Succ yuz19000)) == LT",fontsize=16,color="black",shape="box"];5768 -> 5801[label="",style="solid", color="black", weight=3]; 29.15/12.52 5769[label="primCmpInt (Neg Zero) (Neg Zero) == LT",fontsize=16,color="black",shape="box"];5769 -> 5802[label="",style="solid", color="black", weight=3]; 29.15/12.52 9854[label="FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984",fontsize=16,color="green",shape="box"];8703 -> 8714[label="",style="dashed", color="red", weight=0]; 29.15/12.52 8703[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))) yuz200 yuz201 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="magenta"];8703 -> 8715[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8716[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8717[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8718[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8719[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8720[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8721[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8722[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8723[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8724[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8725[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8726[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 8703 -> 8727[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13806[label="FiniteMap.mkVBalBranch yuz200 yuz201 FiniteMap.EmptyFM (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="black",shape="box"];13806 -> 13828[label="",style="solid", color="black", weight=3]; 29.15/12.52 13807[label="FiniteMap.mkVBalBranch yuz200 yuz201 (FiniteMap.Branch yuz19440 yuz19441 yuz19442 yuz19443 yuz19444) (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="black",shape="box"];13807 -> 13829[label="",style="solid", color="black", weight=3]; 29.15/12.52 13844 -> 13775[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13844[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944) yuz200 yuz201",fontsize=16,color="magenta"];13844 -> 13894[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13844 -> 13895[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13844 -> 13896[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13845[label="yuz19830",fontsize=16,color="green",shape="box"];13846[label="yuz19834",fontsize=16,color="green",shape="box"];13847[label="yuz19833",fontsize=16,color="green",shape="box"];13848[label="yuz19832",fontsize=16,color="green",shape="box"];13849 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13849[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834 < FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834",fontsize=16,color="magenta"];13849 -> 13897[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13849 -> 13898[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13850[label="yuz19831",fontsize=16,color="green",shape="box"];13851 -> 9970[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13851[label="FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304 + FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];13851 -> 13899[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13851 -> 13900[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13852[label="Pos (Succ (Succ Zero))",fontsize=16,color="green",shape="box"];13853[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 False",fontsize=16,color="black",shape="box"];13853 -> 13901[label="",style="solid", color="black", weight=3]; 29.15/12.52 13854[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 True",fontsize=16,color="black",shape="box"];13854 -> 13902[label="",style="solid", color="black", weight=3]; 29.15/12.52 13544 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13544[label="FiniteMap.sizeFM (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="magenta"];13544 -> 13552[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13545[label="FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="green",shape="box"];13546[label="FiniteMap.glueVBal3GlueVBal0 yuz300 yuz301 yuz302 yuz303 yuz304 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz300 yuz301 yuz302 yuz303 yuz304 True",fontsize=16,color="black",shape="box"];13546 -> 13553[label="",style="solid", color="black", weight=3]; 29.15/12.52 13782[label="yuz360",fontsize=16,color="green",shape="box"];13783[label="yuz363",fontsize=16,color="green",shape="box"];13784[label="yuz361",fontsize=16,color="green",shape="box"];13785[label="FiniteMap.glueVBal yuz364 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="burlywood",shape="box"];14776[label="yuz364/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13785 -> 14776[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14776 -> 13808[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14777[label="yuz364/FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644",fontsize=10,color="white",style="solid",shape="box"];13785 -> 14777[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14777 -> 13809[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13855[label="FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="green",shape="box"];13856 -> 11870[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13856[label="FiniteMap.glueVBal3GlueVBal2 yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364 yuz360 yuz361 yuz362 yuz363 yuz364 yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364 < FiniteMap.glueVBal3Size_r yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="magenta"];13856 -> 13903[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13856 -> 13904[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13856 -> 13905[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13856 -> 13906[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13856 -> 13907[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13856 -> 13908[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9914 -> 5827[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9914[label="primCmpNat yuz400 yuz600 == LT",fontsize=16,color="magenta"];9914 -> 9938[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9914 -> 9939[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9915[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9915 -> 9940[label="",style="solid", color="black", weight=3]; 29.15/12.52 9916[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9916 -> 9941[label="",style="solid", color="black", weight=3]; 29.15/12.52 9917[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9917 -> 9942[label="",style="solid", color="black", weight=3]; 29.15/12.52 9918[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9918 -> 9943[label="",style="solid", color="black", weight=3]; 29.15/12.52 9919[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9919 -> 9944[label="",style="solid", color="black", weight=3]; 29.15/12.52 9920[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9920 -> 9945[label="",style="solid", color="black", weight=3]; 29.15/12.52 9921[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9921 -> 9946[label="",style="solid", color="black", weight=3]; 29.15/12.52 9922[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9922 -> 9947[label="",style="solid", color="black", weight=3]; 29.15/12.52 9923[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9923 -> 9948[label="",style="solid", color="black", weight=3]; 29.15/12.52 9924[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9924 -> 9949[label="",style="solid", color="black", weight=3]; 29.15/12.52 9925[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9925 -> 9950[label="",style="solid", color="black", weight=3]; 29.15/12.52 9926[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9926 -> 9951[label="",style="solid", color="black", weight=3]; 29.15/12.52 9927[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9927 -> 9952[label="",style="solid", color="black", weight=3]; 29.15/12.52 9928[label="compare yuz563 yuz558 == GT",fontsize=16,color="black",shape="box"];9928 -> 9953[label="",style="solid", color="black", weight=3]; 29.15/12.52 9929[label="FiniteMap.addToFM_C0 FiniteMap.addToFM0 yuz577 yuz578 yuz579 yuz580 yuz581 yuz582 yuz583 otherwise",fontsize=16,color="black",shape="box"];9929 -> 9954[label="",style="solid", color="black", weight=3]; 29.15/12.52 9930 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9930[label="FiniteMap.mkBalBranch yuz577 yuz578 yuz580 (FiniteMap.addToFM_C FiniteMap.addToFM0 yuz581 yuz582 yuz583)",fontsize=16,color="magenta"];9930 -> 13786[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9930 -> 13787[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9930 -> 13788[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9930 -> 13789[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13826[label="FiniteMap.addToFM_C4 FiniteMap.addToFM0 FiniteMap.EmptyFM yuz563 yuz564",fontsize=16,color="black",shape="box"];13826 -> 13857[label="",style="solid", color="black", weight=3]; 29.15/12.52 13827[label="FiniteMap.addToFM_C3 FiniteMap.addToFM0 (FiniteMap.Branch yuz5610 yuz5611 yuz5612 yuz5613 yuz5614) yuz563 yuz564",fontsize=16,color="black",shape="box"];13827 -> 13858[label="",style="solid", color="black", weight=3]; 29.15/12.52 9935[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) (Succ yuz54800)",fontsize=16,color="black",shape="box"];9935 -> 9963[label="",style="solid", color="black", weight=3]; 29.15/12.52 9936[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) Zero",fontsize=16,color="black",shape="box"];9936 -> 9964[label="",style="solid", color="black", weight=3]; 29.15/12.52 9937[label="yuz5480",fontsize=16,color="green",shape="box"];5789[label="primCmpNat (Succ yuz20000) (Succ yuz19000) == LT",fontsize=16,color="black",shape="box"];5789 -> 5827[label="",style="solid", color="black", weight=3]; 29.15/12.52 5790[label="primCmpNat (Succ yuz20000) Zero == LT",fontsize=16,color="black",shape="box"];5790 -> 5828[label="",style="solid", color="black", weight=3]; 29.15/12.52 5791[label="False",fontsize=16,color="green",shape="box"];5792 -> 5765[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5792[label="primCmpNat Zero (Succ yuz19000) == LT",fontsize=16,color="magenta"];5792 -> 5829[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5792 -> 5830[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5793[label="EQ == LT",fontsize=16,color="black",shape="triangle"];5793 -> 5831[label="",style="solid", color="black", weight=3]; 29.15/12.52 5794 -> 5759[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5794[label="GT == LT",fontsize=16,color="magenta"];5795 -> 5793[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5795[label="EQ == LT",fontsize=16,color="magenta"];5796[label="True",fontsize=16,color="green",shape="box"];5797[label="primCmpNat (Succ yuz19000) (Succ yuz20000) == LT",fontsize=16,color="black",shape="box"];5797 -> 5832[label="",style="solid", color="black", weight=3]; 29.15/12.52 5798[label="primCmpNat Zero (Succ yuz20000) == LT",fontsize=16,color="black",shape="box"];5798 -> 5833[label="",style="solid", color="black", weight=3]; 29.15/12.52 5799 -> 5764[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5799[label="LT == LT",fontsize=16,color="magenta"];5800 -> 5793[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5800[label="EQ == LT",fontsize=16,color="magenta"];5801 -> 5758[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5801[label="primCmpNat (Succ yuz19000) Zero == LT",fontsize=16,color="magenta"];5801 -> 5834[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5801 -> 5835[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5802 -> 5793[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5802[label="EQ == LT",fontsize=16,color="magenta"];8715[label="yuz1984",fontsize=16,color="green",shape="box"];8716[label="yuz1943",fontsize=16,color="green",shape="box"];8717[label="yuz201",fontsize=16,color="green",shape="box"];8718[label="yuz1944",fontsize=16,color="green",shape="box"];8719[label="yuz1940",fontsize=16,color="green",shape="box"];8720[label="yuz1942",fontsize=16,color="green",shape="box"];8721[label="yuz1982",fontsize=16,color="green",shape="box"];8722[label="yuz1941",fontsize=16,color="green",shape="box"];8723[label="yuz200",fontsize=16,color="green",shape="box"];8724[label="yuz1980",fontsize=16,color="green",shape="box"];8725[label="yuz1983",fontsize=16,color="green",shape="box"];8726[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))",fontsize=16,color="green",shape="box"];8727[label="yuz1981",fontsize=16,color="green",shape="box"];8714[label="FiniteMap.mkBranch (Pos (Succ yuz518)) yuz519 yuz520 (FiniteMap.Branch yuz521 yuz522 yuz523 yuz524 yuz525) (FiniteMap.Branch yuz526 yuz527 yuz528 yuz529 yuz530)",fontsize=16,color="black",shape="triangle"];8714 -> 9079[label="",style="solid", color="black", weight=3]; 29.15/12.52 13828[label="FiniteMap.mkVBalBranch5 yuz200 yuz201 FiniteMap.EmptyFM (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="black",shape="box"];13828 -> 13859[label="",style="solid", color="black", weight=3]; 29.15/12.52 13829 -> 13822[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13829[label="FiniteMap.mkVBalBranch3 yuz200 yuz201 (FiniteMap.Branch yuz19440 yuz19441 yuz19442 yuz19443 yuz19444) (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984)",fontsize=16,color="magenta"];13829 -> 13860[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13861[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13862[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13863[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13864[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13865[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13866[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13867[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13868[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13829 -> 13869[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13894[label="yuz201",fontsize=16,color="green",shape="box"];13895[label="FiniteMap.Branch yuz1940 yuz1941 yuz1942 yuz1943 yuz1944",fontsize=16,color="green",shape="box"];13896[label="yuz200",fontsize=16,color="green",shape="box"];13897 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13897[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834",fontsize=16,color="magenta"];13897 -> 13939[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13898 -> 9657[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13898[label="FiniteMap.mkVBalBranch3Size_r yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834",fontsize=16,color="magenta"];13898 -> 13940[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13898 -> 13941[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13898 -> 13942[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13898 -> 13943[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13898 -> 13944[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13899[label="FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304",fontsize=16,color="black",shape="triangle"];13899 -> 13945[label="",style="solid", color="black", weight=3]; 29.15/12.52 13900[label="FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304",fontsize=16,color="black",shape="triangle"];13900 -> 13946[label="",style="solid", color="black", weight=3]; 29.15/12.52 9970[label="yuz592 + yuz591",fontsize=16,color="black",shape="triangle"];9970 -> 9988[label="",style="solid", color="black", weight=3]; 29.15/12.52 13901 -> 13947[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13901[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 (FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304)",fontsize=16,color="magenta"];13901 -> 13948[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13902[label="FiniteMap.mkBranch (Pos (Succ Zero)) yuz300 yuz301 yuz704 yuz304",fontsize=16,color="black",shape="box"];13902 -> 13949[label="",style="solid", color="black", weight=3]; 29.15/12.52 13552[label="FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304",fontsize=16,color="green",shape="box"];13553[label="FiniteMap.glueBal (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="black",shape="box"];13553 -> 13559[label="",style="solid", color="black", weight=3]; 29.15/12.52 13808[label="FiniteMap.glueVBal FiniteMap.EmptyFM (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="black",shape="box"];13808 -> 13830[label="",style="solid", color="black", weight=3]; 29.15/12.52 13809[label="FiniteMap.glueVBal (FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="black",shape="box"];13809 -> 13831[label="",style="solid", color="black", weight=3]; 29.15/12.52 13903 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13903[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364 < FiniteMap.glueVBal3Size_r yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="magenta"];13903 -> 13950[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13903 -> 13951[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13904[label="yuz3032",fontsize=16,color="green",shape="box"];13905[label="yuz3030",fontsize=16,color="green",shape="box"];13906[label="yuz3033",fontsize=16,color="green",shape="box"];13907[label="yuz3031",fontsize=16,color="green",shape="box"];13908[label="yuz3034",fontsize=16,color="green",shape="box"];9938[label="yuz600",fontsize=16,color="green",shape="box"];9939[label="yuz400",fontsize=16,color="green",shape="box"];5827[label="primCmpNat yuz20000 yuz19000 == LT",fontsize=16,color="burlywood",shape="triangle"];14778[label="yuz20000/Succ yuz200000",fontsize=10,color="white",style="solid",shape="box"];5827 -> 14778[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14778 -> 5868[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14779[label="yuz20000/Zero",fontsize=10,color="white",style="solid",shape="box"];5827 -> 14779[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14779 -> 5869[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9940[label="error []",fontsize=16,color="red",shape="box"];9941[label="error []",fontsize=16,color="red",shape="box"];9942[label="error []",fontsize=16,color="red",shape="box"];9943[label="error []",fontsize=16,color="red",shape="box"];9944[label="error []",fontsize=16,color="red",shape="box"];9945[label="error []",fontsize=16,color="red",shape="box"];9946[label="primCmpInt yuz563 yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14780[label="yuz563/Pos yuz5630",fontsize=10,color="white",style="solid",shape="box"];9946 -> 14780[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14780 -> 9965[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14781[label="yuz563/Neg yuz5630",fontsize=10,color="white",style="solid",shape="box"];9946 -> 14781[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14781 -> 9966[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9947[label="error []",fontsize=16,color="red",shape="box"];9948[label="error []",fontsize=16,color="red",shape="box"];9949[label="error []",fontsize=16,color="red",shape="box"];9950[label="error []",fontsize=16,color="red",shape="box"];9951[label="error []",fontsize=16,color="red",shape="box"];9952[label="primCmpChar yuz563 yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14782[label="yuz563/Char yuz5630",fontsize=10,color="white",style="solid",shape="box"];9952 -> 14782[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14782 -> 9967[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9953[label="error []",fontsize=16,color="red",shape="box"];9954[label="FiniteMap.addToFM_C0 FiniteMap.addToFM0 yuz577 yuz578 yuz579 yuz580 yuz581 yuz582 yuz583 True",fontsize=16,color="black",shape="box"];9954 -> 9968[label="",style="solid", color="black", weight=3]; 29.15/12.52 13786[label="yuz577",fontsize=16,color="green",shape="box"];13787[label="yuz580",fontsize=16,color="green",shape="box"];13788[label="yuz578",fontsize=16,color="green",shape="box"];13789 -> 13775[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13789[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz581 yuz582 yuz583",fontsize=16,color="magenta"];13789 -> 13810[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13789 -> 13811[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13789 -> 13812[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13857[label="FiniteMap.unitFM yuz563 yuz564",fontsize=16,color="black",shape="box"];13857 -> 13909[label="",style="solid", color="black", weight=3]; 29.15/12.52 13858 -> 9689[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13858[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz5610 yuz5611 yuz5612 yuz5613 yuz5614 yuz563 yuz564 (yuz563 < yuz5610)",fontsize=16,color="magenta"];13858 -> 13910[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13858 -> 13911[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13858 -> 13912[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13858 -> 13913[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13858 -> 13914[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13858 -> 13915[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9963 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9963[label="primPlusNat (primMulNat (Succ (Succ (Succ (Succ Zero)))) (Succ yuz54800)) (Succ yuz54800)",fontsize=16,color="magenta"];9963 -> 9991[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9963 -> 9992[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9964[label="Zero",fontsize=16,color="green",shape="box"];5828 -> 5759[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5828[label="GT == LT",fontsize=16,color="magenta"];5829[label="Zero",fontsize=16,color="green",shape="box"];5830[label="yuz19000",fontsize=16,color="green",shape="box"];5831[label="False",fontsize=16,color="green",shape="box"];5832 -> 5827[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5832[label="primCmpNat yuz19000 yuz20000 == LT",fontsize=16,color="magenta"];5832 -> 5870[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5832 -> 5871[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5833 -> 5764[label="",style="dashed", color="red", weight=0]; 29.15/12.52 5833[label="LT == LT",fontsize=16,color="magenta"];5834[label="Zero",fontsize=16,color="green",shape="box"];5835[label="yuz19000",fontsize=16,color="green",shape="box"];9079 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9079[label="FiniteMap.mkBranchResult yuz519 yuz520 (FiniteMap.Branch yuz521 yuz522 yuz523 yuz524 yuz525) (FiniteMap.Branch yuz526 yuz527 yuz528 yuz529 yuz530)",fontsize=16,color="magenta"];9079 -> 9319[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9079 -> 9320[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9079 -> 9321[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9079 -> 9322[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13859 -> 13840[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13859[label="FiniteMap.addToFM (FiniteMap.Branch yuz1980 yuz1981 yuz1982 yuz1983 yuz1984) yuz200 yuz201",fontsize=16,color="magenta"];13859 -> 13916[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13859 -> 13917[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13859 -> 13918[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13859 -> 13919[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13859 -> 13920[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13860[label="yuz19440",fontsize=16,color="green",shape="box"];13861[label="yuz19443",fontsize=16,color="green",shape="box"];13862[label="yuz19441",fontsize=16,color="green",shape="box"];13863[label="yuz1982",fontsize=16,color="green",shape="box"];13864[label="yuz1984",fontsize=16,color="green",shape="box"];13865[label="yuz1983",fontsize=16,color="green",shape="box"];13866[label="yuz19442",fontsize=16,color="green",shape="box"];13867[label="yuz1980",fontsize=16,color="green",shape="box"];13868[label="yuz19444",fontsize=16,color="green",shape="box"];13869[label="yuz1981",fontsize=16,color="green",shape="box"];13939 -> 8638[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13939[label="FiniteMap.mkVBalBranch3Size_l yuz1940 yuz1941 yuz1942 yuz1943 yuz1944 yuz19830 yuz19831 yuz19832 yuz19833 yuz19834",fontsize=16,color="magenta"];13939 -> 13952[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13939 -> 13953[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13939 -> 13954[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13939 -> 13955[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13939 -> 13956[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13940[label="yuz19830",fontsize=16,color="green",shape="box"];13941[label="yuz19834",fontsize=16,color="green",shape="box"];13942[label="yuz19832",fontsize=16,color="green",shape="box"];13943[label="yuz19833",fontsize=16,color="green",shape="box"];13944[label="yuz19831",fontsize=16,color="green",shape="box"];13945 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13945[label="FiniteMap.sizeFM yuz704",fontsize=16,color="magenta"];13945 -> 13957[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13946 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13946[label="FiniteMap.sizeFM yuz304",fontsize=16,color="magenta"];13946 -> 13958[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9988[label="primPlusInt yuz592 yuz591",fontsize=16,color="burlywood",shape="box"];14783[label="yuz592/Pos yuz5920",fontsize=10,color="white",style="solid",shape="box"];9988 -> 14783[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14783 -> 10001[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14784[label="yuz592/Neg yuz5920",fontsize=10,color="white",style="solid",shape="box"];9988 -> 14784[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14784 -> 10002[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13948 -> 9899[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13948[label="FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];13948 -> 13959[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13948 -> 13960[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13947[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 yuz707",fontsize=16,color="burlywood",shape="triangle"];14785[label="yuz707/False",fontsize=10,color="white",style="solid",shape="box"];13947 -> 14785[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14785 -> 13961[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14786[label="yuz707/True",fontsize=10,color="white",style="solid",shape="box"];13947 -> 14786[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14786 -> 13962[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13949 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13949[label="FiniteMap.mkBranchResult yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];13949 -> 13991[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13949 -> 13992[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13949 -> 13993[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13949 -> 13994[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13559[label="FiniteMap.glueBal2 (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="black",shape="box"];13559 -> 13581[label="",style="solid", color="black", weight=3]; 29.15/12.52 13830[label="FiniteMap.glueVBal5 FiniteMap.EmptyFM (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="black",shape="box"];13830 -> 13870[label="",style="solid", color="black", weight=3]; 29.15/12.52 13831 -> 13825[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13831[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="magenta"];13831 -> 13871[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13872[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13873[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13874[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13875[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13876[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13877[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13878[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13879[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13831 -> 13880[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13950 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13950[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="magenta"];13950 -> 13995[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13951 -> 13538[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13951[label="FiniteMap.glueVBal3Size_r yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="magenta"];13951 -> 13996[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13951 -> 13997[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13951 -> 13998[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13951 -> 13999[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13951 -> 14000[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 5868[label="primCmpNat (Succ yuz200000) yuz19000 == LT",fontsize=16,color="burlywood",shape="box"];14787[label="yuz19000/Succ yuz190000",fontsize=10,color="white",style="solid",shape="box"];5868 -> 14787[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14787 -> 5897[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14788[label="yuz19000/Zero",fontsize=10,color="white",style="solid",shape="box"];5868 -> 14788[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14788 -> 5898[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5869[label="primCmpNat Zero yuz19000 == LT",fontsize=16,color="burlywood",shape="box"];14789[label="yuz19000/Succ yuz190000",fontsize=10,color="white",style="solid",shape="box"];5869 -> 14789[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14789 -> 5899[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14790[label="yuz19000/Zero",fontsize=10,color="white",style="solid",shape="box"];5869 -> 14790[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14790 -> 5900[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9965[label="primCmpInt (Pos yuz5630) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14791[label="yuz5630/Succ yuz56300",fontsize=10,color="white",style="solid",shape="box"];9965 -> 14791[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14791 -> 9993[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14792[label="yuz5630/Zero",fontsize=10,color="white",style="solid",shape="box"];9965 -> 14792[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14792 -> 9994[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9966[label="primCmpInt (Neg yuz5630) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14793[label="yuz5630/Succ yuz56300",fontsize=10,color="white",style="solid",shape="box"];9966 -> 14793[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14793 -> 9995[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14794[label="yuz5630/Zero",fontsize=10,color="white",style="solid",shape="box"];9966 -> 14794[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14794 -> 9996[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9967[label="primCmpChar (Char yuz5630) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14795[label="yuz558/Char yuz5580",fontsize=10,color="white",style="solid",shape="box"];9967 -> 14795[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14795 -> 9997[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9968[label="FiniteMap.Branch yuz582 (FiniteMap.addToFM0 yuz578 yuz583) yuz579 yuz580 yuz581",fontsize=16,color="green",shape="box"];9968 -> 9998[label="",style="dashed", color="green", weight=3]; 29.15/12.52 13810[label="yuz583",fontsize=16,color="green",shape="box"];13811[label="yuz581",fontsize=16,color="green",shape="box"];13812[label="yuz582",fontsize=16,color="green",shape="box"];13909[label="FiniteMap.Branch yuz563 yuz564 (Pos (Succ Zero)) FiniteMap.emptyFM FiniteMap.emptyFM",fontsize=16,color="green",shape="box"];13909 -> 13963[label="",style="dashed", color="green", weight=3]; 29.15/12.52 13909 -> 13964[label="",style="dashed", color="green", weight=3]; 29.15/12.52 13910[label="yuz5610",fontsize=16,color="green",shape="box"];13911[label="yuz5611",fontsize=16,color="green",shape="box"];13912[label="yuz563 < yuz5610",fontsize=16,color="blue",shape="box"];14796[label="< :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14796[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14796 -> 13965[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14797[label="< :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14797[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14797 -> 13966[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14798[label="< :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14798[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14798 -> 13967[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14799[label="< :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14799[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14799 -> 13968[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14800[label="< :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14800[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14800 -> 13969[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14801[label="< :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14801[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14801 -> 13970[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14802[label="< :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14802[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14802 -> 13971[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14803[label="< :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14803[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14803 -> 13972[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14804[label="< :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14804[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14804 -> 13973[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14805[label="< :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14805[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14805 -> 13974[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14806[label="< :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14806[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14806 -> 13975[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14807[label="< :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14807[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14807 -> 13976[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14808[label="< :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14808[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14808 -> 13977[label="",style="solid", color="blue", weight=3]; 29.15/12.52 14809[label="< :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];13912 -> 14809[label="",style="solid", color="blue", weight=9]; 29.15/12.52 14809 -> 13978[label="",style="solid", color="blue", weight=3]; 29.15/12.52 13913[label="yuz5614",fontsize=16,color="green",shape="box"];13914[label="yuz5613",fontsize=16,color="green",shape="box"];13915[label="yuz5612",fontsize=16,color="green",shape="box"];9991[label="Succ yuz54800",fontsize=16,color="green",shape="box"];9992 -> 287[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9992[label="primMulNat (Succ (Succ (Succ (Succ Zero)))) (Succ yuz54800)",fontsize=16,color="magenta"];9992 -> 10018[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 3164[label="primPlusNat yuz240 yuz14",fontsize=16,color="burlywood",shape="triangle"];14810[label="yuz240/Succ yuz2400",fontsize=10,color="white",style="solid",shape="box"];3164 -> 14810[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14810 -> 3236[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14811[label="yuz240/Zero",fontsize=10,color="white",style="solid",shape="box"];3164 -> 14811[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14811 -> 3237[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 5870[label="yuz20000",fontsize=16,color="green",shape="box"];5871[label="yuz19000",fontsize=16,color="green",shape="box"];9319[label="yuz519",fontsize=16,color="green",shape="box"];9320[label="FiniteMap.Branch yuz526 yuz527 yuz528 yuz529 yuz530",fontsize=16,color="green",shape="box"];9321[label="FiniteMap.Branch yuz521 yuz522 yuz523 yuz524 yuz525",fontsize=16,color="green",shape="box"];9322[label="yuz520",fontsize=16,color="green",shape="box"];9317[label="FiniteMap.mkBranchResult yuz1980 yuz1981 yuz540 yuz1984",fontsize=16,color="black",shape="triangle"];9317 -> 9386[label="",style="solid", color="black", weight=3]; 29.15/12.52 13916[label="yuz1980",fontsize=16,color="green",shape="box"];13917[label="yuz1983",fontsize=16,color="green",shape="box"];13918[label="yuz1981",fontsize=16,color="green",shape="box"];13919[label="yuz1982",fontsize=16,color="green",shape="box"];13920[label="yuz1984",fontsize=16,color="green",shape="box"];13952[label="yuz19830",fontsize=16,color="green",shape="box"];13953[label="yuz19834",fontsize=16,color="green",shape="box"];13954[label="yuz19832",fontsize=16,color="green",shape="box"];13955[label="yuz19833",fontsize=16,color="green",shape="box"];13956[label="yuz19831",fontsize=16,color="green",shape="box"];13957[label="yuz704",fontsize=16,color="green",shape="box"];13958[label="yuz304",fontsize=16,color="green",shape="box"];10001[label="primPlusInt (Pos yuz5920) yuz591",fontsize=16,color="burlywood",shape="box"];14812[label="yuz591/Pos yuz5910",fontsize=10,color="white",style="solid",shape="box"];10001 -> 14812[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14812 -> 10013[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14813[label="yuz591/Neg yuz5910",fontsize=10,color="white",style="solid",shape="box"];10001 -> 14813[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14813 -> 10014[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10002[label="primPlusInt (Neg yuz5920) yuz591",fontsize=16,color="burlywood",shape="box"];14814[label="yuz591/Pos yuz5910",fontsize=10,color="white",style="solid",shape="box"];10002 -> 14814[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14814 -> 10015[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14815[label="yuz591/Neg yuz5910",fontsize=10,color="white",style="solid",shape="box"];10002 -> 14815[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14815 -> 10016[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13959 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13959[label="FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];13959 -> 14001[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13960 -> 13900[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13960[label="FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];13961[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 False",fontsize=16,color="black",shape="box"];13961 -> 14002[label="",style="solid", color="black", weight=3]; 29.15/12.52 13962[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 True",fontsize=16,color="black",shape="box"];13962 -> 14003[label="",style="solid", color="black", weight=3]; 29.15/12.52 13991[label="yuz300",fontsize=16,color="green",shape="box"];13992[label="yuz304",fontsize=16,color="green",shape="box"];13993[label="yuz704",fontsize=16,color="green",shape="box"];13994[label="yuz301",fontsize=16,color="green",shape="box"];13581 -> 13590[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13581[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.sizeFM (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) > FiniteMap.sizeFM (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="magenta"];13581 -> 13591[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13870[label="FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304",fontsize=16,color="green",shape="box"];13871[label="yuz302",fontsize=16,color="green",shape="box"];13872[label="yuz3642",fontsize=16,color="green",shape="box"];13873[label="yuz3643",fontsize=16,color="green",shape="box"];13874[label="yuz3641",fontsize=16,color="green",shape="box"];13875[label="yuz303",fontsize=16,color="green",shape="box"];13876[label="yuz3644",fontsize=16,color="green",shape="box"];13877[label="yuz300",fontsize=16,color="green",shape="box"];13878[label="yuz304",fontsize=16,color="green",shape="box"];13879[label="yuz3640",fontsize=16,color="green",shape="box"];13880[label="yuz301",fontsize=16,color="green",shape="box"];13995 -> 13534[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13995[label="FiniteMap.glueVBal3Size_l yuz3030 yuz3031 yuz3032 yuz3033 yuz3034 yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="magenta"];13995 -> 14029[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13995 -> 14030[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13995 -> 14031[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13995 -> 14032[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13995 -> 14033[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13996[label="yuz3032",fontsize=16,color="green",shape="box"];13997[label="yuz3030",fontsize=16,color="green",shape="box"];13998[label="yuz3033",fontsize=16,color="green",shape="box"];13999[label="yuz3031",fontsize=16,color="green",shape="box"];14000[label="yuz3034",fontsize=16,color="green",shape="box"];5897[label="primCmpNat (Succ yuz200000) (Succ yuz190000) == LT",fontsize=16,color="black",shape="box"];5897 -> 6056[label="",style="solid", color="black", weight=3]; 29.15/12.52 5898[label="primCmpNat (Succ yuz200000) Zero == LT",fontsize=16,color="black",shape="box"];5898 -> 6057[label="",style="solid", color="black", weight=3]; 29.15/12.52 5899[label="primCmpNat Zero (Succ yuz190000) == LT",fontsize=16,color="black",shape="box"];5899 -> 6058[label="",style="solid", color="black", weight=3]; 29.15/12.52 5900[label="primCmpNat Zero Zero == LT",fontsize=16,color="black",shape="box"];5900 -> 6059[label="",style="solid", color="black", weight=3]; 29.15/12.52 9993[label="primCmpInt (Pos (Succ yuz56300)) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14816[label="yuz558/Pos yuz5580",fontsize=10,color="white",style="solid",shape="box"];9993 -> 14816[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14816 -> 10024[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14817[label="yuz558/Neg yuz5580",fontsize=10,color="white",style="solid",shape="box"];9993 -> 14817[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14817 -> 10025[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9994[label="primCmpInt (Pos Zero) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14818[label="yuz558/Pos yuz5580",fontsize=10,color="white",style="solid",shape="box"];9994 -> 14818[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14818 -> 10026[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14819[label="yuz558/Neg yuz5580",fontsize=10,color="white",style="solid",shape="box"];9994 -> 14819[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14819 -> 10027[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9995[label="primCmpInt (Neg (Succ yuz56300)) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14820[label="yuz558/Pos yuz5580",fontsize=10,color="white",style="solid",shape="box"];9995 -> 14820[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14820 -> 10028[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14821[label="yuz558/Neg yuz5580",fontsize=10,color="white",style="solid",shape="box"];9995 -> 14821[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14821 -> 10029[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9996[label="primCmpInt (Neg Zero) yuz558 == GT",fontsize=16,color="burlywood",shape="box"];14822[label="yuz558/Pos yuz5580",fontsize=10,color="white",style="solid",shape="box"];9996 -> 14822[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14822 -> 10030[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14823[label="yuz558/Neg yuz5580",fontsize=10,color="white",style="solid",shape="box"];9996 -> 14823[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14823 -> 10031[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9997[label="primCmpChar (Char yuz5630) (Char yuz5580) == GT",fontsize=16,color="black",shape="box"];9997 -> 10032[label="",style="solid", color="black", weight=3]; 29.15/12.52 9998[label="FiniteMap.addToFM0 yuz578 yuz583",fontsize=16,color="black",shape="box"];9998 -> 10033[label="",style="solid", color="black", weight=3]; 29.15/12.52 13963[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];13963 -> 14004[label="",style="solid", color="black", weight=3]; 29.15/12.52 13964 -> 13963[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13964[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];13965[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13965 -> 14005[label="",style="solid", color="black", weight=3]; 29.15/12.52 13966[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13966 -> 14006[label="",style="solid", color="black", weight=3]; 29.15/12.52 13967[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13967 -> 14007[label="",style="solid", color="black", weight=3]; 29.15/12.52 13968[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13968 -> 14008[label="",style="solid", color="black", weight=3]; 29.15/12.52 13969[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13969 -> 14009[label="",style="solid", color="black", weight=3]; 29.15/12.52 13970[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13970 -> 14010[label="",style="solid", color="black", weight=3]; 29.15/12.52 13971 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13971[label="yuz563 < yuz5610",fontsize=16,color="magenta"];13971 -> 14011[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13971 -> 14012[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13972[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13972 -> 14013[label="",style="solid", color="black", weight=3]; 29.15/12.52 13973[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13973 -> 14014[label="",style="solid", color="black", weight=3]; 29.15/12.52 13974[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13974 -> 14015[label="",style="solid", color="black", weight=3]; 29.15/12.52 13975[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13975 -> 14016[label="",style="solid", color="black", weight=3]; 29.15/12.52 13976[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13976 -> 14017[label="",style="solid", color="black", weight=3]; 29.15/12.52 13977 -> 9692[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13977[label="yuz563 < yuz5610",fontsize=16,color="magenta"];13977 -> 14018[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13977 -> 14019[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13978[label="yuz563 < yuz5610",fontsize=16,color="black",shape="box"];13978 -> 14020[label="",style="solid", color="black", weight=3]; 29.15/12.52 10018[label="yuz54800",fontsize=16,color="green",shape="box"];287[label="primMulNat (Succ (Succ (Succ (Succ Zero)))) (Succ yuz7200)",fontsize=16,color="black",shape="triangle"];287 -> 382[label="",style="solid", color="black", weight=3]; 29.15/12.52 3236[label="primPlusNat (Succ yuz2400) yuz14",fontsize=16,color="burlywood",shape="box"];14824[label="yuz14/Succ yuz140",fontsize=10,color="white",style="solid",shape="box"];3236 -> 14824[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14824 -> 3289[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14825[label="yuz14/Zero",fontsize=10,color="white",style="solid",shape="box"];3236 -> 14825[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14825 -> 3290[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 3237[label="primPlusNat Zero yuz14",fontsize=16,color="burlywood",shape="box"];14826[label="yuz14/Succ yuz140",fontsize=10,color="white",style="solid",shape="box"];3237 -> 14826[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14826 -> 3291[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14827[label="yuz14/Zero",fontsize=10,color="white",style="solid",shape="box"];3237 -> 14827[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14827 -> 3292[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9386[label="FiniteMap.Branch yuz1980 yuz1981 (FiniteMap.mkBranchUnbox yuz540 yuz1984 yuz1980 (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz540 yuz1984 yuz1980 + FiniteMap.mkBranchRight_size yuz540 yuz1984 yuz1980)) yuz540 yuz1984",fontsize=16,color="green",shape="box"];9386 -> 9440[label="",style="dashed", color="green", weight=3]; 29.15/12.52 10013[label="primPlusInt (Pos yuz5920) (Pos yuz5910)",fontsize=16,color="black",shape="box"];10013 -> 10340[label="",style="solid", color="black", weight=3]; 29.15/12.52 10014[label="primPlusInt (Pos yuz5920) (Neg yuz5910)",fontsize=16,color="black",shape="box"];10014 -> 10341[label="",style="solid", color="black", weight=3]; 29.15/12.52 10015[label="primPlusInt (Neg yuz5920) (Pos yuz5910)",fontsize=16,color="black",shape="box"];10015 -> 10342[label="",style="solid", color="black", weight=3]; 29.15/12.52 10016[label="primPlusInt (Neg yuz5920) (Neg yuz5910)",fontsize=16,color="black",shape="box"];10016 -> 10343[label="",style="solid", color="black", weight=3]; 29.15/12.52 14001 -> 13899[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14001[label="FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];14002 -> 14034[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14002[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 (FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304)",fontsize=16,color="magenta"];14002 -> 14035[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14003[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz300 yuz301 yuz704 yuz304 yuz704 yuz304 yuz304",fontsize=16,color="burlywood",shape="box"];14828[label="yuz304/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14003 -> 14828[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14828 -> 14036[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14829[label="yuz304/FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044",fontsize=10,color="white",style="solid",shape="box"];14003 -> 14829[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14829 -> 14037[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13591 -> 9899[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13591[label="FiniteMap.sizeFM (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) > FiniteMap.sizeFM (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="magenta"];13591 -> 13603[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13591 -> 13604[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13590[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) yuz693",fontsize=16,color="burlywood",shape="triangle"];14830[label="yuz693/False",fontsize=10,color="white",style="solid",shape="box"];13590 -> 14830[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14830 -> 13605[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14831[label="yuz693/True",fontsize=10,color="white",style="solid",shape="box"];13590 -> 14831[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14831 -> 13606[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14029[label="yuz3032",fontsize=16,color="green",shape="box"];14030[label="yuz3030",fontsize=16,color="green",shape="box"];14031[label="yuz3033",fontsize=16,color="green",shape="box"];14032[label="yuz3031",fontsize=16,color="green",shape="box"];14033[label="yuz3034",fontsize=16,color="green",shape="box"];6056 -> 5827[label="",style="dashed", color="red", weight=0]; 29.15/12.52 6056[label="primCmpNat yuz200000 yuz190000 == LT",fontsize=16,color="magenta"];6056 -> 6236[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 6056 -> 6237[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 6057 -> 5759[label="",style="dashed", color="red", weight=0]; 29.15/12.52 6057[label="GT == LT",fontsize=16,color="magenta"];6058 -> 5764[label="",style="dashed", color="red", weight=0]; 29.15/12.52 6058[label="LT == LT",fontsize=16,color="magenta"];6059 -> 5793[label="",style="dashed", color="red", weight=0]; 29.15/12.52 6059[label="EQ == LT",fontsize=16,color="magenta"];10024[label="primCmpInt (Pos (Succ yuz56300)) (Pos yuz5580) == GT",fontsize=16,color="black",shape="box"];10024 -> 10352[label="",style="solid", color="black", weight=3]; 29.15/12.52 10025[label="primCmpInt (Pos (Succ yuz56300)) (Neg yuz5580) == GT",fontsize=16,color="black",shape="box"];10025 -> 10353[label="",style="solid", color="black", weight=3]; 29.15/12.52 10026[label="primCmpInt (Pos Zero) (Pos yuz5580) == GT",fontsize=16,color="burlywood",shape="box"];14832[label="yuz5580/Succ yuz55800",fontsize=10,color="white",style="solid",shape="box"];10026 -> 14832[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14832 -> 10354[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14833[label="yuz5580/Zero",fontsize=10,color="white",style="solid",shape="box"];10026 -> 14833[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14833 -> 10355[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10027[label="primCmpInt (Pos Zero) (Neg yuz5580) == GT",fontsize=16,color="burlywood",shape="box"];14834[label="yuz5580/Succ yuz55800",fontsize=10,color="white",style="solid",shape="box"];10027 -> 14834[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14834 -> 10356[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14835[label="yuz5580/Zero",fontsize=10,color="white",style="solid",shape="box"];10027 -> 14835[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14835 -> 10357[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10028[label="primCmpInt (Neg (Succ yuz56300)) (Pos yuz5580) == GT",fontsize=16,color="black",shape="box"];10028 -> 10358[label="",style="solid", color="black", weight=3]; 29.15/12.52 10029[label="primCmpInt (Neg (Succ yuz56300)) (Neg yuz5580) == GT",fontsize=16,color="black",shape="box"];10029 -> 10359[label="",style="solid", color="black", weight=3]; 29.15/12.52 10030[label="primCmpInt (Neg Zero) (Pos yuz5580) == GT",fontsize=16,color="burlywood",shape="box"];14836[label="yuz5580/Succ yuz55800",fontsize=10,color="white",style="solid",shape="box"];10030 -> 14836[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14836 -> 10360[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14837[label="yuz5580/Zero",fontsize=10,color="white",style="solid",shape="box"];10030 -> 14837[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14837 -> 10361[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10031[label="primCmpInt (Neg Zero) (Neg yuz5580) == GT",fontsize=16,color="burlywood",shape="box"];14838[label="yuz5580/Succ yuz55800",fontsize=10,color="white",style="solid",shape="box"];10031 -> 14838[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14838 -> 10362[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14839[label="yuz5580/Zero",fontsize=10,color="white",style="solid",shape="box"];10031 -> 14839[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14839 -> 10363[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10032[label="primCmpNat yuz5630 yuz5580 == GT",fontsize=16,color="burlywood",shape="triangle"];14840[label="yuz5630/Succ yuz56300",fontsize=10,color="white",style="solid",shape="box"];10032 -> 14840[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14840 -> 10364[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14841[label="yuz5630/Zero",fontsize=10,color="white",style="solid",shape="box"];10032 -> 14841[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14841 -> 10365[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10033[label="yuz583",fontsize=16,color="green",shape="box"];14004[label="FiniteMap.EmptyFM",fontsize=16,color="green",shape="box"];14005[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14005 -> 14038[label="",style="solid", color="black", weight=3]; 29.15/12.52 14006[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14006 -> 14039[label="",style="solid", color="black", weight=3]; 29.15/12.52 14007[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14007 -> 14040[label="",style="solid", color="black", weight=3]; 29.15/12.52 14008[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14008 -> 14041[label="",style="solid", color="black", weight=3]; 29.15/12.52 14009[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14009 -> 14042[label="",style="solid", color="black", weight=3]; 29.15/12.52 14010[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14010 -> 14043[label="",style="solid", color="black", weight=3]; 29.15/12.52 14011[label="yuz563",fontsize=16,color="green",shape="box"];14012[label="yuz5610",fontsize=16,color="green",shape="box"];14013[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14013 -> 14044[label="",style="solid", color="black", weight=3]; 29.15/12.52 14014[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14014 -> 14045[label="",style="solid", color="black", weight=3]; 29.15/12.52 14015[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14015 -> 14046[label="",style="solid", color="black", weight=3]; 29.15/12.52 14016[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14016 -> 14047[label="",style="solid", color="black", weight=3]; 29.15/12.52 14017[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14017 -> 14048[label="",style="solid", color="black", weight=3]; 29.15/12.52 14018[label="yuz563",fontsize=16,color="green",shape="box"];14019[label="yuz5610",fontsize=16,color="green",shape="box"];14020[label="compare yuz563 yuz5610 == LT",fontsize=16,color="black",shape="box"];14020 -> 14049[label="",style="solid", color="black", weight=3]; 29.15/12.52 382[label="primPlusNat (primMulNat (Succ (Succ (Succ Zero))) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];382 -> 399[label="",style="solid", color="black", weight=3]; 29.15/12.52 3289[label="primPlusNat (Succ yuz2400) (Succ yuz140)",fontsize=16,color="black",shape="box"];3289 -> 3307[label="",style="solid", color="black", weight=3]; 29.15/12.52 3290[label="primPlusNat (Succ yuz2400) Zero",fontsize=16,color="black",shape="box"];3290 -> 3308[label="",style="solid", color="black", weight=3]; 29.15/12.52 3291[label="primPlusNat Zero (Succ yuz140)",fontsize=16,color="black",shape="box"];3291 -> 3309[label="",style="solid", color="black", weight=3]; 29.15/12.52 3292[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];3292 -> 3310[label="",style="solid", color="black", weight=3]; 29.15/12.52 9440[label="FiniteMap.mkBranchUnbox yuz540 yuz1984 yuz1980 (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz540 yuz1984 yuz1980 + FiniteMap.mkBranchRight_size yuz540 yuz1984 yuz1980)",fontsize=16,color="black",shape="box"];9440 -> 9539[label="",style="solid", color="black", weight=3]; 29.15/12.52 10340[label="Pos (primPlusNat yuz5920 yuz5910)",fontsize=16,color="green",shape="box"];10340 -> 10425[label="",style="dashed", color="green", weight=3]; 29.15/12.52 10341 -> 9548[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10341[label="primMinusNat yuz5920 yuz5910",fontsize=16,color="magenta"];10341 -> 10426[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10341 -> 10427[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10342 -> 9548[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10342[label="primMinusNat yuz5910 yuz5920",fontsize=16,color="magenta"];10342 -> 10428[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10342 -> 10429[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10343[label="Neg (primPlusNat yuz5920 yuz5910)",fontsize=16,color="green",shape="box"];10343 -> 10430[label="",style="dashed", color="green", weight=3]; 29.15/12.52 14035 -> 9899[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14035[label="FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];14035 -> 14050[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14035 -> 14051[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14034[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 yuz711",fontsize=16,color="burlywood",shape="triangle"];14842[label="yuz711/False",fontsize=10,color="white",style="solid",shape="box"];14034 -> 14842[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14842 -> 14052[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14843[label="yuz711/True",fontsize=10,color="white",style="solid",shape="box"];14034 -> 14843[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14843 -> 14053[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14036[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz300 yuz301 yuz704 FiniteMap.EmptyFM yuz704 FiniteMap.EmptyFM FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];14036 -> 14066[label="",style="solid", color="black", weight=3]; 29.15/12.52 14037[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044)",fontsize=16,color="black",shape="box"];14037 -> 14067[label="",style="solid", color="black", weight=3]; 29.15/12.52 13603 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13603[label="FiniteMap.sizeFM (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="magenta"];13603 -> 13632[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13604 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13604[label="FiniteMap.sizeFM (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="magenta"];13604 -> 13633[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13605[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) False",fontsize=16,color="black",shape="box"];13605 -> 13634[label="",style="solid", color="black", weight=3]; 29.15/12.52 13606[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) True",fontsize=16,color="black",shape="box"];13606 -> 13635[label="",style="solid", color="black", weight=3]; 29.15/12.52 6236[label="yuz190000",fontsize=16,color="green",shape="box"];6237[label="yuz200000",fontsize=16,color="green",shape="box"];10352 -> 10032[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10352[label="primCmpNat (Succ yuz56300) yuz5580 == GT",fontsize=16,color="magenta"];10352 -> 10441[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10352 -> 10442[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10353[label="GT == GT",fontsize=16,color="black",shape="triangle"];10353 -> 10443[label="",style="solid", color="black", weight=3]; 29.15/12.52 10354[label="primCmpInt (Pos Zero) (Pos (Succ yuz55800)) == GT",fontsize=16,color="black",shape="box"];10354 -> 10444[label="",style="solid", color="black", weight=3]; 29.15/12.52 10355[label="primCmpInt (Pos Zero) (Pos Zero) == GT",fontsize=16,color="black",shape="box"];10355 -> 10445[label="",style="solid", color="black", weight=3]; 29.15/12.52 10356[label="primCmpInt (Pos Zero) (Neg (Succ yuz55800)) == GT",fontsize=16,color="black",shape="box"];10356 -> 10446[label="",style="solid", color="black", weight=3]; 29.15/12.52 10357[label="primCmpInt (Pos Zero) (Neg Zero) == GT",fontsize=16,color="black",shape="box"];10357 -> 10447[label="",style="solid", color="black", weight=3]; 29.15/12.52 10358[label="LT == GT",fontsize=16,color="black",shape="triangle"];10358 -> 10448[label="",style="solid", color="black", weight=3]; 29.15/12.52 10359 -> 10032[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10359[label="primCmpNat yuz5580 (Succ yuz56300) == GT",fontsize=16,color="magenta"];10359 -> 10449[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10359 -> 10450[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10360[label="primCmpInt (Neg Zero) (Pos (Succ yuz55800)) == GT",fontsize=16,color="black",shape="box"];10360 -> 10451[label="",style="solid", color="black", weight=3]; 29.15/12.52 10361[label="primCmpInt (Neg Zero) (Pos Zero) == GT",fontsize=16,color="black",shape="box"];10361 -> 10452[label="",style="solid", color="black", weight=3]; 29.15/12.52 10362[label="primCmpInt (Neg Zero) (Neg (Succ yuz55800)) == GT",fontsize=16,color="black",shape="box"];10362 -> 10453[label="",style="solid", color="black", weight=3]; 29.15/12.52 10363[label="primCmpInt (Neg Zero) (Neg Zero) == GT",fontsize=16,color="black",shape="box"];10363 -> 10454[label="",style="solid", color="black", weight=3]; 29.15/12.52 10364[label="primCmpNat (Succ yuz56300) yuz5580 == GT",fontsize=16,color="burlywood",shape="box"];14844[label="yuz5580/Succ yuz55800",fontsize=10,color="white",style="solid",shape="box"];10364 -> 14844[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14844 -> 10455[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14845[label="yuz5580/Zero",fontsize=10,color="white",style="solid",shape="box"];10364 -> 14845[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14845 -> 10456[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10365[label="primCmpNat Zero yuz5580 == GT",fontsize=16,color="burlywood",shape="box"];14846[label="yuz5580/Succ yuz55800",fontsize=10,color="white",style="solid",shape="box"];10365 -> 14846[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14846 -> 10457[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14847[label="yuz5580/Zero",fontsize=10,color="white",style="solid",shape="box"];10365 -> 14847[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14847 -> 10458[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14038[label="error []",fontsize=16,color="red",shape="box"];14039[label="error []",fontsize=16,color="red",shape="box"];14040[label="error []",fontsize=16,color="red",shape="box"];14041[label="error []",fontsize=16,color="red",shape="box"];14042[label="error []",fontsize=16,color="red",shape="box"];14043[label="error []",fontsize=16,color="red",shape="box"];14044[label="error []",fontsize=16,color="red",shape="box"];14045[label="error []",fontsize=16,color="red",shape="box"];14046[label="error []",fontsize=16,color="red",shape="box"];14047[label="error []",fontsize=16,color="red",shape="box"];14048[label="error []",fontsize=16,color="red",shape="box"];14049[label="error []",fontsize=16,color="red",shape="box"];399[label="primPlusNat (primPlusNat (primMulNat (Succ (Succ Zero)) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];399 -> 439[label="",style="solid", color="black", weight=3]; 29.15/12.52 3307[label="Succ (Succ (primPlusNat yuz2400 yuz140))",fontsize=16,color="green",shape="box"];3307 -> 3435[label="",style="dashed", color="green", weight=3]; 29.15/12.52 3308[label="Succ yuz2400",fontsize=16,color="green",shape="box"];3309[label="Succ yuz140",fontsize=16,color="green",shape="box"];3310[label="Zero",fontsize=16,color="green",shape="box"];9539 -> 9970[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9539[label="Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz540 yuz1984 yuz1980 + FiniteMap.mkBranchRight_size yuz540 yuz1984 yuz1980",fontsize=16,color="magenta"];9539 -> 9977[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9539 -> 9978[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10425 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10425[label="primPlusNat yuz5920 yuz5910",fontsize=16,color="magenta"];10425 -> 10636[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10425 -> 10637[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10426[label="yuz5910",fontsize=16,color="green",shape="box"];10427[label="yuz5920",fontsize=16,color="green",shape="box"];9548[label="primMinusNat yuz47620 yuz198420",fontsize=16,color="burlywood",shape="triangle"];14848[label="yuz47620/Succ yuz476200",fontsize=10,color="white",style="solid",shape="box"];9548 -> 14848[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14848 -> 9863[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14849[label="yuz47620/Zero",fontsize=10,color="white",style="solid",shape="box"];9548 -> 14849[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14849 -> 9864[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10428[label="yuz5920",fontsize=16,color="green",shape="box"];10429[label="yuz5910",fontsize=16,color="green",shape="box"];10430 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10430[label="primPlusNat yuz5920 yuz5910",fontsize=16,color="magenta"];10430 -> 10638[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10430 -> 10639[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14050 -> 9655[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14050[label="FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];14050 -> 14068[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14051 -> 13899[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14051[label="FiniteMap.mkBalBranch6Size_l yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];14052[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 False",fontsize=16,color="black",shape="box"];14052 -> 14069[label="",style="solid", color="black", weight=3]; 29.15/12.52 14053[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 True",fontsize=16,color="black",shape="box"];14053 -> 14070[label="",style="solid", color="black", weight=3]; 29.15/12.52 14066[label="error []",fontsize=16,color="red",shape="box"];14067[label="FiniteMap.mkBalBranch6MkBalBranch02 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044)",fontsize=16,color="black",shape="box"];14067 -> 14079[label="",style="solid", color="black", weight=3]; 29.15/12.52 13632[label="FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="green",shape="box"];13633[label="FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304",fontsize=16,color="green",shape="box"];13634[label="FiniteMap.glueBal2GlueBal0 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) otherwise",fontsize=16,color="black",shape="box"];13634 -> 13646[label="",style="solid", color="black", weight=3]; 29.15/12.52 13635 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13635[label="FiniteMap.mkBalBranch (FiniteMap.glueBal2Mid_key2 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)) (FiniteMap.glueBal2Mid_elt2 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.deleteMin (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304))",fontsize=16,color="magenta"];13635 -> 13790[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13635 -> 13791[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13635 -> 13792[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13635 -> 13793[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10441[label="Succ yuz56300",fontsize=16,color="green",shape="box"];10442[label="yuz5580",fontsize=16,color="green",shape="box"];10443[label="True",fontsize=16,color="green",shape="box"];10444 -> 10032[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10444[label="primCmpNat Zero (Succ yuz55800) == GT",fontsize=16,color="magenta"];10444 -> 10657[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10444 -> 10658[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10445[label="EQ == GT",fontsize=16,color="black",shape="triangle"];10445 -> 10659[label="",style="solid", color="black", weight=3]; 29.15/12.52 10446 -> 10353[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10446[label="GT == GT",fontsize=16,color="magenta"];10447 -> 10445[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10447[label="EQ == GT",fontsize=16,color="magenta"];10448[label="False",fontsize=16,color="green",shape="box"];10449[label="yuz5580",fontsize=16,color="green",shape="box"];10450[label="Succ yuz56300",fontsize=16,color="green",shape="box"];10451 -> 10358[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10451[label="LT == GT",fontsize=16,color="magenta"];10452 -> 10445[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10452[label="EQ == GT",fontsize=16,color="magenta"];10453 -> 10032[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10453[label="primCmpNat (Succ yuz55800) Zero == GT",fontsize=16,color="magenta"];10453 -> 10660[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10453 -> 10661[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10454 -> 10445[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10454[label="EQ == GT",fontsize=16,color="magenta"];10455[label="primCmpNat (Succ yuz56300) (Succ yuz55800) == GT",fontsize=16,color="black",shape="box"];10455 -> 10662[label="",style="solid", color="black", weight=3]; 29.15/12.52 10456[label="primCmpNat (Succ yuz56300) Zero == GT",fontsize=16,color="black",shape="box"];10456 -> 10663[label="",style="solid", color="black", weight=3]; 29.15/12.52 10457[label="primCmpNat Zero (Succ yuz55800) == GT",fontsize=16,color="black",shape="box"];10457 -> 10664[label="",style="solid", color="black", weight=3]; 29.15/12.52 10458[label="primCmpNat Zero Zero == GT",fontsize=16,color="black",shape="box"];10458 -> 10665[label="",style="solid", color="black", weight=3]; 29.15/12.52 439[label="primPlusNat (primPlusNat (primPlusNat (primMulNat (Succ Zero) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];439 -> 477[label="",style="solid", color="black", weight=3]; 29.15/12.52 3435 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 3435[label="primPlusNat yuz2400 yuz140",fontsize=16,color="magenta"];3435 -> 3527[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 3435 -> 3528[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9977 -> 9970[label="",style="dashed", color="red", weight=0]; 29.15/12.52 9977[label="Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz540 yuz1984 yuz1980",fontsize=16,color="magenta"];9977 -> 10372[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9977 -> 10373[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 9978[label="FiniteMap.mkBranchRight_size yuz540 yuz1984 yuz1980",fontsize=16,color="black",shape="box"];9978 -> 10374[label="",style="solid", color="black", weight=3]; 29.15/12.52 10636[label="yuz5910",fontsize=16,color="green",shape="box"];10637[label="yuz5920",fontsize=16,color="green",shape="box"];9863[label="primMinusNat (Succ yuz476200) yuz198420",fontsize=16,color="burlywood",shape="box"];14850[label="yuz198420/Succ yuz1984200",fontsize=10,color="white",style="solid",shape="box"];9863 -> 14850[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14850 -> 10653[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14851[label="yuz198420/Zero",fontsize=10,color="white",style="solid",shape="box"];9863 -> 14851[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14851 -> 10654[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 9864[label="primMinusNat Zero yuz198420",fontsize=16,color="burlywood",shape="box"];14852[label="yuz198420/Succ yuz1984200",fontsize=10,color="white",style="solid",shape="box"];9864 -> 14852[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14852 -> 10655[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14853[label="yuz198420/Zero",fontsize=10,color="white",style="solid",shape="box"];9864 -> 14853[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14853 -> 10656[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10638[label="yuz5910",fontsize=16,color="green",shape="box"];10639[label="yuz5920",fontsize=16,color="green",shape="box"];14068 -> 13900[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14068[label="FiniteMap.mkBalBranch6Size_r yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];14069[label="FiniteMap.mkBalBranch6MkBalBranch2 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 otherwise",fontsize=16,color="black",shape="box"];14069 -> 14080[label="",style="solid", color="black", weight=3]; 29.15/12.52 14070[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz300 yuz301 yuz704 yuz304 yuz704 yuz304 yuz704",fontsize=16,color="burlywood",shape="box"];14854[label="yuz704/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14070 -> 14854[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14854 -> 14081[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14855[label="yuz704/FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044",fontsize=10,color="white",style="solid",shape="box"];14070 -> 14855[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14855 -> 14082[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14079 -> 14095[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14079[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz3040 yuz3041 yuz3042 yuz3043 yuz3044 (FiniteMap.sizeFM yuz3043 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz3044)",fontsize=16,color="magenta"];14079 -> 14096[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13646[label="FiniteMap.glueBal2GlueBal0 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) True",fontsize=16,color="black",shape="box"];13646 -> 13657[label="",style="solid", color="black", weight=3]; 29.15/12.52 13790[label="FiniteMap.glueBal2Mid_key2 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="black",shape="box"];13790 -> 13813[label="",style="solid", color="black", weight=3]; 29.15/12.52 13791[label="FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364",fontsize=16,color="green",shape="box"];13792[label="FiniteMap.glueBal2Mid_elt2 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="black",shape="box"];13792 -> 13814[label="",style="solid", color="black", weight=3]; 29.15/12.52 13793[label="FiniteMap.deleteMin (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="burlywood",shape="triangle"];14856[label="yuz303/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13793 -> 14856[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14856 -> 13815[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14857[label="yuz303/FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034",fontsize=10,color="white",style="solid",shape="box"];13793 -> 14857[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14857 -> 13816[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 10657[label="Zero",fontsize=16,color="green",shape="box"];10658[label="Succ yuz55800",fontsize=16,color="green",shape="box"];10659[label="False",fontsize=16,color="green",shape="box"];10660[label="Succ yuz55800",fontsize=16,color="green",shape="box"];10661[label="Zero",fontsize=16,color="green",shape="box"];10662 -> 10032[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10662[label="primCmpNat yuz56300 yuz55800 == GT",fontsize=16,color="magenta"];10662 -> 10747[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10662 -> 10748[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10663 -> 10353[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10663[label="GT == GT",fontsize=16,color="magenta"];10664 -> 10358[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10664[label="LT == GT",fontsize=16,color="magenta"];10665 -> 10445[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10665[label="EQ == GT",fontsize=16,color="magenta"];477[label="primPlusNat (primPlusNat (primPlusNat (primPlusNat (primMulNat Zero (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];477 -> 587[label="",style="solid", color="black", weight=3]; 29.15/12.52 3527[label="yuz140",fontsize=16,color="green",shape="box"];3528[label="yuz2400",fontsize=16,color="green",shape="box"];10372[label="Pos (Succ Zero)",fontsize=16,color="green",shape="box"];10373[label="FiniteMap.mkBranchLeft_size yuz540 yuz1984 yuz1980",fontsize=16,color="black",shape="box"];10373 -> 10680[label="",style="solid", color="black", weight=3]; 29.15/12.52 10374 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10374[label="FiniteMap.sizeFM yuz1984",fontsize=16,color="magenta"];10374 -> 10681[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10653[label="primMinusNat (Succ yuz476200) (Succ yuz1984200)",fontsize=16,color="black",shape="box"];10653 -> 10743[label="",style="solid", color="black", weight=3]; 29.15/12.52 10654[label="primMinusNat (Succ yuz476200) Zero",fontsize=16,color="black",shape="box"];10654 -> 10744[label="",style="solid", color="black", weight=3]; 29.15/12.52 10655[label="primMinusNat Zero (Succ yuz1984200)",fontsize=16,color="black",shape="box"];10655 -> 10745[label="",style="solid", color="black", weight=3]; 29.15/12.52 10656[label="primMinusNat Zero Zero",fontsize=16,color="black",shape="box"];10656 -> 10746[label="",style="solid", color="black", weight=3]; 29.15/12.52 14080[label="FiniteMap.mkBalBranch6MkBalBranch2 yuz300 yuz301 yuz704 yuz304 yuz300 yuz301 yuz704 yuz304 True",fontsize=16,color="black",shape="box"];14080 -> 14097[label="",style="solid", color="black", weight=3]; 29.15/12.52 14081[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz300 yuz301 FiniteMap.EmptyFM yuz304 FiniteMap.EmptyFM yuz304 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];14081 -> 14098[label="",style="solid", color="black", weight=3]; 29.15/12.52 14082[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044)",fontsize=16,color="black",shape="box"];14082 -> 14099[label="",style="solid", color="black", weight=3]; 29.15/12.52 14096 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14096[label="FiniteMap.sizeFM yuz3043 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz3044",fontsize=16,color="magenta"];14096 -> 14100[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14096 -> 14101[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14095[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz3040 yuz3041 yuz3042 yuz3043 yuz3044 yuz715",fontsize=16,color="burlywood",shape="triangle"];14858[label="yuz715/False",fontsize=10,color="white",style="solid",shape="box"];14095 -> 14858[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14858 -> 14102[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14859[label="yuz715/True",fontsize=10,color="white",style="solid",shape="box"];14095 -> 14859[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14859 -> 14103[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13657 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13657[label="FiniteMap.mkBalBranch (FiniteMap.glueBal2Mid_key1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)) (FiniteMap.glueBal2Mid_elt1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)) (FiniteMap.deleteMax (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)) (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304)",fontsize=16,color="magenta"];13657 -> 13794[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13657 -> 13795[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13657 -> 13796[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13657 -> 13797[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13813[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.glueBal2Vv3 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="black",shape="box"];13813 -> 13832[label="",style="solid", color="black", weight=3]; 29.15/12.52 13814[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.glueBal2Vv3 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="black",shape="box"];13814 -> 13833[label="",style="solid", color="black", weight=3]; 29.15/12.52 13815[label="FiniteMap.deleteMin (FiniteMap.Branch yuz300 yuz301 yuz302 FiniteMap.EmptyFM yuz304)",fontsize=16,color="black",shape="box"];13815 -> 13834[label="",style="solid", color="black", weight=3]; 29.15/12.52 13816[label="FiniteMap.deleteMin (FiniteMap.Branch yuz300 yuz301 yuz302 (FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034) yuz304)",fontsize=16,color="black",shape="box"];13816 -> 13835[label="",style="solid", color="black", weight=3]; 29.15/12.52 10747[label="yuz56300",fontsize=16,color="green",shape="box"];10748[label="yuz55800",fontsize=16,color="green",shape="box"];587[label="primPlusNat (primPlusNat (primPlusNat (primPlusNat Zero (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];587 -> 629[label="",style="solid", color="black", weight=3]; 29.15/12.52 10680 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10680[label="FiniteMap.sizeFM yuz540",fontsize=16,color="magenta"];10680 -> 10754[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10681[label="yuz1984",fontsize=16,color="green",shape="box"];10743 -> 9548[label="",style="dashed", color="red", weight=0]; 29.15/12.52 10743[label="primMinusNat yuz476200 yuz1984200",fontsize=16,color="magenta"];10743 -> 10785[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10743 -> 10786[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 10744[label="Pos (Succ yuz476200)",fontsize=16,color="green",shape="box"];10745[label="Neg (Succ yuz1984200)",fontsize=16,color="green",shape="box"];10746[label="Pos Zero",fontsize=16,color="green",shape="box"];14097[label="FiniteMap.mkBranch (Pos (Succ (Succ Zero))) yuz300 yuz301 yuz704 yuz304",fontsize=16,color="black",shape="box"];14097 -> 14112[label="",style="solid", color="black", weight=3]; 29.15/12.52 14098[label="error []",fontsize=16,color="red",shape="box"];14099[label="FiniteMap.mkBalBranch6MkBalBranch12 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044)",fontsize=16,color="black",shape="box"];14099 -> 14113[label="",style="solid", color="black", weight=3]; 29.15/12.52 14100 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14100[label="FiniteMap.sizeFM yuz3043",fontsize=16,color="magenta"];14100 -> 14114[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14101 -> 14115[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14101[label="Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz3044",fontsize=16,color="magenta"];14101 -> 14116[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14102[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz3040 yuz3041 yuz3042 yuz3043 yuz3044 False",fontsize=16,color="black",shape="box"];14102 -> 14117[label="",style="solid", color="black", weight=3]; 29.15/12.52 14103[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz3040 yuz3041 yuz3042 yuz3043 yuz3044 True",fontsize=16,color="black",shape="box"];14103 -> 14118[label="",style="solid", color="black", weight=3]; 29.15/12.52 13794[label="FiniteMap.glueBal2Mid_key1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="black",shape="box"];13794 -> 13817[label="",style="solid", color="black", weight=3]; 29.15/12.52 13795[label="FiniteMap.deleteMax (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="burlywood",shape="triangle"];14860[label="yuz364/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];13795 -> 14860[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14860 -> 13818[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14861[label="yuz364/FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644",fontsize=10,color="white",style="solid",shape="box"];13795 -> 14861[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14861 -> 13819[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13796[label="FiniteMap.glueBal2Mid_elt1 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364)",fontsize=16,color="black",shape="box"];13796 -> 13820[label="",style="solid", color="black", weight=3]; 29.15/12.52 13797[label="FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304",fontsize=16,color="green",shape="box"];13832 -> 14173[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13832[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.findMin (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304))",fontsize=16,color="magenta"];13832 -> 14174[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14175[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14176[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14177[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14178[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14179[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14180[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14181[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14182[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14183[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14184[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14185[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14186[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14187[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13832 -> 14188[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14354[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13833[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.findMin (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304))",fontsize=16,color="magenta"];13833 -> 14355[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14356[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14357[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14358[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14359[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14360[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14361[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14362[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14363[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14364[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14365[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14366[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14367[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14368[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13833 -> 14369[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13834[label="yuz304",fontsize=16,color="green",shape="box"];13835 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13835[label="FiniteMap.mkBalBranch yuz300 yuz301 (FiniteMap.deleteMin (FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034)) yuz304",fontsize=16,color="magenta"];13835 -> 13885[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 629[label="primPlusNat (primPlusNat (primPlusNat (Succ yuz7200) (Succ yuz7200)) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];629 -> 665[label="",style="solid", color="black", weight=3]; 29.15/12.52 10754[label="yuz540",fontsize=16,color="green",shape="box"];10785[label="yuz1984200",fontsize=16,color="green",shape="box"];10786[label="yuz476200",fontsize=16,color="green",shape="box"];14112 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14112[label="FiniteMap.mkBranchResult yuz300 yuz301 yuz704 yuz304",fontsize=16,color="magenta"];14112 -> 14119[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14112 -> 14120[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14112 -> 14121[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14112 -> 14122[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14113 -> 14123[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14113[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 yuz7040 yuz7041 yuz7042 yuz7043 yuz7044 (FiniteMap.sizeFM yuz7044 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz7043)",fontsize=16,color="magenta"];14113 -> 14124[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14114[label="yuz3043",fontsize=16,color="green",shape="box"];14116 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14116[label="FiniteMap.sizeFM yuz3044",fontsize=16,color="magenta"];14116 -> 14125[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14115[label="Pos (Succ (Succ Zero)) * yuz718",fontsize=16,color="black",shape="triangle"];14115 -> 14126[label="",style="solid", color="black", weight=3]; 29.15/12.52 14117[label="FiniteMap.mkBalBranch6MkBalBranch00 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz3040 yuz3041 yuz3042 yuz3043 yuz3044 otherwise",fontsize=16,color="black",shape="box"];14117 -> 14127[label="",style="solid", color="black", weight=3]; 29.15/12.52 14118[label="FiniteMap.mkBalBranch6Single_L yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044)",fontsize=16,color="black",shape="box"];14118 -> 14128[label="",style="solid", color="black", weight=3]; 29.15/12.52 13817[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.glueBal2Vv2 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="black",shape="box"];13817 -> 13836[label="",style="solid", color="black", weight=3]; 29.15/12.52 13818[label="FiniteMap.deleteMax (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 FiniteMap.EmptyFM)",fontsize=16,color="black",shape="box"];13818 -> 13837[label="",style="solid", color="black", weight=3]; 29.15/12.52 13819[label="FiniteMap.deleteMax (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 (FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644))",fontsize=16,color="black",shape="box"];13819 -> 13838[label="",style="solid", color="black", weight=3]; 29.15/12.52 13820[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.glueBal2Vv2 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="black",shape="box"];13820 -> 13839[label="",style="solid", color="black", weight=3]; 29.15/12.52 14174[label="yuz363",fontsize=16,color="green",shape="box"];14175[label="yuz301",fontsize=16,color="green",shape="box"];14176[label="yuz304",fontsize=16,color="green",shape="box"];14177[label="yuz360",fontsize=16,color="green",shape="box"];14178[label="yuz301",fontsize=16,color="green",shape="box"];14179[label="yuz361",fontsize=16,color="green",shape="box"];14180[label="yuz300",fontsize=16,color="green",shape="box"];14181[label="yuz303",fontsize=16,color="green",shape="box"];14182[label="yuz304",fontsize=16,color="green",shape="box"];14183[label="yuz364",fontsize=16,color="green",shape="box"];14184[label="yuz300",fontsize=16,color="green",shape="box"];14185[label="yuz303",fontsize=16,color="green",shape="box"];14186[label="yuz362",fontsize=16,color="green",shape="box"];14187[label="yuz302",fontsize=16,color="green",shape="box"];14188[label="yuz302",fontsize=16,color="green",shape="box"];14173[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz724 yuz725 yuz726 yuz727 yuz728) (FiniteMap.Branch yuz729 yuz730 yuz731 yuz732 yuz733) (FiniteMap.findMin (FiniteMap.Branch yuz734 yuz735 yuz736 yuz737 yuz738))",fontsize=16,color="burlywood",shape="triangle"];14862[label="yuz737/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14173 -> 14862[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14862 -> 14264[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14863[label="yuz737/FiniteMap.Branch yuz7370 yuz7371 yuz7372 yuz7373 yuz7374",fontsize=10,color="white",style="solid",shape="box"];14173 -> 14863[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14863 -> 14265[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14355[label="yuz302",fontsize=16,color="green",shape="box"];14356[label="yuz301",fontsize=16,color="green",shape="box"];14357[label="yuz303",fontsize=16,color="green",shape="box"];14358[label="yuz304",fontsize=16,color="green",shape="box"];14359[label="yuz360",fontsize=16,color="green",shape="box"];14360[label="yuz364",fontsize=16,color="green",shape="box"];14361[label="yuz303",fontsize=16,color="green",shape="box"];14362[label="yuz301",fontsize=16,color="green",shape="box"];14363[label="yuz304",fontsize=16,color="green",shape="box"];14364[label="yuz300",fontsize=16,color="green",shape="box"];14365[label="yuz363",fontsize=16,color="green",shape="box"];14366[label="yuz302",fontsize=16,color="green",shape="box"];14367[label="yuz361",fontsize=16,color="green",shape="box"];14368[label="yuz362",fontsize=16,color="green",shape="box"];14369[label="yuz300",fontsize=16,color="green",shape="box"];14354[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz771 yuz772 yuz773 yuz774 yuz775) (FiniteMap.Branch yuz776 yuz777 yuz778 yuz779 yuz780) (FiniteMap.findMin (FiniteMap.Branch yuz781 yuz782 yuz783 yuz784 yuz785))",fontsize=16,color="burlywood",shape="triangle"];14864[label="yuz784/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14354 -> 14864[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14864 -> 14445[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14865[label="yuz784/FiniteMap.Branch yuz7840 yuz7841 yuz7842 yuz7843 yuz7844",fontsize=10,color="white",style="solid",shape="box"];14354 -> 14865[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14865 -> 14446[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13885 -> 13793[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13885[label="FiniteMap.deleteMin (FiniteMap.Branch yuz3030 yuz3031 yuz3032 yuz3033 yuz3034)",fontsize=16,color="magenta"];13885 -> 13925[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13885 -> 13926[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13885 -> 13927[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13885 -> 13928[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13885 -> 13929[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 665[label="primPlusNat (primPlusNat (Succ (Succ (primPlusNat yuz7200 yuz7200))) (Succ yuz7200)) (Succ yuz7200)",fontsize=16,color="black",shape="box"];665 -> 702[label="",style="solid", color="black", weight=3]; 29.15/12.52 14119[label="yuz300",fontsize=16,color="green",shape="box"];14120[label="yuz304",fontsize=16,color="green",shape="box"];14121[label="yuz704",fontsize=16,color="green",shape="box"];14122[label="yuz301",fontsize=16,color="green",shape="box"];14124 -> 4669[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14124[label="FiniteMap.sizeFM yuz7044 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz7043",fontsize=16,color="magenta"];14124 -> 14129[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14124 -> 14130[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14123[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 yuz7040 yuz7041 yuz7042 yuz7043 yuz7044 yuz719",fontsize=16,color="burlywood",shape="triangle"];14866[label="yuz719/False",fontsize=10,color="white",style="solid",shape="box"];14123 -> 14866[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14866 -> 14131[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14867[label="yuz719/True",fontsize=10,color="white",style="solid",shape="box"];14123 -> 14867[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14867 -> 14132[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14125[label="yuz3044",fontsize=16,color="green",shape="box"];14126[label="primMulInt (Pos (Succ (Succ Zero))) yuz718",fontsize=16,color="burlywood",shape="box"];14868[label="yuz718/Pos yuz7180",fontsize=10,color="white",style="solid",shape="box"];14126 -> 14868[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14868 -> 14145[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14869[label="yuz718/Neg yuz7180",fontsize=10,color="white",style="solid",shape="box"];14126 -> 14869[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14869 -> 14146[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14127[label="FiniteMap.mkBalBranch6MkBalBranch00 yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz3040 yuz3041 yuz3042 yuz3043 yuz3044 True",fontsize=16,color="black",shape="box"];14127 -> 14147[label="",style="solid", color="black", weight=3]; 29.15/12.52 14128[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ Zero)))) yuz3040 yuz3041 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz300 yuz301 yuz704 yuz3043) yuz3044",fontsize=16,color="black",shape="box"];14128 -> 14148[label="",style="solid", color="black", weight=3]; 29.15/12.52 13836 -> 14467[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13836[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.findMax (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="magenta"];13836 -> 14468[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14469[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14470[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14471[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14472[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14473[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14474[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14475[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14476[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14477[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14478[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14479[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14480[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14481[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13836 -> 14482[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13837[label="yuz363",fontsize=16,color="green",shape="box"];13838 -> 13768[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13838[label="FiniteMap.mkBalBranch yuz360 yuz361 yuz363 (FiniteMap.deleteMax (FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644))",fontsize=16,color="magenta"];13838 -> 13888[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13838 -> 13889[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13838 -> 13890[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13838 -> 13891[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14570[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13839[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz300 yuz301 yuz302 yuz303 yuz304) (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364) (FiniteMap.findMax (FiniteMap.Branch yuz360 yuz361 yuz362 yuz363 yuz364))",fontsize=16,color="magenta"];13839 -> 14571[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14572[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14573[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14574[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14575[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14576[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14577[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14578[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14579[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14580[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14581[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14582[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14583[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14584[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13839 -> 14585[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14264[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz724 yuz725 yuz726 yuz727 yuz728) (FiniteMap.Branch yuz729 yuz730 yuz731 yuz732 yuz733) (FiniteMap.findMin (FiniteMap.Branch yuz734 yuz735 yuz736 FiniteMap.EmptyFM yuz738))",fontsize=16,color="black",shape="box"];14264 -> 14281[label="",style="solid", color="black", weight=3]; 29.15/12.52 14265[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz724 yuz725 yuz726 yuz727 yuz728) (FiniteMap.Branch yuz729 yuz730 yuz731 yuz732 yuz733) (FiniteMap.findMin (FiniteMap.Branch yuz734 yuz735 yuz736 (FiniteMap.Branch yuz7370 yuz7371 yuz7372 yuz7373 yuz7374) yuz738))",fontsize=16,color="black",shape="box"];14265 -> 14282[label="",style="solid", color="black", weight=3]; 29.15/12.52 14445[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz771 yuz772 yuz773 yuz774 yuz775) (FiniteMap.Branch yuz776 yuz777 yuz778 yuz779 yuz780) (FiniteMap.findMin (FiniteMap.Branch yuz781 yuz782 yuz783 FiniteMap.EmptyFM yuz785))",fontsize=16,color="black",shape="box"];14445 -> 14558[label="",style="solid", color="black", weight=3]; 29.15/12.52 14446[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz771 yuz772 yuz773 yuz774 yuz775) (FiniteMap.Branch yuz776 yuz777 yuz778 yuz779 yuz780) (FiniteMap.findMin (FiniteMap.Branch yuz781 yuz782 yuz783 (FiniteMap.Branch yuz7840 yuz7841 yuz7842 yuz7843 yuz7844) yuz785))",fontsize=16,color="black",shape="box"];14446 -> 14559[label="",style="solid", color="black", weight=3]; 29.15/12.52 13925[label="yuz3032",fontsize=16,color="green",shape="box"];13926[label="yuz3030",fontsize=16,color="green",shape="box"];13927[label="yuz3033",fontsize=16,color="green",shape="box"];13928[label="yuz3031",fontsize=16,color="green",shape="box"];13929[label="yuz3034",fontsize=16,color="green",shape="box"];702[label="primPlusNat (Succ (Succ (primPlusNat (Succ (primPlusNat yuz7200 yuz7200)) yuz7200))) (Succ yuz7200)",fontsize=16,color="black",shape="box"];702 -> 744[label="",style="solid", color="black", weight=3]; 29.15/12.52 14129 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14129[label="FiniteMap.sizeFM yuz7044",fontsize=16,color="magenta"];14129 -> 14149[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14130 -> 14115[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14130[label="Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz7043",fontsize=16,color="magenta"];14130 -> 14150[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14131[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 yuz7040 yuz7041 yuz7042 yuz7043 yuz7044 False",fontsize=16,color="black",shape="box"];14131 -> 14151[label="",style="solid", color="black", weight=3]; 29.15/12.52 14132[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 yuz7040 yuz7041 yuz7042 yuz7043 yuz7044 True",fontsize=16,color="black",shape="box"];14132 -> 14152[label="",style="solid", color="black", weight=3]; 29.15/12.52 14145[label="primMulInt (Pos (Succ (Succ Zero))) (Pos yuz7180)",fontsize=16,color="black",shape="box"];14145 -> 14161[label="",style="solid", color="black", weight=3]; 29.15/12.52 14146[label="primMulInt (Pos (Succ (Succ Zero))) (Neg yuz7180)",fontsize=16,color="black",shape="box"];14146 -> 14162[label="",style="solid", color="black", weight=3]; 29.15/12.52 14147[label="FiniteMap.mkBalBranch6Double_L yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 yuz3043 yuz3044)",fontsize=16,color="burlywood",shape="box"];14870[label="yuz3043/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14147 -> 14870[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14870 -> 14163[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14871[label="yuz3043/FiniteMap.Branch yuz30430 yuz30431 yuz30432 yuz30433 yuz30434",fontsize=10,color="white",style="solid",shape="box"];14147 -> 14871[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14871 -> 14164[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14148 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14148[label="FiniteMap.mkBranchResult yuz3040 yuz3041 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz300 yuz301 yuz704 yuz3043) yuz3044",fontsize=16,color="magenta"];14148 -> 14165[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14148 -> 14166[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14148 -> 14167[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14148 -> 14168[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14468[label="yuz303",fontsize=16,color="green",shape="box"];14469[label="yuz364",fontsize=16,color="green",shape="box"];14470[label="yuz304",fontsize=16,color="green",shape="box"];14471[label="yuz300",fontsize=16,color="green",shape="box"];14472[label="yuz361",fontsize=16,color="green",shape="box"];14473[label="yuz363",fontsize=16,color="green",shape="box"];14474[label="yuz363",fontsize=16,color="green",shape="box"];14475[label="yuz301",fontsize=16,color="green",shape="box"];14476[label="yuz360",fontsize=16,color="green",shape="box"];14477[label="yuz362",fontsize=16,color="green",shape="box"];14478[label="yuz361",fontsize=16,color="green",shape="box"];14479[label="yuz362",fontsize=16,color="green",shape="box"];14480[label="yuz360",fontsize=16,color="green",shape="box"];14481[label="yuz364",fontsize=16,color="green",shape="box"];14482[label="yuz302",fontsize=16,color="green",shape="box"];14467[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz787 yuz788 yuz789 yuz790 yuz791) (FiniteMap.Branch yuz792 yuz793 yuz794 yuz795 yuz796) (FiniteMap.findMax (FiniteMap.Branch yuz797 yuz798 yuz799 yuz800 yuz801))",fontsize=16,color="burlywood",shape="triangle"];14872[label="yuz801/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14467 -> 14872[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14872 -> 14560[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14873[label="yuz801/FiniteMap.Branch yuz8010 yuz8011 yuz8012 yuz8013 yuz8014",fontsize=10,color="white",style="solid",shape="box"];14467 -> 14873[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14873 -> 14561[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 13888[label="yuz360",fontsize=16,color="green",shape="box"];13889[label="yuz363",fontsize=16,color="green",shape="box"];13890[label="yuz361",fontsize=16,color="green",shape="box"];13891 -> 13795[label="",style="dashed", color="red", weight=0]; 29.15/12.52 13891[label="FiniteMap.deleteMax (FiniteMap.Branch yuz3640 yuz3641 yuz3642 yuz3643 yuz3644)",fontsize=16,color="magenta"];13891 -> 13932[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13891 -> 13933[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13891 -> 13934[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13891 -> 13935[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 13891 -> 13936[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14571[label="yuz362",fontsize=16,color="green",shape="box"];14572[label="yuz303",fontsize=16,color="green",shape="box"];14573[label="yuz302",fontsize=16,color="green",shape="box"];14574[label="yuz361",fontsize=16,color="green",shape="box"];14575[label="yuz362",fontsize=16,color="green",shape="box"];14576[label="yuz301",fontsize=16,color="green",shape="box"];14577[label="yuz361",fontsize=16,color="green",shape="box"];14578[label="yuz360",fontsize=16,color="green",shape="box"];14579[label="yuz304",fontsize=16,color="green",shape="box"];14580[label="yuz300",fontsize=16,color="green",shape="box"];14581[label="yuz364",fontsize=16,color="green",shape="box"];14582[label="yuz363",fontsize=16,color="green",shape="box"];14583[label="yuz363",fontsize=16,color="green",shape="box"];14584[label="yuz364",fontsize=16,color="green",shape="box"];14585[label="yuz360",fontsize=16,color="green",shape="box"];14570[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz803 yuz804 yuz805 yuz806 yuz807) (FiniteMap.Branch yuz808 yuz809 yuz810 yuz811 yuz812) (FiniteMap.findMax (FiniteMap.Branch yuz813 yuz814 yuz815 yuz816 yuz817))",fontsize=16,color="burlywood",shape="triangle"];14874[label="yuz817/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14570 -> 14874[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14874 -> 14661[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14875[label="yuz817/FiniteMap.Branch yuz8170 yuz8171 yuz8172 yuz8173 yuz8174",fontsize=10,color="white",style="solid",shape="box"];14570 -> 14875[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14875 -> 14662[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14281[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz724 yuz725 yuz726 yuz727 yuz728) (FiniteMap.Branch yuz729 yuz730 yuz731 yuz732 yuz733) (yuz734,yuz735)",fontsize=16,color="black",shape="box"];14281 -> 14298[label="",style="solid", color="black", weight=3]; 29.15/12.52 14282 -> 14173[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14282[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz724 yuz725 yuz726 yuz727 yuz728) (FiniteMap.Branch yuz729 yuz730 yuz731 yuz732 yuz733) (FiniteMap.findMin (FiniteMap.Branch yuz7370 yuz7371 yuz7372 yuz7373 yuz7374))",fontsize=16,color="magenta"];14282 -> 14299[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14282 -> 14300[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14282 -> 14301[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14282 -> 14302[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14282 -> 14303[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14558[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz771 yuz772 yuz773 yuz774 yuz775) (FiniteMap.Branch yuz776 yuz777 yuz778 yuz779 yuz780) (yuz781,yuz782)",fontsize=16,color="black",shape="box"];14558 -> 14663[label="",style="solid", color="black", weight=3]; 29.15/12.52 14559 -> 14354[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14559[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz771 yuz772 yuz773 yuz774 yuz775) (FiniteMap.Branch yuz776 yuz777 yuz778 yuz779 yuz780) (FiniteMap.findMin (FiniteMap.Branch yuz7840 yuz7841 yuz7842 yuz7843 yuz7844))",fontsize=16,color="magenta"];14559 -> 14664[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14559 -> 14665[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14559 -> 14666[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14559 -> 14667[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14559 -> 14668[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 744[label="Succ (Succ (primPlusNat (Succ (primPlusNat (Succ (primPlusNat yuz7200 yuz7200)) yuz7200)) yuz7200))",fontsize=16,color="green",shape="box"];744 -> 788[label="",style="dashed", color="green", weight=3]; 29.15/12.52 14149[label="yuz7044",fontsize=16,color="green",shape="box"];14150 -> 9372[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14150[label="FiniteMap.sizeFM yuz7043",fontsize=16,color="magenta"];14150 -> 14169[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14151[label="FiniteMap.mkBalBranch6MkBalBranch10 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 yuz7040 yuz7041 yuz7042 yuz7043 yuz7044 otherwise",fontsize=16,color="black",shape="box"];14151 -> 14170[label="",style="solid", color="black", weight=3]; 29.15/12.52 14152[label="FiniteMap.mkBalBranch6Single_R yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304",fontsize=16,color="black",shape="box"];14152 -> 14171[label="",style="solid", color="black", weight=3]; 29.15/12.52 14161[label="Pos (primMulNat (Succ (Succ Zero)) yuz7180)",fontsize=16,color="green",shape="box"];14161 -> 14266[label="",style="dashed", color="green", weight=3]; 29.15/12.52 14162[label="Neg (primMulNat (Succ (Succ Zero)) yuz7180)",fontsize=16,color="green",shape="box"];14162 -> 14267[label="",style="dashed", color="green", weight=3]; 29.15/12.52 14163[label="FiniteMap.mkBalBranch6Double_L yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 FiniteMap.EmptyFM yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 FiniteMap.EmptyFM yuz3044)",fontsize=16,color="black",shape="box"];14163 -> 14268[label="",style="solid", color="black", weight=3]; 29.15/12.52 14164[label="FiniteMap.mkBalBranch6Double_L yuz300 yuz301 yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 (FiniteMap.Branch yuz30430 yuz30431 yuz30432 yuz30433 yuz30434) yuz3044) yuz704 (FiniteMap.Branch yuz3040 yuz3041 yuz3042 (FiniteMap.Branch yuz30430 yuz30431 yuz30432 yuz30433 yuz30434) yuz3044)",fontsize=16,color="black",shape="box"];14164 -> 14269[label="",style="solid", color="black", weight=3]; 29.15/12.52 14165[label="yuz3040",fontsize=16,color="green",shape="box"];14166[label="yuz3044",fontsize=16,color="green",shape="box"];14167[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz300 yuz301 yuz704 yuz3043",fontsize=16,color="black",shape="box"];14167 -> 14270[label="",style="solid", color="black", weight=3]; 29.15/12.52 14168[label="yuz3041",fontsize=16,color="green",shape="box"];14560[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz787 yuz788 yuz789 yuz790 yuz791) (FiniteMap.Branch yuz792 yuz793 yuz794 yuz795 yuz796) (FiniteMap.findMax (FiniteMap.Branch yuz797 yuz798 yuz799 yuz800 FiniteMap.EmptyFM))",fontsize=16,color="black",shape="box"];14560 -> 14669[label="",style="solid", color="black", weight=3]; 29.15/12.52 14561[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz787 yuz788 yuz789 yuz790 yuz791) (FiniteMap.Branch yuz792 yuz793 yuz794 yuz795 yuz796) (FiniteMap.findMax (FiniteMap.Branch yuz797 yuz798 yuz799 yuz800 (FiniteMap.Branch yuz8010 yuz8011 yuz8012 yuz8013 yuz8014)))",fontsize=16,color="black",shape="box"];14561 -> 14670[label="",style="solid", color="black", weight=3]; 29.15/12.52 13932[label="yuz3642",fontsize=16,color="green",shape="box"];13933[label="yuz3643",fontsize=16,color="green",shape="box"];13934[label="yuz3641",fontsize=16,color="green",shape="box"];13935[label="yuz3644",fontsize=16,color="green",shape="box"];13936[label="yuz3640",fontsize=16,color="green",shape="box"];14661[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz803 yuz804 yuz805 yuz806 yuz807) (FiniteMap.Branch yuz808 yuz809 yuz810 yuz811 yuz812) (FiniteMap.findMax (FiniteMap.Branch yuz813 yuz814 yuz815 yuz816 FiniteMap.EmptyFM))",fontsize=16,color="black",shape="box"];14661 -> 14677[label="",style="solid", color="black", weight=3]; 29.15/12.52 14662[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz803 yuz804 yuz805 yuz806 yuz807) (FiniteMap.Branch yuz808 yuz809 yuz810 yuz811 yuz812) (FiniteMap.findMax (FiniteMap.Branch yuz813 yuz814 yuz815 yuz816 (FiniteMap.Branch yuz8170 yuz8171 yuz8172 yuz8173 yuz8174)))",fontsize=16,color="black",shape="box"];14662 -> 14678[label="",style="solid", color="black", weight=3]; 29.15/12.52 14298[label="yuz734",fontsize=16,color="green",shape="box"];14299[label="yuz7371",fontsize=16,color="green",shape="box"];14300[label="yuz7373",fontsize=16,color="green",shape="box"];14301[label="yuz7374",fontsize=16,color="green",shape="box"];14302[label="yuz7370",fontsize=16,color="green",shape="box"];14303[label="yuz7372",fontsize=16,color="green",shape="box"];14663[label="yuz782",fontsize=16,color="green",shape="box"];14664[label="yuz7843",fontsize=16,color="green",shape="box"];14665[label="yuz7841",fontsize=16,color="green",shape="box"];14666[label="yuz7844",fontsize=16,color="green",shape="box"];14667[label="yuz7840",fontsize=16,color="green",shape="box"];14668[label="yuz7842",fontsize=16,color="green",shape="box"];788[label="primPlusNat (Succ (primPlusNat (Succ (primPlusNat yuz7200 yuz7200)) yuz7200)) yuz7200",fontsize=16,color="burlywood",shape="triangle"];14876[label="yuz7200/Succ yuz72000",fontsize=10,color="white",style="solid",shape="box"];788 -> 14876[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14876 -> 829[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14877[label="yuz7200/Zero",fontsize=10,color="white",style="solid",shape="box"];788 -> 14877[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14877 -> 830[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14169[label="yuz7043",fontsize=16,color="green",shape="box"];14170[label="FiniteMap.mkBalBranch6MkBalBranch10 yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 yuz7040 yuz7041 yuz7042 yuz7043 yuz7044 True",fontsize=16,color="black",shape="box"];14170 -> 14271[label="",style="solid", color="black", weight=3]; 29.15/12.52 14171 -> 14310[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14171[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))) yuz7040 yuz7041 yuz7043 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))) yuz300 yuz301 yuz7044 yuz304)",fontsize=16,color="magenta"];14171 -> 14311[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14312[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14313[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14314[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14315[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14316[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14317[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14318[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14171 -> 14319[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14266[label="primMulNat (Succ (Succ Zero)) yuz7180",fontsize=16,color="burlywood",shape="triangle"];14878[label="yuz7180/Succ yuz71800",fontsize=10,color="white",style="solid",shape="box"];14266 -> 14878[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14878 -> 14283[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14879[label="yuz7180/Zero",fontsize=10,color="white",style="solid",shape="box"];14266 -> 14879[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14879 -> 14284[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14267 -> 14266[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14267[label="primMulNat (Succ (Succ Zero)) yuz7180",fontsize=16,color="magenta"];14267 -> 14285[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14268[label="error []",fontsize=16,color="red",shape="box"];14269 -> 14310[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14269[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) yuz30430 yuz30431 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) yuz300 yuz301 yuz704 yuz30433) (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))) yuz3040 yuz3041 yuz30434 yuz3044)",fontsize=16,color="magenta"];14269 -> 14320[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14321[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14322[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14323[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14324[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14325[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14326[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14327[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14269 -> 14328[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14270 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14270[label="FiniteMap.mkBranchResult yuz300 yuz301 yuz704 yuz3043",fontsize=16,color="magenta"];14270 -> 14304[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14270 -> 14305[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14270 -> 14306[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14270 -> 14307[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14669[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz787 yuz788 yuz789 yuz790 yuz791) (FiniteMap.Branch yuz792 yuz793 yuz794 yuz795 yuz796) (yuz797,yuz798)",fontsize=16,color="black",shape="box"];14669 -> 14679[label="",style="solid", color="black", weight=3]; 29.15/12.52 14670 -> 14467[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14670[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz787 yuz788 yuz789 yuz790 yuz791) (FiniteMap.Branch yuz792 yuz793 yuz794 yuz795 yuz796) (FiniteMap.findMax (FiniteMap.Branch yuz8010 yuz8011 yuz8012 yuz8013 yuz8014))",fontsize=16,color="magenta"];14670 -> 14680[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14670 -> 14681[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14670 -> 14682[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14670 -> 14683[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14670 -> 14684[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14677[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz803 yuz804 yuz805 yuz806 yuz807) (FiniteMap.Branch yuz808 yuz809 yuz810 yuz811 yuz812) (yuz813,yuz814)",fontsize=16,color="black",shape="box"];14677 -> 14686[label="",style="solid", color="black", weight=3]; 29.15/12.52 14678 -> 14570[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14678[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz803 yuz804 yuz805 yuz806 yuz807) (FiniteMap.Branch yuz808 yuz809 yuz810 yuz811 yuz812) (FiniteMap.findMax (FiniteMap.Branch yuz8170 yuz8171 yuz8172 yuz8173 yuz8174))",fontsize=16,color="magenta"];14678 -> 14687[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14678 -> 14688[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14678 -> 14689[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14678 -> 14690[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14678 -> 14691[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 829[label="primPlusNat (Succ (primPlusNat (Succ (primPlusNat (Succ yuz72000) (Succ yuz72000))) (Succ yuz72000))) (Succ yuz72000)",fontsize=16,color="black",shape="box"];829 -> 862[label="",style="solid", color="black", weight=3]; 29.15/12.52 830[label="primPlusNat (Succ (primPlusNat (Succ (primPlusNat Zero Zero)) Zero)) Zero",fontsize=16,color="black",shape="box"];830 -> 863[label="",style="solid", color="black", weight=3]; 29.15/12.52 14271[label="FiniteMap.mkBalBranch6Double_R yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 yuz7044) yuz304",fontsize=16,color="burlywood",shape="box"];14880[label="yuz7044/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];14271 -> 14880[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14880 -> 14308[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14881[label="yuz7044/FiniteMap.Branch yuz70440 yuz70441 yuz70442 yuz70443 yuz70444",fontsize=10,color="white",style="solid",shape="box"];14271 -> 14881[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14881 -> 14309[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14311[label="yuz7040",fontsize=16,color="green",shape="box"];14312[label="yuz7043",fontsize=16,color="green",shape="box"];14313[label="yuz304",fontsize=16,color="green",shape="box"];14314[label="yuz301",fontsize=16,color="green",shape="box"];14315[label="yuz7044",fontsize=16,color="green",shape="box"];14316[label="yuz7041",fontsize=16,color="green",shape="box"];14317[label="yuz300",fontsize=16,color="green",shape="box"];14318[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))",fontsize=16,color="green",shape="box"];14319[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))",fontsize=16,color="green",shape="box"];14310[label="FiniteMap.mkBranch (Pos (Succ yuz761)) yuz762 yuz763 yuz764 (FiniteMap.mkBranch (Pos (Succ yuz765)) yuz766 yuz767 yuz768 yuz769)",fontsize=16,color="black",shape="triangle"];14310 -> 14347[label="",style="solid", color="black", weight=3]; 29.15/12.52 14283[label="primMulNat (Succ (Succ Zero)) (Succ yuz71800)",fontsize=16,color="black",shape="box"];14283 -> 14348[label="",style="solid", color="black", weight=3]; 29.15/12.52 14284[label="primMulNat (Succ (Succ Zero)) Zero",fontsize=16,color="black",shape="box"];14284 -> 14349[label="",style="solid", color="black", weight=3]; 29.15/12.52 14285[label="yuz7180",fontsize=16,color="green",shape="box"];14320[label="yuz30430",fontsize=16,color="green",shape="box"];14321[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) yuz300 yuz301 yuz704 yuz30433",fontsize=16,color="black",shape="box"];14321 -> 14350[label="",style="solid", color="black", weight=3]; 29.15/12.52 14322[label="yuz3044",fontsize=16,color="green",shape="box"];14323[label="yuz3041",fontsize=16,color="green",shape="box"];14324[label="yuz30434",fontsize=16,color="green",shape="box"];14325[label="yuz30431",fontsize=16,color="green",shape="box"];14326[label="yuz3040",fontsize=16,color="green",shape="box"];14327[label="Succ (Succ (Succ (Succ Zero)))",fontsize=16,color="green",shape="box"];14328[label="Succ (Succ (Succ (Succ (Succ (Succ Zero)))))",fontsize=16,color="green",shape="box"];14304[label="yuz300",fontsize=16,color="green",shape="box"];14305[label="yuz3043",fontsize=16,color="green",shape="box"];14306[label="yuz704",fontsize=16,color="green",shape="box"];14307[label="yuz301",fontsize=16,color="green",shape="box"];14679[label="yuz797",fontsize=16,color="green",shape="box"];14680[label="yuz8013",fontsize=16,color="green",shape="box"];14681[label="yuz8011",fontsize=16,color="green",shape="box"];14682[label="yuz8012",fontsize=16,color="green",shape="box"];14683[label="yuz8010",fontsize=16,color="green",shape="box"];14684[label="yuz8014",fontsize=16,color="green",shape="box"];14686[label="yuz814",fontsize=16,color="green",shape="box"];14687[label="yuz8172",fontsize=16,color="green",shape="box"];14688[label="yuz8171",fontsize=16,color="green",shape="box"];14689[label="yuz8173",fontsize=16,color="green",shape="box"];14690[label="yuz8174",fontsize=16,color="green",shape="box"];14691[label="yuz8170",fontsize=16,color="green",shape="box"];862[label="Succ (Succ (primPlusNat (primPlusNat (Succ (primPlusNat (Succ yuz72000) (Succ yuz72000))) (Succ yuz72000)) yuz72000))",fontsize=16,color="green",shape="box"];862 -> 901[label="",style="dashed", color="green", weight=3]; 29.15/12.52 863[label="Succ (primPlusNat (Succ (primPlusNat Zero Zero)) Zero)",fontsize=16,color="green",shape="box"];863 -> 902[label="",style="dashed", color="green", weight=3]; 29.15/12.52 14308[label="FiniteMap.mkBalBranch6Double_R yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 FiniteMap.EmptyFM) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 FiniteMap.EmptyFM) yuz304",fontsize=16,color="black",shape="box"];14308 -> 14351[label="",style="solid", color="black", weight=3]; 29.15/12.52 14309[label="FiniteMap.mkBalBranch6Double_R yuz300 yuz301 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 (FiniteMap.Branch yuz70440 yuz70441 yuz70442 yuz70443 yuz70444)) yuz304 (FiniteMap.Branch yuz7040 yuz7041 yuz7042 yuz7043 (FiniteMap.Branch yuz70440 yuz70441 yuz70442 yuz70443 yuz70444)) yuz304",fontsize=16,color="black",shape="box"];14309 -> 14352[label="",style="solid", color="black", weight=3]; 29.15/12.52 14347 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14347[label="FiniteMap.mkBranchResult yuz762 yuz763 yuz764 (FiniteMap.mkBranch (Pos (Succ yuz765)) yuz766 yuz767 yuz768 yuz769)",fontsize=16,color="magenta"];14347 -> 14447[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14347 -> 14448[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14347 -> 14449[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14347 -> 14450[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14348 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14348[label="primPlusNat (primMulNat (Succ Zero) (Succ yuz71800)) (Succ yuz71800)",fontsize=16,color="magenta"];14348 -> 14451[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14348 -> 14452[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14349[label="Zero",fontsize=16,color="green",shape="box"];14350 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14350[label="FiniteMap.mkBranchResult yuz300 yuz301 yuz704 yuz30433",fontsize=16,color="magenta"];14350 -> 14453[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14350 -> 14454[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14350 -> 14455[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14350 -> 14456[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 901[label="primPlusNat (primPlusNat (Succ (primPlusNat (Succ yuz72000) (Succ yuz72000))) (Succ yuz72000)) yuz72000",fontsize=16,color="black",shape="box"];901 -> 939[label="",style="solid", color="black", weight=3]; 29.15/12.52 902[label="primPlusNat (Succ (primPlusNat Zero Zero)) Zero",fontsize=16,color="black",shape="box"];902 -> 940[label="",style="solid", color="black", weight=3]; 29.15/12.52 14351[label="error []",fontsize=16,color="red",shape="box"];14352 -> 14310[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14352[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))) yuz70440 yuz70441 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) yuz7040 yuz7041 yuz7043 yuz70443) (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) yuz300 yuz301 yuz70444 yuz304)",fontsize=16,color="magenta"];14352 -> 14457[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14458[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14459[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14460[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14461[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14462[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14463[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14464[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14352 -> 14465[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14447[label="yuz762",fontsize=16,color="green",shape="box"];14448[label="FiniteMap.mkBranch (Pos (Succ yuz765)) yuz766 yuz767 yuz768 yuz769",fontsize=16,color="black",shape="triangle"];14448 -> 14562[label="",style="solid", color="black", weight=3]; 29.15/12.52 14449[label="yuz764",fontsize=16,color="green",shape="box"];14450[label="yuz763",fontsize=16,color="green",shape="box"];14451[label="Succ yuz71800",fontsize=16,color="green",shape="box"];14452[label="primMulNat (Succ Zero) (Succ yuz71800)",fontsize=16,color="black",shape="box"];14452 -> 14563[label="",style="solid", color="black", weight=3]; 29.15/12.52 14453[label="yuz300",fontsize=16,color="green",shape="box"];14454[label="yuz30433",fontsize=16,color="green",shape="box"];14455[label="yuz704",fontsize=16,color="green",shape="box"];14456[label="yuz301",fontsize=16,color="green",shape="box"];939[label="primPlusNat (Succ (Succ (primPlusNat (primPlusNat (Succ yuz72000) (Succ yuz72000)) yuz72000))) yuz72000",fontsize=16,color="burlywood",shape="box"];14882[label="yuz72000/Succ yuz720000",fontsize=10,color="white",style="solid",shape="box"];939 -> 14882[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14882 -> 973[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14883[label="yuz72000/Zero",fontsize=10,color="white",style="solid",shape="box"];939 -> 14883[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14883 -> 974[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 940[label="Succ (primPlusNat Zero Zero)",fontsize=16,color="green",shape="box"];940 -> 975[label="",style="dashed", color="green", weight=3]; 29.15/12.52 14457[label="yuz70440",fontsize=16,color="green",shape="box"];14458 -> 14448[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14458[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) yuz7040 yuz7041 yuz7043 yuz70443",fontsize=16,color="magenta"];14458 -> 14564[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14458 -> 14565[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14458 -> 14566[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14458 -> 14567[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14458 -> 14568[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14459[label="yuz304",fontsize=16,color="green",shape="box"];14460[label="yuz301",fontsize=16,color="green",shape="box"];14461[label="yuz70444",fontsize=16,color="green",shape="box"];14462[label="yuz70441",fontsize=16,color="green",shape="box"];14463[label="yuz300",fontsize=16,color="green",shape="box"];14464[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];14465[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))",fontsize=16,color="green",shape="box"];14562 -> 9317[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14562[label="FiniteMap.mkBranchResult yuz766 yuz767 yuz768 yuz769",fontsize=16,color="magenta"];14562 -> 14671[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14562 -> 14672[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14562 -> 14673[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14562 -> 14674[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14563 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 14563[label="primPlusNat (primMulNat Zero (Succ yuz71800)) (Succ yuz71800)",fontsize=16,color="magenta"];14563 -> 14675[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 14563 -> 14676[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 973[label="primPlusNat (Succ (Succ (primPlusNat (primPlusNat (Succ (Succ yuz720000)) (Succ (Succ yuz720000))) (Succ yuz720000)))) (Succ yuz720000)",fontsize=16,color="black",shape="box"];973 -> 1030[label="",style="solid", color="black", weight=3]; 29.15/12.52 974[label="primPlusNat (Succ (Succ (primPlusNat (primPlusNat (Succ Zero) (Succ Zero)) Zero))) Zero",fontsize=16,color="black",shape="box"];974 -> 1031[label="",style="solid", color="black", weight=3]; 29.15/12.52 975[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="triangle"];975 -> 1032[label="",style="solid", color="black", weight=3]; 29.15/12.52 14564[label="yuz70443",fontsize=16,color="green",shape="box"];14565[label="yuz7041",fontsize=16,color="green",shape="box"];14566[label="yuz7043",fontsize=16,color="green",shape="box"];14567[label="yuz7040",fontsize=16,color="green",shape="box"];14568[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))",fontsize=16,color="green",shape="box"];14671[label="yuz766",fontsize=16,color="green",shape="box"];14672[label="yuz769",fontsize=16,color="green",shape="box"];14673[label="yuz768",fontsize=16,color="green",shape="box"];14674[label="yuz767",fontsize=16,color="green",shape="box"];14675[label="Succ yuz71800",fontsize=16,color="green",shape="box"];14676[label="primMulNat Zero (Succ yuz71800)",fontsize=16,color="black",shape="box"];14676 -> 14685[label="",style="solid", color="black", weight=3]; 29.15/12.52 1030[label="Succ (Succ (primPlusNat (Succ (primPlusNat (primPlusNat (Succ (Succ yuz720000)) (Succ (Succ yuz720000))) (Succ yuz720000))) yuz720000))",fontsize=16,color="green",shape="box"];1030 -> 1185[label="",style="dashed", color="green", weight=3]; 29.15/12.52 1031[label="Succ (Succ (primPlusNat (primPlusNat (Succ Zero) (Succ Zero)) Zero))",fontsize=16,color="green",shape="box"];1031 -> 1186[label="",style="dashed", color="green", weight=3]; 29.15/12.52 1032[label="Zero",fontsize=16,color="green",shape="box"];14685[label="Zero",fontsize=16,color="green",shape="box"];1185[label="primPlusNat (Succ (primPlusNat (primPlusNat (Succ (Succ yuz720000)) (Succ (Succ yuz720000))) (Succ yuz720000))) yuz720000",fontsize=16,color="burlywood",shape="box"];14884[label="yuz720000/Succ yuz7200000",fontsize=10,color="white",style="solid",shape="box"];1185 -> 14884[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14884 -> 1297[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14885[label="yuz720000/Zero",fontsize=10,color="white",style="solid",shape="box"];1185 -> 14885[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14885 -> 1298[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 1186[label="primPlusNat (primPlusNat (Succ Zero) (Succ Zero)) Zero",fontsize=16,color="black",shape="box"];1186 -> 1299[label="",style="solid", color="black", weight=3]; 29.15/12.52 1297[label="primPlusNat (Succ (primPlusNat (primPlusNat (Succ (Succ (Succ yuz7200000))) (Succ (Succ (Succ yuz7200000)))) (Succ (Succ yuz7200000)))) (Succ yuz7200000)",fontsize=16,color="black",shape="box"];1297 -> 1431[label="",style="solid", color="black", weight=3]; 29.15/12.52 1298[label="primPlusNat (Succ (primPlusNat (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero))) (Succ Zero))) Zero",fontsize=16,color="black",shape="box"];1298 -> 1432[label="",style="solid", color="black", weight=3]; 29.15/12.52 1299 -> 1433[label="",style="dashed", color="red", weight=0]; 29.15/12.52 1299[label="primPlusNat (Succ (Succ (primPlusNat Zero Zero))) Zero",fontsize=16,color="magenta"];1299 -> 1434[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 1431[label="Succ (Succ (primPlusNat (primPlusNat (primPlusNat (Succ (Succ (Succ yuz7200000))) (Succ (Succ (Succ yuz7200000)))) (Succ (Succ yuz7200000))) yuz7200000))",fontsize=16,color="green",shape="box"];1431 -> 1555[label="",style="dashed", color="green", weight=3]; 29.15/12.52 1432[label="Succ (primPlusNat (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero))) (Succ Zero))",fontsize=16,color="green",shape="box"];1432 -> 1556[label="",style="dashed", color="green", weight=3]; 29.15/12.52 1434 -> 975[label="",style="dashed", color="red", weight=0]; 29.15/12.52 1434[label="primPlusNat Zero Zero",fontsize=16,color="magenta"];1433[label="primPlusNat (Succ (Succ yuz76)) Zero",fontsize=16,color="black",shape="triangle"];1433 -> 1557[label="",style="solid", color="black", weight=3]; 29.15/12.52 1555[label="primPlusNat (primPlusNat (primPlusNat (Succ (Succ (Succ yuz7200000))) (Succ (Succ (Succ yuz7200000)))) (Succ (Succ yuz7200000))) yuz7200000",fontsize=16,color="black",shape="box"];1555 -> 1689[label="",style="solid", color="black", weight=3]; 29.15/12.52 1556[label="primPlusNat (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero))) (Succ Zero)",fontsize=16,color="black",shape="box"];1556 -> 1690[label="",style="solid", color="black", weight=3]; 29.15/12.52 1557[label="Succ (Succ yuz76)",fontsize=16,color="green",shape="box"];1689[label="primPlusNat (primPlusNat (Succ (Succ (primPlusNat (Succ (Succ yuz7200000)) (Succ (Succ yuz7200000))))) (Succ (Succ yuz7200000))) yuz7200000",fontsize=16,color="black",shape="box"];1689 -> 1848[label="",style="solid", color="black", weight=3]; 29.15/12.52 1690[label="primPlusNat (Succ (Succ (primPlusNat (Succ Zero) (Succ Zero)))) (Succ Zero)",fontsize=16,color="black",shape="box"];1690 -> 1849[label="",style="solid", color="black", weight=3]; 29.15/12.52 1848[label="primPlusNat (Succ (Succ (primPlusNat (Succ (primPlusNat (Succ (Succ yuz7200000)) (Succ (Succ yuz7200000)))) (Succ yuz7200000)))) yuz7200000",fontsize=16,color="burlywood",shape="box"];14886[label="yuz7200000/Succ yuz72000000",fontsize=10,color="white",style="solid",shape="box"];1848 -> 14886[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14886 -> 2087[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 14887[label="yuz7200000/Zero",fontsize=10,color="white",style="solid",shape="box"];1848 -> 14887[label="",style="solid", color="burlywood", weight=9]; 29.15/12.52 14887 -> 2088[label="",style="solid", color="burlywood", weight=3]; 29.15/12.52 1849[label="Succ (Succ (primPlusNat (Succ (primPlusNat (Succ Zero) (Succ Zero))) Zero))",fontsize=16,color="green",shape="box"];1849 -> 2089[label="",style="dashed", color="green", weight=3]; 29.15/12.52 2087[label="primPlusNat (Succ (Succ (primPlusNat (Succ (primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000))))) (Succ (Succ yuz72000000))))) (Succ yuz72000000)",fontsize=16,color="black",shape="box"];2087 -> 2270[label="",style="solid", color="black", weight=3]; 29.15/12.52 2088[label="primPlusNat (Succ (Succ (primPlusNat (Succ (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero)))) (Succ Zero)))) Zero",fontsize=16,color="black",shape="box"];2088 -> 2271[label="",style="solid", color="black", weight=3]; 29.15/12.52 2089[label="primPlusNat (Succ (primPlusNat (Succ Zero) (Succ Zero))) Zero",fontsize=16,color="black",shape="box"];2089 -> 2272[label="",style="solid", color="black", weight=3]; 29.15/12.52 2270[label="Succ (Succ (primPlusNat (Succ (primPlusNat (Succ (primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000))))) (Succ (Succ yuz72000000)))) yuz72000000))",fontsize=16,color="green",shape="box"];2270 -> 2671[label="",style="dashed", color="green", weight=3]; 29.15/12.52 2271[label="Succ (Succ (primPlusNat (Succ (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero)))) (Succ Zero)))",fontsize=16,color="green",shape="box"];2271 -> 2672[label="",style="dashed", color="green", weight=3]; 29.15/12.52 2272[label="Succ (primPlusNat (Succ Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];2272 -> 2673[label="",style="dashed", color="green", weight=3]; 29.15/12.52 2671 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 2671[label="primPlusNat (Succ (primPlusNat (Succ (primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000))))) (Succ (Succ yuz72000000)))) yuz72000000",fontsize=16,color="magenta"];2671 -> 3488[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 2671 -> 3489[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 2672 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 2672[label="primPlusNat (Succ (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero)))) (Succ Zero)",fontsize=16,color="magenta"];2672 -> 3490[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 2672 -> 3491[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 2673 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 2673[label="primPlusNat (Succ Zero) (Succ Zero)",fontsize=16,color="magenta"];2673 -> 3492[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 2673 -> 3493[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 3488[label="yuz72000000",fontsize=16,color="green",shape="box"];3489[label="Succ (primPlusNat (Succ (primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000))))) (Succ (Succ yuz72000000)))",fontsize=16,color="green",shape="box"];3489 -> 3986[label="",style="dashed", color="green", weight=3]; 29.15/12.52 3490[label="Succ Zero",fontsize=16,color="green",shape="box"];3491[label="Succ (primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero)))",fontsize=16,color="green",shape="box"];3491 -> 3987[label="",style="dashed", color="green", weight=3]; 29.15/12.52 3492[label="Succ Zero",fontsize=16,color="green",shape="box"];3493[label="Succ Zero",fontsize=16,color="green",shape="box"];3986 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 3986[label="primPlusNat (Succ (primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000))))) (Succ (Succ yuz72000000))",fontsize=16,color="magenta"];3986 -> 4190[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 3986 -> 4191[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 3987 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 3987[label="primPlusNat (Succ (Succ Zero)) (Succ (Succ Zero))",fontsize=16,color="magenta"];3987 -> 4192[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 3987 -> 4193[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 4190[label="Succ (Succ yuz72000000)",fontsize=16,color="green",shape="box"];4191[label="Succ (primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000))))",fontsize=16,color="green",shape="box"];4191 -> 4369[label="",style="dashed", color="green", weight=3]; 29.15/12.52 4192[label="Succ (Succ Zero)",fontsize=16,color="green",shape="box"];4193[label="Succ (Succ Zero)",fontsize=16,color="green",shape="box"];4369 -> 3164[label="",style="dashed", color="red", weight=0]; 29.15/12.52 4369[label="primPlusNat (Succ (Succ (Succ yuz72000000))) (Succ (Succ (Succ yuz72000000)))",fontsize=16,color="magenta"];4369 -> 4804[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 4369 -> 4805[label="",style="dashed", color="magenta", weight=3]; 29.15/12.52 4804[label="Succ (Succ (Succ yuz72000000))",fontsize=16,color="green",shape="box"];4805[label="Succ (Succ (Succ yuz72000000))",fontsize=16,color="green",shape="box"];} 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (14) 29.15/12.52 Complex Obligation (AND) 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (15) 29.15/12.52 Obligation: 29.15/12.52 Q DP problem: 29.15/12.52 The TRS P consists of the following rules: 29.15/12.52 29.15/12.52 new_glueVBal3(yuz360, yuz361, yuz362, yuz363, yuz364, yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, h, ba) -> new_glueVBal3GlueVBal2(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, new_lt0(new_sr(new_glueVBal3Size_l(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), new_glueVBal3Size_r(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), h, ba) 29.15/12.52 new_glueVBal3GlueVBal2(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, False, h, ba) -> new_glueVBal3GlueVBal1(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, new_lt0(new_sr(new_glueVBal3Size_r(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), new_glueVBal3Size_l(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), h, ba) 29.15/12.52 new_glueVBal3GlueVBal1(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, Branch(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644), True, h, ba) -> new_glueVBal3(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644, yuz300, yuz301, yuz302, yuz303, yuz304, h, ba) 29.15/12.52 new_glueVBal3GlueVBal2(yuz300, yuz301, yuz302, Branch(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034), yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, True, h, ba) -> new_glueVBal3GlueVBal2(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, new_lt0(new_sr(new_glueVBal3Size_l(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), new_glueVBal3Size_r(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), h, ba) 29.15/12.52 29.15/12.52 The TRS R consists of the following rules: 29.15/12.52 29.15/12.52 new_primPlusNat6(Succ(yuz72000000)) -> Succ(Succ(new_primPlusNat1(Succ(new_primPlusNat1(Succ(new_primPlusNat1(Succ(Succ(Succ(yuz72000000))), Succ(Succ(Succ(yuz72000000))))), Succ(Succ(yuz72000000)))), yuz72000000))) 29.15/12.52 new_esEs11(Pos(Succ(yuz20000)), Pos(yuz1900)) -> new_esEs2(yuz20000, yuz1900) 29.15/12.52 new_esEs11(Pos(Zero), Pos(Zero)) -> new_esEs5 29.15/12.52 new_sr(Pos(yuz5480)) -> Pos(new_primMulNat(yuz5480)) 29.15/12.52 new_primPlusNat0 -> Zero 29.15/12.52 new_esEs5 -> False 29.15/12.52 new_esEs11(Pos(Zero), Neg(Zero)) -> new_esEs5 29.15/12.52 new_esEs11(Neg(Zero), Pos(Zero)) -> new_esEs5 29.15/12.52 new_esEs7 -> True 29.15/12.52 new_esEs3(Succ(yuz200000), Zero) -> new_esEs4 29.15/12.52 new_glueVBal3Size_l(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba) -> new_sizeFM0(Branch(yuz360, yuz361, yuz362, yuz363, yuz364), h, ba) 29.15/12.52 new_sizeFM0(Branch(yuz5410, yuz5411, yuz5412, yuz5413, yuz5414), bb, bc) -> yuz5412 29.15/12.52 new_esEs2(yuz20000, Zero) -> new_esEs4 29.15/12.52 new_esEs11(Neg(Zero), Neg(Zero)) -> new_esEs5 29.15/12.52 new_primPlusNat4(Zero) -> Succ(Succ(Succ(Succ(new_primPlusNat1(Succ(Zero), Succ(Zero)))))) 29.15/12.52 new_lt0(yuz200, yuz190) -> new_esEs11(yuz200, yuz190) 29.15/12.52 new_primMulNat(Zero) -> Zero 29.15/12.52 new_primPlusNat3(Zero) -> Succ(Succ(new_primPlusNat5(new_primPlusNat0))) 29.15/12.52 new_primPlusNat6(Zero) -> Succ(Succ(new_primPlusNat1(Succ(new_primPlusNat1(Succ(Succ(Zero)), Succ(Succ(Zero)))), Succ(Zero)))) 29.15/12.52 new_esEs6(Succ(yuz19000), yuz20000) -> new_esEs3(yuz19000, yuz20000) 29.15/12.52 new_esEs11(Pos(Zero), Neg(Succ(yuz19000))) -> new_esEs4 29.15/12.52 new_esEs3(Succ(yuz200000), Succ(yuz190000)) -> new_esEs3(yuz200000, yuz190000) 29.15/12.52 new_esEs6(Zero, yuz20000) -> new_esEs7 29.15/12.52 new_esEs11(Pos(Zero), Pos(Succ(yuz19000))) -> new_esEs6(Zero, yuz19000) 29.15/12.52 new_esEs2(yuz20000, Succ(yuz19000)) -> new_esEs3(yuz20000, yuz19000) 29.15/12.52 new_primPlusNat4(Succ(yuz7200000)) -> Succ(Succ(new_primPlusNat6(yuz7200000))) 29.15/12.52 new_primPlusNat1(Succ(yuz2400), Zero) -> Succ(yuz2400) 29.15/12.52 new_primPlusNat1(Zero, Succ(yuz140)) -> Succ(yuz140) 29.15/12.52 new_esEs11(Neg(Succ(yuz20000)), Neg(yuz1900)) -> new_esEs6(yuz1900, yuz20000) 29.15/12.52 new_primMulNat(Succ(yuz54800)) -> new_primPlusNat1(new_primMulNat0(yuz54800), Succ(yuz54800)) 29.15/12.52 new_primPlusNat2(Zero) -> Succ(Succ(new_primPlusNat0)) 29.15/12.52 new_esEs11(Pos(Succ(yuz20000)), Neg(yuz1900)) -> new_esEs4 29.15/12.52 new_esEs11(Neg(Succ(yuz20000)), Pos(yuz1900)) -> new_esEs7 29.15/12.52 new_esEs4 -> False 29.15/12.52 new_primPlusNat1(Succ(yuz2400), Succ(yuz140)) -> Succ(Succ(new_primPlusNat1(yuz2400, yuz140))) 29.15/12.52 new_primPlusNat1(Zero, Zero) -> Zero 29.15/12.52 new_primPlusNat2(Succ(yuz72000)) -> Succ(Succ(new_primPlusNat3(yuz72000))) 29.15/12.52 new_sizeFM0(EmptyFM, bb, bc) -> Pos(Zero) 29.15/12.52 new_esEs3(Zero, Succ(yuz190000)) -> new_esEs7 29.15/12.52 new_esEs3(Zero, Zero) -> new_esEs5 29.15/12.52 new_sr(Neg(yuz5480)) -> Neg(new_primMulNat(yuz5480)) 29.15/12.52 new_glueVBal3Size_r(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba) -> new_sizeFM0(Branch(yuz300, yuz301, yuz302, yuz303, yuz304), h, ba) 29.15/12.52 new_primMulNat0(yuz7200) -> Succ(Succ(new_primPlusNat2(yuz7200))) 29.15/12.52 new_esEs11(Neg(Zero), Neg(Succ(yuz19000))) -> new_esEs2(yuz19000, Zero) 29.15/12.52 new_primPlusNat3(Succ(yuz720000)) -> Succ(Succ(new_primPlusNat4(yuz720000))) 29.15/12.52 new_primPlusNat5(yuz76) -> Succ(Succ(yuz76)) 29.15/12.52 new_esEs11(Neg(Zero), Pos(Succ(yuz19000))) -> new_esEs7 29.15/12.52 29.15/12.52 The set Q consists of the following terms: 29.15/12.52 29.15/12.52 new_esEs2(x0, Zero) 29.15/12.52 new_primPlusNat6(Zero) 29.15/12.52 new_esEs11(Pos(Zero), Neg(Succ(x0))) 29.15/12.52 new_esEs2(x0, Succ(x1)) 29.15/12.52 new_esEs11(Neg(Zero), Pos(Succ(x0))) 29.15/12.52 new_primPlusNat1(Succ(x0), Succ(x1)) 29.15/12.52 new_esEs11(Pos(Zero), Pos(Zero)) 29.15/12.52 new_sizeFM0(EmptyFM, x0, x1) 29.15/12.52 new_glueVBal3Size_r(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 29.15/12.52 new_esEs6(Succ(x0), x1) 29.15/12.52 new_primPlusNat2(Zero) 29.15/12.52 new_esEs11(Pos(Zero), Neg(Zero)) 29.15/12.52 new_esEs11(Neg(Zero), Pos(Zero)) 29.15/12.52 new_esEs5 29.15/12.52 new_primMulNat(Zero) 29.15/12.52 new_primPlusNat6(Succ(x0)) 29.15/12.52 new_primPlusNat1(Succ(x0), Zero) 29.15/12.52 new_esEs11(Pos(Succ(x0)), Pos(x1)) 29.15/12.52 new_esEs3(Zero, Succ(x0)) 29.15/12.52 new_primMulNat0(x0) 29.15/12.52 new_lt0(x0, x1) 29.15/12.52 new_primPlusNat1(Zero, Succ(x0)) 29.15/12.52 new_esEs11(Neg(Succ(x0)), Neg(x1)) 29.15/12.52 new_sizeFM0(Branch(x0, x1, x2, x3, x4), x5, x6) 29.15/12.52 new_primPlusNat0 29.15/12.52 new_primMulNat(Succ(x0)) 29.15/12.52 new_esEs11(Neg(Zero), Neg(Zero)) 29.15/12.52 new_primPlusNat1(Zero, Zero) 29.15/12.52 new_primPlusNat5(x0) 29.15/12.52 new_primPlusNat2(Succ(x0)) 29.15/12.52 new_primPlusNat3(Zero) 29.15/12.52 new_sr(Neg(x0)) 29.15/12.52 new_primPlusNat3(Succ(x0)) 29.15/12.52 new_esEs7 29.15/12.52 new_esEs3(Succ(x0), Succ(x1)) 29.15/12.52 new_primPlusNat4(Succ(x0)) 29.15/12.52 new_esEs3(Zero, Zero) 29.15/12.52 new_sr(Pos(x0)) 29.15/12.52 new_esEs3(Succ(x0), Zero) 29.15/12.52 new_esEs6(Zero, x0) 29.15/12.52 new_esEs11(Pos(Zero), Pos(Succ(x0))) 29.15/12.52 new_primPlusNat4(Zero) 29.15/12.52 new_esEs4 29.15/12.52 new_esEs11(Neg(Zero), Neg(Succ(x0))) 29.15/12.52 new_esEs11(Pos(Succ(x0)), Neg(x1)) 29.15/12.52 new_esEs11(Neg(Succ(x0)), Pos(x1)) 29.15/12.52 new_glueVBal3Size_l(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 29.15/12.52 29.15/12.52 We have to consider all minimal (P,Q,R)-chains. 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (16) QDPSizeChangeProof (EQUIVALENT) 29.15/12.52 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. 29.15/12.52 29.15/12.52 From the DPs we obtained the following set of size-change graphs: 29.15/12.52 *new_glueVBal3GlueVBal1(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, Branch(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644), True, h, ba) -> new_glueVBal3(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644, yuz300, yuz301, yuz302, yuz303, yuz304, h, ba) 29.15/12.52 The graph contains the following edges 10 > 1, 10 > 2, 10 > 3, 10 > 4, 10 > 5, 1 >= 6, 2 >= 7, 3 >= 8, 4 >= 9, 5 >= 10, 12 >= 11, 13 >= 12 29.15/12.52 29.15/12.52 29.15/12.52 *new_glueVBal3(yuz360, yuz361, yuz362, yuz363, yuz364, yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, h, ba) -> new_glueVBal3GlueVBal2(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, new_lt0(new_sr(new_glueVBal3Size_l(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), new_glueVBal3Size_r(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), h, ba) 29.15/12.52 The graph contains the following edges 6 >= 1, 7 >= 2, 8 >= 3, 9 >= 4, 10 >= 5, 1 >= 6, 2 >= 7, 3 >= 8, 4 >= 9, 5 >= 10, 11 >= 12, 12 >= 13 29.15/12.52 29.15/12.52 29.15/12.52 *new_glueVBal3GlueVBal2(yuz300, yuz301, yuz302, Branch(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034), yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, True, h, ba) -> new_glueVBal3GlueVBal2(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, new_lt0(new_sr(new_glueVBal3Size_l(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), new_glueVBal3Size_r(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), h, ba) 29.15/12.52 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, 12 >= 12, 13 >= 13 29.15/12.52 29.15/12.52 29.15/12.52 *new_glueVBal3GlueVBal2(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, False, h, ba) -> new_glueVBal3GlueVBal1(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, new_lt0(new_sr(new_glueVBal3Size_r(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), new_glueVBal3Size_l(yuz300, yuz301, yuz302, yuz303, yuz304, yuz360, yuz361, yuz362, yuz363, yuz364, h, ba)), h, ba) 29.15/12.52 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 29.15/12.52 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (17) 29.15/12.52 YES 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (18) 29.15/12.52 Obligation: 29.15/12.52 Q DP problem: 29.15/12.52 The TRS P consists of the following rules: 29.15/12.52 29.15/12.52 new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz43, h) 29.15/12.52 new_filterFM(yuz3, Branch(yuz40, yuz41, yuz42, yuz43, yuz44), h) -> new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) 29.15/12.52 new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz44, h) 29.15/12.52 29.15/12.52 R is empty. 29.15/12.52 Q is empty. 29.15/12.52 We have to consider all minimal (P,Q,R)-chains. 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (19) QDPSizeChangeProof (EQUIVALENT) 29.15/12.52 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. 29.15/12.52 29.15/12.52 From the DPs we obtained the following set of size-change graphs: 29.15/12.52 *new_filterFM(yuz3, Branch(yuz40, yuz41, yuz42, yuz43, yuz44), h) -> new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) 29.15/12.52 The graph contains the following edges 1 >= 1, 2 > 2, 2 > 3, 2 > 4, 2 > 5, 2 > 6, 3 >= 7 29.15/12.52 29.15/12.52 29.15/12.52 *new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz43, h) 29.15/12.52 The graph contains the following edges 1 >= 1, 5 >= 2, 7 >= 3 29.15/12.52 29.15/12.52 29.15/12.52 *new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz44, h) 29.15/12.52 The graph contains the following edges 1 >= 1, 6 >= 2, 7 >= 3 29.15/12.52 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (20) 29.15/12.52 YES 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (21) 29.15/12.52 Obligation: 29.15/12.52 Q DP problem: 29.15/12.52 The TRS P consists of the following rules: 29.15/12.52 29.15/12.52 new_primMinusNat(Succ(yuz476200), Succ(yuz1984200)) -> new_primMinusNat(yuz476200, yuz1984200) 29.15/12.52 29.15/12.52 R is empty. 29.15/12.52 Q is empty. 29.15/12.52 We have to consider all minimal (P,Q,R)-chains. 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (22) QDPSizeChangeProof (EQUIVALENT) 29.15/12.52 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. 29.15/12.52 29.15/12.52 From the DPs we obtained the following set of size-change graphs: 29.15/12.52 *new_primMinusNat(Succ(yuz476200), Succ(yuz1984200)) -> new_primMinusNat(yuz476200, yuz1984200) 29.15/12.52 The graph contains the following edges 1 > 1, 2 > 2 29.15/12.52 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (23) 29.15/12.52 YES 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (24) 29.15/12.52 Obligation: 29.15/12.52 Q DP problem: 29.15/12.52 The TRS P consists of the following rules: 29.15/12.52 29.15/12.52 new_primPlusNat(Succ(yuz2400), Succ(yuz140)) -> new_primPlusNat(yuz2400, yuz140) 29.15/12.52 29.15/12.52 R is empty. 29.15/12.52 Q is empty. 29.15/12.52 We have to consider all minimal (P,Q,R)-chains. 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (25) QDPSizeChangeProof (EQUIVALENT) 29.15/12.52 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. 29.15/12.52 29.15/12.52 From the DPs we obtained the following set of size-change graphs: 29.15/12.52 *new_primPlusNat(Succ(yuz2400), Succ(yuz140)) -> new_primPlusNat(yuz2400, yuz140) 29.15/12.52 The graph contains the following edges 1 > 1, 2 > 2 29.15/12.52 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (26) 29.15/12.52 YES 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (27) 29.15/12.52 Obligation: 29.15/12.52 Q DP problem: 29.15/12.52 The TRS P consists of the following rules: 29.15/12.52 29.15/12.52 new_glueBal2Mid_key10(yuz787, yuz788, yuz789, yuz790, yuz791, yuz792, yuz793, yuz794, yuz795, yuz796, yuz797, yuz798, yuz799, yuz800, Branch(yuz8010, yuz8011, yuz8012, yuz8013, yuz8014), h, ba) -> new_glueBal2Mid_key10(yuz787, yuz788, yuz789, yuz790, yuz791, yuz792, yuz793, yuz794, yuz795, yuz796, yuz8010, yuz8011, yuz8012, yuz8013, yuz8014, h, ba) 29.15/12.52 29.15/12.52 R is empty. 29.15/12.52 Q is empty. 29.15/12.52 We have to consider all minimal (P,Q,R)-chains. 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (28) QDPSizeChangeProof (EQUIVALENT) 29.15/12.52 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. 29.15/12.52 29.15/12.52 From the DPs we obtained the following set of size-change graphs: 29.15/12.52 *new_glueBal2Mid_key10(yuz787, yuz788, yuz789, yuz790, yuz791, yuz792, yuz793, yuz794, yuz795, yuz796, yuz797, yuz798, yuz799, yuz800, Branch(yuz8010, yuz8011, yuz8012, yuz8013, yuz8014), h, ba) -> new_glueBal2Mid_key10(yuz787, yuz788, yuz789, yuz790, yuz791, yuz792, yuz793, yuz794, yuz795, yuz796, yuz8010, yuz8011, yuz8012, yuz8013, yuz8014, h, ba) 29.15/12.52 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 29.15/12.52 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (29) 29.15/12.52 YES 29.15/12.52 29.15/12.52 ---------------------------------------- 29.15/12.52 29.15/12.52 (30) 29.15/12.52 Obligation: 29.15/12.52 Q DP problem: 29.15/12.52 The TRS P consists of the following rules: 29.15/12.52 29.15/12.52 new_addToFM_C1(yuz577, yuz578, yuz579, yuz580, yuz581, yuz582, yuz583, True, bb, bc) -> new_addToFM_C(yuz581, yuz582, yuz583, bb, bc) 29.15/12.52 new_addToFM_C2(yuz558, yuz559, yuz560, yuz561, yuz562, yuz563, yuz564, False, h, ba) -> new_addToFM_C1(yuz558, yuz559, yuz560, yuz561, yuz562, yuz563, yuz564, new_gt(yuz563, yuz558, h), h, ba) 29.15/12.52 new_addToFM_C2(yuz558, yuz559, yuz560, Branch(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614), yuz562, yuz563, yuz564, True, h, ba) -> new_addToFM_C2(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614, yuz563, yuz564, new_lt(yuz563, yuz5610, h), h, ba) 29.15/12.52 new_addToFM_C(Branch(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614), yuz563, yuz564, h, ba) -> new_addToFM_C2(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614, yuz563, yuz564, new_lt(yuz563, yuz5610, h), h, ba) 29.15/12.52 29.15/12.52 The TRS R consists of the following rules: 29.15/12.52 29.15/12.52 new_esEs11(Pos(Succ(yuz20000)), Pos(yuz1900)) -> new_esEs2(yuz20000, yuz1900) 29.15/12.52 new_esEs11(Pos(Zero), Pos(Zero)) -> new_esEs5 29.15/12.52 new_lt(yuz563, yuz5610, ty_Int) -> new_lt0(yuz563, yuz5610) 29.15/12.52 new_gt(yuz563, yuz558, ty_Ordering) -> error([]) 29.15/12.52 new_lt(yuz563, yuz5610, ty_Ordering) -> error([]) 29.15/12.52 new_esEs7 -> True 29.15/12.52 new_lt(yuz563, yuz5610, app(ty_Ratio, bd)) -> error([]) 29.15/12.52 new_esEs2(yuz20000, Zero) -> new_esEs4 29.15/12.52 new_esEs11(Neg(Zero), Neg(Zero)) -> new_esEs5 29.15/12.52 new_lt(yuz563, yuz5610, app(app(app(ty_@3, ca), cb), cc)) -> error([]) 29.15/12.52 new_esEs11(Pos(Zero), Neg(Succ(yuz19000))) -> new_esEs4 29.15/12.52 new_lt1(Char(yuz400), Char(yuz600)) -> new_esEs3(yuz400, yuz600) 29.15/12.52 new_esEs6(Zero, yuz20000) -> new_esEs7 29.15/12.52 new_gt(yuz563, yuz558, app(app(app(ty_@3, ca), cb), cc)) -> error([]) 29.15/12.52 new_esEs11(Pos(Zero), Pos(Succ(yuz19000))) -> new_esEs6(Zero, yuz19000) 29.15/12.52 new_esEs1(Zero, Succ(yuz55800)) -> new_esEs8 29.15/12.52 new_esEs2(yuz20000, Succ(yuz19000)) -> new_esEs3(yuz20000, yuz19000) 29.15/12.52 new_gt0(Pos(Zero), Pos(Zero)) -> new_esEs10 29.15/12.52 new_esEs11(Pos(Succ(yuz20000)), Neg(yuz1900)) -> new_esEs4 29.15/12.52 new_esEs11(Neg(Succ(yuz20000)), Pos(yuz1900)) -> new_esEs7 29.15/12.52 new_esEs4 -> False 29.15/12.52 new_gt0(Pos(Zero), Neg(Succ(yuz55800))) -> new_esEs9 29.15/12.52 new_esEs3(Zero, Succ(yuz190000)) -> new_esEs7 29.15/12.52 new_lt(yuz563, yuz5610, ty_Char) -> new_lt1(yuz563, yuz5610) 29.15/12.52 new_esEs8 -> False 29.15/12.52 new_lt(yuz563, yuz5610, ty_Float) -> error([]) 29.15/12.52 new_gt(yuz563, yuz558, app(app(ty_Either, cd), ce)) -> error([]) 29.15/12.52 new_gt0(Pos(Zero), Pos(Succ(yuz55800))) -> new_esEs1(Zero, Succ(yuz55800)) 29.15/12.52 new_gt(yuz563, yuz558, ty_Integer) -> error([]) 29.15/12.52 new_gt(Char(yuz5630), Char(yuz5580), ty_Char) -> new_esEs1(yuz5630, yuz5580) 29.15/12.52 new_lt(yuz563, yuz5610, app(ty_Maybe, bf)) -> error([]) 29.15/12.52 new_lt(yuz563, yuz5610, ty_Bool) -> error([]) 29.15/12.52 new_gt(yuz563, yuz558, app(ty_[], be)) -> error([]) 29.15/12.52 new_lt(yuz563, yuz5610, ty_Double) -> error([]) 29.15/12.52 new_lt(yuz563, yuz5610, app(app(ty_@2, bg), bh)) -> error([]) 29.15/12.52 new_esEs5 -> False 29.15/12.52 new_esEs11(Pos(Zero), Neg(Zero)) -> new_esEs5 29.15/12.52 new_esEs11(Neg(Zero), Pos(Zero)) -> new_esEs5 29.15/12.52 new_esEs3(Succ(yuz200000), Zero) -> new_esEs4 29.15/12.52 new_gt0(Neg(Succ(yuz56300)), Pos(yuz5580)) -> new_esEs8 29.15/12.52 new_lt(yuz563, yuz5610, ty_@0) -> error([]) 29.15/12.52 new_lt0(yuz200, yuz190) -> new_esEs11(yuz200, yuz190) 29.15/12.52 new_gt(yuz563, yuz558, app(app(ty_@2, bg), bh)) -> error([]) 29.15/12.52 new_gt(yuz563, yuz558, ty_Double) -> error([]) 29.15/12.52 new_esEs6(Succ(yuz19000), yuz20000) -> new_esEs3(yuz19000, yuz20000) 29.15/12.52 new_gt(yuz563, yuz558, ty_Bool) -> error([]) 29.15/12.52 new_lt(yuz563, yuz5610, app(ty_[], be)) -> error([]) 29.15/12.52 new_esEs3(Succ(yuz200000), Succ(yuz190000)) -> new_esEs3(yuz200000, yuz190000) 29.15/12.52 new_gt0(Pos(Zero), Neg(Zero)) -> new_esEs10 29.15/12.52 new_gt0(Neg(Zero), Pos(Zero)) -> new_esEs10 29.15/12.52 new_gt(yuz563, yuz558, ty_@0) -> error([]) 29.15/12.52 new_gt0(Pos(Succ(yuz56300)), Neg(yuz5580)) -> new_esEs9 29.15/12.52 new_lt(yuz563, yuz5610, app(app(ty_Either, cd), ce)) -> error([]) 29.15/12.52 new_gt0(Neg(Zero), Neg(Succ(yuz55800))) -> new_esEs1(Succ(yuz55800), Zero) 29.15/12.52 new_gt0(Neg(Zero), Pos(Succ(yuz55800))) -> new_esEs8 29.15/12.52 new_gt0(Neg(Succ(yuz56300)), Neg(yuz5580)) -> new_esEs1(yuz5580, Succ(yuz56300)) 29.15/12.52 new_esEs1(Zero, Zero) -> new_esEs10 29.15/12.52 new_esEs1(Succ(yuz56300), Zero) -> new_esEs9 29.15/12.52 new_gt0(Pos(Succ(yuz56300)), Pos(yuz5580)) -> new_esEs1(Succ(yuz56300), yuz5580) 29.15/12.52 new_gt0(Neg(Zero), Neg(Zero)) -> new_esEs10 29.15/12.52 new_esEs11(Neg(Succ(yuz20000)), Neg(yuz1900)) -> new_esEs6(yuz1900, yuz20000) 29.15/12.52 new_gt(yuz563, yuz558, ty_Float) -> error([]) 29.15/12.52 new_gt(yuz563, yuz558, app(ty_Maybe, bf)) -> error([]) 29.15/12.52 new_lt(yuz563, yuz5610, ty_Integer) -> error([]) 29.15/12.52 new_esEs3(Zero, Zero) -> new_esEs5 29.15/12.52 new_gt(yuz563, yuz558, ty_Int) -> new_gt0(yuz563, yuz558) 29.15/12.52 new_esEs10 -> False 29.15/12.52 new_esEs11(Neg(Zero), Neg(Succ(yuz19000))) -> new_esEs2(yuz19000, Zero) 29.15/12.52 new_esEs1(Succ(yuz56300), Succ(yuz55800)) -> new_esEs1(yuz56300, yuz55800) 29.15/12.52 new_esEs9 -> True 29.15/12.52 new_esEs11(Neg(Zero), Pos(Succ(yuz19000))) -> new_esEs7 29.15/12.52 new_gt(yuz563, yuz558, app(ty_Ratio, bd)) -> error([]) 29.15/12.52 29.15/12.52 The set Q consists of the following terms: 29.15/12.52 29.15/12.52 new_esEs2(x0, Zero) 29.15/12.52 new_esEs9 29.15/12.52 new_esEs11(Pos(Zero), Neg(Succ(x0))) 29.15/12.52 new_esEs2(x0, Succ(x1)) 29.15/12.52 new_gt(x0, x1, app(ty_[], x2)) 29.15/12.52 new_esEs11(Neg(Zero), Pos(Succ(x0))) 29.15/12.52 new_gt(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 29.15/12.52 new_esEs1(Succ(x0), Succ(x1)) 29.15/12.52 new_gt(x0, x1, app(app(ty_Either, x2), x3)) 29.15/12.52 new_gt(x0, x1, ty_Integer) 29.15/12.52 new_esEs11(Pos(Zero), Pos(Zero)) 29.15/12.52 new_esEs11(Pos(Zero), Neg(Zero)) 29.15/12.52 new_esEs11(Neg(Zero), Pos(Zero)) 29.15/12.52 new_gt(x0, x1, app(ty_Maybe, x2)) 29.15/12.52 new_esEs3(Zero, Succ(x0)) 29.15/12.52 new_lt0(x0, x1) 29.15/12.52 new_esEs11(Neg(Succ(x0)), Neg(x1)) 29.15/12.52 new_lt(x0, x1, ty_Int) 29.15/12.52 new_gt(x0, x1, ty_@0) 29.15/12.52 new_lt(x0, x1, app(ty_[], x2)) 29.15/12.52 new_gt0(Neg(Succ(x0)), Pos(x1)) 29.15/12.52 new_gt0(Pos(Succ(x0)), Neg(x1)) 29.15/12.52 new_esEs1(Succ(x0), Zero) 29.15/12.52 new_gt(x0, x1, app(app(ty_@2, x2), x3)) 29.15/12.53 new_lt(x0, x1, ty_Double) 29.15/12.53 new_gt0(Pos(Zero), Pos(Zero)) 29.15/12.53 new_esEs3(Zero, Zero) 29.15/12.53 new_esEs1(Zero, Succ(x0)) 29.15/12.53 new_esEs3(Succ(x0), Zero) 29.15/12.53 new_lt(x0, x1, app(app(ty_Either, x2), x3)) 29.15/12.53 new_gt0(Neg(Succ(x0)), Neg(x1)) 29.15/12.53 new_esEs11(Pos(Zero), Pos(Succ(x0))) 29.15/12.53 new_lt(x0, x1, ty_Char) 29.15/12.53 new_gt(x0, x1, ty_Int) 29.15/12.53 new_esEs8 29.15/12.53 new_gt0(Neg(Zero), Neg(Succ(x0))) 29.15/12.53 new_lt1(Char(x0), Char(x1)) 29.15/12.53 new_gt(x0, x1, ty_Bool) 29.15/12.53 new_lt(x0, x1, app(app(ty_@2, x2), x3)) 29.15/12.53 new_gt(x0, x1, ty_Ordering) 29.15/12.53 new_esEs1(Zero, Zero) 29.15/12.53 new_lt(x0, x1, app(ty_Ratio, x2)) 29.15/12.53 new_gt(x0, x1, ty_Float) 29.15/12.53 new_esEs6(Succ(x0), x1) 29.15/12.53 new_lt(x0, x1, ty_@0) 29.15/12.53 new_gt(Char(x0), Char(x1), ty_Char) 29.15/12.53 new_lt(x0, x1, ty_Integer) 29.15/12.53 new_esEs5 29.15/12.53 new_esEs10 29.15/12.53 new_lt(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 29.15/12.53 new_gt0(Pos(Zero), Neg(Succ(x0))) 29.15/12.53 new_gt0(Neg(Zero), Pos(Succ(x0))) 29.15/12.53 new_esEs11(Pos(Succ(x0)), Pos(x1)) 29.15/12.53 new_gt0(Pos(Zero), Neg(Zero)) 29.15/12.53 new_gt0(Neg(Zero), Pos(Zero)) 29.15/12.53 new_gt(x0, x1, app(ty_Ratio, x2)) 29.15/12.53 new_lt(x0, x1, ty_Float) 29.15/12.53 new_esEs11(Neg(Zero), Neg(Zero)) 29.15/12.53 new_lt(x0, x1, ty_Bool) 29.15/12.53 new_gt0(Pos(Succ(x0)), Pos(x1)) 29.15/12.53 new_gt0(Pos(Zero), Pos(Succ(x0))) 29.15/12.53 new_lt(x0, x1, app(ty_Maybe, x2)) 29.15/12.53 new_gt(x0, x1, ty_Double) 29.15/12.53 new_lt(x0, x1, ty_Ordering) 29.15/12.53 new_esEs7 29.15/12.53 new_esEs3(Succ(x0), Succ(x1)) 29.15/12.53 new_esEs6(Zero, x0) 29.15/12.53 new_gt0(Neg(Zero), Neg(Zero)) 29.15/12.53 new_esEs4 29.15/12.53 new_esEs11(Neg(Zero), Neg(Succ(x0))) 29.15/12.53 new_esEs11(Pos(Succ(x0)), Neg(x1)) 29.15/12.53 new_esEs11(Neg(Succ(x0)), Pos(x1)) 29.15/12.53 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (31) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_addToFM_C(Branch(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614), yuz563, yuz564, h, ba) -> new_addToFM_C2(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614, yuz563, yuz564, new_lt(yuz563, yuz5610, h), h, ba) 29.15/12.53 The graph contains the following edges 1 > 1, 1 > 2, 1 > 3, 1 > 4, 1 > 5, 2 >= 6, 3 >= 7, 4 >= 9, 5 >= 10 29.15/12.53 29.15/12.53 29.15/12.53 *new_addToFM_C2(yuz558, yuz559, yuz560, yuz561, yuz562, yuz563, yuz564, False, h, ba) -> new_addToFM_C1(yuz558, yuz559, yuz560, yuz561, yuz562, yuz563, yuz564, new_gt(yuz563, yuz558, h), h, ba) 29.15/12.53 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 9 >= 9, 10 >= 10 29.15/12.53 29.15/12.53 29.15/12.53 *new_addToFM_C1(yuz577, yuz578, yuz579, yuz580, yuz581, yuz582, yuz583, True, bb, bc) -> new_addToFM_C(yuz581, yuz582, yuz583, bb, bc) 29.15/12.53 The graph contains the following edges 5 >= 1, 6 >= 2, 7 >= 3, 9 >= 4, 10 >= 5 29.15/12.53 29.15/12.53 29.15/12.53 *new_addToFM_C2(yuz558, yuz559, yuz560, Branch(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614), yuz562, yuz563, yuz564, True, h, ba) -> new_addToFM_C2(yuz5610, yuz5611, yuz5612, yuz5613, yuz5614, yuz563, yuz564, new_lt(yuz563, yuz5610, h), h, ba) 29.15/12.53 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7, 9 >= 9, 10 >= 10 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (32) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (33) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_deleteMin(yuz300, yuz301, yuz302, Branch(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034), yuz304, h, ba) -> new_deleteMin(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, h, ba) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (34) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_deleteMin(yuz300, yuz301, yuz302, Branch(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034), yuz304, h, ba) -> new_deleteMin(yuz3030, yuz3031, yuz3032, yuz3033, yuz3034, h, ba) 29.15/12.53 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (35) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (36) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_glueBal2Mid_elt20(yuz771, yuz772, yuz773, yuz774, yuz775, yuz776, yuz777, yuz778, yuz779, yuz780, yuz781, yuz782, yuz783, Branch(yuz7840, yuz7841, yuz7842, yuz7843, yuz7844), yuz785, h, ba) -> new_glueBal2Mid_elt20(yuz771, yuz772, yuz773, yuz774, yuz775, yuz776, yuz777, yuz778, yuz779, yuz780, yuz7840, yuz7841, yuz7842, yuz7843, yuz7844, h, ba) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (37) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_glueBal2Mid_elt20(yuz771, yuz772, yuz773, yuz774, yuz775, yuz776, yuz777, yuz778, yuz779, yuz780, yuz781, yuz782, yuz783, Branch(yuz7840, yuz7841, yuz7842, yuz7843, yuz7844), yuz785, h, ba) -> new_glueBal2Mid_elt20(yuz771, yuz772, yuz773, yuz774, yuz775, yuz776, yuz777, yuz778, yuz779, yuz780, yuz7840, yuz7841, yuz7842, yuz7843, yuz7844, h, ba) 29.15/12.53 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 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (38) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (39) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_glueBal2Mid_key20(yuz724, yuz725, yuz726, yuz727, yuz728, yuz729, yuz730, yuz731, yuz732, yuz733, yuz734, yuz735, yuz736, Branch(yuz7370, yuz7371, yuz7372, yuz7373, yuz7374), yuz738, h, ba) -> new_glueBal2Mid_key20(yuz724, yuz725, yuz726, yuz727, yuz728, yuz729, yuz730, yuz731, yuz732, yuz733, yuz7370, yuz7371, yuz7372, yuz7373, yuz7374, h, ba) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (40) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_glueBal2Mid_key20(yuz724, yuz725, yuz726, yuz727, yuz728, yuz729, yuz730, yuz731, yuz732, yuz733, yuz734, yuz735, yuz736, Branch(yuz7370, yuz7371, yuz7372, yuz7373, yuz7374), yuz738, h, ba) -> new_glueBal2Mid_key20(yuz724, yuz725, yuz726, yuz727, yuz728, yuz729, yuz730, yuz731, yuz732, yuz733, yuz7370, yuz7371, yuz7372, yuz7373, yuz7374, h, ba) 29.15/12.53 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 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (41) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (42) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_deleteMax(yuz360, yuz361, yuz362, yuz363, Branch(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644), h, ba) -> new_deleteMax(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644, h, ba) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (43) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_deleteMax(yuz360, yuz361, yuz362, yuz363, Branch(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644), h, ba) -> new_deleteMax(yuz3640, yuz3641, yuz3642, yuz3643, yuz3644, h, ba) 29.15/12.53 The graph contains the following edges 5 > 1, 5 > 2, 5 > 3, 5 > 4, 5 > 5, 6 >= 6, 7 >= 7 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (44) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (45) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_mkVBalBranch3(yuz200, yuz201, yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, yuz200, yuz201, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), h, ba) 29.15/12.53 new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, Branch(yuz19830, yuz19831, yuz19832, yuz19833, yuz19834), yuz1984, yuz200, yuz201, True, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, yuz200, yuz201, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), h, ba) 29.15/12.53 new_mkVBalBranch3MkVBalBranch1(yuz1940, yuz1941, yuz1942, yuz1943, Branch(yuz19440, yuz19441, yuz19442, yuz19443, yuz19444), yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, yuz200, yuz201, True, h, ba) -> new_mkVBalBranch3(yuz200, yuz201, yuz19440, yuz19441, yuz19442, yuz19443, yuz19444, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba) 29.15/12.53 new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, yuz200, yuz201, False, h, ba) -> new_mkVBalBranch3MkVBalBranch1(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, yuz200, yuz201, new_lt0(new_sr(new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba)), new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba)), h, ba) 29.15/12.53 29.15/12.53 The TRS R consists of the following rules: 29.15/12.53 29.15/12.53 new_esEs11(Pos(Succ(yuz20000)), Pos(yuz1900)) -> new_esEs2(yuz20000, yuz1900) 29.15/12.53 new_esEs11(Pos(Zero), Pos(Zero)) -> new_esEs5 29.15/12.53 new_sr(Pos(yuz5480)) -> Pos(new_primMulNat(yuz5480)) 29.15/12.53 new_esEs7 -> True 29.15/12.53 new_sizeFM(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, h, ba) -> new_sizeFM0(Branch(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944), h, ba) 29.15/12.53 new_sizeFM0(Branch(yuz5410, yuz5411, yuz5412, yuz5413, yuz5414), h, ba) -> yuz5412 29.15/12.53 new_esEs2(yuz20000, Zero) -> new_esEs4 29.15/12.53 new_esEs11(Neg(Zero), Neg(Zero)) -> new_esEs5 29.15/12.53 new_primPlusNat3(Zero) -> Succ(Succ(new_primPlusNat5(new_primPlusNat0))) 29.15/12.53 new_primPlusNat6(Zero) -> Succ(Succ(new_primPlusNat1(Succ(new_primPlusNat1(Succ(Succ(Zero)), Succ(Succ(Zero)))), Succ(Zero)))) 29.15/12.53 new_esEs11(Pos(Zero), Neg(Succ(yuz19000))) -> new_esEs4 29.15/12.53 new_esEs6(Zero, yuz20000) -> new_esEs7 29.15/12.53 new_esEs11(Pos(Zero), Pos(Succ(yuz19000))) -> new_esEs6(Zero, yuz19000) 29.15/12.53 new_esEs2(yuz20000, Succ(yuz19000)) -> new_esEs3(yuz20000, yuz19000) 29.15/12.53 new_primPlusNat4(Succ(yuz7200000)) -> Succ(Succ(new_primPlusNat6(yuz7200000))) 29.15/12.53 new_primPlusNat1(Succ(yuz2400), Zero) -> Succ(yuz2400) 29.15/12.53 new_primPlusNat1(Zero, Succ(yuz140)) -> Succ(yuz140) 29.15/12.53 new_primMulNat(Succ(yuz54800)) -> new_primPlusNat1(new_primMulNat0(yuz54800), Succ(yuz54800)) 29.15/12.53 new_primPlusNat2(Zero) -> Succ(Succ(new_primPlusNat0)) 29.15/12.53 new_esEs11(Pos(Succ(yuz20000)), Neg(yuz1900)) -> new_esEs4 29.15/12.53 new_esEs11(Neg(Succ(yuz20000)), Pos(yuz1900)) -> new_esEs7 29.15/12.53 new_esEs4 -> False 29.15/12.53 new_primPlusNat2(Succ(yuz72000)) -> Succ(Succ(new_primPlusNat3(yuz72000))) 29.15/12.53 new_esEs3(Zero, Succ(yuz190000)) -> new_esEs7 29.15/12.53 new_primPlusNat5(yuz76) -> Succ(Succ(yuz76)) 29.15/12.53 new_primPlusNat6(Succ(yuz72000000)) -> Succ(Succ(new_primPlusNat1(Succ(new_primPlusNat1(Succ(new_primPlusNat1(Succ(Succ(Succ(yuz72000000))), Succ(Succ(Succ(yuz72000000))))), Succ(Succ(yuz72000000)))), yuz72000000))) 29.15/12.53 new_primPlusNat0 -> Zero 29.15/12.53 new_esEs5 -> False 29.15/12.53 new_esEs11(Pos(Zero), Neg(Zero)) -> new_esEs5 29.15/12.53 new_esEs11(Neg(Zero), Pos(Zero)) -> new_esEs5 29.15/12.53 new_esEs3(Succ(yuz200000), Zero) -> new_esEs4 29.15/12.53 new_primPlusNat4(Zero) -> Succ(Succ(Succ(Succ(new_primPlusNat1(Succ(Zero), Succ(Zero)))))) 29.15/12.53 new_lt0(yuz200, yuz190) -> new_esEs11(yuz200, yuz190) 29.15/12.53 new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba) -> new_sizeFM0(Branch(yuz1980, yuz1981, yuz1982, yuz1983, yuz1984), h, ba) 29.15/12.53 new_primMulNat(Zero) -> Zero 29.15/12.53 new_esEs6(Succ(yuz19000), yuz20000) -> new_esEs3(yuz19000, yuz20000) 29.15/12.53 new_esEs3(Succ(yuz200000), Succ(yuz190000)) -> new_esEs3(yuz200000, yuz190000) 29.15/12.53 new_esEs11(Neg(Succ(yuz20000)), Neg(yuz1900)) -> new_esEs6(yuz1900, yuz20000) 29.15/12.53 new_primPlusNat1(Succ(yuz2400), Succ(yuz140)) -> Succ(Succ(new_primPlusNat1(yuz2400, yuz140))) 29.15/12.53 new_primPlusNat1(Zero, Zero) -> Zero 29.15/12.53 new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba) -> new_sizeFM(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, h, ba) 29.15/12.53 new_sizeFM0(EmptyFM, h, ba) -> Pos(Zero) 29.15/12.53 new_esEs3(Zero, Zero) -> new_esEs5 29.15/12.53 new_sr(Neg(yuz5480)) -> Neg(new_primMulNat(yuz5480)) 29.15/12.53 new_primMulNat0(yuz7200) -> Succ(Succ(new_primPlusNat2(yuz7200))) 29.15/12.53 new_esEs11(Neg(Zero), Neg(Succ(yuz19000))) -> new_esEs2(yuz19000, Zero) 29.15/12.53 new_primPlusNat3(Succ(yuz720000)) -> Succ(Succ(new_primPlusNat4(yuz720000))) 29.15/12.53 new_esEs11(Neg(Zero), Pos(Succ(yuz19000))) -> new_esEs7 29.15/12.53 29.15/12.53 The set Q consists of the following terms: 29.15/12.53 29.15/12.53 new_esEs2(x0, Zero) 29.15/12.53 new_primPlusNat6(Zero) 29.15/12.53 new_mkVBalBranch3Size_r(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 29.15/12.53 new_esEs11(Pos(Zero), Neg(Succ(x0))) 29.15/12.53 new_esEs2(x0, Succ(x1)) 29.15/12.53 new_esEs11(Neg(Zero), Pos(Succ(x0))) 29.15/12.53 new_sizeFM0(EmptyFM, x0, x1) 29.15/12.53 new_primPlusNat1(Succ(x0), Succ(x1)) 29.15/12.53 new_esEs11(Pos(Zero), Pos(Zero)) 29.15/12.53 new_esEs6(Succ(x0), x1) 29.15/12.53 new_primPlusNat2(Zero) 29.15/12.53 new_esEs11(Pos(Zero), Neg(Zero)) 29.15/12.53 new_esEs11(Neg(Zero), Pos(Zero)) 29.15/12.53 new_esEs5 29.15/12.53 new_primMulNat(Zero) 29.15/12.53 new_primPlusNat6(Succ(x0)) 29.15/12.53 new_primPlusNat1(Succ(x0), Zero) 29.15/12.53 new_esEs11(Pos(Succ(x0)), Pos(x1)) 29.15/12.53 new_esEs3(Zero, Succ(x0)) 29.15/12.53 new_primMulNat0(x0) 29.15/12.53 new_lt0(x0, x1) 29.15/12.53 new_primPlusNat1(Zero, Succ(x0)) 29.15/12.53 new_esEs11(Neg(Succ(x0)), Neg(x1)) 29.15/12.53 new_primPlusNat0 29.15/12.53 new_primMulNat(Succ(x0)) 29.15/12.53 new_esEs11(Neg(Zero), Neg(Zero)) 29.15/12.53 new_primPlusNat1(Zero, Zero) 29.15/12.53 new_primPlusNat5(x0) 29.15/12.53 new_primPlusNat2(Succ(x0)) 29.15/12.53 new_primPlusNat3(Zero) 29.15/12.53 new_sr(Neg(x0)) 29.15/12.53 new_primPlusNat3(Succ(x0)) 29.15/12.53 new_esEs7 29.15/12.53 new_esEs3(Succ(x0), Succ(x1)) 29.15/12.53 new_primPlusNat4(Succ(x0)) 29.15/12.53 new_esEs3(Zero, Zero) 29.15/12.53 new_sr(Pos(x0)) 29.15/12.53 new_esEs3(Succ(x0), Zero) 29.15/12.53 new_esEs6(Zero, x0) 29.15/12.53 new_esEs11(Pos(Zero), Pos(Succ(x0))) 29.15/12.53 new_mkVBalBranch3Size_l(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 29.15/12.53 new_primPlusNat4(Zero) 29.15/12.53 new_sizeFM(x0, x1, x2, x3, x4, x5, x6) 29.15/12.53 new_sizeFM0(Branch(x0, x1, x2, x3, x4), x5, x6) 29.15/12.53 new_esEs4 29.15/12.53 new_esEs11(Neg(Zero), Neg(Succ(x0))) 29.15/12.53 new_esEs11(Pos(Succ(x0)), Neg(x1)) 29.15/12.53 new_esEs11(Neg(Succ(x0)), Pos(x1)) 29.15/12.53 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (46) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_mkVBalBranch3MkVBalBranch1(yuz1940, yuz1941, yuz1942, yuz1943, Branch(yuz19440, yuz19441, yuz19442, yuz19443, yuz19444), yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, yuz200, yuz201, True, h, ba) -> new_mkVBalBranch3(yuz200, yuz201, yuz19440, yuz19441, yuz19442, yuz19443, yuz19444, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba) 29.15/12.53 The graph contains the following edges 11 >= 1, 12 >= 2, 5 > 3, 5 > 4, 5 > 5, 5 > 6, 5 > 7, 6 >= 8, 7 >= 9, 8 >= 10, 9 >= 11, 10 >= 12, 14 >= 13, 15 >= 14 29.15/12.53 29.15/12.53 29.15/12.53 *new_mkVBalBranch3(yuz200, yuz201, yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, yuz200, yuz201, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), h, ba) 29.15/12.53 The graph contains the following edges 3 >= 1, 4 >= 2, 5 >= 3, 6 >= 4, 7 >= 5, 8 >= 6, 9 >= 7, 10 >= 8, 11 >= 9, 12 >= 10, 1 >= 11, 2 >= 12, 13 >= 14, 14 >= 15 29.15/12.53 29.15/12.53 29.15/12.53 *new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, Branch(yuz19830, yuz19831, yuz19832, yuz19833, yuz19834), yuz1984, yuz200, yuz201, True, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, yuz200, yuz201, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz19830, yuz19831, yuz19832, yuz19833, yuz19834, h, ba)), h, ba) 29.15/12.53 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, 11 >= 11, 12 >= 12, 14 >= 14, 15 >= 15 29.15/12.53 29.15/12.53 29.15/12.53 *new_mkVBalBranch3MkVBalBranch2(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, yuz200, yuz201, False, h, ba) -> new_mkVBalBranch3MkVBalBranch1(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, yuz200, yuz201, new_lt0(new_sr(new_mkVBalBranch3Size_r(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba)), new_mkVBalBranch3Size_l(yuz1940, yuz1941, yuz1942, yuz1943, yuz1944, yuz1980, yuz1981, yuz1982, yuz1983, yuz1984, h, ba)), h, ba) 29.15/12.53 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 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (47) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (48) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_glueBal2Mid_elt10(yuz803, yuz804, yuz805, yuz806, yuz807, yuz808, yuz809, yuz810, yuz811, yuz812, yuz813, yuz814, yuz815, yuz816, Branch(yuz8170, yuz8171, yuz8172, yuz8173, yuz8174), h, ba) -> new_glueBal2Mid_elt10(yuz803, yuz804, yuz805, yuz806, yuz807, yuz808, yuz809, yuz810, yuz811, yuz812, yuz8170, yuz8171, yuz8172, yuz8173, yuz8174, h, ba) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (49) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_glueBal2Mid_elt10(yuz803, yuz804, yuz805, yuz806, yuz807, yuz808, yuz809, yuz810, yuz811, yuz812, yuz813, yuz814, yuz815, yuz816, Branch(yuz8170, yuz8171, yuz8172, yuz8173, yuz8174), h, ba) -> new_glueBal2Mid_elt10(yuz803, yuz804, yuz805, yuz806, yuz807, yuz808, yuz809, yuz810, yuz811, yuz812, yuz8170, yuz8171, yuz8172, yuz8173, yuz8174, h, ba) 29.15/12.53 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 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (50) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (51) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_esEs0(Succ(yuz200000), Succ(yuz190000)) -> new_esEs0(yuz200000, yuz190000) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (52) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_esEs0(Succ(yuz200000), Succ(yuz190000)) -> new_esEs0(yuz200000, yuz190000) 29.15/12.53 The graph contains the following edges 1 > 1, 2 > 2 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (53) 29.15/12.53 YES 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (54) 29.15/12.53 Obligation: 29.15/12.53 Q DP problem: 29.15/12.53 The TRS P consists of the following rules: 29.15/12.53 29.15/12.53 new_esEs(Succ(yuz56300), Succ(yuz55800)) -> new_esEs(yuz56300, yuz55800) 29.15/12.53 29.15/12.53 R is empty. 29.15/12.53 Q is empty. 29.15/12.53 We have to consider all minimal (P,Q,R)-chains. 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (55) QDPSizeChangeProof (EQUIVALENT) 29.15/12.53 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. 29.15/12.53 29.15/12.53 From the DPs we obtained the following set of size-change graphs: 29.15/12.53 *new_esEs(Succ(yuz56300), Succ(yuz55800)) -> new_esEs(yuz56300, yuz55800) 29.15/12.53 The graph contains the following edges 1 > 1, 2 > 2 29.15/12.53 29.15/12.53 29.15/12.53 ---------------------------------------- 29.15/12.53 29.15/12.53 (56) 29.15/12.53 YES 29.23/12.57 EOF