22.98/10.30 YES 25.73/11.03 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 25.73/11.03 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 25.73/11.03 25.73/11.03 25.73/11.03 H-Termination with start terms of the given HASKELL could be proven: 25.73/11.03 25.73/11.03 (0) HASKELL 25.73/11.03 (1) LR [EQUIVALENT, 0 ms] 25.73/11.03 (2) HASKELL 25.73/11.03 (3) CR [EQUIVALENT, 0 ms] 25.73/11.03 (4) HASKELL 25.73/11.03 (5) BR [EQUIVALENT, 0 ms] 25.73/11.03 (6) HASKELL 25.73/11.03 (7) COR [EQUIVALENT, 11 ms] 25.73/11.03 (8) HASKELL 25.73/11.03 (9) LetRed [EQUIVALENT, 0 ms] 25.73/11.03 (10) HASKELL 25.73/11.03 (11) NumRed [SOUND, 2 ms] 25.73/11.03 (12) HASKELL 25.73/11.03 (13) Narrow [SOUND, 0 ms] 25.73/11.03 (14) AND 25.73/11.03 (15) QDP 25.73/11.03 (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (17) YES 25.73/11.03 (18) QDP 25.73/11.03 (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (20) YES 25.73/11.03 (21) QDP 25.73/11.03 (22) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (23) YES 25.73/11.03 (24) QDP 25.73/11.03 (25) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (26) YES 25.73/11.03 (27) QDP 25.73/11.03 (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (29) YES 25.73/11.03 (30) QDP 25.73/11.03 (31) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (32) YES 25.73/11.03 (33) QDP 25.73/11.03 (34) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (35) YES 25.73/11.03 (36) QDP 25.73/11.03 (37) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (38) YES 25.73/11.03 (39) QDP 25.73/11.03 (40) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (41) YES 25.73/11.03 (42) QDP 25.73/11.03 (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (44) YES 25.73/11.03 (45) QDP 25.73/11.03 (46) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (47) YES 25.73/11.03 (48) QDP 25.73/11.03 (49) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (50) YES 25.73/11.03 (51) QDP 25.73/11.03 (52) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (53) YES 25.73/11.03 (54) QDP 25.73/11.03 (55) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (56) YES 25.73/11.03 (57) QDP 25.73/11.03 (58) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.73/11.03 (59) YES 25.73/11.03 25.73/11.03 25.73/11.03 ---------------------------------------- 25.73/11.03 25.73/11.03 (0) 25.73/11.03 Obligation: 25.73/11.03 mainModule Main 25.73/11.03 module FiniteMap where { 25.73/11.03 import qualified Main; 25.73/11.03 import qualified Maybe; 25.73/11.03 import qualified Prelude; 25.73/11.03 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 25.73/11.03 25.73/11.03 instance (Eq a, Eq b) => Eq FiniteMap a b where { 25.73/11.03 } 25.73/11.03 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 25.73/11.03 addToFM fm key elt = addToFM_C (\old new ->new) fm key elt; 25.73/11.03 25.73/11.03 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 25.73/11.03 addToFM_C combiner EmptyFM key elt = unitFM key elt; 25.73/11.03 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 25.73/11.03 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 25.73/11.03 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.73/11.03 25.73/11.03 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.73/11.03 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 25.73/11.03 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.73/11.03 25.73/11.03 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 25.73/11.03 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 25.73/11.03 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.73/11.03 25.73/11.03 emptyFM :: FiniteMap a b; 25.73/11.03 emptyFM = EmptyFM; 25.73/11.03 25.73/11.03 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 25.73/11.03 filterFM p EmptyFM = emptyFM; 25.73/11.03 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 25.73/11.03 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.73/11.03 25.73/11.03 findMax :: FiniteMap b a -> (b,a); 25.73/11.03 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 25.73/11.03 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 25.73/11.03 25.73/11.03 findMin :: FiniteMap b a -> (b,a); 25.73/11.03 findMin (Branch key elt _ EmptyFM _) = (key,elt); 25.73/11.03 findMin (Branch key elt _ fm_l _) = findMin fm_l; 25.73/11.03 25.73/11.03 glueBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.03 glueBal EmptyFM fm2 = fm2; 25.73/11.03 glueBal fm1 EmptyFM = fm1; 25.73/11.03 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 25.73/11.03 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 25.73/11.03 mid_elt1 = (\(_,mid_elt1) ->mid_elt1) vv2; 25.73/11.03 mid_elt2 = (\(_,mid_elt2) ->mid_elt2) vv3; 25.73/11.03 mid_key1 = (\(mid_key1,_) ->mid_key1) vv2; 25.73/11.03 mid_key2 = (\(mid_key2,_) ->mid_key2) vv3; 25.73/11.03 vv2 = findMax fm1; 25.73/11.03 vv3 = findMin fm2; 25.73/11.03 }; 25.73/11.03 25.73/11.03 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.03 glueVBal EmptyFM fm2 = fm2; 25.73/11.03 glueVBal fm1 EmptyFM = fm1; 25.73/11.03 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 25.73/11.03 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 25.73/11.03 | otherwise = glueBal fm_l fm_r where { 25.73/11.03 size_l = sizeFM fm_l; 25.73/11.03 size_r = sizeFM fm_r; 25.73/11.03 }; 25.73/11.03 25.73/11.03 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.03 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 25.73/11.03 | size_r > sIZE_RATIO * size_l = case fm_R of { 25.73/11.03 Branch _ _ _ fm_rl fm_rr | sizeFM fm_rl < 2 * sizeFM fm_rr -> single_L fm_L fm_R 25.73/11.03 | otherwise -> double_L fm_L fm_R; 25.73/11.03 } 25.73/11.03 | size_l > sIZE_RATIO * size_r = case fm_L of { 25.73/11.03 Branch _ _ _ fm_ll fm_lr | sizeFM fm_lr < 2 * sizeFM fm_ll -> single_R fm_L fm_R 25.73/11.03 | otherwise -> double_R fm_L fm_R; 25.73/11.03 } 25.73/11.03 | otherwise = mkBranch 2 key elt fm_L fm_R where { 25.73/11.03 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); 25.73/11.03 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); 25.73/11.03 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; 25.73/11.03 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); 25.73/11.03 size_l = sizeFM fm_L; 25.73/11.03 size_r = sizeFM fm_R; 25.73/11.03 }; 25.73/11.03 25.73/11.03 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.03 mkBranch which key elt fm_l fm_r = let { 25.73/11.03 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.73/11.03 } in result where { 25.73/11.03 balance_ok = True; 25.73/11.03 left_ok = case fm_l of { 25.73/11.03 EmptyFM-> True; 25.73/11.03 Branch left_key _ _ _ _-> let { 25.73/11.03 biggest_left_key = fst (findMax fm_l); 25.73/11.03 } in biggest_left_key < key; 25.73/11.03 } ; 25.73/11.03 left_size = sizeFM fm_l; 25.73/11.03 right_ok = case fm_r of { 25.73/11.03 EmptyFM-> True; 25.73/11.03 Branch right_key _ _ _ _-> let { 25.73/11.03 smallest_right_key = fst (findMin fm_r); 25.73/11.03 } in key < smallest_right_key; 25.73/11.03 } ; 25.73/11.03 right_size = sizeFM fm_r; 25.73/11.03 unbox :: Int -> Int; 25.73/11.03 unbox x = x; 25.73/11.03 }; 25.73/11.03 25.73/11.03 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.03 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 25.73/11.03 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 25.73/11.03 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 25.73/11.03 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 25.73/11.03 | otherwise = mkBranch 13 key elt fm_l fm_r where { 25.73/11.03 size_l = sizeFM fm_l; 25.73/11.03 size_r = sizeFM fm_r; 25.73/11.03 }; 25.73/11.03 25.73/11.03 sIZE_RATIO :: Int; 25.73/11.03 sIZE_RATIO = 5; 25.73/11.03 25.73/11.03 sizeFM :: FiniteMap b a -> Int; 25.73/11.03 sizeFM EmptyFM = 0; 25.73/11.03 sizeFM (Branch _ _ size _ _) = size; 25.73/11.03 25.73/11.03 unitFM :: a -> b -> FiniteMap a b; 25.73/11.03 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 25.73/11.03 25.73/11.03 } 25.73/11.03 module Maybe where { 25.73/11.03 import qualified FiniteMap; 25.73/11.03 import qualified Main; 25.73/11.03 import qualified Prelude; 25.73/11.03 } 25.73/11.03 module Main where { 25.73/11.03 import qualified FiniteMap; 25.73/11.03 import qualified Maybe; 25.73/11.03 import qualified Prelude; 25.73/11.03 } 25.73/11.03 25.73/11.03 ---------------------------------------- 25.73/11.03 25.73/11.03 (1) LR (EQUIVALENT) 25.73/11.03 Lambda Reductions: 25.73/11.03 The following Lambda expression 25.73/11.03 "\oldnew->new" 25.73/11.03 is transformed to 25.73/11.03 "addToFM0 old new = new; 25.73/11.03 " 25.73/11.03 The following Lambda expression 25.73/11.03 "\(_,mid_elt2)->mid_elt2" 25.73/11.03 is transformed to 25.73/11.03 "mid_elt20 (_,mid_elt2) = mid_elt2; 25.73/11.03 " 25.73/11.03 The following Lambda expression 25.73/11.03 "\(mid_key2,_)->mid_key2" 25.73/11.03 is transformed to 25.73/11.03 "mid_key20 (mid_key2,_) = mid_key2; 25.73/11.03 " 25.73/11.03 The following Lambda expression 25.73/11.03 "\(mid_key1,_)->mid_key1" 25.73/11.03 is transformed to 25.73/11.03 "mid_key10 (mid_key1,_) = mid_key1; 25.73/11.03 " 25.73/11.03 The following Lambda expression 25.73/11.03 "\(_,mid_elt1)->mid_elt1" 25.73/11.03 is transformed to 25.73/11.03 "mid_elt10 (_,mid_elt1) = mid_elt1; 25.73/11.03 " 25.73/11.03 25.73/11.03 ---------------------------------------- 25.73/11.03 25.73/11.03 (2) 25.73/11.03 Obligation: 25.73/11.03 mainModule Main 25.73/11.04 module FiniteMap where { 25.73/11.04 import qualified Main; 25.73/11.04 import qualified Maybe; 25.73/11.04 import qualified Prelude; 25.73/11.04 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 25.73/11.04 25.73/11.04 instance (Eq a, Eq b) => Eq FiniteMap a b where { 25.73/11.04 } 25.73/11.04 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 25.73/11.04 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 25.73/11.04 25.73/11.04 addToFM0 old new = new; 25.73/11.04 25.73/11.04 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 25.73/11.04 addToFM_C combiner EmptyFM key elt = unitFM key elt; 25.73/11.04 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 25.73/11.04 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 25.73/11.04 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.73/11.04 25.73/11.04 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.73/11.04 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 25.73/11.04 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.73/11.04 25.73/11.04 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 25.73/11.04 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 25.73/11.04 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.73/11.04 25.73/11.04 emptyFM :: FiniteMap a b; 25.73/11.04 emptyFM = EmptyFM; 25.73/11.04 25.73/11.04 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 25.73/11.04 filterFM p EmptyFM = emptyFM; 25.73/11.04 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 25.73/11.04 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.73/11.04 25.73/11.04 findMax :: FiniteMap a b -> (a,b); 25.73/11.04 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 25.73/11.04 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 25.73/11.04 25.73/11.04 findMin :: FiniteMap b a -> (b,a); 25.73/11.04 findMin (Branch key elt _ EmptyFM _) = (key,elt); 25.73/11.04 findMin (Branch key elt _ fm_l _) = findMin fm_l; 25.73/11.04 25.73/11.04 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.73/11.04 glueBal EmptyFM fm2 = fm2; 25.73/11.04 glueBal fm1 EmptyFM = fm1; 25.73/11.04 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 25.73/11.04 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 25.73/11.04 mid_elt1 = mid_elt10 vv2; 25.73/11.04 mid_elt10 (_,mid_elt1) = mid_elt1; 25.73/11.04 mid_elt2 = mid_elt20 vv3; 25.73/11.04 mid_elt20 (_,mid_elt2) = mid_elt2; 25.73/11.04 mid_key1 = mid_key10 vv2; 25.73/11.04 mid_key10 (mid_key1,_) = mid_key1; 25.73/11.04 mid_key2 = mid_key20 vv3; 25.73/11.04 mid_key20 (mid_key2,_) = mid_key2; 25.73/11.04 vv2 = findMax fm1; 25.73/11.04 vv3 = findMin fm2; 25.73/11.04 }; 25.73/11.04 25.73/11.04 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.04 glueVBal EmptyFM fm2 = fm2; 25.73/11.04 glueVBal fm1 EmptyFM = fm1; 25.73/11.04 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 25.73/11.04 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 25.73/11.04 | otherwise = glueBal fm_l fm_r where { 25.73/11.04 size_l = sizeFM fm_l; 25.73/11.04 size_r = sizeFM fm_r; 25.73/11.04 }; 25.73/11.04 25.73/11.04 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.04 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 25.73/11.04 | size_r > sIZE_RATIO * size_l = case fm_R of { 25.73/11.04 Branch _ _ _ fm_rl fm_rr | sizeFM fm_rl < 2 * sizeFM fm_rr -> single_L fm_L fm_R 25.73/11.04 | otherwise -> double_L fm_L fm_R; 25.73/11.04 } 25.73/11.04 | size_l > sIZE_RATIO * size_r = case fm_L of { 25.73/11.04 Branch _ _ _ fm_ll fm_lr | sizeFM fm_lr < 2 * sizeFM fm_ll -> single_R fm_L fm_R 25.73/11.04 | otherwise -> double_R fm_L fm_R; 25.73/11.04 } 25.73/11.04 | otherwise = mkBranch 2 key elt fm_L fm_R where { 25.73/11.04 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); 25.73/11.04 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); 25.73/11.04 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; 25.73/11.04 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); 25.73/11.04 size_l = sizeFM fm_L; 25.73/11.04 size_r = sizeFM fm_R; 25.73/11.04 }; 25.73/11.04 25.73/11.04 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.04 mkBranch which key elt fm_l fm_r = let { 25.73/11.04 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.73/11.04 } in result where { 25.73/11.04 balance_ok = True; 25.73/11.04 left_ok = case fm_l of { 25.73/11.04 EmptyFM-> True; 25.73/11.04 Branch left_key _ _ _ _-> let { 25.73/11.04 biggest_left_key = fst (findMax fm_l); 25.73/11.04 } in biggest_left_key < key; 25.73/11.04 } ; 25.73/11.04 left_size = sizeFM fm_l; 25.73/11.04 right_ok = case fm_r of { 25.73/11.04 EmptyFM-> True; 25.73/11.04 Branch right_key _ _ _ _-> let { 25.73/11.04 smallest_right_key = fst (findMin fm_r); 25.73/11.04 } in key < smallest_right_key; 25.73/11.04 } ; 25.73/11.04 right_size = sizeFM fm_r; 25.73/11.04 unbox :: Int -> Int; 25.73/11.04 unbox x = x; 25.73/11.04 }; 25.73/11.04 25.73/11.04 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.73/11.04 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 25.73/11.04 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 25.73/11.04 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 25.73/11.04 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 25.73/11.04 | otherwise = mkBranch 13 key elt fm_l fm_r where { 25.73/11.04 size_l = sizeFM fm_l; 25.73/11.04 size_r = sizeFM fm_r; 25.73/11.04 }; 25.73/11.04 25.73/11.04 sIZE_RATIO :: Int; 25.73/11.04 sIZE_RATIO = 5; 25.73/11.04 25.73/11.04 sizeFM :: FiniteMap a b -> Int; 25.73/11.04 sizeFM EmptyFM = 0; 25.73/11.04 sizeFM (Branch _ _ size _ _) = size; 25.73/11.04 25.73/11.04 unitFM :: b -> a -> FiniteMap b a; 25.73/11.04 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 25.73/11.04 25.73/11.04 } 25.73/11.04 module Maybe where { 25.73/11.04 import qualified FiniteMap; 25.73/11.04 import qualified Main; 25.73/11.04 import qualified Prelude; 25.73/11.04 } 25.73/11.04 module Main where { 25.73/11.04 import qualified FiniteMap; 25.73/11.04 import qualified Maybe; 25.73/11.04 import qualified Prelude; 25.73/11.04 } 25.73/11.04 25.73/11.04 ---------------------------------------- 25.73/11.04 25.73/11.04 (3) CR (EQUIVALENT) 25.73/11.04 Case Reductions: 25.73/11.04 The following Case expression 25.73/11.04 "case fm_r of { 25.73/11.04 EmptyFM -> True; 25.73/11.04 Branch right_key _ _ _ _ -> let { 25.73/11.04 smallest_right_key = fst (findMin fm_r); 25.73/11.04 } in key < smallest_right_key} 25.73/11.04 " 25.73/11.04 is transformed to 25.73/11.04 "right_ok0 fm_r key EmptyFM = True; 25.73/11.04 right_ok0 fm_r key (Branch right_key _ _ _ _) = let { 25.73/11.04 smallest_right_key = fst (findMin fm_r); 25.73/11.04 } in key < smallest_right_key; 25.73/11.04 " 25.73/11.04 The following Case expression 25.73/11.04 "case fm_l of { 25.73/11.04 EmptyFM -> True; 25.73/11.04 Branch left_key _ _ _ _ -> let { 25.73/11.04 biggest_left_key = fst (findMax fm_l); 25.73/11.04 } in biggest_left_key < key} 25.73/11.04 " 25.73/11.04 is transformed to 25.73/11.04 "left_ok0 fm_l key EmptyFM = True; 25.73/11.04 left_ok0 fm_l key (Branch left_key _ _ _ _) = let { 25.73/11.04 biggest_left_key = fst (findMax fm_l); 25.73/11.04 } in biggest_left_key < key; 25.73/11.04 " 25.73/11.04 The following Case expression 25.73/11.04 "case fm_R of { 25.73/11.04 Branch _ _ _ fm_rl fm_rr |sizeFM fm_rl < 2 * sizeFM fm_rrsingle_L fm_L fm_R|otherwisedouble_L fm_L fm_R} 25.73/11.04 " 25.73/11.04 is transformed to 25.73/11.04 "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; 25.73/11.04 " 25.73/11.04 The following Case expression 25.73/11.04 "case fm_L of { 25.73/11.04 Branch _ _ _ fm_ll fm_lr |sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R} 25.73/11.04 " 25.73/11.04 is transformed to 25.73/11.04 "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; 25.73/11.04 " 25.73/11.04 25.73/11.04 ---------------------------------------- 25.73/11.04 25.73/11.04 (4) 25.73/11.04 Obligation: 25.73/11.04 mainModule Main 25.73/11.04 module FiniteMap where { 25.73/11.04 import qualified Main; 25.73/11.04 import qualified Maybe; 25.73/11.04 import qualified Prelude; 25.73/11.04 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 25.73/11.04 25.73/11.04 instance (Eq a, Eq b) => Eq FiniteMap b a where { 25.73/11.04 } 25.73/11.04 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 25.73/11.04 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 25.73/11.04 25.73/11.04 addToFM0 old new = new; 25.73/11.04 25.73/11.04 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 25.73/11.04 addToFM_C combiner EmptyFM key elt = unitFM key elt; 25.73/11.04 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 25.73/11.04 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 25.73/11.04 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.73/11.04 25.73/11.04 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.73/11.04 deleteMax (Branch key elt _ fm_l EmptyFM) = fm_l; 25.73/11.04 deleteMax (Branch key elt _ fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.92/11.06 25.92/11.06 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 25.92/11.06 deleteMin (Branch key elt _ EmptyFM fm_r) = fm_r; 25.92/11.06 deleteMin (Branch key elt _ fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.92/11.06 25.92/11.06 emptyFM :: FiniteMap b a; 25.92/11.06 emptyFM = EmptyFM; 25.92/11.06 25.92/11.06 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 filterFM p EmptyFM = emptyFM; 25.92/11.06 filterFM p (Branch key elt _ fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 25.92/11.06 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.92/11.06 25.92/11.06 findMax :: FiniteMap b a -> (b,a); 25.92/11.06 findMax (Branch key elt _ _ EmptyFM) = (key,elt); 25.92/11.06 findMax (Branch key elt _ _ fm_r) = findMax fm_r; 25.92/11.06 25.92/11.06 findMin :: FiniteMap b a -> (b,a); 25.92/11.06 findMin (Branch key elt _ EmptyFM _) = (key,elt); 25.92/11.06 findMin (Branch key elt _ fm_l _) = findMin fm_l; 25.92/11.06 25.92/11.06 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 glueBal EmptyFM fm2 = fm2; 25.92/11.06 glueBal fm1 EmptyFM = fm1; 25.92/11.06 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 25.92/11.06 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 25.92/11.06 mid_elt1 = mid_elt10 vv2; 25.92/11.06 mid_elt10 (_,mid_elt1) = mid_elt1; 25.92/11.06 mid_elt2 = mid_elt20 vv3; 25.92/11.06 mid_elt20 (_,mid_elt2) = mid_elt2; 25.92/11.06 mid_key1 = mid_key10 vv2; 25.92/11.06 mid_key10 (mid_key1,_) = mid_key1; 25.92/11.06 mid_key2 = mid_key20 vv3; 25.92/11.06 mid_key20 (mid_key2,_) = mid_key2; 25.92/11.06 vv2 = findMax fm1; 25.92/11.06 vv3 = findMin fm2; 25.92/11.06 }; 25.92/11.06 25.92/11.06 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.92/11.06 glueVBal EmptyFM fm2 = fm2; 25.92/11.06 glueVBal fm1 EmptyFM = fm1; 25.92/11.06 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 25.92/11.06 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (glueVBal fm_lr fm_r) 25.92/11.06 | otherwise = glueBal fm_l fm_r where { 25.92/11.06 size_l = sizeFM fm_l; 25.92/11.06 size_r = sizeFM fm_r; 25.92/11.06 }; 25.92/11.06 25.92/11.06 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.92/11.06 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 25.92/11.06 | size_r > sIZE_RATIO * size_l = mkBalBranch0 fm_L fm_R fm_R 25.92/11.06 | size_l > sIZE_RATIO * size_r = mkBalBranch1 fm_L fm_R fm_L 25.92/11.06 | otherwise = mkBranch 2 key elt fm_L fm_R where { 25.92/11.06 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); 25.92/11.06 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); 25.92/11.06 mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr) | sizeFM fm_rl < 2 * sizeFM fm_rr = single_L fm_L fm_R 25.92/11.06 | otherwise = double_L fm_L fm_R; 25.92/11.06 mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr) | sizeFM fm_lr < 2 * sizeFM fm_ll = single_R fm_L fm_R 25.92/11.06 | otherwise = double_R fm_L fm_R; 25.92/11.06 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; 25.92/11.06 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); 25.92/11.06 size_l = sizeFM fm_L; 25.92/11.06 size_r = sizeFM fm_R; 25.92/11.06 }; 25.92/11.06 25.92/11.06 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.92/11.06 mkBranch which key elt fm_l fm_r = let { 25.92/11.06 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.92/11.06 } in result where { 25.92/11.06 balance_ok = True; 25.92/11.06 left_ok = left_ok0 fm_l key fm_l; 25.92/11.06 left_ok0 fm_l key EmptyFM = True; 25.92/11.06 left_ok0 fm_l key (Branch left_key _ _ _ _) = let { 25.92/11.06 biggest_left_key = fst (findMax fm_l); 25.92/11.06 } in biggest_left_key < key; 25.92/11.06 left_size = sizeFM fm_l; 25.92/11.06 right_ok = right_ok0 fm_r key fm_r; 25.92/11.06 right_ok0 fm_r key EmptyFM = True; 25.92/11.06 right_ok0 fm_r key (Branch right_key _ _ _ _) = let { 25.92/11.06 smallest_right_key = fst (findMin fm_r); 25.92/11.06 } in key < smallest_right_key; 25.92/11.06 right_size = sizeFM fm_r; 25.92/11.06 unbox :: Int -> Int; 25.92/11.06 unbox x = x; 25.92/11.06 }; 25.92/11.06 25.92/11.06 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 25.92/11.06 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 25.92/11.06 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 25.92/11.06 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 25.92/11.06 | sIZE_RATIO * size_r < size_l = mkBalBranch key_l elt_l fm_ll (mkVBalBranch key elt fm_lr fm_r) 25.92/11.06 | otherwise = mkBranch 13 key elt fm_l fm_r where { 25.92/11.06 size_l = sizeFM fm_l; 25.92/11.06 size_r = sizeFM fm_r; 25.92/11.06 }; 25.92/11.06 25.92/11.06 sIZE_RATIO :: Int; 25.92/11.06 sIZE_RATIO = 5; 25.92/11.06 25.92/11.06 sizeFM :: FiniteMap a b -> Int; 25.92/11.06 sizeFM EmptyFM = 0; 25.92/11.06 sizeFM (Branch _ _ size _ _) = size; 25.92/11.06 25.92/11.06 unitFM :: b -> a -> FiniteMap b a; 25.92/11.06 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 25.92/11.06 25.92/11.06 } 25.92/11.06 module Maybe where { 25.92/11.06 import qualified FiniteMap; 25.92/11.06 import qualified Main; 25.92/11.06 import qualified Prelude; 25.92/11.06 } 25.92/11.06 module Main where { 25.92/11.06 import qualified FiniteMap; 25.92/11.06 import qualified Maybe; 25.92/11.06 import qualified Prelude; 25.92/11.06 } 25.92/11.06 25.92/11.06 ---------------------------------------- 25.92/11.06 25.92/11.06 (5) BR (EQUIVALENT) 25.92/11.06 Replaced joker patterns by fresh variables and removed binding patterns. 25.92/11.06 25.92/11.06 Binding Reductions: 25.92/11.06 The bind variable of the following binding Pattern 25.92/11.06 "fm_l@(Branch wu wv ww wx wy)" 25.92/11.06 is replaced by the following term 25.92/11.06 "Branch wu wv ww wx wy" 25.92/11.06 The bind variable of the following binding Pattern 25.92/11.06 "fm_r@(Branch xu xv xw xx xy)" 25.92/11.06 is replaced by the following term 25.92/11.06 "Branch xu xv xw xx xy" 25.92/11.06 The bind variable of the following binding Pattern 25.92/11.06 "fm_l@(Branch vxu vxv vxw vxx vxy)" 25.92/11.06 is replaced by the following term 25.92/11.06 "Branch vxu vxv vxw vxx vxy" 25.92/11.06 The bind variable of the following binding Pattern 25.92/11.06 "fm_r@(Branch vyu vyv vyw vyx vyy)" 25.92/11.06 is replaced by the following term 25.92/11.06 "Branch vyu vyv vyw vyx vyy" 25.92/11.06 25.92/11.06 ---------------------------------------- 25.92/11.06 25.92/11.06 (6) 25.92/11.06 Obligation: 25.92/11.06 mainModule Main 25.92/11.06 module FiniteMap where { 25.92/11.06 import qualified Main; 25.92/11.06 import qualified Maybe; 25.92/11.06 import qualified Prelude; 25.92/11.06 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 25.92/11.06 25.92/11.06 instance (Eq a, Eq b) => Eq FiniteMap b a where { 25.92/11.06 } 25.92/11.06 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 25.92/11.06 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 25.92/11.06 25.92/11.06 addToFM0 old new = new; 25.92/11.06 25.92/11.06 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 25.92/11.06 addToFM_C combiner EmptyFM key elt = unitFM key elt; 25.92/11.06 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 25.92/11.06 | new_key > key = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt) 25.92/11.06 | otherwise = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.92/11.06 25.92/11.06 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 25.92/11.06 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 25.92/11.06 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 25.92/11.06 25.92/11.06 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 25.92/11.06 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 25.92/11.06 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 25.92/11.06 25.92/11.06 emptyFM :: FiniteMap b a; 25.92/11.06 emptyFM = EmptyFM; 25.92/11.06 25.92/11.06 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 25.92/11.06 filterFM p EmptyFM = emptyFM; 25.92/11.06 filterFM p (Branch key elt vzz fm_l fm_r) | p key elt = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r) 25.92/11.06 | otherwise = glueVBal (filterFM p fm_l) (filterFM p fm_r); 25.92/11.06 25.92/11.06 findMax :: FiniteMap a b -> (a,b); 25.92/11.06 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 25.92/11.06 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 25.92/11.06 25.92/11.06 findMin :: FiniteMap a b -> (a,b); 25.92/11.06 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 25.92/11.06 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 25.92/11.06 25.92/11.06 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 glueBal EmptyFM fm2 = fm2; 25.92/11.06 glueBal fm1 EmptyFM = fm1; 25.92/11.06 glueBal fm1 fm2 | sizeFM fm2 > sizeFM fm1 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2) 25.92/11.06 | otherwise = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 25.92/11.06 mid_elt1 = mid_elt10 vv2; 25.92/11.06 mid_elt10 (vww,mid_elt1) = mid_elt1; 25.92/11.06 mid_elt2 = mid_elt20 vv3; 25.92/11.06 mid_elt20 (vwv,mid_elt2) = mid_elt2; 25.92/11.06 mid_key1 = mid_key10 vv2; 25.92/11.06 mid_key10 (mid_key1,vwx) = mid_key1; 25.92/11.06 mid_key2 = mid_key20 vv3; 25.92/11.06 mid_key20 (mid_key2,vwy) = mid_key2; 25.92/11.06 vv2 = findMax fm1; 25.92/11.06 vv3 = findMin fm2; 25.92/11.06 }; 25.92/11.06 25.92/11.06 glueVBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 glueVBal EmptyFM fm2 = fm2; 25.92/11.06 glueVBal fm1 EmptyFM = fm1; 25.92/11.06 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 25.92/11.06 | sIZE_RATIO * size_r < size_l = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)) 25.92/11.06 | otherwise = glueBal (Branch vxu vxv vxw vxx vxy) (Branch vyu vyv vyw vyx vyy) where { 25.92/11.06 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 25.92/11.06 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 25.92/11.06 }; 25.92/11.06 25.92/11.06 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 mkBalBranch key elt fm_L fm_R | size_l + size_r < 2 = mkBranch 1 key elt fm_L fm_R 25.92/11.06 | size_r > sIZE_RATIO * size_l = mkBalBranch0 fm_L fm_R fm_R 25.92/11.06 | size_l > sIZE_RATIO * size_r = mkBalBranch1 fm_L fm_R fm_L 25.92/11.06 | otherwise = mkBranch 2 key elt fm_L fm_R where { 25.92/11.06 double_L fm_l (Branch key_r elt_r vvv (Branch key_rl elt_rl vvw fm_rll fm_rlr) fm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr); 25.92/11.06 double_R (Branch key_l elt_l vuw fm_ll (Branch key_lr elt_lr vux fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r); 25.92/11.06 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 25.92/11.06 | otherwise = double_L fm_L fm_R; 25.92/11.06 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 25.92/11.06 | otherwise = double_R fm_L fm_R; 25.92/11.06 single_L fm_l (Branch key_r elt_r vwu fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr; 25.92/11.06 single_R (Branch key_l elt_l vuv fm_ll fm_lr) fm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r); 25.92/11.06 size_l = sizeFM fm_L; 25.92/11.06 size_r = sizeFM fm_R; 25.92/11.06 }; 25.92/11.06 25.92/11.06 mkBranch :: Ord a => Int -> a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 mkBranch which key elt fm_l fm_r = let { 25.92/11.06 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 25.92/11.06 } in result where { 25.92/11.06 balance_ok = True; 25.92/11.06 left_ok = left_ok0 fm_l key fm_l; 25.92/11.06 left_ok0 fm_l key EmptyFM = True; 25.92/11.06 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 25.92/11.06 biggest_left_key = fst (findMax fm_l); 25.92/11.06 } in biggest_left_key < key; 25.92/11.06 left_size = sizeFM fm_l; 25.92/11.06 right_ok = right_ok0 fm_r key fm_r; 25.92/11.06 right_ok0 fm_r key EmptyFM = True; 25.92/11.06 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 25.92/11.06 smallest_right_key = fst (findMin fm_r); 25.92/11.06 } in key < smallest_right_key; 25.92/11.06 right_size = sizeFM fm_r; 25.92/11.06 unbox :: Int -> Int; 25.92/11.06 unbox x = x; 25.92/11.06 }; 25.92/11.06 25.92/11.06 mkVBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 25.92/11.06 mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 25.92/11.06 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 25.92/11.06 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 25.92/11.06 | sIZE_RATIO * size_r < size_l = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)) 25.92/11.06 | otherwise = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) where { 25.92/11.06 size_l = sizeFM (Branch wu wv ww wx wy); 25.92/11.06 size_r = sizeFM (Branch xu xv xw xx xy); 25.92/11.06 }; 25.92/11.06 25.92/11.06 sIZE_RATIO :: Int; 25.92/11.06 sIZE_RATIO = 5; 25.92/11.06 25.92/11.06 sizeFM :: FiniteMap a b -> Int; 25.92/11.06 sizeFM EmptyFM = 0; 25.92/11.06 sizeFM (Branch vyz vzu size vzv vzw) = size; 25.92/11.06 25.92/11.06 unitFM :: b -> a -> FiniteMap b a; 25.92/11.06 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 25.92/11.06 25.92/11.06 } 25.92/11.06 module Maybe where { 25.92/11.06 import qualified FiniteMap; 25.92/11.06 import qualified Main; 25.92/11.06 import qualified Prelude; 25.92/11.06 } 25.92/11.06 module Main where { 25.92/11.06 import qualified FiniteMap; 25.92/11.06 import qualified Maybe; 25.92/11.06 import qualified Prelude; 25.92/11.06 } 25.92/11.06 25.92/11.06 ---------------------------------------- 25.92/11.06 25.92/11.06 (7) COR (EQUIVALENT) 25.92/11.06 Cond Reductions: 25.92/11.06 The following Function with conditions 25.92/11.06 "compare x y|x == yEQ|x <= yLT|otherwiseGT; 25.92/11.06 " 25.92/11.06 is transformed to 25.92/11.06 "compare x y = compare3 x y; 25.92/11.06 " 25.92/11.06 "compare0 x y True = GT; 25.92/11.06 " 25.92/11.06 "compare1 x y True = LT; 25.92/11.06 compare1 x y False = compare0 x y otherwise; 25.92/11.06 " 25.92/11.06 "compare2 x y True = EQ; 25.92/11.06 compare2 x y False = compare1 x y (x <= y); 25.92/11.06 " 25.92/11.06 "compare3 x y = compare2 x y (x == y); 25.92/11.06 " 25.92/11.06 The following Function with conditions 25.92/11.06 "undefined |Falseundefined; 25.92/11.06 " 25.92/11.06 is transformed to 25.92/11.06 "undefined = undefined1; 25.92/11.06 " 25.92/11.06 "undefined0 True = undefined; 25.92/11.06 " 25.92/11.06 "undefined1 = undefined0 False; 25.92/11.06 " 25.92/11.06 The following Function with conditions 25.92/11.06 "addToFM_C combiner EmptyFM key elt = unitFM key elt; 25.92/11.06 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; 25.92/11.06 " 25.92/11.06 is transformed to 25.92/11.06 "addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 25.92/11.06 addToFM_C combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt; 25.92/11.06 " 25.92/11.06 "addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt True = Branch new_key (combiner elt new_elt) size fm_l fm_r; 25.92/11.06 " 25.92/11.06 "addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt (addToFM_C combiner fm_l new_key new_elt) fm_r; 25.92/11.06 addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt (new_key > key); 25.92/11.06 " 25.92/11.06 "addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt True = mkBalBranch key elt fm_l (addToFM_C combiner fm_r new_key new_elt); 25.92/11.06 addToFM_C1 combiner key elt size fm_l fm_r new_key new_elt False = addToFM_C0 combiner key elt size fm_l fm_r new_key new_elt otherwise; 25.92/11.06 " 25.92/11.06 "addToFM_C3 combiner (Branch key elt size fm_l fm_r) new_key new_elt = addToFM_C2 combiner key elt size fm_l fm_r new_key new_elt (new_key < key); 25.92/11.06 " 25.92/11.06 "addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 25.92/11.06 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 25.92/11.06 " 25.92/11.06 The following Function with conditions 25.92/11.06 "mkVBalBranch key elt EmptyFM fm_r = addToFM fm_r key elt; 25.92/11.06 mkVBalBranch key elt fm_l EmptyFM = addToFM fm_l key elt; 25.92/11.06 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 { 25.92/11.06 size_l = sizeFM (Branch wu wv ww wx wy); 25.92/11.06 ; 25.92/11.06 size_r = sizeFM (Branch xu xv xw xx xy); 25.92/11.06 } 25.92/11.06 ; 25.92/11.06 " 25.92/11.06 is transformed to 25.92/11.06 "mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 25.92/11.06 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 25.92/11.06 mkVBalBranch key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.92/11.06 " 25.92/11.06 "mkVBalBranch3 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy) = mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_l < size_r) where { 25.92/11.06 mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy True = mkBranch 13 key elt (Branch wu wv ww wx wy) (Branch xu xv xw xx xy); 25.92/11.06 ; 25.92/11.06 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch wu wv wx (mkVBalBranch key elt wy (Branch xu xv xw xx xy)); 25.92/11.06 mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch0 key elt wu wv ww wx wy xu xv xw xx xy otherwise; 25.92/11.06 ; 25.92/11.06 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy True = mkBalBranch xu xv (mkVBalBranch key elt (Branch wu wv ww wx wy) xx) xy; 25.92/11.06 mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy False = mkVBalBranch1 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_r < size_l); 25.92/11.06 ; 25.92/11.06 size_l = sizeFM (Branch wu wv ww wx wy); 25.92/11.06 ; 25.92/11.06 size_r = sizeFM (Branch xu xv xw xx xy); 25.92/11.06 } 25.92/11.06 ; 25.92/11.06 " 25.92/11.06 "mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 25.92/11.06 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 25.92/11.06 " 25.92/11.06 "mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 25.92/11.06 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 25.92/11.06 " 25.92/11.06 The following Function with conditions 25.92/11.06 "mkBalBranch1 fm_L fm_R (Branch vuy vuz vvu fm_ll fm_lr)|sizeFM fm_lr < 2 * sizeFM fm_llsingle_R fm_L fm_R|otherwisedouble_R fm_L fm_R; 25.92/11.06 " 25.92/11.06 is transformed to 25.92/11.06 "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); 26.53/11.22 " 26.53/11.22 "mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 26.53/11.22 " 26.53/11.22 "mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 26.53/11.22 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; 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 The following Function with conditions 26.53/11.22 "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; 26.53/11.22 " 26.53/11.22 is transformed to 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 26.53/11.22 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; 26.53/11.22 " 26.53/11.22 "mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 The following Function with conditions 26.53/11.22 "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 { 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 size_l = sizeFM fm_L; 26.53/11.22 ; 26.53/11.22 size_r = sizeFM fm_R; 26.53/11.22 } 26.53/11.22 ; 26.53/11.22 " 26.53/11.22 is transformed to 26.53/11.22 "mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 26.53/11.22 " 26.53/11.22 "mkBalBranch6 key elt fm_L fm_R = mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 26.53/11.22 ; 26.53/11.22 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 26.53/11.22 ; 26.53/11.22 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 26.53/11.22 ; 26.53/11.22 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 26.53/11.22 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 26.53/11.22 ; 26.53/11.22 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 26.53/11.22 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 26.53/11.22 ; 26.53/11.22 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 26.53/11.22 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 26.53/11.22 ; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 size_l = sizeFM fm_L; 26.53/11.22 ; 26.53/11.22 size_r = sizeFM fm_R; 26.53/11.22 } 26.53/11.22 ; 26.53/11.22 " 26.53/11.22 The following Function with conditions 26.53/11.22 "glueBal EmptyFM fm2 = fm2; 26.53/11.22 glueBal fm1 EmptyFM = fm1; 26.53/11.22 glueBal fm1 fm2|sizeFM fm2 > sizeFM fm1mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)|otherwisemkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where { 26.53/11.22 mid_elt1 = mid_elt10 vv2; 26.53/11.22 ; 26.53/11.22 mid_elt10 (vww,mid_elt1) = mid_elt1; 26.53/11.22 ; 26.53/11.22 mid_elt2 = mid_elt20 vv3; 26.53/11.22 ; 26.53/11.22 mid_elt20 (vwv,mid_elt2) = mid_elt2; 26.53/11.22 ; 26.53/11.22 mid_key1 = mid_key10 vv2; 26.53/11.22 ; 26.53/11.22 mid_key10 (mid_key1,vwx) = mid_key1; 26.53/11.22 ; 26.53/11.22 mid_key2 = mid_key20 vv3; 26.53/11.22 ; 26.53/11.22 mid_key20 (mid_key2,vwy) = mid_key2; 26.53/11.22 ; 26.53/11.22 vv2 = findMax fm1; 26.53/11.22 ; 26.53/11.22 vv3 = findMin fm2; 26.53/11.22 } 26.53/11.22 ; 26.53/11.22 " 26.53/11.22 is transformed to 26.53/11.22 "glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 26.53/11.22 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 26.53/11.22 glueBal fm1 fm2 = glueBal2 fm1 fm2; 26.53/11.22 " 26.53/11.22 "glueBal2 fm1 fm2 = glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 26.53/11.22 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 26.53/11.22 ; 26.53/11.22 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 26.53/11.22 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 26.53/11.22 ; 26.53/11.22 mid_elt1 = mid_elt10 vv2; 26.53/11.22 ; 26.53/11.22 mid_elt10 (vww,mid_elt1) = mid_elt1; 26.53/11.22 ; 26.53/11.22 mid_elt2 = mid_elt20 vv3; 26.53/11.22 ; 26.53/11.22 mid_elt20 (vwv,mid_elt2) = mid_elt2; 26.53/11.22 ; 26.53/11.22 mid_key1 = mid_key10 vv2; 26.53/11.22 ; 26.53/11.22 mid_key10 (mid_key1,vwx) = mid_key1; 26.53/11.22 ; 26.53/11.22 mid_key2 = mid_key20 vv3; 26.53/11.22 ; 26.53/11.22 mid_key20 (mid_key2,vwy) = mid_key2; 26.53/11.22 ; 26.53/11.22 vv2 = findMax fm1; 26.53/11.22 ; 26.53/11.22 vv3 = findMin fm2; 26.53/11.22 } 26.53/11.22 ; 26.53/11.22 " 26.53/11.22 "glueBal3 fm1 EmptyFM = fm1; 26.53/11.22 glueBal3 wyv wyw = glueBal2 wyv wyw; 26.53/11.22 " 26.53/11.22 "glueBal4 EmptyFM fm2 = fm2; 26.53/11.22 glueBal4 wyy wyz = glueBal3 wyy wyz; 26.53/11.22 " 26.53/11.22 The following Function with conditions 26.53/11.22 "glueVBal EmptyFM fm2 = fm2; 26.53/11.22 glueVBal fm1 EmptyFM = fm1; 26.53/11.22 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 { 26.53/11.22 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 26.53/11.22 ; 26.53/11.22 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 26.53/11.22 } 26.53/11.22 ; 26.53/11.22 " 26.53/11.22 is transformed to 26.53/11.22 "glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 26.53/11.22 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 26.53/11.22 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); 26.53/11.22 " 26.53/11.22 "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 { 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 26.53/11.22 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 26.53/11.22 ; 26.53/11.22 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 26.53/11.22 ; 26.53/11.22 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 26.53/11.22 } 26.53/11.22 ; 26.53/11.22 " 26.53/11.22 "glueVBal4 fm1 EmptyFM = fm1; 26.53/11.22 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 26.53/11.22 " 26.53/11.22 "glueVBal5 EmptyFM fm2 = fm2; 26.53/11.22 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 26.53/11.22 " 26.53/11.22 The following Function with conditions 26.53/11.22 "filterFM p EmptyFM = emptyFM; 26.53/11.22 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); 26.53/11.22 " 26.53/11.22 is transformed to 26.53/11.22 "filterFM p EmptyFM = filterFM3 p EmptyFM; 26.53/11.22 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 26.53/11.22 " 26.53/11.22 "filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 26.53/11.22 " 26.53/11.22 "filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 26.53/11.22 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 26.53/11.22 " 26.53/11.22 "filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 26.53/11.22 " 26.53/11.22 "filterFM3 p EmptyFM = emptyFM; 26.53/11.22 filterFM3 xuy xuz = filterFM2 xuy xuz; 26.53/11.22 " 26.53/11.22 26.53/11.22 ---------------------------------------- 26.53/11.22 26.53/11.22 (8) 26.53/11.22 Obligation: 26.53/11.22 mainModule Main 26.53/11.22 module FiniteMap where { 26.53/11.22 import qualified Main; 26.53/11.22 import qualified Maybe; 26.53/11.22 import qualified Prelude; 26.53/11.22 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 26.53/11.22 26.53/11.22 instance (Eq a, Eq b) => Eq FiniteMap b a where { 26.53/11.22 } 26.53/11.22 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 26.53/11.22 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 26.53/11.22 26.53/11.22 addToFM0 old new = new; 26.53/11.22 26.53/11.22 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 26.53/11.22 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 26.53/11.22 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; 26.53/11.22 26.53/11.22 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; 26.53/11.22 26.53/11.22 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); 26.53/11.22 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; 26.53/11.22 26.53/11.22 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; 26.53/11.22 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); 26.53/11.22 26.53/11.22 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); 26.53/11.22 26.53/11.22 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 26.53/11.22 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 26.53/11.22 26.53/11.22 deleteMax :: Ord a => FiniteMap a b -> FiniteMap a b; 26.53/11.22 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 26.53/11.22 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 26.53/11.22 26.53/11.22 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 26.53/11.22 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 26.53/11.22 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 26.53/11.22 26.53/11.22 emptyFM :: FiniteMap b a; 26.53/11.22 emptyFM = EmptyFM; 26.53/11.22 26.53/11.22 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 26.53/11.22 filterFM p EmptyFM = filterFM3 p EmptyFM; 26.53/11.22 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 26.53/11.22 26.53/11.22 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 26.53/11.22 26.53/11.22 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 26.53/11.22 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 26.53/11.22 26.53/11.22 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 26.53/11.22 26.53/11.22 filterFM3 p EmptyFM = emptyFM; 26.53/11.22 filterFM3 xuy xuz = filterFM2 xuy xuz; 26.53/11.22 26.53/11.22 findMax :: FiniteMap a b -> (a,b); 26.53/11.22 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 26.53/11.22 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 26.53/11.22 26.53/11.22 findMin :: FiniteMap a b -> (a,b); 26.53/11.22 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 26.53/11.22 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 26.53/11.22 26.53/11.22 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 26.53/11.22 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 26.53/11.22 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 26.53/11.22 glueBal fm1 fm2 = glueBal2 fm1 fm2; 26.53/11.22 26.53/11.22 glueBal2 fm1 fm2 = glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 26.53/11.22 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 26.53/11.22 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 26.53/11.22 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 26.53/11.22 mid_elt1 = mid_elt10 vv2; 26.53/11.22 mid_elt10 (vww,mid_elt1) = mid_elt1; 26.53/11.22 mid_elt2 = mid_elt20 vv3; 26.53/11.22 mid_elt20 (vwv,mid_elt2) = mid_elt2; 26.53/11.22 mid_key1 = mid_key10 vv2; 26.53/11.22 mid_key10 (mid_key1,vwx) = mid_key1; 26.53/11.22 mid_key2 = mid_key20 vv3; 26.53/11.22 mid_key20 (mid_key2,vwy) = mid_key2; 26.53/11.22 vv2 = findMax fm1; 26.53/11.22 vv3 = findMin fm2; 26.53/11.22 }; 26.53/11.22 26.53/11.22 glueBal3 fm1 EmptyFM = fm1; 26.53/11.22 glueBal3 wyv wyw = glueBal2 wyv wyw; 26.53/11.22 26.53/11.22 glueBal4 EmptyFM fm2 = fm2; 26.53/11.22 glueBal4 wyy wyz = glueBal3 wyy wyz; 26.53/11.22 26.53/11.22 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 26.53/11.22 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 26.53/11.22 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 26.53/11.22 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); 26.53/11.22 26.53/11.22 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 { 26.53/11.22 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); 26.53/11.22 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 26.53/11.22 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 26.53/11.22 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 26.53/11.22 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); 26.53/11.22 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 26.53/11.22 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 26.53/11.22 }; 26.53/11.22 26.53/11.22 glueVBal4 fm1 EmptyFM = fm1; 26.53/11.22 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 26.53/11.22 26.53/11.22 glueVBal5 EmptyFM fm2 = fm2; 26.53/11.22 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 26.53/11.22 26.53/11.22 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 26.53/11.22 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 26.53/11.22 26.53/11.22 mkBalBranch6 key elt fm_L fm_R = mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 26.53/11.22 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); 26.53/11.22 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); 26.53/11.22 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); 26.53/11.22 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 26.53/11.22 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 26.53/11.22 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; 26.53/11.22 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); 26.53/11.22 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); 26.53/11.22 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 26.53/11.22 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 26.53/11.22 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; 26.53/11.22 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); 26.53/11.22 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 26.53/11.22 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 26.53/11.22 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 26.53/11.22 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 26.53/11.22 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 26.53/11.22 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 26.53/11.22 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 26.53/11.22 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; 26.53/11.22 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); 26.53/11.22 size_l = sizeFM fm_L; 26.53/11.22 size_r = sizeFM fm_R; 26.53/11.22 }; 26.53/11.22 26.53/11.22 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 26.53/11.22 mkBranch which key elt fm_l fm_r = let { 26.53/11.22 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 26.53/11.22 } in result where { 26.53/11.22 balance_ok = True; 26.53/11.22 left_ok = left_ok0 fm_l key fm_l; 26.53/11.22 left_ok0 fm_l key EmptyFM = True; 26.53/11.22 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 26.53/11.22 biggest_left_key = fst (findMax fm_l); 26.53/11.22 } in biggest_left_key < key; 26.53/11.22 left_size = sizeFM fm_l; 26.53/11.22 right_ok = right_ok0 fm_r key fm_r; 26.53/11.22 right_ok0 fm_r key EmptyFM = True; 26.53/11.22 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 26.53/11.22 smallest_right_key = fst (findMin fm_r); 26.53/11.22 } in key < smallest_right_key; 26.53/11.22 right_size = sizeFM fm_r; 26.53/11.22 unbox :: Int -> Int; 26.53/11.22 unbox x = x; 26.53/11.22 }; 26.53/11.22 26.53/11.22 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 26.53/11.22 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 26.53/11.22 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 26.53/11.22 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); 26.53/11.22 26.53/11.22 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 { 26.53/11.22 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); 26.53/11.22 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)); 26.53/11.22 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; 26.53/11.22 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; 26.53/11.22 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); 26.53/11.22 size_l = sizeFM (Branch wu wv ww wx wy); 26.53/11.22 size_r = sizeFM (Branch xu xv xw xx xy); 26.53/11.22 }; 26.53/11.22 26.53/11.22 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 26.53/11.22 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 26.53/11.22 26.53/11.22 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 26.53/11.22 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 26.53/11.22 26.53/11.22 sIZE_RATIO :: Int; 26.53/11.22 sIZE_RATIO = 5; 26.53/11.22 26.53/11.22 sizeFM :: FiniteMap a b -> Int; 26.53/11.22 sizeFM EmptyFM = 0; 26.53/11.22 sizeFM (Branch vyz vzu size vzv vzw) = size; 26.53/11.22 26.53/11.22 unitFM :: a -> b -> FiniteMap a b; 26.53/11.22 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 26.53/11.22 26.53/11.22 } 26.53/11.22 module Maybe where { 26.53/11.22 import qualified FiniteMap; 26.53/11.22 import qualified Main; 26.53/11.22 import qualified Prelude; 26.53/11.22 } 26.53/11.22 module Main where { 26.53/11.22 import qualified FiniteMap; 26.53/11.22 import qualified Maybe; 26.53/11.22 import qualified Prelude; 26.53/11.22 } 26.53/11.22 26.53/11.22 ---------------------------------------- 26.53/11.22 26.53/11.22 (9) LetRed (EQUIVALENT) 26.53/11.22 Let/Where Reductions: 26.53/11.22 The bindings of the following Let/Where expression 26.53/11.22 "mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where { 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 mkBalBranch00 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = double_L fm_L fm_R; 26.53/11.22 ; 26.53/11.22 mkBalBranch01 fm_L fm_R vvx vvy vvz fm_rl fm_rr True = single_L fm_L fm_R; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 mkBalBranch10 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = double_R fm_L fm_R; 26.53/11.22 ; 26.53/11.22 mkBalBranch11 fm_L fm_R vuy vuz vvu fm_ll fm_lr True = single_R fm_L fm_R; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 26.53/11.22 ; 26.53/11.22 mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L; 26.53/11.22 mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise; 26.53/11.22 ; 26.53/11.22 mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R; 26.53/11.22 mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r); 26.53/11.22 ; 26.53/11.22 mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 26.53/11.22 mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l); 26.53/11.22 ; 26.53/11.22 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; 26.53/11.22 ; 26.53/11.22 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); 26.53/11.22 ; 26.53/11.22 size_l = sizeFM fm_L; 26.53/11.22 ; 26.53/11.22 size_r = sizeFM fm_R; 26.53/11.22 } 26.53/11.22 " 26.53/11.22 are unpacked to the following functions on top level 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 26.53/11.22 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 26.53/11.22 " 26.53/11.22 "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; 26.53/11.22 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; 26.53/11.22 " 26.53/11.22 "mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvw; 26.53/11.22 " 26.53/11.22 "mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvx; 26.53/11.22 " 26.53/11.22 "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; 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "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; 26.53/11.22 " 26.53/11.22 "mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "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); 26.53/11.22 " 26.53/11.22 "mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 26.73/11.34 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); 26.73/11.34 " 26.73/11.34 "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; 26.73/11.34 " 26.73/11.34 "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; 26.73/11.34 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; 26.73/11.34 " 26.73/11.34 "mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 26.73/11.34 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); 26.73/11.34 " 26.73/11.34 The bindings of the following Let/Where expression 26.73/11.34 "let { 26.73/11.34 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 26.73/11.34 } in result where { 26.73/11.34 balance_ok = True; 26.73/11.34 ; 26.73/11.34 left_ok = left_ok0 fm_l key fm_l; 26.73/11.34 ; 26.73/11.34 left_ok0 fm_l key EmptyFM = True; 26.73/11.34 left_ok0 fm_l key (Branch left_key yv yw yx yy) = let { 26.73/11.34 biggest_left_key = fst (findMax fm_l); 26.73/11.34 } in biggest_left_key < key; 26.73/11.34 ; 26.73/11.34 left_size = sizeFM fm_l; 26.73/11.34 ; 26.73/11.34 right_ok = right_ok0 fm_r key fm_r; 26.73/11.34 ; 26.73/11.34 right_ok0 fm_r key EmptyFM = True; 26.73/11.34 right_ok0 fm_r key (Branch right_key yz zu zv zw) = let { 26.73/11.34 smallest_right_key = fst (findMin fm_r); 26.73/11.34 } in key < smallest_right_key; 26.73/11.34 ; 26.73/11.34 right_size = sizeFM fm_r; 26.73/11.34 ; 26.73/11.34 unbox x = x; 26.73/11.34 } 26.73/11.34 " 26.73/11.34 are unpacked to the following functions on top level 26.73/11.34 "mkBranchUnbox xvy xvz xwu x = x; 26.73/11.34 " 26.73/11.34 "mkBranchBalance_ok xvy xvz xwu = True; 26.73/11.34 " 26.73/11.34 "mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xvz xvy; 26.73/11.34 " 26.73/11.34 "mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xwu xvz xwu; 26.73/11.34 " 26.73/11.34 "mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 26.73/11.34 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 26.73/11.34 " 26.73/11.34 "mkBranchRight_size xvy xvz xwu = sizeFM xwu; 26.73/11.34 " 26.73/11.34 "mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 26.73/11.34 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 26.73/11.34 " 26.73/11.34 "mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 26.73/11.34 " 26.73/11.34 The bindings of the following Let/Where expression 26.73/11.34 "let { 26.73/11.34 result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r; 26.73/11.34 } in result" 26.73/11.34 are unpacked to the following functions on top level 26.73/11.34 "mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwv xwy (1 + mkBranchLeft_size xwx xwv xwy + mkBranchRight_size xwx xwv xwy)) xwx xwy; 26.73/11.34 " 26.73/11.34 The bindings of the following Let/Where expression 26.73/11.34 "glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy (sIZE_RATIO * size_l < size_r) where { 26.73/11.34 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); 26.73/11.34 ; 26.73/11.34 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vxu vxv vxx (glueVBal vxy (Branch vyu vyv vyw vyx vyy)); 26.73/11.34 glueVBal1 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy False = glueVBal0 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy otherwise; 26.73/11.34 ; 26.73/11.34 glueVBal2 vxu vxv vxw vxx vxy vyu vyv vyw vyx vyy True = mkBalBranch vyu vyv (glueVBal (Branch vxu vxv vxw vxx vxy) vyx) vyy; 26.73/11.34 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); 26.73/11.34 ; 26.73/11.34 size_l = sizeFM (Branch vxu vxv vxw vxx vxy); 26.73/11.34 ; 26.73/11.34 size_r = sizeFM (Branch vyu vyv vyw vyx vyy); 26.73/11.34 } 26.73/11.34 " 26.73/11.34 are unpacked to the following functions on top level 26.73/11.34 "glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 26.73/11.34 " 26.73/11.34 "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); 26.73/11.34 " 26.73/11.34 "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)); 26.73/11.34 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; 26.73/11.34 " 26.73/11.34 "glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 26.73/11.34 " 26.73/11.34 "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; 26.73/11.34 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); 26.73/11.34 " 26.73/11.34 The bindings of the following Let/Where expression 26.73/11.34 "glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where { 26.73/11.34 glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2; 26.73/11.34 ; 26.73/11.34 glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2); 26.73/11.34 glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise; 26.73/11.34 ; 26.73/11.34 mid_elt1 = mid_elt10 vv2; 26.73/11.34 ; 26.73/11.34 mid_elt10 (vww,mid_elt1) = mid_elt1; 26.73/11.34 ; 26.73/11.34 mid_elt2 = mid_elt20 vv3; 26.73/11.34 ; 26.73/11.34 mid_elt20 (vwv,mid_elt2) = mid_elt2; 26.73/11.34 ; 26.73/11.34 mid_key1 = mid_key10 vv2; 26.73/11.34 ; 26.73/11.34 mid_key10 (mid_key1,vwx) = mid_key1; 26.73/11.34 ; 26.73/11.34 mid_key2 = mid_key20 vv3; 26.73/11.34 ; 26.73/11.34 mid_key20 (mid_key2,vwy) = mid_key2; 26.73/11.34 ; 26.73/11.34 vv2 = findMax fm1; 26.73/11.34 ; 26.73/11.34 vv3 = findMin fm2; 26.73/11.34 } 26.73/11.34 " 26.73/11.34 are unpacked to the following functions on top level 26.73/11.34 "glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 26.73/11.34 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 26.73/11.34 " 26.73/11.34 "glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 26.73/11.34 " 26.73/11.34 "glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 26.73/11.34 " 26.73/11.34 "glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 26.73/11.34 " 26.73/11.34 "glueBal2Vv3 xyx xyy = findMin xyx; 26.73/11.34 " 26.73/11.34 "glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 26.73/11.34 " 26.73/11.34 "glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 26.73/11.34 " 26.73/11.34 "glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 26.73/11.34 " 26.73/11.34 "glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 26.73/11.34 " 26.73/11.34 "glueBal2Vv2 xyx xyy = findMax xyy; 26.73/11.34 " 26.73/11.34 "glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 26.73/11.34 " 26.73/11.34 "glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 26.73/11.34 " 26.73/11.34 The bindings of the following Let/Where expression 26.73/11.34 "mkVBalBranch2 key elt wu wv ww wx wy xu xv xw xx xy (sIZE_RATIO * size_l < size_r) where { 26.73/11.34 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); 26.73/11.34 ; 26.73/11.34 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)); 26.73/11.34 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; 26.73/11.34 ; 26.73/11.34 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; 26.73/11.34 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); 26.73/11.34 ; 26.73/11.34 size_l = sizeFM (Branch wu wv ww wx wy); 26.73/11.34 ; 26.73/11.34 size_r = sizeFM (Branch xu xv xw xx xy); 26.73/11.34 } 26.73/11.34 " 26.73/11.34 are unpacked to the following functions on top level 26.73/11.34 "mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 26.73/11.34 " 26.73/11.34 "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; 26.73/11.34 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); 27.10/11.38 " 27.10/11.38 "mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 27.10/11.38 " 27.10/11.38 "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)); 27.10/11.38 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; 27.10/11.38 " 27.10/11.38 "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); 27.10/11.38 " 27.10/11.38 The bindings of the following Let/Where expression 27.10/11.38 "let { 27.10/11.38 smallest_right_key = fst (findMin fm_r); 27.10/11.38 } in key < smallest_right_key" 27.10/11.38 are unpacked to the following functions on top level 27.10/11.38 "mkBranchRight_ok0Smallest_right_key yux = fst (findMin yux); 27.10/11.38 " 27.10/11.38 The bindings of the following Let/Where expression 27.10/11.38 "let { 27.10/11.38 biggest_left_key = fst (findMax fm_l); 27.10/11.38 } in biggest_left_key < key" 27.10/11.38 are unpacked to the following functions on top level 27.10/11.38 "mkBranchLeft_ok0Biggest_left_key yuy = fst (findMax yuy); 27.10/11.38 " 27.10/11.38 27.10/11.38 ---------------------------------------- 27.10/11.38 27.10/11.38 (10) 27.10/11.38 Obligation: 27.10/11.38 mainModule Main 27.10/11.38 module FiniteMap where { 27.10/11.38 import qualified Main; 27.10/11.38 import qualified Maybe; 27.10/11.38 import qualified Prelude; 27.10/11.38 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 27.10/11.38 27.10/11.38 instance (Eq a, Eq b) => Eq FiniteMap a b where { 27.10/11.38 } 27.10/11.38 addToFM :: Ord a => FiniteMap a b -> a -> b -> FiniteMap a b; 27.10/11.38 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 27.10/11.38 27.10/11.38 addToFM0 old new = new; 27.10/11.38 27.10/11.38 addToFM_C :: Ord b => (a -> a -> a) -> FiniteMap b a -> b -> a -> FiniteMap b a; 27.10/11.38 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 27.10/11.38 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 27.10/11.38 27.10/11.38 deleteMax :: Ord b => FiniteMap b a -> FiniteMap b a; 27.10/11.38 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 27.10/11.38 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 27.10/11.38 27.10/11.38 deleteMin :: Ord a => FiniteMap a b -> FiniteMap a b; 27.10/11.38 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 27.10/11.38 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 27.10/11.38 27.10/11.38 emptyFM :: FiniteMap a b; 27.10/11.38 emptyFM = EmptyFM; 27.10/11.38 27.10/11.38 filterFM :: Ord a => (a -> b -> Bool) -> FiniteMap a b -> FiniteMap a b; 27.10/11.38 filterFM p EmptyFM = filterFM3 p EmptyFM; 27.10/11.38 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 27.10/11.38 27.10/11.38 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 27.10/11.38 27.10/11.38 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 27.10/11.38 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 27.10/11.38 27.10/11.38 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 27.10/11.38 27.10/11.38 filterFM3 p EmptyFM = emptyFM; 27.10/11.38 filterFM3 xuy xuz = filterFM2 xuy xuz; 27.10/11.38 27.10/11.38 findMax :: FiniteMap a b -> (a,b); 27.10/11.38 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 27.10/11.38 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 27.10/11.38 27.10/11.38 findMin :: FiniteMap a b -> (a,b); 27.10/11.38 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 27.10/11.38 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 27.10/11.38 27.10/11.38 glueBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 27.10/11.38 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 27.10/11.38 glueBal fm1 fm2 = glueBal2 fm1 fm2; 27.10/11.38 27.10/11.38 glueBal2 fm1 fm2 = glueBal2GlueBal1 fm2 fm1 fm1 fm2 (sizeFM fm2 > sizeFM fm1); 27.10/11.38 27.10/11.38 glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 27.10/11.38 27.10/11.38 glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 27.10/11.38 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 27.10/11.38 27.10/11.38 glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 27.10/11.38 27.10/11.38 glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 27.10/11.38 27.10/11.38 glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 27.10/11.38 27.10/11.38 glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 27.10/11.38 27.10/11.38 glueBal2Vv2 xyx xyy = findMax xyy; 27.10/11.38 27.10/11.38 glueBal2Vv3 xyx xyy = findMin xyx; 27.10/11.38 27.10/11.38 glueBal3 fm1 EmptyFM = fm1; 27.10/11.38 glueBal3 wyv wyw = glueBal2 wyv wyw; 27.10/11.38 27.10/11.38 glueBal4 EmptyFM fm2 = fm2; 27.10/11.38 glueBal4 wyy wyz = glueBal3 wyy wyz; 27.10/11.38 27.10/11.38 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 27.10/11.38 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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)); 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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); 27.10/11.38 27.10/11.38 glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 27.10/11.38 27.10/11.38 glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 27.10/11.38 27.10/11.38 glueVBal4 fm1 EmptyFM = fm1; 27.10/11.38 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 27.10/11.38 27.10/11.38 glueVBal5 EmptyFM fm2 = fm2; 27.10/11.38 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 27.10/11.38 27.10/11.38 mkBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R; 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 27.10/11.38 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvw; 27.10/11.38 27.10/11.38 mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvx; 27.10/11.38 27.10/11.38 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 mkBranch which key elt fm_l fm_r = mkBranchResult key elt fm_l fm_r; 27.10/11.38 27.10/11.38 mkBranchBalance_ok xvy xvz xwu = True; 27.10/11.38 27.10/11.38 mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xvz xvy; 27.10/11.38 27.10/11.38 mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 27.10/11.38 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 27.10/11.38 27.10/11.38 mkBranchLeft_ok0Biggest_left_key yuy = fst (findMax yuy); 27.10/11.38 27.10/11.38 mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 27.10/11.38 27.10/11.38 mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwv xwy (1 + mkBranchLeft_size xwx xwv xwy + mkBranchRight_size xwx xwv xwy)) xwx xwy; 27.10/11.38 27.10/11.38 mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xwu xvz xwu; 27.10/11.38 27.10/11.38 mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 27.10/11.38 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 27.10/11.38 27.10/11.38 mkBranchRight_ok0Smallest_right_key yux = fst (findMin yux); 27.10/11.38 27.10/11.38 mkBranchRight_size xvy xvz xwu = sizeFM xwu; 27.10/11.38 27.10/11.38 mkBranchUnbox :: Ord a => -> (FiniteMap a b) ( -> a ( -> (FiniteMap a b) (Int -> Int))); 27.10/11.38 mkBranchUnbox xvy xvz xwu x = x; 27.10/11.38 27.10/11.38 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 27.10/11.38 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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)); 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 27.10/11.38 27.10/11.38 mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 27.10/11.38 27.10/11.38 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 27.10/11.38 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 27.10/11.38 27.10/11.38 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 27.10/11.38 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 27.10/11.38 27.10/11.38 sIZE_RATIO :: Int; 27.10/11.38 sIZE_RATIO = 5; 27.10/11.38 27.10/11.38 sizeFM :: FiniteMap b a -> Int; 27.10/11.38 sizeFM EmptyFM = 0; 27.10/11.38 sizeFM (Branch vyz vzu size vzv vzw) = size; 27.10/11.38 27.10/11.38 unitFM :: b -> a -> FiniteMap b a; 27.10/11.38 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 27.10/11.38 27.10/11.38 } 27.10/11.38 module Maybe where { 27.10/11.38 import qualified FiniteMap; 27.10/11.38 import qualified Main; 27.10/11.38 import qualified Prelude; 27.10/11.38 } 27.10/11.38 module Main where { 27.10/11.38 import qualified FiniteMap; 27.10/11.38 import qualified Maybe; 27.10/11.38 import qualified Prelude; 27.10/11.38 } 27.10/11.38 27.10/11.38 ---------------------------------------- 27.10/11.38 27.10/11.38 (11) NumRed (SOUND) 27.10/11.38 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 27.10/11.38 ---------------------------------------- 27.10/11.38 27.10/11.38 (12) 27.10/11.38 Obligation: 27.10/11.38 mainModule Main 27.10/11.38 module FiniteMap where { 27.10/11.38 import qualified Main; 27.10/11.38 import qualified Maybe; 27.10/11.38 import qualified Prelude; 27.10/11.38 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 27.10/11.38 27.10/11.38 instance (Eq a, Eq b) => Eq FiniteMap a b where { 27.10/11.38 } 27.10/11.38 addToFM :: Ord b => FiniteMap b a -> b -> a -> FiniteMap b a; 27.10/11.38 addToFM fm key elt = addToFM_C addToFM0 fm key elt; 27.10/11.38 27.10/11.38 addToFM0 old new = new; 27.10/11.38 27.10/11.38 addToFM_C :: Ord a => (b -> b -> b) -> FiniteMap a b -> a -> b -> FiniteMap a b; 27.10/11.38 addToFM_C combiner EmptyFM key elt = addToFM_C4 combiner EmptyFM key elt; 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 addToFM_C4 combiner EmptyFM key elt = unitFM key elt; 27.10/11.38 addToFM_C4 wvu wvv wvw wvx = addToFM_C3 wvu wvv wvw wvx; 27.10/11.38 27.10/11.38 deleteMax :: Ord a => FiniteMap a b -> FiniteMap a b; 27.10/11.38 deleteMax (Branch key elt xz fm_l EmptyFM) = fm_l; 27.10/11.38 deleteMax (Branch key elt yu fm_l fm_r) = mkBalBranch key elt fm_l (deleteMax fm_r); 27.10/11.38 27.10/11.38 deleteMin :: Ord b => FiniteMap b a -> FiniteMap b a; 27.10/11.38 deleteMin (Branch key elt vzx EmptyFM fm_r) = fm_r; 27.10/11.38 deleteMin (Branch key elt vzy fm_l fm_r) = mkBalBranch key elt (deleteMin fm_l) fm_r; 27.10/11.38 27.10/11.38 emptyFM :: FiniteMap b a; 27.10/11.38 emptyFM = EmptyFM; 27.10/11.38 27.10/11.38 filterFM :: Ord b => (b -> a -> Bool) -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 filterFM p EmptyFM = filterFM3 p EmptyFM; 27.10/11.38 filterFM p (Branch key elt vzz fm_l fm_r) = filterFM2 p (Branch key elt vzz fm_l fm_r); 27.10/11.38 27.10/11.38 filterFM0 p key elt vzz fm_l fm_r True = glueVBal (filterFM p fm_l) (filterFM p fm_r); 27.10/11.38 27.10/11.38 filterFM1 p key elt vzz fm_l fm_r True = mkVBalBranch key elt (filterFM p fm_l) (filterFM p fm_r); 27.10/11.38 filterFM1 p key elt vzz fm_l fm_r False = filterFM0 p key elt vzz fm_l fm_r otherwise; 27.10/11.38 27.10/11.38 filterFM2 p (Branch key elt vzz fm_l fm_r) = filterFM1 p key elt vzz fm_l fm_r (p key elt); 27.10/11.38 27.10/11.38 filterFM3 p EmptyFM = emptyFM; 27.10/11.38 filterFM3 xuy xuz = filterFM2 xuy xuz; 27.10/11.38 27.10/11.38 findMax :: FiniteMap b a -> (b,a); 27.10/11.38 findMax (Branch key elt zx zy EmptyFM) = (key,elt); 27.10/11.38 findMax (Branch key elt zz vuu fm_r) = findMax fm_r; 27.10/11.38 27.10/11.38 findMin :: FiniteMap a b -> (a,b); 27.10/11.38 findMin (Branch key elt wuu EmptyFM wuv) = (key,elt); 27.10/11.38 findMin (Branch key elt wuw fm_l wux) = findMin fm_l; 27.10/11.38 27.10/11.38 glueBal :: Ord a => FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 27.10/11.38 glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2; 27.10/11.38 glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM; 27.10/11.38 glueBal fm1 fm2 = glueBal2 fm1 fm2; 27.10/11.38 27.10/11.38 glueBal2 fm1 fm2 = glueBal2GlueBal1 fm2 fm1 fm1 fm2 (sizeFM fm2 > sizeFM fm1); 27.10/11.38 27.10/11.38 glueBal2GlueBal0 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xyx xyy) (glueBal2Mid_elt1 xyx xyy) (deleteMax fm1) fm2; 27.10/11.38 27.10/11.38 glueBal2GlueBal1 xyx xyy fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xyx xyy) (glueBal2Mid_elt2 xyx xyy) fm1 (deleteMin fm2); 27.10/11.38 glueBal2GlueBal1 xyx xyy fm1 fm2 False = glueBal2GlueBal0 xyx xyy fm1 fm2 otherwise; 27.10/11.38 27.10/11.38 glueBal2Mid_elt1 xyx xyy = glueBal2Mid_elt10 xyx xyy (glueBal2Vv2 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_elt10 xyx xyy (vww,mid_elt1) = mid_elt1; 27.10/11.38 27.10/11.38 glueBal2Mid_elt2 xyx xyy = glueBal2Mid_elt20 xyx xyy (glueBal2Vv3 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_elt20 xyx xyy (vwv,mid_elt2) = mid_elt2; 27.10/11.38 27.10/11.38 glueBal2Mid_key1 xyx xyy = glueBal2Mid_key10 xyx xyy (glueBal2Vv2 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_key10 xyx xyy (mid_key1,vwx) = mid_key1; 27.10/11.38 27.10/11.38 glueBal2Mid_key2 xyx xyy = glueBal2Mid_key20 xyx xyy (glueBal2Vv3 xyx xyy); 27.10/11.38 27.10/11.38 glueBal2Mid_key20 xyx xyy (mid_key2,vwy) = mid_key2; 27.10/11.38 27.10/11.38 glueBal2Vv2 xyx xyy = findMax xyy; 27.10/11.38 27.10/11.38 glueBal2Vv3 xyx xyy = findMin xyx; 27.10/11.38 27.10/11.38 glueBal3 fm1 EmptyFM = fm1; 27.10/11.38 glueBal3 wyv wyw = glueBal2 wyv wyw; 27.10/11.38 27.10/11.38 glueBal4 EmptyFM fm2 = fm2; 27.10/11.38 glueBal4 wyy wyz = glueBal3 wyy wyz; 27.10/11.38 27.10/11.38 glueVBal :: Ord b => FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 glueVBal EmptyFM fm2 = glueVBal5 EmptyFM fm2; 27.10/11.38 glueVBal fm1 EmptyFM = glueVBal4 fm1 EmptyFM; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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)); 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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); 27.10/11.38 27.10/11.38 glueVBal3Size_l xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xxy xxz xyu xyv xyw); 27.10/11.38 27.10/11.38 glueVBal3Size_r xwz xxu xxv xxw xxx xxy xxz xyu xyv xyw = sizeFM (Branch xwz xxu xxv xxw xxx); 27.10/11.38 27.10/11.38 glueVBal4 fm1 EmptyFM = fm1; 27.10/11.38 glueVBal4 wzx wzy = glueVBal3 wzx wzy; 27.10/11.38 27.10/11.38 glueVBal5 EmptyFM fm2 = fm2; 27.10/11.38 glueVBal5 xuu xuv = glueVBal4 xuu xuv; 27.10/11.38 27.10/11.38 mkBalBranch :: Ord a => a -> b -> FiniteMap a b -> FiniteMap a b -> FiniteMap a b; 27.10/11.38 mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R; 27.10/11.38 27.10/11.38 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))); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch (Pos (Succ (Succ Zero))) key elt fm_L fm_R; 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xvu xvv xvw xvx fm_L fm_R fm_L; 27.10/11.38 mkBalBranch6MkBalBranch3 xvu xvv xvw xvx key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xvu xvv xvw xvx key elt fm_L fm_R otherwise; 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch4 xvu xvv xvw xvx key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xvu xvv xvw xvx fm_L fm_R fm_R; 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkBalBranch6MkBalBranch5 xvu xvv xvw xvx key elt fm_L fm_R True = mkBranch (Pos (Succ Zero)) key elt fm_L fm_R; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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; 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkBalBranch6Size_l xvu xvv xvw xvx = sizeFM xvw; 27.10/11.38 27.10/11.38 mkBalBranch6Size_r xvu xvv xvw xvx = sizeFM xvx; 27.10/11.38 27.10/11.38 mkBranch :: Ord b => Int -> b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 mkBranch which key elt fm_l fm_r = mkBranchResult key elt fm_l fm_r; 27.10/11.38 27.10/11.38 mkBranchBalance_ok xvy xvz xwu = True; 27.10/11.38 27.10/11.38 mkBranchLeft_ok xvy xvz xwu = mkBranchLeft_ok0 xvy xvz xwu xvy xvz xvy; 27.10/11.38 27.10/11.38 mkBranchLeft_ok0 xvy xvz xwu fm_l key EmptyFM = True; 27.10/11.38 mkBranchLeft_ok0 xvy xvz xwu fm_l key (Branch left_key yv yw yx yy) = mkBranchLeft_ok0Biggest_left_key fm_l < key; 27.10/11.38 27.10/11.38 mkBranchLeft_ok0Biggest_left_key yuy = fst (findMax yuy); 27.10/11.38 27.10/11.38 mkBranchLeft_size xvy xvz xwu = sizeFM xvy; 27.10/11.38 27.10/11.38 mkBranchResult xwv xww xwx xwy = Branch xwv xww (mkBranchUnbox xwx xwv xwy (Pos (Succ Zero) + mkBranchLeft_size xwx xwv xwy + mkBranchRight_size xwx xwv xwy)) xwx xwy; 27.10/11.38 27.10/11.38 mkBranchRight_ok xvy xvz xwu = mkBranchRight_ok0 xvy xvz xwu xwu xvz xwu; 27.10/11.38 27.10/11.38 mkBranchRight_ok0 xvy xvz xwu fm_r key EmptyFM = True; 27.10/11.38 mkBranchRight_ok0 xvy xvz xwu fm_r key (Branch right_key yz zu zv zw) = key < mkBranchRight_ok0Smallest_right_key fm_r; 27.10/11.38 27.10/11.38 mkBranchRight_ok0Smallest_right_key yux = fst (findMin yux); 27.10/11.38 27.10/11.38 mkBranchRight_size xvy xvz xwu = sizeFM xwu; 27.10/11.38 27.10/11.38 mkBranchUnbox :: Ord a => -> (FiniteMap a b) ( -> a ( -> (FiniteMap a b) (Int -> Int))); 27.10/11.38 mkBranchUnbox xvy xvz xwu x = x; 27.10/11.38 27.10/11.38 mkVBalBranch :: Ord b => b -> a -> FiniteMap b a -> FiniteMap b a -> FiniteMap b a; 27.10/11.38 mkVBalBranch key elt EmptyFM fm_r = mkVBalBranch5 key elt EmptyFM fm_r; 27.10/11.38 mkVBalBranch key elt fm_l EmptyFM = mkVBalBranch4 key elt fm_l EmptyFM; 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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); 27.10/11.38 27.10/11.38 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)); 27.10/11.38 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; 27.10/11.38 27.10/11.38 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; 27.10/11.38 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); 27.10/11.38 27.10/11.38 mkVBalBranch3Size_l xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xyz xzu xzv xzw xzx); 27.10/11.38 27.10/11.38 mkVBalBranch3Size_r xyz xzu xzv xzw xzx xzy xzz yuu yuv yuw = sizeFM (Branch xzy xzz yuu yuv yuw); 27.10/11.38 27.10/11.38 mkVBalBranch4 key elt fm_l EmptyFM = addToFM fm_l key elt; 27.10/11.38 mkVBalBranch4 wwv www wwx wwy = mkVBalBranch3 wwv www wwx wwy; 27.10/11.38 27.10/11.38 mkVBalBranch5 key elt EmptyFM fm_r = addToFM fm_r key elt; 27.10/11.38 mkVBalBranch5 wxu wxv wxw wxx = mkVBalBranch4 wxu wxv wxw wxx; 27.10/11.38 27.10/11.38 sIZE_RATIO :: Int; 27.10/11.38 sIZE_RATIO = Pos (Succ (Succ (Succ (Succ (Succ Zero))))); 27.10/11.38 27.10/11.38 sizeFM :: FiniteMap a b -> Int; 27.10/11.38 sizeFM EmptyFM = Pos Zero; 27.10/11.38 sizeFM (Branch vyz vzu size vzv vzw) = size; 27.10/11.38 27.10/11.38 unitFM :: a -> b -> FiniteMap a b; 27.10/11.38 unitFM key elt = Branch key elt (Pos (Succ Zero)) emptyFM emptyFM; 27.10/11.38 27.10/11.38 } 27.10/11.38 module Maybe where { 27.10/11.38 import qualified FiniteMap; 27.10/11.38 import qualified Main; 27.10/11.38 import qualified Prelude; 27.10/11.38 } 27.10/11.38 module Main where { 27.10/11.38 import qualified FiniteMap; 27.10/11.38 import qualified Maybe; 27.10/11.38 import qualified Prelude; 27.10/11.38 } 27.10/11.38 27.10/11.38 ---------------------------------------- 27.10/11.38 27.10/11.38 (13) Narrow (SOUND) 27.10/11.38 Haskell To QDPs 27.10/11.38 27.10/11.38 digraph dp_graph { 27.10/11.38 node [outthreshold=100, inthreshold=100];1[label="FiniteMap.filterFM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 27.10/11.38 3[label="FiniteMap.filterFM yuz3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 27.10/11.38 4[label="FiniteMap.filterFM yuz3 yuz4",fontsize=16,color="burlywood",shape="triangle"];12762[label="yuz4/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];4 -> 12762[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12762 -> 5[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12763[label="yuz4/FiniteMap.Branch yuz40 yuz41 yuz42 yuz43 yuz44",fontsize=10,color="white",style="solid",shape="box"];4 -> 12763[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12763 -> 6[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5[label="FiniteMap.filterFM yuz3 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];5 -> 7[label="",style="solid", color="black", weight=3]; 27.10/11.38 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]; 27.10/11.38 7[label="FiniteMap.filterFM3 yuz3 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 27.10/11.38 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]; 27.10/11.38 9[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];9 -> 11[label="",style="solid", color="black", weight=3]; 27.10/11.38 10 -> 12[label="",style="dashed", color="red", weight=0]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 13 -> 19[label="",style="dashed", color="green", weight=3]; 27.10/11.38 12[label="FiniteMap.filterFM1 yuz3 yuz40 yuz41 yuz42 yuz43 yuz44 yuz5",fontsize=16,color="burlywood",shape="triangle"];12764[label="yuz5/False",fontsize=10,color="white",style="solid",shape="box"];12 -> 12764[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12764 -> 16[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12765[label="yuz5/True",fontsize=10,color="white",style="solid",shape="box"];12 -> 12765[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12765 -> 17[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 21 -> 23[label="",style="dashed", color="red", weight=0]; 27.10/11.38 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]; 27.10/11.38 21 -> 25[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 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]; 27.10/11.38 24 -> 4[label="",style="dashed", color="red", weight=0]; 27.10/11.38 24[label="FiniteMap.filterFM yuz3 yuz43",fontsize=16,color="magenta"];24 -> 27[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 25 -> 4[label="",style="dashed", color="red", weight=0]; 27.10/11.38 25[label="FiniteMap.filterFM yuz3 yuz44",fontsize=16,color="magenta"];25 -> 28[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 23[label="FiniteMap.mkVBalBranch yuz40 yuz41 yuz7 yuz6",fontsize=16,color="burlywood",shape="triangle"];12766[label="yuz7/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];23 -> 12766[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12766 -> 29[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12767[label="yuz7/FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=10,color="white",style="solid",shape="box"];23 -> 12767[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12767 -> 30[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 26 -> 31[label="",style="dashed", color="red", weight=0]; 27.10/11.38 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]; 27.10/11.38 26 -> 33[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 27[label="yuz43",fontsize=16,color="green",shape="box"];28[label="yuz44",fontsize=16,color="green",shape="box"];29[label="FiniteMap.mkVBalBranch yuz40 yuz41 FiniteMap.EmptyFM yuz6",fontsize=16,color="black",shape="box"];29 -> 34[label="",style="solid", color="black", weight=3]; 27.10/11.38 30[label="FiniteMap.mkVBalBranch yuz40 yuz41 (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74) yuz6",fontsize=16,color="burlywood",shape="box"];12768[label="yuz6/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];30 -> 12768[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12768 -> 35[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12769[label="yuz6/FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=10,color="white",style="solid",shape="box"];30 -> 12769[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12769 -> 36[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 32 -> 4[label="",style="dashed", color="red", weight=0]; 27.10/11.38 32[label="FiniteMap.filterFM yuz3 yuz43",fontsize=16,color="magenta"];32 -> 37[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 33 -> 4[label="",style="dashed", color="red", weight=0]; 27.10/11.38 33[label="FiniteMap.filterFM yuz3 yuz44",fontsize=16,color="magenta"];33 -> 38[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 31[label="FiniteMap.glueVBal yuz9 yuz8",fontsize=16,color="burlywood",shape="triangle"];12770[label="yuz9/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];31 -> 12770[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12770 -> 39[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12771[label="yuz9/FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=10,color="white",style="solid",shape="box"];31 -> 12771[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12771 -> 40[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 34[label="FiniteMap.mkVBalBranch5 yuz40 yuz41 FiniteMap.EmptyFM yuz6",fontsize=16,color="black",shape="box"];34 -> 41[label="",style="solid", color="black", weight=3]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 37[label="yuz43",fontsize=16,color="green",shape="box"];38[label="yuz44",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]; 27.10/11.38 40[label="FiniteMap.glueVBal (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94) yuz8",fontsize=16,color="burlywood",shape="box"];12772[label="yuz8/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];40 -> 12772[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12772 -> 45[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12773[label="yuz8/FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=10,color="white",style="solid",shape="box"];40 -> 12773[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12773 -> 46[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 41[label="FiniteMap.addToFM yuz6 yuz40 yuz41",fontsize=16,color="black",shape="triangle"];41 -> 47[label="",style="solid", color="black", weight=3]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 44[label="FiniteMap.glueVBal5 FiniteMap.EmptyFM yuz8",fontsize=16,color="black",shape="box"];44 -> 50[label="",style="solid", color="black", weight=3]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 47[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz6 yuz40 yuz41",fontsize=16,color="burlywood",shape="triangle"];12774[label="yuz6/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];47 -> 12774[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12774 -> 53[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12775[label="yuz6/FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=10,color="white",style="solid",shape="box"];47 -> 12775[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12775 -> 54[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 48 -> 41[label="",style="dashed", color="red", weight=0]; 27.10/11.38 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]; 27.10/11.38 49 -> 7850[label="",style="dashed", color="red", weight=0]; 27.10/11.38 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 -> 7851[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7852[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7853[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7854[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7855[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7856[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7857[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7858[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7859[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7860[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7861[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7862[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 49 -> 7863[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 55[label="FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74",fontsize=16,color="green",shape="box"];7851[label="yuz41",fontsize=16,color="green",shape="box"];7852[label="yuz71",fontsize=16,color="green",shape="box"];7853[label="yuz61",fontsize=16,color="green",shape="box"];7854[label="yuz64",fontsize=16,color="green",shape="box"];7855[label="yuz62",fontsize=16,color="green",shape="box"];7856 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 7856[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"];7856 -> 9442[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 7856 -> 9443[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 7857[label="yuz72",fontsize=16,color="green",shape="box"];7858[label="yuz40",fontsize=16,color="green",shape="box"];7859[label="yuz63",fontsize=16,color="green",shape="box"];7860[label="yuz74",fontsize=16,color="green",shape="box"];7861[label="yuz60",fontsize=16,color="green",shape="box"];7862[label="yuz70",fontsize=16,color="green",shape="box"];7863[label="yuz73",fontsize=16,color="green",shape="box"];7850[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz359",fontsize=16,color="burlywood",shape="triangle"];12776[label="yuz359/False",fontsize=10,color="white",style="solid",shape="box"];7850 -> 12776[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12776 -> 9444[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12777[label="yuz359/True",fontsize=10,color="white",style="solid",shape="box"];7850 -> 12777[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12777 -> 9445[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 57[label="FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="green",shape="box"];58 -> 9504[label="",style="dashed", color="red", weight=0]; 27.10/11.38 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 -> 9505[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9506[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9507[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9508[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9509[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9510[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9511[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9512[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9513[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9514[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 58 -> 9515[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 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]; 27.10/11.38 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]; 27.10/11.38 9442[label="FiniteMap.mkVBalBranch3Size_r yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="black",shape="box"];9442 -> 9457[label="",style="solid", color="black", weight=3]; 27.10/11.38 9443 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9443[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="magenta"];9443 -> 9458[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 4104[label="yuz160 < yuz150",fontsize=16,color="black",shape="triangle"];4104 -> 4139[label="",style="solid", color="black", weight=3]; 27.10/11.38 9444[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 False",fontsize=16,color="black",shape="box"];9444 -> 9459[label="",style="solid", color="black", weight=3]; 27.10/11.38 9445[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 True",fontsize=16,color="black",shape="box"];9445 -> 9460[label="",style="solid", color="black", weight=3]; 27.10/11.38 9505[label="yuz82",fontsize=16,color="green",shape="box"];9506 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9506[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"];9506 -> 10524[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9506 -> 10525[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9507[label="yuz93",fontsize=16,color="green",shape="box"];9508[label="yuz80",fontsize=16,color="green",shape="box"];9509[label="yuz83",fontsize=16,color="green",shape="box"];9510[label="yuz90",fontsize=16,color="green",shape="box"];9511[label="yuz94",fontsize=16,color="green",shape="box"];9512[label="yuz81",fontsize=16,color="green",shape="box"];9513[label="yuz84",fontsize=16,color="green",shape="box"];9514[label="yuz91",fontsize=16,color="green",shape="box"];9515[label="yuz92",fontsize=16,color="green",shape="box"];9504[label="FiniteMap.glueVBal3GlueVBal2 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz365",fontsize=16,color="burlywood",shape="triangle"];12778[label="yuz365/False",fontsize=10,color="white",style="solid",shape="box"];9504 -> 12778[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12778 -> 10526[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12779[label="yuz365/True",fontsize=10,color="white",style="solid",shape="box"];9504 -> 12779[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12779 -> 10527[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 63[label="FiniteMap.unitFM yuz40 yuz41",fontsize=16,color="black",shape="box"];63 -> 67[label="",style="solid", color="black", weight=3]; 27.10/11.38 64 -> 10852[label="",style="dashed", color="red", weight=0]; 27.10/11.38 64[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz60 yuz61 yuz62 yuz63 yuz64 yuz40 yuz41 (yuz40 < yuz60)",fontsize=16,color="magenta"];64 -> 10853[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10854[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10855[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10856[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10857[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10858[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10859[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 64 -> 10860[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9457 -> 7425[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9457[label="FiniteMap.sizeFM (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="magenta"];9458[label="FiniteMap.mkVBalBranch3Size_l yuz70 yuz71 yuz72 yuz73 yuz74 yuz60 yuz61 yuz62 yuz63 yuz64",fontsize=16,color="black",shape="box"];9458 -> 9488[label="",style="solid", color="black", weight=3]; 27.10/11.38 7820[label="FiniteMap.sIZE_RATIO * yuz357",fontsize=16,color="black",shape="triangle"];7820 -> 7829[label="",style="solid", color="black", weight=3]; 27.10/11.38 4139[label="compare yuz160 yuz150 == LT",fontsize=16,color="black",shape="box"];4139 -> 4237[label="",style="solid", color="black", weight=3]; 27.10/11.38 9459 -> 9489[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9459[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 < FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="magenta"];9459 -> 9490[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9460 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9460[label="FiniteMap.mkBalBranch yuz1580 yuz1581 (FiniteMap.mkVBalBranch yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) yuz1583) yuz1584",fontsize=16,color="magenta"];9460 -> 11768[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9460 -> 11769[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9460 -> 11770[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9460 -> 11771[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10524[label="FiniteMap.glueVBal3Size_r yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="black",shape="box"];10524 -> 10557[label="",style="solid", color="black", weight=3]; 27.10/11.38 10525 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10525[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="magenta"];10525 -> 10558[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10526[label="FiniteMap.glueVBal3GlueVBal2 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 False",fontsize=16,color="black",shape="box"];10526 -> 10559[label="",style="solid", color="black", weight=3]; 27.10/11.38 10527[label="FiniteMap.glueVBal3GlueVBal2 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 True",fontsize=16,color="black",shape="box"];10527 -> 10560[label="",style="solid", color="black", weight=3]; 27.10/11.38 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]; 27.10/11.38 67 -> 72[label="",style="dashed", color="green", weight=3]; 27.10/11.38 10853[label="yuz61",fontsize=16,color="green",shape="box"];10854[label="yuz40 < yuz60",fontsize=16,color="black",shape="triangle"];10854 -> 11037[label="",style="solid", color="black", weight=3]; 27.10/11.38 10855[label="yuz63",fontsize=16,color="green",shape="box"];10856[label="yuz64",fontsize=16,color="green",shape="box"];10857[label="yuz60",fontsize=16,color="green",shape="box"];10858[label="yuz62",fontsize=16,color="green",shape="box"];10859[label="yuz41",fontsize=16,color="green",shape="box"];10860[label="yuz40",fontsize=16,color="green",shape="box"];10852[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz400 yuz401 yuz402 yuz403 yuz404 yuz405 yuz406 yuz407",fontsize=16,color="burlywood",shape="triangle"];12780[label="yuz407/False",fontsize=10,color="white",style="solid",shape="box"];10852 -> 12780[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12780 -> 11038[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12781[label="yuz407/True",fontsize=10,color="white",style="solid",shape="box"];10852 -> 12781[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12781 -> 11039[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 7425[label="FiniteMap.sizeFM (FiniteMap.Branch yuz60 yuz61 yuz62 yuz63 yuz64)",fontsize=16,color="black",shape="triangle"];7425 -> 7443[label="",style="solid", color="black", weight=3]; 27.10/11.38 9488 -> 7425[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9488[label="FiniteMap.sizeFM (FiniteMap.Branch yuz70 yuz71 yuz72 yuz73 yuz74)",fontsize=16,color="magenta"];9488 -> 9492[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9488 -> 9493[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9488 -> 9494[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9488 -> 9495[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9488 -> 9496[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 7829[label="primMulInt FiniteMap.sIZE_RATIO yuz357",fontsize=16,color="black",shape="triangle"];7829 -> 7833[label="",style="solid", color="black", weight=3]; 27.10/11.38 4237[label="primCmpInt yuz160 yuz150 == LT",fontsize=16,color="burlywood",shape="triangle"];12782[label="yuz160/Pos yuz1600",fontsize=10,color="white",style="solid",shape="box"];4237 -> 12782[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12782 -> 4290[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12783[label="yuz160/Neg yuz1600",fontsize=10,color="white",style="solid",shape="box"];4237 -> 12783[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12783 -> 4291[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 9490 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9490[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 < FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584",fontsize=16,color="magenta"];9490 -> 9497[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9490 -> 9498[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9489[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz363",fontsize=16,color="burlywood",shape="triangle"];12784[label="yuz363/False",fontsize=10,color="white",style="solid",shape="box"];9489 -> 12784[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12784 -> 9499[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12785[label="yuz363/True",fontsize=10,color="white",style="solid",shape="box"];9489 -> 12785[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12785 -> 9500[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11768[label="yuz1580",fontsize=16,color="green",shape="box"];11769[label="yuz1581",fontsize=16,color="green",shape="box"];11770[label="FiniteMap.mkVBalBranch yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) yuz1583",fontsize=16,color="burlywood",shape="box"];12786[label="yuz1583/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11770 -> 12786[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12786 -> 11798[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12787[label="yuz1583/FiniteMap.Branch yuz15830 yuz15831 yuz15832 yuz15833 yuz15834",fontsize=10,color="white",style="solid",shape="box"];11770 -> 12787[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12787 -> 11799[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11771[label="yuz1584",fontsize=16,color="green",shape="box"];11767[label="FiniteMap.mkBalBranch yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="triangle"];11767 -> 11800[label="",style="solid", color="black", weight=3]; 27.10/11.38 10557 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10557[label="FiniteMap.sizeFM (FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84)",fontsize=16,color="magenta"];10557 -> 10575[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10558[label="FiniteMap.glueVBal3Size_l yuz80 yuz81 yuz82 yuz83 yuz84 yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="black",shape="box"];10558 -> 10576[label="",style="solid", color="black", weight=3]; 27.10/11.38 10559 -> 10577[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10559[label="FiniteMap.glueVBal3GlueVBal1 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 < FiniteMap.glueVBal3Size_l yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];10559 -> 10578[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10560 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10560[label="FiniteMap.mkBalBranch yuz2340 yuz2341 (FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) yuz2343) yuz2344",fontsize=16,color="magenta"];10560 -> 11772[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 71 -> 9[label="",style="dashed", color="red", weight=0]; 27.10/11.38 71[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];72 -> 9[label="",style="dashed", color="red", weight=0]; 27.10/11.38 72[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];11037[label="compare yuz40 yuz60 == LT",fontsize=16,color="black",shape="box"];11037 -> 11090[label="",style="solid", color="black", weight=3]; 27.10/11.38 11038[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz400 yuz401 yuz402 yuz403 yuz404 yuz405 yuz406 False",fontsize=16,color="black",shape="box"];11038 -> 11091[label="",style="solid", color="black", weight=3]; 27.10/11.38 11039[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz400 yuz401 yuz402 yuz403 yuz404 yuz405 yuz406 True",fontsize=16,color="black",shape="box"];11039 -> 11092[label="",style="solid", color="black", weight=3]; 27.10/11.38 7443[label="yuz62",fontsize=16,color="green",shape="box"];9492[label="yuz74",fontsize=16,color="green",shape="box"];9493[label="yuz72",fontsize=16,color="green",shape="box"];9494[label="yuz71",fontsize=16,color="green",shape="box"];9495[label="yuz73",fontsize=16,color="green",shape="box"];9496[label="yuz70",fontsize=16,color="green",shape="box"];7833[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) yuz357",fontsize=16,color="burlywood",shape="triangle"];12788[label="yuz357/Pos yuz3570",fontsize=10,color="white",style="solid",shape="box"];7833 -> 12788[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12788 -> 9446[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12789[label="yuz357/Neg yuz3570",fontsize=10,color="white",style="solid",shape="box"];7833 -> 12789[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12789 -> 9447[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 4290[label="primCmpInt (Pos yuz1600) yuz150 == LT",fontsize=16,color="burlywood",shape="box"];12790[label="yuz1600/Succ yuz16000",fontsize=10,color="white",style="solid",shape="box"];4290 -> 12790[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12790 -> 5170[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12791[label="yuz1600/Zero",fontsize=10,color="white",style="solid",shape="box"];4290 -> 12791[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12791 -> 5171[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 4291[label="primCmpInt (Neg yuz1600) yuz150 == LT",fontsize=16,color="burlywood",shape="box"];12792[label="yuz1600/Succ yuz16000",fontsize=10,color="white",style="solid",shape="box"];4291 -> 12792[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12792 -> 5172[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12793[label="yuz1600/Zero",fontsize=10,color="white",style="solid",shape="box"];4291 -> 12793[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12793 -> 5173[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 9497[label="FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584",fontsize=16,color="black",shape="triangle"];9497 -> 10529[label="",style="solid", color="black", weight=3]; 27.10/11.38 9498 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9498[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584",fontsize=16,color="magenta"];9498 -> 10530[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9499[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 False",fontsize=16,color="black",shape="box"];9499 -> 10531[label="",style="solid", color="black", weight=3]; 27.10/11.38 9500[label="FiniteMap.mkVBalBranch3MkVBalBranch1 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 True",fontsize=16,color="black",shape="box"];9500 -> 10532[label="",style="solid", color="black", weight=3]; 27.10/11.38 11798[label="FiniteMap.mkVBalBranch yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11798 -> 11822[label="",style="solid", color="black", weight=3]; 27.10/11.38 11799[label="FiniteMap.mkVBalBranch yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) (FiniteMap.Branch yuz15830 yuz15831 yuz15832 yuz15833 yuz15834)",fontsize=16,color="black",shape="box"];11799 -> 11823[label="",style="solid", color="black", weight=3]; 27.10/11.38 11800[label="FiniteMap.mkBalBranch6 yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="box"];11800 -> 11824[label="",style="solid", color="black", weight=3]; 27.10/11.38 10575[label="FiniteMap.Branch yuz80 yuz81 yuz82 yuz83 yuz84",fontsize=16,color="green",shape="box"];7764[label="FiniteMap.sizeFM yuz320",fontsize=16,color="burlywood",shape="triangle"];12794[label="yuz320/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];7764 -> 12794[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12794 -> 10539[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12795[label="yuz320/FiniteMap.Branch yuz3200 yuz3201 yuz3202 yuz3203 yuz3204",fontsize=10,color="white",style="solid",shape="box"];7764 -> 12795[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12795 -> 10540[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 10576 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10576[label="FiniteMap.sizeFM (FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94)",fontsize=16,color="magenta"];10576 -> 10580[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10578 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10578[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 < FiniteMap.glueVBal3Size_l yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="magenta"];10578 -> 10581[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10578 -> 10582[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10577[label="FiniteMap.glueVBal3GlueVBal1 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz369",fontsize=16,color="burlywood",shape="triangle"];12796[label="yuz369/False",fontsize=10,color="white",style="solid",shape="box"];10577 -> 12796[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12796 -> 10583[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12797[label="yuz369/True",fontsize=10,color="white",style="solid",shape="box"];10577 -> 12797[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12797 -> 10584[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11772[label="FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) yuz2343",fontsize=16,color="burlywood",shape="box"];12798[label="yuz2343/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11772 -> 12798[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12798 -> 11801[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12799[label="yuz2343/FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434",fontsize=10,color="white",style="solid",shape="box"];11772 -> 12799[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12799 -> 11802[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11090[label="compare3 yuz40 yuz60 == LT",fontsize=16,color="black",shape="box"];11090 -> 11129[label="",style="solid", color="black", weight=3]; 27.10/11.38 11091 -> 11130[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11091[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz400 yuz401 yuz402 yuz403 yuz404 yuz405 yuz406 (yuz405 > yuz400)",fontsize=16,color="magenta"];11091 -> 11131[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11132[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11133[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11134[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11135[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11136[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11137[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11091 -> 11138[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11092 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11092[label="FiniteMap.mkBalBranch yuz400 yuz401 (FiniteMap.addToFM_C FiniteMap.addToFM0 yuz403 yuz405 yuz406) yuz404",fontsize=16,color="magenta"];11092 -> 11773[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11092 -> 11774[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11092 -> 11775[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11092 -> 11776[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 9446[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) (Pos yuz3570)",fontsize=16,color="black",shape="box"];9446 -> 9461[label="",style="solid", color="black", weight=3]; 27.10/11.38 9447[label="primMulInt (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) (Neg yuz3570)",fontsize=16,color="black",shape="box"];9447 -> 9462[label="",style="solid", color="black", weight=3]; 27.10/11.38 5170[label="primCmpInt (Pos (Succ yuz16000)) yuz150 == LT",fontsize=16,color="burlywood",shape="box"];12800[label="yuz150/Pos yuz1500",fontsize=10,color="white",style="solid",shape="box"];5170 -> 12800[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12800 -> 5222[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12801[label="yuz150/Neg yuz1500",fontsize=10,color="white",style="solid",shape="box"];5170 -> 12801[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12801 -> 5223[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5171[label="primCmpInt (Pos Zero) yuz150 == LT",fontsize=16,color="burlywood",shape="box"];12802[label="yuz150/Pos yuz1500",fontsize=10,color="white",style="solid",shape="box"];5171 -> 12802[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12802 -> 5224[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12803[label="yuz150/Neg yuz1500",fontsize=10,color="white",style="solid",shape="box"];5171 -> 12803[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12803 -> 5225[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5172[label="primCmpInt (Neg (Succ yuz16000)) yuz150 == LT",fontsize=16,color="burlywood",shape="box"];12804[label="yuz150/Pos yuz1500",fontsize=10,color="white",style="solid",shape="box"];5172 -> 12804[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12804 -> 5226[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12805[label="yuz150/Neg yuz1500",fontsize=10,color="white",style="solid",shape="box"];5172 -> 12805[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12805 -> 5227[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5173[label="primCmpInt (Neg Zero) yuz150 == LT",fontsize=16,color="burlywood",shape="box"];12806[label="yuz150/Pos yuz1500",fontsize=10,color="white",style="solid",shape="box"];5173 -> 12806[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12806 -> 5228[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12807[label="yuz150/Neg yuz1500",fontsize=10,color="white",style="solid",shape="box"];5173 -> 12807[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12807 -> 5229[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 10529 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10529[label="FiniteMap.sizeFM (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544)",fontsize=16,color="magenta"];10529 -> 10567[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10530[label="FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584",fontsize=16,color="black",shape="triangle"];10530 -> 10568[label="",style="solid", color="black", weight=3]; 27.10/11.38 10531[label="FiniteMap.mkVBalBranch3MkVBalBranch0 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 otherwise",fontsize=16,color="black",shape="box"];10531 -> 10569[label="",style="solid", color="black", weight=3]; 27.10/11.38 10532 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10532[label="FiniteMap.mkBalBranch yuz1540 yuz1541 yuz1543 (FiniteMap.mkVBalBranch yuz160 yuz161 yuz1544 (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584))",fontsize=16,color="magenta"];10532 -> 11777[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10532 -> 11778[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10532 -> 11779[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10532 -> 11780[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11822[label="FiniteMap.mkVBalBranch4 yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11822 -> 11841[label="",style="solid", color="black", weight=3]; 27.10/11.38 11823[label="FiniteMap.mkVBalBranch3 yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) (FiniteMap.Branch yuz15830 yuz15831 yuz15832 yuz15833 yuz15834)",fontsize=16,color="black",shape="triangle"];11823 -> 11842[label="",style="solid", color="black", weight=3]; 27.10/11.38 11824 -> 11843[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11824[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 (FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344 + FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344 < Pos (Succ (Succ Zero)))",fontsize=16,color="magenta"];11824 -> 11844[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10539[label="FiniteMap.sizeFM FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];10539 -> 10589[label="",style="solid", color="black", weight=3]; 27.10/11.38 10540[label="FiniteMap.sizeFM (FiniteMap.Branch yuz3200 yuz3201 yuz3202 yuz3203 yuz3204)",fontsize=16,color="black",shape="box"];10540 -> 10590[label="",style="solid", color="black", weight=3]; 27.10/11.38 10580[label="FiniteMap.Branch yuz90 yuz91 yuz92 yuz93 yuz94",fontsize=16,color="green",shape="box"];10581[label="FiniteMap.glueVBal3Size_l yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="black",shape="triangle"];10581 -> 10627[label="",style="solid", color="black", weight=3]; 27.10/11.38 10582 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10582[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_r yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="magenta"];10582 -> 10628[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10583[label="FiniteMap.glueVBal3GlueVBal1 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 False",fontsize=16,color="black",shape="box"];10583 -> 10629[label="",style="solid", color="black", weight=3]; 27.10/11.38 10584[label="FiniteMap.glueVBal3GlueVBal1 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 True",fontsize=16,color="black",shape="box"];10584 -> 10630[label="",style="solid", color="black", weight=3]; 27.10/11.38 11801[label="FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11801 -> 11825[label="",style="solid", color="black", weight=3]; 27.10/11.38 11802[label="FiniteMap.glueVBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434)",fontsize=16,color="black",shape="box"];11802 -> 11826[label="",style="solid", color="black", weight=3]; 27.10/11.38 11129[label="compare2 yuz40 yuz60 (yuz40 == yuz60) == LT",fontsize=16,color="burlywood",shape="box"];12808[label="yuz40/False",fontsize=10,color="white",style="solid",shape="box"];11129 -> 12808[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12808 -> 11140[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12809[label="yuz40/True",fontsize=10,color="white",style="solid",shape="box"];11129 -> 12809[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12809 -> 11141[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11131[label="yuz401",fontsize=16,color="green",shape="box"];11132[label="yuz405 > yuz400",fontsize=16,color="blue",shape="box"];12810[label="> :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12810[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12810 -> 11142[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12811[label="> :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12811[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12811 -> 11143[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12812[label="> :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12812[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12812 -> 11144[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12813[label="> :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12813[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12813 -> 11145[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12814[label="> :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12814[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12814 -> 11146[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12815[label="> :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12815[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12815 -> 11147[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12816[label="> :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12816[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12816 -> 11148[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12817[label="> :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12817[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12817 -> 11149[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12818[label="> :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12818[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12818 -> 11150[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12819[label="> :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12819[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12819 -> 11151[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12820[label="> :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12820[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12820 -> 11152[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12821[label="> :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12821[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12821 -> 11153[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12822[label="> :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12822[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12822 -> 11154[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12823[label="> :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];11132 -> 12823[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12823 -> 11155[label="",style="solid", color="blue", weight=3]; 27.10/11.38 11133[label="yuz404",fontsize=16,color="green",shape="box"];11134[label="yuz400",fontsize=16,color="green",shape="box"];11135[label="yuz405",fontsize=16,color="green",shape="box"];11136[label="yuz406",fontsize=16,color="green",shape="box"];11137[label="yuz402",fontsize=16,color="green",shape="box"];11138[label="yuz403",fontsize=16,color="green",shape="box"];11130[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz422 yuz423 yuz424 yuz425 yuz426 yuz427 yuz428 yuz429",fontsize=16,color="burlywood",shape="triangle"];12824[label="yuz429/False",fontsize=10,color="white",style="solid",shape="box"];11130 -> 12824[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12824 -> 11156[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12825[label="yuz429/True",fontsize=10,color="white",style="solid",shape="box"];11130 -> 12825[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12825 -> 11157[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11773[label="yuz400",fontsize=16,color="green",shape="box"];11774[label="yuz401",fontsize=16,color="green",shape="box"];11775[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz403 yuz405 yuz406",fontsize=16,color="burlywood",shape="triangle"];12826[label="yuz403/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11775 -> 12826[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12826 -> 11803[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12827[label="yuz403/FiniteMap.Branch yuz4030 yuz4031 yuz4032 yuz4033 yuz4034",fontsize=10,color="white",style="solid",shape="box"];11775 -> 12827[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12827 -> 11804[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11776[label="yuz404",fontsize=16,color="green",shape="box"];9461[label="Pos (primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz3570)",fontsize=16,color="green",shape="box"];9461 -> 9501[label="",style="dashed", color="green", weight=3]; 27.10/11.38 9462[label="Neg (primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz3570)",fontsize=16,color="green",shape="box"];9462 -> 9502[label="",style="dashed", color="green", weight=3]; 27.10/11.38 5222[label="primCmpInt (Pos (Succ yuz16000)) (Pos yuz1500) == LT",fontsize=16,color="black",shape="box"];5222 -> 5242[label="",style="solid", color="black", weight=3]; 27.10/11.38 5223[label="primCmpInt (Pos (Succ yuz16000)) (Neg yuz1500) == LT",fontsize=16,color="black",shape="box"];5223 -> 5243[label="",style="solid", color="black", weight=3]; 27.10/11.38 5224[label="primCmpInt (Pos Zero) (Pos yuz1500) == LT",fontsize=16,color="burlywood",shape="box"];12828[label="yuz1500/Succ yuz15000",fontsize=10,color="white",style="solid",shape="box"];5224 -> 12828[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12828 -> 5244[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12829[label="yuz1500/Zero",fontsize=10,color="white",style="solid",shape="box"];5224 -> 12829[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12829 -> 5245[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5225[label="primCmpInt (Pos Zero) (Neg yuz1500) == LT",fontsize=16,color="burlywood",shape="box"];12830[label="yuz1500/Succ yuz15000",fontsize=10,color="white",style="solid",shape="box"];5225 -> 12830[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12830 -> 5246[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12831[label="yuz1500/Zero",fontsize=10,color="white",style="solid",shape="box"];5225 -> 12831[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12831 -> 5247[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5226[label="primCmpInt (Neg (Succ yuz16000)) (Pos yuz1500) == LT",fontsize=16,color="black",shape="box"];5226 -> 5248[label="",style="solid", color="black", weight=3]; 27.10/11.38 5227[label="primCmpInt (Neg (Succ yuz16000)) (Neg yuz1500) == LT",fontsize=16,color="black",shape="box"];5227 -> 5249[label="",style="solid", color="black", weight=3]; 27.10/11.38 5228[label="primCmpInt (Neg Zero) (Pos yuz1500) == LT",fontsize=16,color="burlywood",shape="box"];12832[label="yuz1500/Succ yuz15000",fontsize=10,color="white",style="solid",shape="box"];5228 -> 12832[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12832 -> 5250[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12833[label="yuz1500/Zero",fontsize=10,color="white",style="solid",shape="box"];5228 -> 12833[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12833 -> 5251[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5229[label="primCmpInt (Neg Zero) (Neg yuz1500) == LT",fontsize=16,color="burlywood",shape="box"];12834[label="yuz1500/Succ yuz15000",fontsize=10,color="white",style="solid",shape="box"];5229 -> 12834[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12834 -> 5252[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12835[label="yuz1500/Zero",fontsize=10,color="white",style="solid",shape="box"];5229 -> 12835[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12835 -> 5253[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 10567[label="FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544",fontsize=16,color="green",shape="box"];10568 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10568[label="FiniteMap.sizeFM (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="magenta"];10568 -> 10591[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10569[label="FiniteMap.mkVBalBranch3MkVBalBranch0 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz1580 yuz1581 yuz1582 yuz1583 yuz1584 True",fontsize=16,color="black",shape="box"];10569 -> 10592[label="",style="solid", color="black", weight=3]; 27.10/11.38 11777[label="yuz1540",fontsize=16,color="green",shape="box"];11778[label="yuz1541",fontsize=16,color="green",shape="box"];11779[label="yuz1543",fontsize=16,color="green",shape="box"];11780[label="FiniteMap.mkVBalBranch yuz160 yuz161 yuz1544 (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="burlywood",shape="box"];12836[label="yuz1544/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11780 -> 12836[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12836 -> 11805[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12837[label="yuz1544/FiniteMap.Branch yuz15440 yuz15441 yuz15442 yuz15443 yuz15444",fontsize=10,color="white",style="solid",shape="box"];11780 -> 12837[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12837 -> 11806[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11841[label="FiniteMap.addToFM (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) yuz160 yuz161",fontsize=16,color="black",shape="triangle"];11841 -> 11845[label="",style="solid", color="black", weight=3]; 27.10/11.38 11842 -> 7850[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11842[label="FiniteMap.mkVBalBranch3MkVBalBranch2 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834 yuz160 yuz161 yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834 (FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834 < FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834)",fontsize=16,color="magenta"];11842 -> 11846[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11842 -> 11847[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11842 -> 11848[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11842 -> 11849[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11842 -> 11850[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11842 -> 11851[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11844 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11844[label="FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344 + FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344 < Pos (Succ (Succ Zero))",fontsize=16,color="magenta"];11844 -> 11852[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11844 -> 11853[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11843[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 yuz444",fontsize=16,color="burlywood",shape="triangle"];12838[label="yuz444/False",fontsize=10,color="white",style="solid",shape="box"];11843 -> 12838[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12838 -> 11854[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12839[label="yuz444/True",fontsize=10,color="white",style="solid",shape="box"];11843 -> 12839[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12839 -> 11855[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 10589[label="Pos Zero",fontsize=16,color="green",shape="box"];10590[label="yuz3202",fontsize=16,color="green",shape="box"];10627 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10627[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];10627 -> 10658[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10628[label="FiniteMap.glueVBal3Size_r yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="black",shape="triangle"];10628 -> 10659[label="",style="solid", color="black", weight=3]; 27.10/11.38 10629[label="FiniteMap.glueVBal3GlueVBal0 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 otherwise",fontsize=16,color="black",shape="box"];10629 -> 10660[label="",style="solid", color="black", weight=3]; 27.10/11.38 10630 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10630[label="FiniteMap.mkBalBranch yuz2400 yuz2401 yuz2403 (FiniteMap.glueVBal yuz2404 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344))",fontsize=16,color="magenta"];10630 -> 11781[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10630 -> 11782[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10630 -> 11783[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10630 -> 11784[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11825[label="FiniteMap.glueVBal4 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];11825 -> 11856[label="",style="solid", color="black", weight=3]; 27.10/11.38 11826[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434)",fontsize=16,color="black",shape="triangle"];11826 -> 11857[label="",style="solid", color="black", weight=3]; 27.10/11.38 11140[label="compare2 False yuz60 (False == yuz60) == LT",fontsize=16,color="burlywood",shape="box"];12840[label="yuz60/False",fontsize=10,color="white",style="solid",shape="box"];11140 -> 12840[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12840 -> 11188[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12841[label="yuz60/True",fontsize=10,color="white",style="solid",shape="box"];11140 -> 12841[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12841 -> 11189[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11141[label="compare2 True yuz60 (True == yuz60) == LT",fontsize=16,color="burlywood",shape="box"];12842[label="yuz60/False",fontsize=10,color="white",style="solid",shape="box"];11141 -> 12842[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12842 -> 11190[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12843[label="yuz60/True",fontsize=10,color="white",style="solid",shape="box"];11141 -> 12843[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12843 -> 11191[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11142[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11142 -> 11192[label="",style="solid", color="black", weight=3]; 27.10/11.38 11143[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11143 -> 11193[label="",style="solid", color="black", weight=3]; 27.10/11.38 11144[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11144 -> 11194[label="",style="solid", color="black", weight=3]; 27.10/11.38 11145[label="yuz405 > yuz400",fontsize=16,color="black",shape="triangle"];11145 -> 11195[label="",style="solid", color="black", weight=3]; 27.10/11.38 11146[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11146 -> 11196[label="",style="solid", color="black", weight=3]; 27.10/11.38 11147[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11147 -> 11197[label="",style="solid", color="black", weight=3]; 27.10/11.38 11148[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11148 -> 11198[label="",style="solid", color="black", weight=3]; 27.10/11.38 11149[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11149 -> 11199[label="",style="solid", color="black", weight=3]; 27.10/11.38 11150[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11150 -> 11200[label="",style="solid", color="black", weight=3]; 27.10/11.38 11151[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11151 -> 11201[label="",style="solid", color="black", weight=3]; 27.10/11.38 11152[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11152 -> 11202[label="",style="solid", color="black", weight=3]; 27.10/11.38 11153[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11153 -> 11203[label="",style="solid", color="black", weight=3]; 27.10/11.38 11154[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11154 -> 11204[label="",style="solid", color="black", weight=3]; 27.10/11.38 11155[label="yuz405 > yuz400",fontsize=16,color="black",shape="box"];11155 -> 11205[label="",style="solid", color="black", weight=3]; 27.10/11.38 11156[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz422 yuz423 yuz424 yuz425 yuz426 yuz427 yuz428 False",fontsize=16,color="black",shape="box"];11156 -> 11206[label="",style="solid", color="black", weight=3]; 27.10/11.38 11157[label="FiniteMap.addToFM_C1 FiniteMap.addToFM0 yuz422 yuz423 yuz424 yuz425 yuz426 yuz427 yuz428 True",fontsize=16,color="black",shape="box"];11157 -> 11207[label="",style="solid", color="black", weight=3]; 27.10/11.38 11803[label="FiniteMap.addToFM_C FiniteMap.addToFM0 FiniteMap.EmptyFM yuz405 yuz406",fontsize=16,color="black",shape="box"];11803 -> 11827[label="",style="solid", color="black", weight=3]; 27.10/11.38 11804[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz4030 yuz4031 yuz4032 yuz4033 yuz4034) yuz405 yuz406",fontsize=16,color="black",shape="box"];11804 -> 11828[label="",style="solid", color="black", weight=3]; 27.10/11.38 9501[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz3570",fontsize=16,color="burlywood",shape="triangle"];12844[label="yuz3570/Succ yuz35700",fontsize=10,color="white",style="solid",shape="box"];9501 -> 12844[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12844 -> 10533[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12845[label="yuz3570/Zero",fontsize=10,color="white",style="solid",shape="box"];9501 -> 12845[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12845 -> 10534[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 9502 -> 9501[label="",style="dashed", color="red", weight=0]; 27.10/11.38 9502[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) yuz3570",fontsize=16,color="magenta"];9502 -> 10535[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 5242[label="primCmpNat (Succ yuz16000) yuz1500 == LT",fontsize=16,color="burlywood",shape="triangle"];12846[label="yuz1500/Succ yuz15000",fontsize=10,color="white",style="solid",shape="box"];5242 -> 12846[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12846 -> 5283[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12847[label="yuz1500/Zero",fontsize=10,color="white",style="solid",shape="box"];5242 -> 12847[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12847 -> 5284[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5243[label="GT == LT",fontsize=16,color="black",shape="triangle"];5243 -> 5285[label="",style="solid", color="black", weight=3]; 27.10/11.38 5244[label="primCmpInt (Pos Zero) (Pos (Succ yuz15000)) == LT",fontsize=16,color="black",shape="box"];5244 -> 5286[label="",style="solid", color="black", weight=3]; 27.10/11.38 5245[label="primCmpInt (Pos Zero) (Pos Zero) == LT",fontsize=16,color="black",shape="box"];5245 -> 5287[label="",style="solid", color="black", weight=3]; 27.10/11.38 5246[label="primCmpInt (Pos Zero) (Neg (Succ yuz15000)) == LT",fontsize=16,color="black",shape="box"];5246 -> 5288[label="",style="solid", color="black", weight=3]; 27.10/11.38 5247[label="primCmpInt (Pos Zero) (Neg Zero) == LT",fontsize=16,color="black",shape="box"];5247 -> 5289[label="",style="solid", color="black", weight=3]; 27.10/11.38 5248[label="LT == LT",fontsize=16,color="black",shape="triangle"];5248 -> 5290[label="",style="solid", color="black", weight=3]; 27.10/11.38 5249[label="primCmpNat yuz1500 (Succ yuz16000) == LT",fontsize=16,color="burlywood",shape="triangle"];12848[label="yuz1500/Succ yuz15000",fontsize=10,color="white",style="solid",shape="box"];5249 -> 12848[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12848 -> 5291[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12849[label="yuz1500/Zero",fontsize=10,color="white",style="solid",shape="box"];5249 -> 12849[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12849 -> 5292[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 5250[label="primCmpInt (Neg Zero) (Pos (Succ yuz15000)) == LT",fontsize=16,color="black",shape="box"];5250 -> 5293[label="",style="solid", color="black", weight=3]; 27.10/11.38 5251[label="primCmpInt (Neg Zero) (Pos Zero) == LT",fontsize=16,color="black",shape="box"];5251 -> 5294[label="",style="solid", color="black", weight=3]; 27.10/11.38 5252[label="primCmpInt (Neg Zero) (Neg (Succ yuz15000)) == LT",fontsize=16,color="black",shape="box"];5252 -> 5295[label="",style="solid", color="black", weight=3]; 27.10/11.38 5253[label="primCmpInt (Neg Zero) (Neg Zero) == LT",fontsize=16,color="black",shape="box"];5253 -> 5296[label="",style="solid", color="black", weight=3]; 27.10/11.38 10591[label="FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584",fontsize=16,color="green",shape="box"];10592 -> 10638[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10592[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))) yuz160 yuz161 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="magenta"];10592 -> 10639[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10640[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10641[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10642[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10643[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10644[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10645[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10646[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10647[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10648[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10649[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10650[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10592 -> 10651[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11805[label="FiniteMap.mkVBalBranch yuz160 yuz161 FiniteMap.EmptyFM (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="black",shape="box"];11805 -> 11829[label="",style="solid", color="black", weight=3]; 27.10/11.38 11806[label="FiniteMap.mkVBalBranch yuz160 yuz161 (FiniteMap.Branch yuz15440 yuz15441 yuz15442 yuz15443 yuz15444) (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="black",shape="box"];11806 -> 11830[label="",style="solid", color="black", weight=3]; 27.10/11.38 11845 -> 11775[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11845[label="FiniteMap.addToFM_C FiniteMap.addToFM0 (FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544) yuz160 yuz161",fontsize=16,color="magenta"];11845 -> 11895[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11845 -> 11896[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11845 -> 11897[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11846[label="yuz15831",fontsize=16,color="green",shape="box"];11847[label="yuz15834",fontsize=16,color="green",shape="box"];11848[label="yuz15832",fontsize=16,color="green",shape="box"];11849 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11849[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834 < FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834",fontsize=16,color="magenta"];11849 -> 11898[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11849 -> 11899[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11850[label="yuz15833",fontsize=16,color="green",shape="box"];11851[label="yuz15830",fontsize=16,color="green",shape="box"];11852[label="Pos (Succ (Succ Zero))",fontsize=16,color="green",shape="box"];11853[label="FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344 + FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="box"];11853 -> 11900[label="",style="solid", color="black", weight=3]; 27.10/11.38 11854[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 False",fontsize=16,color="black",shape="box"];11854 -> 11901[label="",style="solid", color="black", weight=3]; 27.10/11.38 11855[label="FiniteMap.mkBalBranch6MkBalBranch5 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 True",fontsize=16,color="black",shape="box"];11855 -> 11902[label="",style="solid", color="black", weight=3]; 27.10/11.38 10658[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];10659 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10659[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="magenta"];10659 -> 10706[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10660[label="FiniteMap.glueVBal3GlueVBal0 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2340 yuz2341 yuz2342 yuz2343 yuz2344 True",fontsize=16,color="black",shape="box"];10660 -> 10707[label="",style="solid", color="black", weight=3]; 27.10/11.38 11781[label="yuz2400",fontsize=16,color="green",shape="box"];11782[label="yuz2401",fontsize=16,color="green",shape="box"];11783[label="yuz2403",fontsize=16,color="green",shape="box"];11784[label="FiniteMap.glueVBal yuz2404 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="burlywood",shape="box"];12850[label="yuz2404/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11784 -> 12850[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12850 -> 11807[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12851[label="yuz2404/FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044",fontsize=10,color="white",style="solid",shape="box"];11784 -> 12851[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12851 -> 11808[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11856[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];11857 -> 9504[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11857[label="FiniteMap.glueVBal3GlueVBal2 yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 (FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 < FiniteMap.glueVBal3Size_r yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];11857 -> 11903[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11857 -> 11904[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11857 -> 11905[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11857 -> 11906[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11857 -> 11907[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11857 -> 11908[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11188[label="compare2 False False (False == False) == LT",fontsize=16,color="black",shape="box"];11188 -> 11235[label="",style="solid", color="black", weight=3]; 27.10/11.38 11189[label="compare2 False True (False == True) == LT",fontsize=16,color="black",shape="box"];11189 -> 11236[label="",style="solid", color="black", weight=3]; 27.10/11.38 11190[label="compare2 True False (True == False) == LT",fontsize=16,color="black",shape="box"];11190 -> 11237[label="",style="solid", color="black", weight=3]; 27.10/11.38 11191[label="compare2 True True (True == True) == LT",fontsize=16,color="black",shape="box"];11191 -> 11238[label="",style="solid", color="black", weight=3]; 27.10/11.38 11192[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11192 -> 11239[label="",style="solid", color="black", weight=3]; 27.10/11.38 11193[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11193 -> 11240[label="",style="solid", color="black", weight=3]; 27.10/11.38 11194[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11194 -> 11241[label="",style="solid", color="black", weight=3]; 27.10/11.38 11195[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11195 -> 11242[label="",style="solid", color="black", weight=3]; 27.10/11.38 11196[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11196 -> 11243[label="",style="solid", color="black", weight=3]; 27.10/11.38 11197[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11197 -> 11244[label="",style="solid", color="black", weight=3]; 27.10/11.38 11198[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11198 -> 11245[label="",style="solid", color="black", weight=3]; 27.10/11.38 11199[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11199 -> 11246[label="",style="solid", color="black", weight=3]; 27.10/11.38 11200[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11200 -> 11247[label="",style="solid", color="black", weight=3]; 27.10/11.38 11201[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11201 -> 11248[label="",style="solid", color="black", weight=3]; 27.10/11.38 11202[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11202 -> 11249[label="",style="solid", color="black", weight=3]; 27.10/11.38 11203[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11203 -> 11250[label="",style="solid", color="black", weight=3]; 27.10/11.38 11204[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11204 -> 11251[label="",style="solid", color="black", weight=3]; 27.10/11.38 11205[label="compare yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11205 -> 11252[label="",style="solid", color="black", weight=3]; 27.10/11.38 11206[label="FiniteMap.addToFM_C0 FiniteMap.addToFM0 yuz422 yuz423 yuz424 yuz425 yuz426 yuz427 yuz428 otherwise",fontsize=16,color="black",shape="box"];11206 -> 11253[label="",style="solid", color="black", weight=3]; 27.10/11.38 11207 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11207[label="FiniteMap.mkBalBranch yuz422 yuz423 yuz425 (FiniteMap.addToFM_C FiniteMap.addToFM0 yuz426 yuz427 yuz428)",fontsize=16,color="magenta"];11207 -> 11785[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11207 -> 11786[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11207 -> 11787[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11207 -> 11788[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11827[label="FiniteMap.addToFM_C4 FiniteMap.addToFM0 FiniteMap.EmptyFM yuz405 yuz406",fontsize=16,color="black",shape="box"];11827 -> 11858[label="",style="solid", color="black", weight=3]; 27.10/11.38 11828[label="FiniteMap.addToFM_C3 FiniteMap.addToFM0 (FiniteMap.Branch yuz4030 yuz4031 yuz4032 yuz4033 yuz4034) yuz405 yuz406",fontsize=16,color="black",shape="box"];11828 -> 11859[label="",style="solid", color="black", weight=3]; 27.10/11.38 10533[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) (Succ yuz35700)",fontsize=16,color="black",shape="box"];10533 -> 10571[label="",style="solid", color="black", weight=3]; 27.10/11.38 10534[label="primMulNat (Succ (Succ (Succ (Succ (Succ Zero))))) Zero",fontsize=16,color="black",shape="box"];10534 -> 10572[label="",style="solid", color="black", weight=3]; 27.10/11.38 10535[label="yuz3570",fontsize=16,color="green",shape="box"];5283[label="primCmpNat (Succ yuz16000) (Succ yuz15000) == LT",fontsize=16,color="black",shape="box"];5283 -> 6718[label="",style="solid", color="black", weight=3]; 27.10/11.38 5284[label="primCmpNat (Succ yuz16000) Zero == LT",fontsize=16,color="black",shape="box"];5284 -> 6719[label="",style="solid", color="black", weight=3]; 27.10/11.38 5285[label="False",fontsize=16,color="green",shape="box"];5286 -> 5249[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5286[label="primCmpNat Zero (Succ yuz15000) == LT",fontsize=16,color="magenta"];5286 -> 6720[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 5286 -> 6721[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 5287[label="EQ == LT",fontsize=16,color="black",shape="triangle"];5287 -> 6722[label="",style="solid", color="black", weight=3]; 27.10/11.38 5288 -> 5243[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5288[label="GT == LT",fontsize=16,color="magenta"];5289 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5289[label="EQ == LT",fontsize=16,color="magenta"];5290[label="True",fontsize=16,color="green",shape="box"];5291[label="primCmpNat (Succ yuz15000) (Succ yuz16000) == LT",fontsize=16,color="black",shape="box"];5291 -> 6723[label="",style="solid", color="black", weight=3]; 27.10/11.38 5292[label="primCmpNat Zero (Succ yuz16000) == LT",fontsize=16,color="black",shape="box"];5292 -> 6724[label="",style="solid", color="black", weight=3]; 27.10/11.38 5293 -> 5248[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5293[label="LT == LT",fontsize=16,color="magenta"];5294 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5294[label="EQ == LT",fontsize=16,color="magenta"];5295 -> 5242[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5295[label="primCmpNat (Succ yuz15000) Zero == LT",fontsize=16,color="magenta"];5295 -> 6725[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 5295 -> 6726[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 5296 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.38 5296[label="EQ == LT",fontsize=16,color="magenta"];10639[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))",fontsize=16,color="green",shape="box"];10640[label="yuz1581",fontsize=16,color="green",shape="box"];10641[label="yuz1540",fontsize=16,color="green",shape="box"];10642[label="yuz1580",fontsize=16,color="green",shape="box"];10643[label="yuz1584",fontsize=16,color="green",shape="box"];10644[label="yuz1544",fontsize=16,color="green",shape="box"];10645[label="yuz160",fontsize=16,color="green",shape="box"];10646[label="yuz1541",fontsize=16,color="green",shape="box"];10647[label="yuz1582",fontsize=16,color="green",shape="box"];10648[label="yuz1542",fontsize=16,color="green",shape="box"];10649[label="yuz1543",fontsize=16,color="green",shape="box"];10650[label="yuz161",fontsize=16,color="green",shape="box"];10651[label="yuz1583",fontsize=16,color="green",shape="box"];10638[label="FiniteMap.mkBranch (Pos (Succ yuz372)) yuz373 yuz374 (FiniteMap.Branch yuz375 yuz376 yuz377 yuz378 yuz379) (FiniteMap.Branch yuz380 yuz381 yuz382 yuz383 yuz384)",fontsize=16,color="black",shape="triangle"];10638 -> 10670[label="",style="solid", color="black", weight=3]; 27.10/11.38 11829[label="FiniteMap.mkVBalBranch5 yuz160 yuz161 FiniteMap.EmptyFM (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="black",shape="box"];11829 -> 11860[label="",style="solid", color="black", weight=3]; 27.10/11.38 11830 -> 11823[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11830[label="FiniteMap.mkVBalBranch3 yuz160 yuz161 (FiniteMap.Branch yuz15440 yuz15441 yuz15442 yuz15443 yuz15444) (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584)",fontsize=16,color="magenta"];11830 -> 11861[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11862[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11863[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11864[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11865[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11866[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11867[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11868[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11869[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11830 -> 11870[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11895[label="FiniteMap.Branch yuz1540 yuz1541 yuz1542 yuz1543 yuz1544",fontsize=16,color="green",shape="box"];11896[label="yuz161",fontsize=16,color="green",shape="box"];11897[label="yuz160",fontsize=16,color="green",shape="box"];11898 -> 10530[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11898[label="FiniteMap.mkVBalBranch3Size_r yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834",fontsize=16,color="magenta"];11898 -> 11939[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11898 -> 11940[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11898 -> 11941[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11898 -> 11942[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11898 -> 11943[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11899 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11899[label="FiniteMap.sIZE_RATIO * FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834",fontsize=16,color="magenta"];11899 -> 11944[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11900 -> 11956[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11900[label="primPlusInt (FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344) (FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344)",fontsize=16,color="magenta"];11900 -> 11957[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11901 -> 11946[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11901[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 (FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344)",fontsize=16,color="magenta"];11901 -> 11947[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11902[label="FiniteMap.mkBranch (Pos (Succ Zero)) yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="box"];11902 -> 11948[label="",style="solid", color="black", weight=3]; 27.10/11.38 10706[label="FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344",fontsize=16,color="green",shape="box"];10707[label="FiniteMap.glueBal (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="black",shape="box"];10707 -> 10757[label="",style="solid", color="black", weight=3]; 27.10/11.38 11807[label="FiniteMap.glueVBal FiniteMap.EmptyFM (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="black",shape="box"];11807 -> 11831[label="",style="solid", color="black", weight=3]; 27.10/11.38 11808[label="FiniteMap.glueVBal (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="black",shape="box"];11808 -> 11832[label="",style="solid", color="black", weight=3]; 27.10/11.38 11903[label="yuz23432",fontsize=16,color="green",shape="box"];11904 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11904[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404 < FiniteMap.glueVBal3Size_r yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="magenta"];11904 -> 11949[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11904 -> 11950[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11905[label="yuz23430",fontsize=16,color="green",shape="box"];11906[label="yuz23433",fontsize=16,color="green",shape="box"];11907[label="yuz23431",fontsize=16,color="green",shape="box"];11908[label="yuz23434",fontsize=16,color="green",shape="box"];11235[label="compare2 False False True == LT",fontsize=16,color="black",shape="box"];11235 -> 11297[label="",style="solid", color="black", weight=3]; 27.10/11.38 11236[label="compare2 False True False == LT",fontsize=16,color="black",shape="box"];11236 -> 11298[label="",style="solid", color="black", weight=3]; 27.10/11.38 11237[label="compare2 True False False == LT",fontsize=16,color="black",shape="box"];11237 -> 11299[label="",style="solid", color="black", weight=3]; 27.10/11.38 11238[label="compare2 True True True == LT",fontsize=16,color="black",shape="box"];11238 -> 11300[label="",style="solid", color="black", weight=3]; 27.10/11.38 11239[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11239 -> 11301[label="",style="solid", color="black", weight=3]; 27.10/11.38 11240[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11240 -> 11302[label="",style="solid", color="black", weight=3]; 27.10/11.38 11241[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11241 -> 11303[label="",style="solid", color="black", weight=3]; 27.10/11.38 11242[label="primCmpInt yuz405 yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12852[label="yuz405/Pos yuz4050",fontsize=10,color="white",style="solid",shape="box"];11242 -> 12852[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12852 -> 11304[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12853[label="yuz405/Neg yuz4050",fontsize=10,color="white",style="solid",shape="box"];11242 -> 12853[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12853 -> 11305[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11243[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11243 -> 11306[label="",style="solid", color="black", weight=3]; 27.10/11.38 11244[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11244 -> 11307[label="",style="solid", color="black", weight=3]; 27.10/11.38 11245[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11245 -> 11308[label="",style="solid", color="black", weight=3]; 27.10/11.38 11246[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11246 -> 11309[label="",style="solid", color="black", weight=3]; 27.10/11.38 11247[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11247 -> 11310[label="",style="solid", color="black", weight=3]; 27.10/11.38 11248[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11248 -> 11311[label="",style="solid", color="black", weight=3]; 27.10/11.38 11249[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11249 -> 11312[label="",style="solid", color="black", weight=3]; 27.10/11.38 11250[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11250 -> 11313[label="",style="solid", color="black", weight=3]; 27.10/11.38 11251[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11251 -> 11314[label="",style="solid", color="black", weight=3]; 27.10/11.38 11252[label="compare3 yuz405 yuz400 == GT",fontsize=16,color="black",shape="box"];11252 -> 11315[label="",style="solid", color="black", weight=3]; 27.10/11.38 11253[label="FiniteMap.addToFM_C0 FiniteMap.addToFM0 yuz422 yuz423 yuz424 yuz425 yuz426 yuz427 yuz428 True",fontsize=16,color="black",shape="box"];11253 -> 11316[label="",style="solid", color="black", weight=3]; 27.10/11.38 11785[label="yuz422",fontsize=16,color="green",shape="box"];11786[label="yuz423",fontsize=16,color="green",shape="box"];11787[label="yuz425",fontsize=16,color="green",shape="box"];11788 -> 11775[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11788[label="FiniteMap.addToFM_C FiniteMap.addToFM0 yuz426 yuz427 yuz428",fontsize=16,color="magenta"];11788 -> 11809[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11788 -> 11810[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11788 -> 11811[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11858[label="FiniteMap.unitFM yuz405 yuz406",fontsize=16,color="black",shape="box"];11858 -> 11909[label="",style="solid", color="black", weight=3]; 27.10/11.38 11859 -> 10852[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11859[label="FiniteMap.addToFM_C2 FiniteMap.addToFM0 yuz4030 yuz4031 yuz4032 yuz4033 yuz4034 yuz405 yuz406 (yuz405 < yuz4030)",fontsize=16,color="magenta"];11859 -> 11910[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11859 -> 11911[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11859 -> 11912[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11859 -> 11913[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11859 -> 11914[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11859 -> 11915[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10571 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10571[label="primPlusNat (primMulNat (Succ (Succ (Succ (Succ Zero)))) (Succ yuz35700)) (Succ yuz35700)",fontsize=16,color="magenta"];10571 -> 10594[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10571 -> 10595[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10572[label="Zero",fontsize=16,color="green",shape="box"];6718[label="primCmpNat yuz16000 yuz15000 == LT",fontsize=16,color="burlywood",shape="triangle"];12854[label="yuz16000/Succ yuz160000",fontsize=10,color="white",style="solid",shape="box"];6718 -> 12854[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12854 -> 6748[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12855[label="yuz16000/Zero",fontsize=10,color="white",style="solid",shape="box"];6718 -> 12855[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12855 -> 6749[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 6719 -> 5243[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6719[label="GT == LT",fontsize=16,color="magenta"];6720[label="Zero",fontsize=16,color="green",shape="box"];6721[label="yuz15000",fontsize=16,color="green",shape="box"];6722[label="False",fontsize=16,color="green",shape="box"];6723 -> 6718[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6723[label="primCmpNat yuz15000 yuz16000 == LT",fontsize=16,color="magenta"];6723 -> 6750[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 6723 -> 6751[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 6724 -> 5248[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6724[label="LT == LT",fontsize=16,color="magenta"];6725[label="Zero",fontsize=16,color="green",shape="box"];6726[label="yuz15000",fontsize=16,color="green",shape="box"];10670 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10670[label="FiniteMap.mkBranchResult yuz373 yuz374 (FiniteMap.Branch yuz375 yuz376 yuz377 yuz378 yuz379) (FiniteMap.Branch yuz380 yuz381 yuz382 yuz383 yuz384)",fontsize=16,color="magenta"];10670 -> 10720[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10670 -> 10721[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10670 -> 10722[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10670 -> 10723[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11860 -> 11841[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11860[label="FiniteMap.addToFM (FiniteMap.Branch yuz1580 yuz1581 yuz1582 yuz1583 yuz1584) yuz160 yuz161",fontsize=16,color="magenta"];11860 -> 11916[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11860 -> 11917[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11860 -> 11918[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11860 -> 11919[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11860 -> 11920[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11861[label="yuz15441",fontsize=16,color="green",shape="box"];11862[label="yuz1580",fontsize=16,color="green",shape="box"];11863[label="yuz1581",fontsize=16,color="green",shape="box"];11864[label="yuz1583",fontsize=16,color="green",shape="box"];11865[label="yuz1584",fontsize=16,color="green",shape="box"];11866[label="yuz15444",fontsize=16,color="green",shape="box"];11867[label="yuz15440",fontsize=16,color="green",shape="box"];11868[label="yuz15442",fontsize=16,color="green",shape="box"];11869[label="yuz15443",fontsize=16,color="green",shape="box"];11870[label="yuz1582",fontsize=16,color="green",shape="box"];11939[label="yuz15831",fontsize=16,color="green",shape="box"];11940[label="yuz15834",fontsize=16,color="green",shape="box"];11941[label="yuz15832",fontsize=16,color="green",shape="box"];11942[label="yuz15830",fontsize=16,color="green",shape="box"];11943[label="yuz15833",fontsize=16,color="green",shape="box"];11944 -> 9497[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11944[label="FiniteMap.mkVBalBranch3Size_l yuz1540 yuz1541 yuz1542 yuz1543 yuz1544 yuz15830 yuz15831 yuz15832 yuz15833 yuz15834",fontsize=16,color="magenta"];11944 -> 11951[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11944 -> 11952[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11944 -> 11953[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11944 -> 11954[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11944 -> 11955[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11957[label="FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="triangle"];11957 -> 11959[label="",style="solid", color="black", weight=3]; 27.10/11.38 11956[label="primPlusInt yuz447 (FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344)",fontsize=16,color="burlywood",shape="triangle"];12856[label="yuz447/Pos yuz4470",fontsize=10,color="white",style="solid",shape="box"];11956 -> 12856[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12856 -> 11960[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12857[label="yuz447/Neg yuz4470",fontsize=10,color="white",style="solid",shape="box"];11956 -> 12857[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12857 -> 11961[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11947 -> 11145[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11947[label="FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];11947 -> 11962[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11947 -> 11963[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11946[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 yuz445",fontsize=16,color="burlywood",shape="triangle"];12858[label="yuz445/False",fontsize=10,color="white",style="solid",shape="box"];11946 -> 12858[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12858 -> 11964[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12859[label="yuz445/True",fontsize=10,color="white",style="solid",shape="box"];11946 -> 12859[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12859 -> 11965[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11948 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11948[label="FiniteMap.mkBranchResult yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];11948 -> 11966[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11948 -> 11967[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11948 -> 11968[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11948 -> 11969[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10757[label="FiniteMap.glueBal2 (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="black",shape="box"];10757 -> 10786[label="",style="solid", color="black", weight=3]; 27.10/11.38 11831[label="FiniteMap.glueVBal5 FiniteMap.EmptyFM (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="black",shape="box"];11831 -> 11871[label="",style="solid", color="black", weight=3]; 27.10/11.38 11832 -> 11826[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11832[label="FiniteMap.glueVBal3 (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="magenta"];11832 -> 11872[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11873[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11874[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11875[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11876[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11877[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11878[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11879[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11880[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11832 -> 11881[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11949 -> 10628[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11949[label="FiniteMap.glueVBal3Size_r yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="magenta"];11949 -> 11970[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11949 -> 11971[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11949 -> 11972[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11949 -> 11973[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11949 -> 11974[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11950 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11950[label="FiniteMap.sIZE_RATIO * FiniteMap.glueVBal3Size_l yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="magenta"];11950 -> 11975[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11297 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11297[label="EQ == LT",fontsize=16,color="magenta"];11298[label="compare1 False True (False <= True) == LT",fontsize=16,color="black",shape="box"];11298 -> 11350[label="",style="solid", color="black", weight=3]; 27.10/11.38 11299[label="compare1 True False (True <= False) == LT",fontsize=16,color="black",shape="box"];11299 -> 11351[label="",style="solid", color="black", weight=3]; 27.10/11.38 11300 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11300[label="EQ == LT",fontsize=16,color="magenta"];11301[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11301 -> 11352[label="",style="solid", color="black", weight=3]; 27.10/11.38 11302[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11302 -> 11353[label="",style="solid", color="black", weight=3]; 27.10/11.38 11303[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11303 -> 11354[label="",style="solid", color="black", weight=3]; 27.10/11.38 11304[label="primCmpInt (Pos yuz4050) yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12860[label="yuz4050/Succ yuz40500",fontsize=10,color="white",style="solid",shape="box"];11304 -> 12860[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12860 -> 11355[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12861[label="yuz4050/Zero",fontsize=10,color="white",style="solid",shape="box"];11304 -> 12861[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12861 -> 11356[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11305[label="primCmpInt (Neg yuz4050) yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12862[label="yuz4050/Succ yuz40500",fontsize=10,color="white",style="solid",shape="box"];11305 -> 12862[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12862 -> 11357[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12863[label="yuz4050/Zero",fontsize=10,color="white",style="solid",shape="box"];11305 -> 12863[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12863 -> 11358[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11306[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12864[label="yuz405/False",fontsize=10,color="white",style="solid",shape="box"];11306 -> 12864[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12864 -> 11359[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12865[label="yuz405/True",fontsize=10,color="white",style="solid",shape="box"];11306 -> 12865[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12865 -> 11360[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11307[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11307 -> 11361[label="",style="solid", color="black", weight=3]; 27.10/11.38 11308[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11308 -> 11362[label="",style="solid", color="black", weight=3]; 27.10/11.38 11309[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12866[label="yuz405/LT",fontsize=10,color="white",style="solid",shape="box"];11309 -> 12866[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12866 -> 11363[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12867[label="yuz405/EQ",fontsize=10,color="white",style="solid",shape="box"];11309 -> 12867[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12867 -> 11364[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12868[label="yuz405/GT",fontsize=10,color="white",style="solid",shape="box"];11309 -> 12868[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12868 -> 11365[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11310[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11310 -> 11366[label="",style="solid", color="black", weight=3]; 27.10/11.38 11311[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11311 -> 11367[label="",style="solid", color="black", weight=3]; 27.10/11.38 11312[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11312 -> 11368[label="",style="solid", color="black", weight=3]; 27.10/11.38 11313[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11313 -> 11369[label="",style="solid", color="black", weight=3]; 27.10/11.38 11314[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11314 -> 11370[label="",style="solid", color="black", weight=3]; 27.10/11.38 11315[label="compare2 yuz405 yuz400 (yuz405 == yuz400) == GT",fontsize=16,color="black",shape="box"];11315 -> 11371[label="",style="solid", color="black", weight=3]; 27.10/11.38 11316[label="FiniteMap.Branch yuz427 (FiniteMap.addToFM0 yuz423 yuz428) yuz424 yuz425 yuz426",fontsize=16,color="green",shape="box"];11316 -> 11372[label="",style="dashed", color="green", weight=3]; 27.10/11.38 11809[label="yuz426",fontsize=16,color="green",shape="box"];11810[label="yuz428",fontsize=16,color="green",shape="box"];11811[label="yuz427",fontsize=16,color="green",shape="box"];11909[label="FiniteMap.Branch yuz405 yuz406 (Pos (Succ Zero)) FiniteMap.emptyFM FiniteMap.emptyFM",fontsize=16,color="green",shape="box"];11909 -> 11976[label="",style="dashed", color="green", weight=3]; 27.10/11.38 11909 -> 11977[label="",style="dashed", color="green", weight=3]; 27.10/11.38 11910[label="yuz4031",fontsize=16,color="green",shape="box"];11911[label="yuz405 < yuz4030",fontsize=16,color="blue",shape="box"];12869[label="< :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12869[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12869 -> 11978[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12870[label="< :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12870[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12870 -> 11979[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12871[label="< :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12871[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12871 -> 11980[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12872[label="< :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12872[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12872 -> 11981[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12873[label="< :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12873[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12873 -> 11982[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12874[label="< :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12874[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12874 -> 11983[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12875[label="< :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12875[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12875 -> 11984[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12876[label="< :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12876[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12876 -> 11985[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12877[label="< :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12877[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12877 -> 11986[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12878[label="< :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12878[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12878 -> 11987[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12879[label="< :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12879[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12879 -> 11988[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12880[label="< :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12880[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12880 -> 11989[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12881[label="< :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12881[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12881 -> 11990[label="",style="solid", color="blue", weight=3]; 27.10/11.38 12882[label="< :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];11911 -> 12882[label="",style="solid", color="blue", weight=9]; 27.10/11.38 12882 -> 11991[label="",style="solid", color="blue", weight=3]; 27.10/11.38 11912[label="yuz4033",fontsize=16,color="green",shape="box"];11913[label="yuz4034",fontsize=16,color="green",shape="box"];11914[label="yuz4030",fontsize=16,color="green",shape="box"];11915[label="yuz4032",fontsize=16,color="green",shape="box"];10594[label="Succ yuz35700",fontsize=16,color="green",shape="box"];10595[label="primMulNat (Succ (Succ (Succ (Succ Zero)))) (Succ yuz35700)",fontsize=16,color="black",shape="box"];10595 -> 10671[label="",style="solid", color="black", weight=3]; 27.10/11.38 2642[label="primPlusNat yuz240 yuz14",fontsize=16,color="burlywood",shape="triangle"];12883[label="yuz240/Succ yuz2400",fontsize=10,color="white",style="solid",shape="box"];2642 -> 12883[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12883 -> 2706[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12884[label="yuz240/Zero",fontsize=10,color="white",style="solid",shape="box"];2642 -> 12884[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12884 -> 2707[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 6748[label="primCmpNat (Succ yuz160000) yuz15000 == LT",fontsize=16,color="burlywood",shape="box"];12885[label="yuz15000/Succ yuz150000",fontsize=10,color="white",style="solid",shape="box"];6748 -> 12885[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12885 -> 6806[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12886[label="yuz15000/Zero",fontsize=10,color="white",style="solid",shape="box"];6748 -> 12886[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12886 -> 6807[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 6749[label="primCmpNat Zero yuz15000 == LT",fontsize=16,color="burlywood",shape="box"];12887[label="yuz15000/Succ yuz150000",fontsize=10,color="white",style="solid",shape="box"];6749 -> 12887[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12887 -> 6808[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12888[label="yuz15000/Zero",fontsize=10,color="white",style="solid",shape="box"];6749 -> 12888[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12888 -> 6809[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 6750[label="yuz16000",fontsize=16,color="green",shape="box"];6751[label="yuz15000",fontsize=16,color="green",shape="box"];10720[label="yuz373",fontsize=16,color="green",shape="box"];10721[label="FiniteMap.Branch yuz380 yuz381 yuz382 yuz383 yuz384",fontsize=16,color="green",shape="box"];10722[label="FiniteMap.Branch yuz375 yuz376 yuz377 yuz378 yuz379",fontsize=16,color="green",shape="box"];10723[label="yuz374",fontsize=16,color="green",shape="box"];6747[label="FiniteMap.mkBranchResult yuz231 yuz232 yuz320 yuz235",fontsize=16,color="black",shape="triangle"];6747 -> 6805[label="",style="solid", color="black", weight=3]; 27.10/11.38 11916[label="yuz1581",fontsize=16,color="green",shape="box"];11917[label="yuz1584",fontsize=16,color="green",shape="box"];11918[label="yuz1580",fontsize=16,color="green",shape="box"];11919[label="yuz1582",fontsize=16,color="green",shape="box"];11920[label="yuz1583",fontsize=16,color="green",shape="box"];11951[label="yuz15831",fontsize=16,color="green",shape="box"];11952[label="yuz15834",fontsize=16,color="green",shape="box"];11953[label="yuz15832",fontsize=16,color="green",shape="box"];11954[label="yuz15830",fontsize=16,color="green",shape="box"];11955[label="yuz15833",fontsize=16,color="green",shape="box"];11959 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11959[label="FiniteMap.sizeFM yuz443",fontsize=16,color="magenta"];11959 -> 12004[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11960[label="primPlusInt (Pos yuz4470) (FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344)",fontsize=16,color="black",shape="box"];11960 -> 12005[label="",style="solid", color="black", weight=3]; 27.10/11.38 11961[label="primPlusInt (Neg yuz4470) (FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344)",fontsize=16,color="black",shape="box"];11961 -> 12006[label="",style="solid", color="black", weight=3]; 27.10/11.38 11962 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11962[label="FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];11962 -> 12007[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11963[label="FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="triangle"];11963 -> 12008[label="",style="solid", color="black", weight=3]; 27.10/11.38 11964[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 False",fontsize=16,color="black",shape="box"];11964 -> 12009[label="",style="solid", color="black", weight=3]; 27.10/11.38 11965[label="FiniteMap.mkBalBranch6MkBalBranch4 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 True",fontsize=16,color="black",shape="box"];11965 -> 12010[label="",style="solid", color="black", weight=3]; 27.10/11.38 11966[label="yuz2340",fontsize=16,color="green",shape="box"];11967[label="yuz2344",fontsize=16,color="green",shape="box"];11968[label="yuz443",fontsize=16,color="green",shape="box"];11969[label="yuz2341",fontsize=16,color="green",shape="box"];10786 -> 10835[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10786[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.sizeFM (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) > FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="magenta"];10786 -> 10836[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10786 -> 10837[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11871[label="FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344",fontsize=16,color="green",shape="box"];11872[label="yuz24043",fontsize=16,color="green",shape="box"];11873[label="yuz2340",fontsize=16,color="green",shape="box"];11874[label="yuz24040",fontsize=16,color="green",shape="box"];11875[label="yuz24044",fontsize=16,color="green",shape="box"];11876[label="yuz2343",fontsize=16,color="green",shape="box"];11877[label="yuz2342",fontsize=16,color="green",shape="box"];11878[label="yuz2344",fontsize=16,color="green",shape="box"];11879[label="yuz2341",fontsize=16,color="green",shape="box"];11880[label="yuz24041",fontsize=16,color="green",shape="box"];11881[label="yuz24042",fontsize=16,color="green",shape="box"];11970[label="yuz23432",fontsize=16,color="green",shape="box"];11971[label="yuz23430",fontsize=16,color="green",shape="box"];11972[label="yuz23433",fontsize=16,color="green",shape="box"];11973[label="yuz23431",fontsize=16,color="green",shape="box"];11974[label="yuz23434",fontsize=16,color="green",shape="box"];11975 -> 10581[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11975[label="FiniteMap.glueVBal3Size_l yuz23430 yuz23431 yuz23432 yuz23433 yuz23434 yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="magenta"];11975 -> 12011[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11975 -> 12012[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11975 -> 12013[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11975 -> 12014[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11975 -> 12015[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11350[label="compare1 False True True == LT",fontsize=16,color="black",shape="box"];11350 -> 11406[label="",style="solid", color="black", weight=3]; 27.10/11.38 11351[label="compare1 True False False == LT",fontsize=16,color="black",shape="box"];11351 -> 11407[label="",style="solid", color="black", weight=3]; 27.10/11.38 11352[label="error []",fontsize=16,color="red",shape="box"];11353[label="error []",fontsize=16,color="red",shape="box"];11354[label="error []",fontsize=16,color="red",shape="box"];11355[label="primCmpInt (Pos (Succ yuz40500)) yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12889[label="yuz400/Pos yuz4000",fontsize=10,color="white",style="solid",shape="box"];11355 -> 12889[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12889 -> 11408[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12890[label="yuz400/Neg yuz4000",fontsize=10,color="white",style="solid",shape="box"];11355 -> 12890[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12890 -> 11409[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11356[label="primCmpInt (Pos Zero) yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12891[label="yuz400/Pos yuz4000",fontsize=10,color="white",style="solid",shape="box"];11356 -> 12891[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12891 -> 11410[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12892[label="yuz400/Neg yuz4000",fontsize=10,color="white",style="solid",shape="box"];11356 -> 12892[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12892 -> 11411[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11357[label="primCmpInt (Neg (Succ yuz40500)) yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12893[label="yuz400/Pos yuz4000",fontsize=10,color="white",style="solid",shape="box"];11357 -> 12893[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12893 -> 11412[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12894[label="yuz400/Neg yuz4000",fontsize=10,color="white",style="solid",shape="box"];11357 -> 12894[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12894 -> 11413[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11358[label="primCmpInt (Neg Zero) yuz400 == GT",fontsize=16,color="burlywood",shape="box"];12895[label="yuz400/Pos yuz4000",fontsize=10,color="white",style="solid",shape="box"];11358 -> 12895[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12895 -> 11414[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12896[label="yuz400/Neg yuz4000",fontsize=10,color="white",style="solid",shape="box"];11358 -> 12896[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12896 -> 11415[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11359[label="compare2 False yuz400 (False == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12897[label="yuz400/False",fontsize=10,color="white",style="solid",shape="box"];11359 -> 12897[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12897 -> 11416[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12898[label="yuz400/True",fontsize=10,color="white",style="solid",shape="box"];11359 -> 12898[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12898 -> 11417[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11360[label="compare2 True yuz400 (True == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12899[label="yuz400/False",fontsize=10,color="white",style="solid",shape="box"];11360 -> 12899[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12899 -> 11418[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12900[label="yuz400/True",fontsize=10,color="white",style="solid",shape="box"];11360 -> 12900[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12900 -> 11419[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11361[label="error []",fontsize=16,color="red",shape="box"];11362[label="error []",fontsize=16,color="red",shape="box"];11363[label="compare2 LT yuz400 (LT == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12901[label="yuz400/LT",fontsize=10,color="white",style="solid",shape="box"];11363 -> 12901[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12901 -> 11420[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12902[label="yuz400/EQ",fontsize=10,color="white",style="solid",shape="box"];11363 -> 12902[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12902 -> 11421[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12903[label="yuz400/GT",fontsize=10,color="white",style="solid",shape="box"];11363 -> 12903[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12903 -> 11422[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11364[label="compare2 EQ yuz400 (EQ == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12904[label="yuz400/LT",fontsize=10,color="white",style="solid",shape="box"];11364 -> 12904[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12904 -> 11423[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12905[label="yuz400/EQ",fontsize=10,color="white",style="solid",shape="box"];11364 -> 12905[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12905 -> 11424[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12906[label="yuz400/GT",fontsize=10,color="white",style="solid",shape="box"];11364 -> 12906[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12906 -> 11425[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11365[label="compare2 GT yuz400 (GT == yuz400) == GT",fontsize=16,color="burlywood",shape="box"];12907[label="yuz400/LT",fontsize=10,color="white",style="solid",shape="box"];11365 -> 12907[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12907 -> 11426[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12908[label="yuz400/EQ",fontsize=10,color="white",style="solid",shape="box"];11365 -> 12908[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12908 -> 11427[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12909[label="yuz400/GT",fontsize=10,color="white",style="solid",shape="box"];11365 -> 12909[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12909 -> 11428[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11366[label="error []",fontsize=16,color="red",shape="box"];11367[label="error []",fontsize=16,color="red",shape="box"];11368[label="error []",fontsize=16,color="red",shape="box"];11369[label="error []",fontsize=16,color="red",shape="box"];11370[label="error []",fontsize=16,color="red",shape="box"];11371[label="error []",fontsize=16,color="red",shape="box"];11372[label="FiniteMap.addToFM0 yuz423 yuz428",fontsize=16,color="black",shape="box"];11372 -> 11429[label="",style="solid", color="black", weight=3]; 27.10/11.38 11976[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];11976 -> 12016[label="",style="solid", color="black", weight=3]; 27.10/11.38 11977 -> 11976[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11977[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];11978[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11978 -> 12017[label="",style="solid", color="black", weight=3]; 27.10/11.38 11979[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11979 -> 12018[label="",style="solid", color="black", weight=3]; 27.10/11.38 11980[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11980 -> 12019[label="",style="solid", color="black", weight=3]; 27.10/11.38 11981 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11981[label="yuz405 < yuz4030",fontsize=16,color="magenta"];11981 -> 12020[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11981 -> 12021[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11982 -> 10854[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11982[label="yuz405 < yuz4030",fontsize=16,color="magenta"];11982 -> 12022[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11982 -> 12023[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11983[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11983 -> 12024[label="",style="solid", color="black", weight=3]; 27.10/11.38 11984[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11984 -> 12025[label="",style="solid", color="black", weight=3]; 27.10/11.38 11985[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11985 -> 12026[label="",style="solid", color="black", weight=3]; 27.10/11.38 11986[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11986 -> 12027[label="",style="solid", color="black", weight=3]; 27.10/11.38 11987[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11987 -> 12028[label="",style="solid", color="black", weight=3]; 27.10/11.38 11988[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11988 -> 12029[label="",style="solid", color="black", weight=3]; 27.10/11.38 11989[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11989 -> 12030[label="",style="solid", color="black", weight=3]; 27.10/11.38 11990[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11990 -> 12031[label="",style="solid", color="black", weight=3]; 27.10/11.38 11991[label="yuz405 < yuz4030",fontsize=16,color="black",shape="box"];11991 -> 12032[label="",style="solid", color="black", weight=3]; 27.10/11.38 10671 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10671[label="primPlusNat (primMulNat (Succ (Succ (Succ Zero))) (Succ yuz35700)) (Succ yuz35700)",fontsize=16,color="magenta"];10671 -> 10724[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10671 -> 10725[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 2706[label="primPlusNat (Succ yuz2400) yuz14",fontsize=16,color="burlywood",shape="box"];12910[label="yuz14/Succ yuz140",fontsize=10,color="white",style="solid",shape="box"];2706 -> 12910[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12910 -> 2749[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12911[label="yuz14/Zero",fontsize=10,color="white",style="solid",shape="box"];2706 -> 12911[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12911 -> 2750[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 2707[label="primPlusNat Zero yuz14",fontsize=16,color="burlywood",shape="box"];12912[label="yuz14/Succ yuz140",fontsize=10,color="white",style="solid",shape="box"];2707 -> 12912[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12912 -> 2751[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12913[label="yuz14/Zero",fontsize=10,color="white",style="solid",shape="box"];2707 -> 12913[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12913 -> 2752[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 6806[label="primCmpNat (Succ yuz160000) (Succ yuz150000) == LT",fontsize=16,color="black",shape="box"];6806 -> 6877[label="",style="solid", color="black", weight=3]; 27.10/11.38 6807[label="primCmpNat (Succ yuz160000) Zero == LT",fontsize=16,color="black",shape="box"];6807 -> 6878[label="",style="solid", color="black", weight=3]; 27.10/11.38 6808[label="primCmpNat Zero (Succ yuz150000) == LT",fontsize=16,color="black",shape="box"];6808 -> 6879[label="",style="solid", color="black", weight=3]; 27.10/11.38 6809[label="primCmpNat Zero Zero == LT",fontsize=16,color="black",shape="box"];6809 -> 6880[label="",style="solid", color="black", weight=3]; 27.10/11.38 6805[label="FiniteMap.Branch yuz231 yuz232 (FiniteMap.mkBranchUnbox yuz320 yuz231 yuz235 (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz320 yuz231 yuz235 + FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235)) yuz320 yuz235",fontsize=16,color="green",shape="box"];6805 -> 6876[label="",style="dashed", color="green", weight=3]; 27.10/11.38 12004[label="yuz443",fontsize=16,color="green",shape="box"];12005 -> 7656[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12005[label="primPlusInt (Pos yuz4470) (FiniteMap.sizeFM yuz2344)",fontsize=16,color="magenta"];12005 -> 12041[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12005 -> 12042[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12006 -> 7658[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12006[label="primPlusInt (Neg yuz4470) (FiniteMap.sizeFM yuz2344)",fontsize=16,color="magenta"];12006 -> 12043[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12006 -> 12044[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12007 -> 11957[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12007[label="FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];12008 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12008[label="FiniteMap.sizeFM yuz2344",fontsize=16,color="magenta"];12008 -> 12045[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12009 -> 12046[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12009[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 (FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344)",fontsize=16,color="magenta"];12009 -> 12047[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12010[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz2340 yuz2341 yuz443 yuz2344 yuz443 yuz2344 yuz2344",fontsize=16,color="burlywood",shape="box"];12914[label="yuz2344/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12010 -> 12914[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12914 -> 12048[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12915[label="yuz2344/FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444",fontsize=10,color="white",style="solid",shape="box"];12010 -> 12915[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12915 -> 12049[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 10836 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10836[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="magenta"];10836 -> 11045[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10837 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10837[label="FiniteMap.sizeFM (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="magenta"];10837 -> 11046[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10835[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (yuz390 > yuz389)",fontsize=16,color="black",shape="triangle"];10835 -> 11047[label="",style="solid", color="black", weight=3]; 27.10/11.38 12011[label="yuz23432",fontsize=16,color="green",shape="box"];12012[label="yuz23430",fontsize=16,color="green",shape="box"];12013[label="yuz23433",fontsize=16,color="green",shape="box"];12014[label="yuz23431",fontsize=16,color="green",shape="box"];12015[label="yuz23434",fontsize=16,color="green",shape="box"];11406 -> 5248[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11406[label="LT == LT",fontsize=16,color="magenta"];11407[label="compare0 True False otherwise == LT",fontsize=16,color="black",shape="box"];11407 -> 11480[label="",style="solid", color="black", weight=3]; 27.10/11.38 11408[label="primCmpInt (Pos (Succ yuz40500)) (Pos yuz4000) == GT",fontsize=16,color="black",shape="box"];11408 -> 11481[label="",style="solid", color="black", weight=3]; 27.10/11.38 11409[label="primCmpInt (Pos (Succ yuz40500)) (Neg yuz4000) == GT",fontsize=16,color="black",shape="box"];11409 -> 11482[label="",style="solid", color="black", weight=3]; 27.10/11.38 11410[label="primCmpInt (Pos Zero) (Pos yuz4000) == GT",fontsize=16,color="burlywood",shape="box"];12916[label="yuz4000/Succ yuz40000",fontsize=10,color="white",style="solid",shape="box"];11410 -> 12916[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12916 -> 11483[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12917[label="yuz4000/Zero",fontsize=10,color="white",style="solid",shape="box"];11410 -> 12917[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12917 -> 11484[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11411[label="primCmpInt (Pos Zero) (Neg yuz4000) == GT",fontsize=16,color="burlywood",shape="box"];12918[label="yuz4000/Succ yuz40000",fontsize=10,color="white",style="solid",shape="box"];11411 -> 12918[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12918 -> 11485[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12919[label="yuz4000/Zero",fontsize=10,color="white",style="solid",shape="box"];11411 -> 12919[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12919 -> 11486[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11412[label="primCmpInt (Neg (Succ yuz40500)) (Pos yuz4000) == GT",fontsize=16,color="black",shape="box"];11412 -> 11487[label="",style="solid", color="black", weight=3]; 27.10/11.38 11413[label="primCmpInt (Neg (Succ yuz40500)) (Neg yuz4000) == GT",fontsize=16,color="black",shape="box"];11413 -> 11488[label="",style="solid", color="black", weight=3]; 27.10/11.38 11414[label="primCmpInt (Neg Zero) (Pos yuz4000) == GT",fontsize=16,color="burlywood",shape="box"];12920[label="yuz4000/Succ yuz40000",fontsize=10,color="white",style="solid",shape="box"];11414 -> 12920[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12920 -> 11489[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12921[label="yuz4000/Zero",fontsize=10,color="white",style="solid",shape="box"];11414 -> 12921[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12921 -> 11490[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11415[label="primCmpInt (Neg Zero) (Neg yuz4000) == GT",fontsize=16,color="burlywood",shape="box"];12922[label="yuz4000/Succ yuz40000",fontsize=10,color="white",style="solid",shape="box"];11415 -> 12922[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12922 -> 11491[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12923[label="yuz4000/Zero",fontsize=10,color="white",style="solid",shape="box"];11415 -> 12923[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12923 -> 11492[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11416[label="compare2 False False (False == False) == GT",fontsize=16,color="black",shape="box"];11416 -> 11493[label="",style="solid", color="black", weight=3]; 27.10/11.38 11417[label="compare2 False True (False == True) == GT",fontsize=16,color="black",shape="box"];11417 -> 11494[label="",style="solid", color="black", weight=3]; 27.10/11.38 11418[label="compare2 True False (True == False) == GT",fontsize=16,color="black",shape="box"];11418 -> 11495[label="",style="solid", color="black", weight=3]; 27.10/11.38 11419[label="compare2 True True (True == True) == GT",fontsize=16,color="black",shape="box"];11419 -> 11496[label="",style="solid", color="black", weight=3]; 27.10/11.38 11420[label="compare2 LT LT (LT == LT) == GT",fontsize=16,color="black",shape="box"];11420 -> 11497[label="",style="solid", color="black", weight=3]; 27.10/11.38 11421[label="compare2 LT EQ (LT == EQ) == GT",fontsize=16,color="black",shape="box"];11421 -> 11498[label="",style="solid", color="black", weight=3]; 27.10/11.38 11422[label="compare2 LT GT (LT == GT) == GT",fontsize=16,color="black",shape="box"];11422 -> 11499[label="",style="solid", color="black", weight=3]; 27.10/11.38 11423[label="compare2 EQ LT (EQ == LT) == GT",fontsize=16,color="black",shape="box"];11423 -> 11500[label="",style="solid", color="black", weight=3]; 27.10/11.38 11424[label="compare2 EQ EQ (EQ == EQ) == GT",fontsize=16,color="black",shape="box"];11424 -> 11501[label="",style="solid", color="black", weight=3]; 27.10/11.38 11425[label="compare2 EQ GT (EQ == GT) == GT",fontsize=16,color="black",shape="box"];11425 -> 11502[label="",style="solid", color="black", weight=3]; 27.10/11.38 11426[label="compare2 GT LT (GT == LT) == GT",fontsize=16,color="black",shape="box"];11426 -> 11503[label="",style="solid", color="black", weight=3]; 27.10/11.38 11427[label="compare2 GT EQ (GT == EQ) == GT",fontsize=16,color="black",shape="box"];11427 -> 11504[label="",style="solid", color="black", weight=3]; 27.10/11.38 11428[label="compare2 GT GT (GT == GT) == GT",fontsize=16,color="black",shape="box"];11428 -> 11505[label="",style="solid", color="black", weight=3]; 27.10/11.38 11429[label="yuz428",fontsize=16,color="green",shape="box"];12016[label="FiniteMap.EmptyFM",fontsize=16,color="green",shape="box"];12017[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12017 -> 12050[label="",style="solid", color="black", weight=3]; 27.10/11.38 12018[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12018 -> 12051[label="",style="solid", color="black", weight=3]; 27.10/11.38 12019[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12019 -> 12052[label="",style="solid", color="black", weight=3]; 27.10/11.38 12020[label="yuz4030",fontsize=16,color="green",shape="box"];12021[label="yuz405",fontsize=16,color="green",shape="box"];12022[label="yuz405",fontsize=16,color="green",shape="box"];12023[label="yuz4030",fontsize=16,color="green",shape="box"];12024[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12024 -> 12053[label="",style="solid", color="black", weight=3]; 27.10/11.38 12025[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12025 -> 12054[label="",style="solid", color="black", weight=3]; 27.10/11.38 12026[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12026 -> 12055[label="",style="solid", color="black", weight=3]; 27.10/11.38 12027[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12027 -> 12056[label="",style="solid", color="black", weight=3]; 27.10/11.38 12028[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12028 -> 12057[label="",style="solid", color="black", weight=3]; 27.10/11.38 12029[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12029 -> 12058[label="",style="solid", color="black", weight=3]; 27.10/11.38 12030[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12030 -> 12059[label="",style="solid", color="black", weight=3]; 27.10/11.38 12031[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12031 -> 12060[label="",style="solid", color="black", weight=3]; 27.10/11.38 12032[label="compare yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12032 -> 12061[label="",style="solid", color="black", weight=3]; 27.10/11.38 10724[label="Succ yuz35700",fontsize=16,color="green",shape="box"];10725[label="primMulNat (Succ (Succ (Succ Zero))) (Succ yuz35700)",fontsize=16,color="black",shape="box"];10725 -> 10774[label="",style="solid", color="black", weight=3]; 27.10/11.38 2749[label="primPlusNat (Succ yuz2400) (Succ yuz140)",fontsize=16,color="black",shape="box"];2749 -> 2767[label="",style="solid", color="black", weight=3]; 27.10/11.38 2750[label="primPlusNat (Succ yuz2400) Zero",fontsize=16,color="black",shape="box"];2750 -> 2768[label="",style="solid", color="black", weight=3]; 27.10/11.38 2751[label="primPlusNat Zero (Succ yuz140)",fontsize=16,color="black",shape="box"];2751 -> 2769[label="",style="solid", color="black", weight=3]; 27.10/11.38 2752[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];2752 -> 2770[label="",style="solid", color="black", weight=3]; 27.10/11.38 6877 -> 6718[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6877[label="primCmpNat yuz160000 yuz150000 == LT",fontsize=16,color="magenta"];6877 -> 7175[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 6877 -> 7176[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 6878 -> 5243[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6878[label="GT == LT",fontsize=16,color="magenta"];6879 -> 5248[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6879[label="LT == LT",fontsize=16,color="magenta"];6880 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.38 6880[label="EQ == LT",fontsize=16,color="magenta"];6876[label="FiniteMap.mkBranchUnbox yuz320 yuz231 yuz235 (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz320 yuz231 yuz235 + FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235)",fontsize=16,color="black",shape="box"];6876 -> 7174[label="",style="solid", color="black", weight=3]; 27.10/11.38 12041[label="yuz4470",fontsize=16,color="green",shape="box"];12042 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12042[label="FiniteMap.sizeFM yuz2344",fontsize=16,color="magenta"];12042 -> 12062[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 7656[label="primPlusInt (Pos yuz32720) yuz1592",fontsize=16,color="burlywood",shape="triangle"];12924[label="yuz1592/Pos yuz15920",fontsize=10,color="white",style="solid",shape="box"];7656 -> 12924[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12924 -> 7726[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12925[label="yuz1592/Neg yuz15920",fontsize=10,color="white",style="solid",shape="box"];7656 -> 12925[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12925 -> 7727[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12043[label="yuz4470",fontsize=16,color="green",shape="box"];12044 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12044[label="FiniteMap.sizeFM yuz2344",fontsize=16,color="magenta"];12044 -> 12063[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 7658[label="primPlusInt (Neg yuz32720) yuz1592",fontsize=16,color="burlywood",shape="triangle"];12926[label="yuz1592/Pos yuz15920",fontsize=10,color="white",style="solid",shape="box"];7658 -> 12926[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12926 -> 7729[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12927[label="yuz1592/Neg yuz15920",fontsize=10,color="white",style="solid",shape="box"];7658 -> 12927[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12927 -> 7730[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12045[label="yuz2344",fontsize=16,color="green",shape="box"];12047 -> 11145[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12047[label="FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344 > FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];12047 -> 12064[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12047 -> 12065[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12046[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 yuz448",fontsize=16,color="burlywood",shape="triangle"];12928[label="yuz448/False",fontsize=10,color="white",style="solid",shape="box"];12046 -> 12928[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12928 -> 12066[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12929[label="yuz448/True",fontsize=10,color="white",style="solid",shape="box"];12046 -> 12929[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12929 -> 12067[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12048[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz2340 yuz2341 yuz443 FiniteMap.EmptyFM yuz443 FiniteMap.EmptyFM FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];12048 -> 12080[label="",style="solid", color="black", weight=3]; 27.10/11.38 12049[label="FiniteMap.mkBalBranch6MkBalBranch0 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444)",fontsize=16,color="black",shape="box"];12049 -> 12081[label="",style="solid", color="black", weight=3]; 27.10/11.38 11045[label="FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344",fontsize=16,color="green",shape="box"];11046[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];11047[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (compare yuz390 yuz389 == GT)",fontsize=16,color="black",shape="box"];11047 -> 11093[label="",style="solid", color="black", weight=3]; 27.10/11.38 11480[label="compare0 True False True == LT",fontsize=16,color="black",shape="box"];11480 -> 11571[label="",style="solid", color="black", weight=3]; 27.10/11.38 11481[label="primCmpNat (Succ yuz40500) yuz4000 == GT",fontsize=16,color="burlywood",shape="triangle"];12930[label="yuz4000/Succ yuz40000",fontsize=10,color="white",style="solid",shape="box"];11481 -> 12930[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12930 -> 11572[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12931[label="yuz4000/Zero",fontsize=10,color="white",style="solid",shape="box"];11481 -> 12931[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12931 -> 11573[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11482[label="GT == GT",fontsize=16,color="black",shape="triangle"];11482 -> 11574[label="",style="solid", color="black", weight=3]; 27.10/11.38 11483[label="primCmpInt (Pos Zero) (Pos (Succ yuz40000)) == GT",fontsize=16,color="black",shape="box"];11483 -> 11575[label="",style="solid", color="black", weight=3]; 27.10/11.38 11484[label="primCmpInt (Pos Zero) (Pos Zero) == GT",fontsize=16,color="black",shape="box"];11484 -> 11576[label="",style="solid", color="black", weight=3]; 27.10/11.38 11485[label="primCmpInt (Pos Zero) (Neg (Succ yuz40000)) == GT",fontsize=16,color="black",shape="box"];11485 -> 11577[label="",style="solid", color="black", weight=3]; 27.10/11.38 11486[label="primCmpInt (Pos Zero) (Neg Zero) == GT",fontsize=16,color="black",shape="box"];11486 -> 11578[label="",style="solid", color="black", weight=3]; 27.10/11.38 11487[label="LT == GT",fontsize=16,color="black",shape="triangle"];11487 -> 11579[label="",style="solid", color="black", weight=3]; 27.10/11.38 11488[label="primCmpNat yuz4000 (Succ yuz40500) == GT",fontsize=16,color="burlywood",shape="triangle"];12932[label="yuz4000/Succ yuz40000",fontsize=10,color="white",style="solid",shape="box"];11488 -> 12932[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12932 -> 11580[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12933[label="yuz4000/Zero",fontsize=10,color="white",style="solid",shape="box"];11488 -> 12933[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12933 -> 11581[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11489[label="primCmpInt (Neg Zero) (Pos (Succ yuz40000)) == GT",fontsize=16,color="black",shape="box"];11489 -> 11582[label="",style="solid", color="black", weight=3]; 27.10/11.38 11490[label="primCmpInt (Neg Zero) (Pos Zero) == GT",fontsize=16,color="black",shape="box"];11490 -> 11583[label="",style="solid", color="black", weight=3]; 27.10/11.38 11491[label="primCmpInt (Neg Zero) (Neg (Succ yuz40000)) == GT",fontsize=16,color="black",shape="box"];11491 -> 11584[label="",style="solid", color="black", weight=3]; 27.10/11.38 11492[label="primCmpInt (Neg Zero) (Neg Zero) == GT",fontsize=16,color="black",shape="box"];11492 -> 11585[label="",style="solid", color="black", weight=3]; 27.10/11.38 11493[label="compare2 False False True == GT",fontsize=16,color="black",shape="box"];11493 -> 11586[label="",style="solid", color="black", weight=3]; 27.10/11.38 11494[label="compare2 False True False == GT",fontsize=16,color="black",shape="box"];11494 -> 11587[label="",style="solid", color="black", weight=3]; 27.10/11.38 11495[label="compare2 True False False == GT",fontsize=16,color="black",shape="box"];11495 -> 11588[label="",style="solid", color="black", weight=3]; 27.10/11.38 11496[label="compare2 True True True == GT",fontsize=16,color="black",shape="box"];11496 -> 11589[label="",style="solid", color="black", weight=3]; 27.10/11.38 11497[label="compare2 LT LT True == GT",fontsize=16,color="black",shape="box"];11497 -> 11590[label="",style="solid", color="black", weight=3]; 27.10/11.38 11498[label="compare2 LT EQ False == GT",fontsize=16,color="black",shape="box"];11498 -> 11591[label="",style="solid", color="black", weight=3]; 27.10/11.38 11499[label="compare2 LT GT False == GT",fontsize=16,color="black",shape="box"];11499 -> 11592[label="",style="solid", color="black", weight=3]; 27.10/11.38 11500[label="compare2 EQ LT False == GT",fontsize=16,color="black",shape="box"];11500 -> 11593[label="",style="solid", color="black", weight=3]; 27.10/11.38 11501[label="compare2 EQ EQ True == GT",fontsize=16,color="black",shape="box"];11501 -> 11594[label="",style="solid", color="black", weight=3]; 27.10/11.38 11502[label="compare2 EQ GT False == GT",fontsize=16,color="black",shape="box"];11502 -> 11595[label="",style="solid", color="black", weight=3]; 27.10/11.38 11503[label="compare2 GT LT False == GT",fontsize=16,color="black",shape="box"];11503 -> 11596[label="",style="solid", color="black", weight=3]; 27.10/11.38 11504[label="compare2 GT EQ False == GT",fontsize=16,color="black",shape="box"];11504 -> 11597[label="",style="solid", color="black", weight=3]; 27.10/11.38 11505[label="compare2 GT GT True == GT",fontsize=16,color="black",shape="box"];11505 -> 11598[label="",style="solid", color="black", weight=3]; 27.10/11.38 12050[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12050 -> 12082[label="",style="solid", color="black", weight=3]; 27.10/11.38 12051[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12051 -> 12083[label="",style="solid", color="black", weight=3]; 27.10/11.38 12052[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12052 -> 12084[label="",style="solid", color="black", weight=3]; 27.10/11.38 12053[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12053 -> 12085[label="",style="solid", color="black", weight=3]; 27.10/11.38 12054[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12054 -> 12086[label="",style="solid", color="black", weight=3]; 27.10/11.38 12055[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12055 -> 12087[label="",style="solid", color="black", weight=3]; 27.10/11.38 12056[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12056 -> 12088[label="",style="solid", color="black", weight=3]; 27.10/11.38 12057[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12057 -> 12089[label="",style="solid", color="black", weight=3]; 27.10/11.38 12058[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12058 -> 12090[label="",style="solid", color="black", weight=3]; 27.10/11.38 12059[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12059 -> 12091[label="",style="solid", color="black", weight=3]; 27.10/11.38 12060[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12060 -> 12092[label="",style="solid", color="black", weight=3]; 27.10/11.38 12061[label="compare3 yuz405 yuz4030 == LT",fontsize=16,color="black",shape="box"];12061 -> 12093[label="",style="solid", color="black", weight=3]; 27.10/11.38 10774 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.38 10774[label="primPlusNat (primMulNat (Succ (Succ Zero)) (Succ yuz35700)) (Succ yuz35700)",fontsize=16,color="magenta"];10774 -> 10809[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 10774 -> 10810[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 2767[label="Succ (Succ (primPlusNat yuz2400 yuz140))",fontsize=16,color="green",shape="box"];2767 -> 2925[label="",style="dashed", color="green", weight=3]; 27.10/11.38 2768[label="Succ yuz2400",fontsize=16,color="green",shape="box"];2769[label="Succ yuz140",fontsize=16,color="green",shape="box"];2770[label="Zero",fontsize=16,color="green",shape="box"];7175[label="yuz150000",fontsize=16,color="green",shape="box"];7176[label="yuz160000",fontsize=16,color="green",shape="box"];7174[label="Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz320 yuz231 yuz235 + FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235",fontsize=16,color="black",shape="box"];7174 -> 7438[label="",style="solid", color="black", weight=3]; 27.10/11.38 12062[label="yuz2344",fontsize=16,color="green",shape="box"];7726[label="primPlusInt (Pos yuz32720) (Pos yuz15920)",fontsize=16,color="black",shape="box"];7726 -> 7775[label="",style="solid", color="black", weight=3]; 27.10/11.38 7727[label="primPlusInt (Pos yuz32720) (Neg yuz15920)",fontsize=16,color="black",shape="box"];7727 -> 7776[label="",style="solid", color="black", weight=3]; 27.10/11.38 12063[label="yuz2344",fontsize=16,color="green",shape="box"];7729[label="primPlusInt (Neg yuz32720) (Pos yuz15920)",fontsize=16,color="black",shape="box"];7729 -> 7778[label="",style="solid", color="black", weight=3]; 27.10/11.38 7730[label="primPlusInt (Neg yuz32720) (Neg yuz15920)",fontsize=16,color="black",shape="box"];7730 -> 7779[label="",style="solid", color="black", weight=3]; 27.10/11.38 12064 -> 7820[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12064[label="FiniteMap.sIZE_RATIO * FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];12064 -> 12094[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 12065 -> 11957[label="",style="dashed", color="red", weight=0]; 27.10/11.38 12065[label="FiniteMap.mkBalBranch6Size_l yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];12066[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 False",fontsize=16,color="black",shape="box"];12066 -> 12095[label="",style="solid", color="black", weight=3]; 27.10/11.38 12067[label="FiniteMap.mkBalBranch6MkBalBranch3 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 True",fontsize=16,color="black",shape="box"];12067 -> 12096[label="",style="solid", color="black", weight=3]; 27.10/11.38 12080[label="error []",fontsize=16,color="red",shape="box"];12081[label="FiniteMap.mkBalBranch6MkBalBranch02 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444)",fontsize=16,color="black",shape="box"];12081 -> 12105[label="",style="solid", color="black", weight=3]; 27.10/11.38 11093[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt yuz390 yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12934[label="yuz390/Pos yuz3900",fontsize=10,color="white",style="solid",shape="box"];11093 -> 12934[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12934 -> 11158[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12935[label="yuz390/Neg yuz3900",fontsize=10,color="white",style="solid",shape="box"];11093 -> 12935[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12935 -> 11159[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 11571 -> 5243[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11571[label="GT == LT",fontsize=16,color="magenta"];11572[label="primCmpNat (Succ yuz40500) (Succ yuz40000) == GT",fontsize=16,color="black",shape="box"];11572 -> 11634[label="",style="solid", color="black", weight=3]; 27.10/11.38 11573[label="primCmpNat (Succ yuz40500) Zero == GT",fontsize=16,color="black",shape="box"];11573 -> 11635[label="",style="solid", color="black", weight=3]; 27.10/11.38 11574[label="True",fontsize=16,color="green",shape="box"];11575 -> 11488[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11575[label="primCmpNat Zero (Succ yuz40000) == GT",fontsize=16,color="magenta"];11575 -> 11636[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11575 -> 11637[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11576[label="EQ == GT",fontsize=16,color="black",shape="triangle"];11576 -> 11638[label="",style="solid", color="black", weight=3]; 27.10/11.38 11577 -> 11482[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11577[label="GT == GT",fontsize=16,color="magenta"];11578 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11578[label="EQ == GT",fontsize=16,color="magenta"];11579[label="False",fontsize=16,color="green",shape="box"];11580[label="primCmpNat (Succ yuz40000) (Succ yuz40500) == GT",fontsize=16,color="black",shape="box"];11580 -> 11639[label="",style="solid", color="black", weight=3]; 27.10/11.38 11581[label="primCmpNat Zero (Succ yuz40500) == GT",fontsize=16,color="black",shape="box"];11581 -> 11640[label="",style="solid", color="black", weight=3]; 27.10/11.38 11582 -> 11487[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11582[label="LT == GT",fontsize=16,color="magenta"];11583 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11583[label="EQ == GT",fontsize=16,color="magenta"];11584 -> 11481[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11584[label="primCmpNat (Succ yuz40000) Zero == GT",fontsize=16,color="magenta"];11584 -> 11641[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11584 -> 11642[label="",style="dashed", color="magenta", weight=3]; 27.10/11.38 11585 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11585[label="EQ == GT",fontsize=16,color="magenta"];11586 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11586[label="EQ == GT",fontsize=16,color="magenta"];11587[label="compare1 False True (False <= True) == GT",fontsize=16,color="black",shape="box"];11587 -> 11643[label="",style="solid", color="black", weight=3]; 27.10/11.38 11588[label="compare1 True False (True <= False) == GT",fontsize=16,color="black",shape="box"];11588 -> 11644[label="",style="solid", color="black", weight=3]; 27.10/11.38 11589 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11589[label="EQ == GT",fontsize=16,color="magenta"];11590 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11590[label="EQ == GT",fontsize=16,color="magenta"];11591[label="compare1 LT EQ (LT <= EQ) == GT",fontsize=16,color="black",shape="box"];11591 -> 11645[label="",style="solid", color="black", weight=3]; 27.10/11.38 11592[label="compare1 LT GT (LT <= GT) == GT",fontsize=16,color="black",shape="box"];11592 -> 11646[label="",style="solid", color="black", weight=3]; 27.10/11.38 11593[label="compare1 EQ LT (EQ <= LT) == GT",fontsize=16,color="black",shape="box"];11593 -> 11647[label="",style="solid", color="black", weight=3]; 27.10/11.38 11594 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11594[label="EQ == GT",fontsize=16,color="magenta"];11595[label="compare1 EQ GT (EQ <= GT) == GT",fontsize=16,color="black",shape="box"];11595 -> 11648[label="",style="solid", color="black", weight=3]; 27.10/11.38 11596[label="compare1 GT LT (GT <= LT) == GT",fontsize=16,color="black",shape="box"];11596 -> 11649[label="",style="solid", color="black", weight=3]; 27.10/11.38 11597[label="compare1 GT EQ (GT <= EQ) == GT",fontsize=16,color="black",shape="box"];11597 -> 11650[label="",style="solid", color="black", weight=3]; 27.10/11.38 11598 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.38 11598[label="EQ == GT",fontsize=16,color="magenta"];12082[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12082 -> 12106[label="",style="solid", color="black", weight=3]; 27.10/11.38 12083[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12083 -> 12107[label="",style="solid", color="black", weight=3]; 27.10/11.38 12084[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12084 -> 12108[label="",style="solid", color="black", weight=3]; 27.10/11.38 12085[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12085 -> 12109[label="",style="solid", color="black", weight=3]; 27.10/11.38 12086[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12086 -> 12110[label="",style="solid", color="black", weight=3]; 27.10/11.38 12087[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="burlywood",shape="box"];12936[label="yuz405/LT",fontsize=10,color="white",style="solid",shape="box"];12087 -> 12936[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12936 -> 12111[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12937[label="yuz405/EQ",fontsize=10,color="white",style="solid",shape="box"];12087 -> 12937[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12937 -> 12112[label="",style="solid", color="burlywood", weight=3]; 27.10/11.38 12938[label="yuz405/GT",fontsize=10,color="white",style="solid",shape="box"];12087 -> 12938[label="",style="solid", color="burlywood", weight=9]; 27.10/11.38 12938 -> 12113[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12088[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12088 -> 12114[label="",style="solid", color="black", weight=3]; 27.10/11.39 12089[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12089 -> 12115[label="",style="solid", color="black", weight=3]; 27.10/11.39 12090[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12090 -> 12116[label="",style="solid", color="black", weight=3]; 27.10/11.39 12091[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12091 -> 12117[label="",style="solid", color="black", weight=3]; 27.10/11.39 12092[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12092 -> 12118[label="",style="solid", color="black", weight=3]; 27.10/11.39 12093[label="compare2 yuz405 yuz4030 (yuz405 == yuz4030) == LT",fontsize=16,color="black",shape="box"];12093 -> 12119[label="",style="solid", color="black", weight=3]; 27.10/11.39 10809[label="Succ yuz35700",fontsize=16,color="green",shape="box"];10810[label="primMulNat (Succ (Succ Zero)) (Succ yuz35700)",fontsize=16,color="black",shape="box"];10810 -> 11079[label="",style="solid", color="black", weight=3]; 27.10/11.39 2925 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.39 2925[label="primPlusNat yuz2400 yuz140",fontsize=16,color="magenta"];2925 -> 2990[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 2925 -> 2991[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7438 -> 7527[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7438[label="primPlusInt (Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz320 yuz231 yuz235) (FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235)",fontsize=16,color="magenta"];7438 -> 7528[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7775[label="Pos (primPlusNat yuz32720 yuz15920)",fontsize=16,color="green",shape="box"];7775 -> 10549[label="",style="dashed", color="green", weight=3]; 27.10/11.39 7776[label="primMinusNat yuz32720 yuz15920",fontsize=16,color="burlywood",shape="triangle"];12939[label="yuz32720/Succ yuz327200",fontsize=10,color="white",style="solid",shape="box"];7776 -> 12939[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12939 -> 10550[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12940[label="yuz32720/Zero",fontsize=10,color="white",style="solid",shape="box"];7776 -> 12940[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12940 -> 10551[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 7778 -> 7776[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7778[label="primMinusNat yuz15920 yuz32720",fontsize=16,color="magenta"];7778 -> 10552[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7778 -> 10553[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7779[label="Neg (primPlusNat yuz32720 yuz15920)",fontsize=16,color="green",shape="box"];7779 -> 10554[label="",style="dashed", color="green", weight=3]; 27.10/11.39 12094 -> 11963[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12094[label="FiniteMap.mkBalBranch6Size_r yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];12095[label="FiniteMap.mkBalBranch6MkBalBranch2 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 otherwise",fontsize=16,color="black",shape="box"];12095 -> 12120[label="",style="solid", color="black", weight=3]; 27.10/11.39 12096[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz2340 yuz2341 yuz443 yuz2344 yuz443 yuz2344 yuz443",fontsize=16,color="burlywood",shape="box"];12941[label="yuz443/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12096 -> 12941[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12941 -> 12121[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12942[label="yuz443/FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434",fontsize=10,color="white",style="solid",shape="box"];12096 -> 12942[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12942 -> 12122[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12105 -> 12135[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12105[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz23440 yuz23441 yuz23442 yuz23443 yuz23444 (FiniteMap.sizeFM yuz23443 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz23444)",fontsize=16,color="magenta"];12105 -> 12136[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11158[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos yuz3900) yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12943[label="yuz3900/Succ yuz39000",fontsize=10,color="white",style="solid",shape="box"];11158 -> 12943[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12943 -> 11208[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12944[label="yuz3900/Zero",fontsize=10,color="white",style="solid",shape="box"];11158 -> 12944[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12944 -> 11209[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11159[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg yuz3900) yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12945[label="yuz3900/Succ yuz39000",fontsize=10,color="white",style="solid",shape="box"];11159 -> 12945[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12945 -> 11210[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12946[label="yuz3900/Zero",fontsize=10,color="white",style="solid",shape="box"];11159 -> 12946[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12946 -> 11211[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11634[label="primCmpNat yuz40500 yuz40000 == GT",fontsize=16,color="burlywood",shape="triangle"];12947[label="yuz40500/Succ yuz405000",fontsize=10,color="white",style="solid",shape="box"];11634 -> 12947[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12947 -> 11697[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12948[label="yuz40500/Zero",fontsize=10,color="white",style="solid",shape="box"];11634 -> 12948[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12948 -> 11698[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11635 -> 11482[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11635[label="GT == GT",fontsize=16,color="magenta"];11636[label="Zero",fontsize=16,color="green",shape="box"];11637[label="yuz40000",fontsize=16,color="green",shape="box"];11638[label="False",fontsize=16,color="green",shape="box"];11639 -> 11634[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11639[label="primCmpNat yuz40000 yuz40500 == GT",fontsize=16,color="magenta"];11639 -> 11699[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11639 -> 11700[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11640 -> 11487[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11640[label="LT == GT",fontsize=16,color="magenta"];11641[label="Zero",fontsize=16,color="green",shape="box"];11642[label="yuz40000",fontsize=16,color="green",shape="box"];11643[label="compare1 False True True == GT",fontsize=16,color="black",shape="box"];11643 -> 11701[label="",style="solid", color="black", weight=3]; 27.10/11.39 11644[label="compare1 True False False == GT",fontsize=16,color="black",shape="box"];11644 -> 11702[label="",style="solid", color="black", weight=3]; 27.10/11.39 11645[label="error []",fontsize=16,color="red",shape="box"];11646[label="error []",fontsize=16,color="red",shape="box"];11647[label="error []",fontsize=16,color="red",shape="box"];11648[label="error []",fontsize=16,color="red",shape="box"];11649[label="error []",fontsize=16,color="red",shape="box"];11650[label="error []",fontsize=16,color="red",shape="box"];12106[label="error []",fontsize=16,color="red",shape="box"];12107[label="error []",fontsize=16,color="red",shape="box"];12108[label="error []",fontsize=16,color="red",shape="box"];12109[label="error []",fontsize=16,color="red",shape="box"];12110[label="error []",fontsize=16,color="red",shape="box"];12111[label="compare2 LT yuz4030 (LT == yuz4030) == LT",fontsize=16,color="burlywood",shape="box"];12949[label="yuz4030/LT",fontsize=10,color="white",style="solid",shape="box"];12111 -> 12949[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12949 -> 12137[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12950[label="yuz4030/EQ",fontsize=10,color="white",style="solid",shape="box"];12111 -> 12950[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12950 -> 12138[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12951[label="yuz4030/GT",fontsize=10,color="white",style="solid",shape="box"];12111 -> 12951[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12951 -> 12139[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12112[label="compare2 EQ yuz4030 (EQ == yuz4030) == LT",fontsize=16,color="burlywood",shape="box"];12952[label="yuz4030/LT",fontsize=10,color="white",style="solid",shape="box"];12112 -> 12952[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12952 -> 12140[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12953[label="yuz4030/EQ",fontsize=10,color="white",style="solid",shape="box"];12112 -> 12953[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12953 -> 12141[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12954[label="yuz4030/GT",fontsize=10,color="white",style="solid",shape="box"];12112 -> 12954[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12954 -> 12142[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12113[label="compare2 GT yuz4030 (GT == yuz4030) == LT",fontsize=16,color="burlywood",shape="box"];12955[label="yuz4030/LT",fontsize=10,color="white",style="solid",shape="box"];12113 -> 12955[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12955 -> 12143[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12956[label="yuz4030/EQ",fontsize=10,color="white",style="solid",shape="box"];12113 -> 12956[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12956 -> 12144[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12957[label="yuz4030/GT",fontsize=10,color="white",style="solid",shape="box"];12113 -> 12957[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12957 -> 12145[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12114[label="error []",fontsize=16,color="red",shape="box"];12115[label="error []",fontsize=16,color="red",shape="box"];12116[label="error []",fontsize=16,color="red",shape="box"];12117[label="error []",fontsize=16,color="red",shape="box"];12118[label="error []",fontsize=16,color="red",shape="box"];12119[label="error []",fontsize=16,color="red",shape="box"];11079 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11079[label="primPlusNat (primMulNat (Succ Zero) (Succ yuz35700)) (Succ yuz35700)",fontsize=16,color="magenta"];11079 -> 11114[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11079 -> 11115[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 2990[label="yuz140",fontsize=16,color="green",shape="box"];2991[label="yuz2400",fontsize=16,color="green",shape="box"];7528[label="Pos (Succ Zero) + FiniteMap.mkBranchLeft_size yuz320 yuz231 yuz235",fontsize=16,color="black",shape="triangle"];7528 -> 7643[label="",style="solid", color="black", weight=3]; 27.10/11.39 7527[label="primPlusInt yuz338 (FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235)",fontsize=16,color="burlywood",shape="triangle"];12958[label="yuz338/Pos yuz3380",fontsize=10,color="white",style="solid",shape="box"];7527 -> 12958[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12958 -> 7644[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12959[label="yuz338/Neg yuz3380",fontsize=10,color="white",style="solid",shape="box"];7527 -> 12959[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12959 -> 7645[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 10549 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.39 10549[label="primPlusNat yuz32720 yuz15920",fontsize=16,color="magenta"];10549 -> 10618[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10549 -> 10619[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10550[label="primMinusNat (Succ yuz327200) yuz15920",fontsize=16,color="burlywood",shape="box"];12960[label="yuz15920/Succ yuz159200",fontsize=10,color="white",style="solid",shape="box"];10550 -> 12960[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12960 -> 10620[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12961[label="yuz15920/Zero",fontsize=10,color="white",style="solid",shape="box"];10550 -> 12961[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12961 -> 10621[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 10551[label="primMinusNat Zero yuz15920",fontsize=16,color="burlywood",shape="box"];12962[label="yuz15920/Succ yuz159200",fontsize=10,color="white",style="solid",shape="box"];10551 -> 12962[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12962 -> 10622[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12963[label="yuz15920/Zero",fontsize=10,color="white",style="solid",shape="box"];10551 -> 12963[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12963 -> 10623[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 10552[label="yuz32720",fontsize=16,color="green",shape="box"];10553[label="yuz15920",fontsize=16,color="green",shape="box"];10554 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.39 10554[label="primPlusNat yuz32720 yuz15920",fontsize=16,color="magenta"];10554 -> 10624[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10554 -> 10625[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12120[label="FiniteMap.mkBalBranch6MkBalBranch2 yuz2340 yuz2341 yuz443 yuz2344 yuz2340 yuz2341 yuz443 yuz2344 True",fontsize=16,color="black",shape="box"];12120 -> 12146[label="",style="solid", color="black", weight=3]; 27.10/11.39 12121[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz2340 yuz2341 FiniteMap.EmptyFM yuz2344 FiniteMap.EmptyFM yuz2344 FiniteMap.EmptyFM",fontsize=16,color="black",shape="box"];12121 -> 12147[label="",style="solid", color="black", weight=3]; 27.10/11.39 12122[label="FiniteMap.mkBalBranch6MkBalBranch1 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434)",fontsize=16,color="black",shape="box"];12122 -> 12148[label="",style="solid", color="black", weight=3]; 27.10/11.39 12136 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12136[label="FiniteMap.sizeFM yuz23443 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz23444",fontsize=16,color="magenta"];12136 -> 12149[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12136 -> 12150[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12135[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz23440 yuz23441 yuz23442 yuz23443 yuz23444 yuz452",fontsize=16,color="burlywood",shape="triangle"];12964[label="yuz452/False",fontsize=10,color="white",style="solid",shape="box"];12135 -> 12964[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12964 -> 12151[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12965[label="yuz452/True",fontsize=10,color="white",style="solid",shape="box"];12135 -> 12965[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12965 -> 12152[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11208[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos (Succ yuz39000)) yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12966[label="yuz389/Pos yuz3890",fontsize=10,color="white",style="solid",shape="box"];11208 -> 12966[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12966 -> 11255[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12967[label="yuz389/Neg yuz3890",fontsize=10,color="white",style="solid",shape="box"];11208 -> 12967[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12967 -> 11256[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11209[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12968[label="yuz389/Pos yuz3890",fontsize=10,color="white",style="solid",shape="box"];11209 -> 12968[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12968 -> 11257[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12969[label="yuz389/Neg yuz3890",fontsize=10,color="white",style="solid",shape="box"];11209 -> 12969[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12969 -> 11258[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11210[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg (Succ yuz39000)) yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12970[label="yuz389/Pos yuz3890",fontsize=10,color="white",style="solid",shape="box"];11210 -> 12970[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12970 -> 11259[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12971[label="yuz389/Neg yuz3890",fontsize=10,color="white",style="solid",shape="box"];11210 -> 12971[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12971 -> 11260[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11211[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) yuz389 == GT)",fontsize=16,color="burlywood",shape="box"];12972[label="yuz389/Pos yuz3890",fontsize=10,color="white",style="solid",shape="box"];11211 -> 12972[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12972 -> 11261[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12973[label="yuz389/Neg yuz3890",fontsize=10,color="white",style="solid",shape="box"];11211 -> 12973[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12973 -> 11262[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11697[label="primCmpNat (Succ yuz405000) yuz40000 == GT",fontsize=16,color="burlywood",shape="box"];12974[label="yuz40000/Succ yuz400000",fontsize=10,color="white",style="solid",shape="box"];11697 -> 12974[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12974 -> 11729[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12975[label="yuz40000/Zero",fontsize=10,color="white",style="solid",shape="box"];11697 -> 12975[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12975 -> 11730[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11698[label="primCmpNat Zero yuz40000 == GT",fontsize=16,color="burlywood",shape="box"];12976[label="yuz40000/Succ yuz400000",fontsize=10,color="white",style="solid",shape="box"];11698 -> 12976[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12976 -> 11731[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12977[label="yuz40000/Zero",fontsize=10,color="white",style="solid",shape="box"];11698 -> 12977[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12977 -> 11732[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11699[label="yuz40500",fontsize=16,color="green",shape="box"];11700[label="yuz40000",fontsize=16,color="green",shape="box"];11701 -> 11487[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11701[label="LT == GT",fontsize=16,color="magenta"];11702[label="compare0 True False otherwise == GT",fontsize=16,color="black",shape="box"];11702 -> 11733[label="",style="solid", color="black", weight=3]; 27.10/11.39 12137[label="compare2 LT LT (LT == LT) == LT",fontsize=16,color="black",shape="box"];12137 -> 12161[label="",style="solid", color="black", weight=3]; 27.10/11.39 12138[label="compare2 LT EQ (LT == EQ) == LT",fontsize=16,color="black",shape="box"];12138 -> 12162[label="",style="solid", color="black", weight=3]; 27.10/11.39 12139[label="compare2 LT GT (LT == GT) == LT",fontsize=16,color="black",shape="box"];12139 -> 12163[label="",style="solid", color="black", weight=3]; 27.10/11.39 12140[label="compare2 EQ LT (EQ == LT) == LT",fontsize=16,color="black",shape="box"];12140 -> 12164[label="",style="solid", color="black", weight=3]; 27.10/11.39 12141[label="compare2 EQ EQ (EQ == EQ) == LT",fontsize=16,color="black",shape="box"];12141 -> 12165[label="",style="solid", color="black", weight=3]; 27.10/11.39 12142[label="compare2 EQ GT (EQ == GT) == LT",fontsize=16,color="black",shape="box"];12142 -> 12166[label="",style="solid", color="black", weight=3]; 27.10/11.39 12143[label="compare2 GT LT (GT == LT) == LT",fontsize=16,color="black",shape="box"];12143 -> 12167[label="",style="solid", color="black", weight=3]; 27.10/11.39 12144[label="compare2 GT EQ (GT == EQ) == LT",fontsize=16,color="black",shape="box"];12144 -> 12168[label="",style="solid", color="black", weight=3]; 27.10/11.39 12145[label="compare2 GT GT (GT == GT) == LT",fontsize=16,color="black",shape="box"];12145 -> 12169[label="",style="solid", color="black", weight=3]; 27.10/11.39 11114[label="Succ yuz35700",fontsize=16,color="green",shape="box"];11115[label="primMulNat (Succ Zero) (Succ yuz35700)",fontsize=16,color="black",shape="triangle"];11115 -> 11172[label="",style="solid", color="black", weight=3]; 27.10/11.39 7643[label="primPlusInt (Pos (Succ Zero)) (FiniteMap.mkBranchLeft_size yuz320 yuz231 yuz235)",fontsize=16,color="black",shape="box"];7643 -> 7719[label="",style="solid", color="black", weight=3]; 27.10/11.39 7644[label="primPlusInt (Pos yuz3380) (FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235)",fontsize=16,color="black",shape="box"];7644 -> 7720[label="",style="solid", color="black", weight=3]; 27.10/11.39 7645[label="primPlusInt (Neg yuz3380) (FiniteMap.mkBranchRight_size yuz320 yuz231 yuz235)",fontsize=16,color="black",shape="box"];7645 -> 7721[label="",style="solid", color="black", weight=3]; 27.10/11.39 10618[label="yuz15920",fontsize=16,color="green",shape="box"];10619[label="yuz32720",fontsize=16,color="green",shape="box"];10620[label="primMinusNat (Succ yuz327200) (Succ yuz159200)",fontsize=16,color="black",shape="box"];10620 -> 10690[label="",style="solid", color="black", weight=3]; 27.10/11.39 10621[label="primMinusNat (Succ yuz327200) Zero",fontsize=16,color="black",shape="box"];10621 -> 10691[label="",style="solid", color="black", weight=3]; 27.10/11.39 10622[label="primMinusNat Zero (Succ yuz159200)",fontsize=16,color="black",shape="box"];10622 -> 10692[label="",style="solid", color="black", weight=3]; 27.10/11.39 10623[label="primMinusNat Zero Zero",fontsize=16,color="black",shape="box"];10623 -> 10693[label="",style="solid", color="black", weight=3]; 27.10/11.39 10624[label="yuz15920",fontsize=16,color="green",shape="box"];10625[label="yuz32720",fontsize=16,color="green",shape="box"];12146[label="FiniteMap.mkBranch (Pos (Succ (Succ Zero))) yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="black",shape="box"];12146 -> 12170[label="",style="solid", color="black", weight=3]; 27.10/11.39 12147[label="error []",fontsize=16,color="red",shape="box"];12148[label="FiniteMap.mkBalBranch6MkBalBranch12 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434)",fontsize=16,color="black",shape="box"];12148 -> 12171[label="",style="solid", color="black", weight=3]; 27.10/11.39 12149 -> 12172[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12149[label="Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz23444",fontsize=16,color="magenta"];12149 -> 12173[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12150 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12150[label="FiniteMap.sizeFM yuz23443",fontsize=16,color="magenta"];12150 -> 12174[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12151[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz23440 yuz23441 yuz23442 yuz23443 yuz23444 False",fontsize=16,color="black",shape="box"];12151 -> 12175[label="",style="solid", color="black", weight=3]; 27.10/11.39 12152[label="FiniteMap.mkBalBranch6MkBalBranch01 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz23440 yuz23441 yuz23442 yuz23443 yuz23444 True",fontsize=16,color="black",shape="box"];12152 -> 12176[label="",style="solid", color="black", weight=3]; 27.10/11.39 11255[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos (Succ yuz39000)) (Pos yuz3890) == GT)",fontsize=16,color="black",shape="box"];11255 -> 11376[label="",style="solid", color="black", weight=3]; 27.10/11.39 11256[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos (Succ yuz39000)) (Neg yuz3890) == GT)",fontsize=16,color="black",shape="box"];11256 -> 11377[label="",style="solid", color="black", weight=3]; 27.10/11.39 11257[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) (Pos yuz3890) == GT)",fontsize=16,color="burlywood",shape="box"];12978[label="yuz3890/Succ yuz38900",fontsize=10,color="white",style="solid",shape="box"];11257 -> 12978[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12978 -> 11378[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12979[label="yuz3890/Zero",fontsize=10,color="white",style="solid",shape="box"];11257 -> 12979[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12979 -> 11379[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11258[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) (Neg yuz3890) == GT)",fontsize=16,color="burlywood",shape="box"];12980[label="yuz3890/Succ yuz38900",fontsize=10,color="white",style="solid",shape="box"];11258 -> 12980[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12980 -> 11380[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12981[label="yuz3890/Zero",fontsize=10,color="white",style="solid",shape="box"];11258 -> 12981[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12981 -> 11381[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11259[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg (Succ yuz39000)) (Pos yuz3890) == GT)",fontsize=16,color="black",shape="box"];11259 -> 11382[label="",style="solid", color="black", weight=3]; 27.10/11.39 11260[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg (Succ yuz39000)) (Neg yuz3890) == GT)",fontsize=16,color="black",shape="box"];11260 -> 11383[label="",style="solid", color="black", weight=3]; 27.10/11.39 11261[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) (Pos yuz3890) == GT)",fontsize=16,color="burlywood",shape="box"];12982[label="yuz3890/Succ yuz38900",fontsize=10,color="white",style="solid",shape="box"];11261 -> 12982[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12982 -> 11384[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12983[label="yuz3890/Zero",fontsize=10,color="white",style="solid",shape="box"];11261 -> 12983[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12983 -> 11385[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11262[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) (Neg yuz3890) == GT)",fontsize=16,color="burlywood",shape="box"];12984[label="yuz3890/Succ yuz38900",fontsize=10,color="white",style="solid",shape="box"];11262 -> 12984[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12984 -> 11386[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12985[label="yuz3890/Zero",fontsize=10,color="white",style="solid",shape="box"];11262 -> 12985[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12985 -> 11387[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11729[label="primCmpNat (Succ yuz405000) (Succ yuz400000) == GT",fontsize=16,color="black",shape="box"];11729 -> 11760[label="",style="solid", color="black", weight=3]; 27.10/11.39 11730[label="primCmpNat (Succ yuz405000) Zero == GT",fontsize=16,color="black",shape="box"];11730 -> 11761[label="",style="solid", color="black", weight=3]; 27.10/11.39 11731[label="primCmpNat Zero (Succ yuz400000) == GT",fontsize=16,color="black",shape="box"];11731 -> 11762[label="",style="solid", color="black", weight=3]; 27.10/11.39 11732[label="primCmpNat Zero Zero == GT",fontsize=16,color="black",shape="box"];11732 -> 11763[label="",style="solid", color="black", weight=3]; 27.10/11.39 11733[label="compare0 True False True == GT",fontsize=16,color="black",shape="box"];11733 -> 11764[label="",style="solid", color="black", weight=3]; 27.10/11.39 12161[label="compare2 LT LT True == LT",fontsize=16,color="black",shape="box"];12161 -> 12177[label="",style="solid", color="black", weight=3]; 27.10/11.39 12162[label="compare2 LT EQ False == LT",fontsize=16,color="black",shape="box"];12162 -> 12178[label="",style="solid", color="black", weight=3]; 27.10/11.39 12163[label="compare2 LT GT False == LT",fontsize=16,color="black",shape="box"];12163 -> 12179[label="",style="solid", color="black", weight=3]; 27.10/11.39 12164[label="compare2 EQ LT False == LT",fontsize=16,color="black",shape="box"];12164 -> 12180[label="",style="solid", color="black", weight=3]; 27.10/11.39 12165[label="compare2 EQ EQ True == LT",fontsize=16,color="black",shape="box"];12165 -> 12181[label="",style="solid", color="black", weight=3]; 27.10/11.39 12166[label="compare2 EQ GT False == LT",fontsize=16,color="black",shape="box"];12166 -> 12182[label="",style="solid", color="black", weight=3]; 27.10/11.39 12167[label="compare2 GT LT False == LT",fontsize=16,color="black",shape="box"];12167 -> 12183[label="",style="solid", color="black", weight=3]; 27.10/11.39 12168[label="compare2 GT EQ False == LT",fontsize=16,color="black",shape="box"];12168 -> 12184[label="",style="solid", color="black", weight=3]; 27.10/11.39 12169[label="compare2 GT GT True == LT",fontsize=16,color="black",shape="box"];12169 -> 12185[label="",style="solid", color="black", weight=3]; 27.10/11.39 11172 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11172[label="primPlusNat (primMulNat Zero (Succ yuz35700)) (Succ yuz35700)",fontsize=16,color="magenta"];11172 -> 11224[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11172 -> 11225[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7719 -> 7656[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7719[label="primPlusInt (Pos (Succ Zero)) (FiniteMap.sizeFM yuz320)",fontsize=16,color="magenta"];7719 -> 7763[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7719 -> 7764[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7720 -> 7656[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7720[label="primPlusInt (Pos yuz3380) (FiniteMap.sizeFM yuz235)",fontsize=16,color="magenta"];7720 -> 7765[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7720 -> 7766[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7721 -> 7658[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7721[label="primPlusInt (Neg yuz3380) (FiniteMap.sizeFM yuz235)",fontsize=16,color="magenta"];7721 -> 7767[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7721 -> 7768[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10690 -> 7776[label="",style="dashed", color="red", weight=0]; 27.10/11.39 10690[label="primMinusNat yuz327200 yuz159200",fontsize=16,color="magenta"];10690 -> 10740[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10690 -> 10741[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10691[label="Pos (Succ yuz327200)",fontsize=16,color="green",shape="box"];10692[label="Neg (Succ yuz159200)",fontsize=16,color="green",shape="box"];10693[label="Pos Zero",fontsize=16,color="green",shape="box"];12170 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12170[label="FiniteMap.mkBranchResult yuz2340 yuz2341 yuz443 yuz2344",fontsize=16,color="magenta"];12170 -> 12186[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12170 -> 12187[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12170 -> 12188[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12170 -> 12189[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12171 -> 12190[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12171[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 yuz4430 yuz4431 yuz4432 yuz4433 yuz4434 (FiniteMap.sizeFM yuz4434 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz4433)",fontsize=16,color="magenta"];12171 -> 12191[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12173 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12173[label="FiniteMap.sizeFM yuz23444",fontsize=16,color="magenta"];12173 -> 12192[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12172[label="Pos (Succ (Succ Zero)) * yuz455",fontsize=16,color="black",shape="triangle"];12172 -> 12193[label="",style="solid", color="black", weight=3]; 27.10/11.39 12174[label="yuz23443",fontsize=16,color="green",shape="box"];12175[label="FiniteMap.mkBalBranch6MkBalBranch00 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz23440 yuz23441 yuz23442 yuz23443 yuz23444 otherwise",fontsize=16,color="black",shape="box"];12175 -> 12194[label="",style="solid", color="black", weight=3]; 27.10/11.39 12176[label="FiniteMap.mkBalBranch6Single_L yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444)",fontsize=16,color="black",shape="box"];12176 -> 12195[label="",style="solid", color="black", weight=3]; 27.10/11.39 11376[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz39000) yuz3890 == GT)",fontsize=16,color="burlywood",shape="triangle"];12986[label="yuz3890/Succ yuz38900",fontsize=10,color="white",style="solid",shape="box"];11376 -> 12986[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12986 -> 11430[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12987[label="yuz3890/Zero",fontsize=10,color="white",style="solid",shape="box"];11376 -> 12987[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12987 -> 11431[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11377[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (GT == GT)",fontsize=16,color="black",shape="triangle"];11377 -> 11432[label="",style="solid", color="black", weight=3]; 27.10/11.39 11378[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) (Pos (Succ yuz38900)) == GT)",fontsize=16,color="black",shape="box"];11378 -> 11433[label="",style="solid", color="black", weight=3]; 27.10/11.39 11379[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) (Pos Zero) == GT)",fontsize=16,color="black",shape="box"];11379 -> 11434[label="",style="solid", color="black", weight=3]; 27.10/11.39 11380[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) (Neg (Succ yuz38900)) == GT)",fontsize=16,color="black",shape="box"];11380 -> 11435[label="",style="solid", color="black", weight=3]; 27.10/11.39 11381[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Pos Zero) (Neg Zero) == GT)",fontsize=16,color="black",shape="box"];11381 -> 11436[label="",style="solid", color="black", weight=3]; 27.10/11.39 11382[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (LT == GT)",fontsize=16,color="black",shape="triangle"];11382 -> 11437[label="",style="solid", color="black", weight=3]; 27.10/11.39 11383[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat yuz3890 (Succ yuz39000) == GT)",fontsize=16,color="burlywood",shape="triangle"];12988[label="yuz3890/Succ yuz38900",fontsize=10,color="white",style="solid",shape="box"];11383 -> 12988[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12988 -> 11438[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12989[label="yuz3890/Zero",fontsize=10,color="white",style="solid",shape="box"];11383 -> 12989[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12989 -> 11439[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11384[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) (Pos (Succ yuz38900)) == GT)",fontsize=16,color="black",shape="box"];11384 -> 11440[label="",style="solid", color="black", weight=3]; 27.10/11.39 11385[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) (Pos Zero) == GT)",fontsize=16,color="black",shape="box"];11385 -> 11441[label="",style="solid", color="black", weight=3]; 27.10/11.39 11386[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) (Neg (Succ yuz38900)) == GT)",fontsize=16,color="black",shape="box"];11386 -> 11442[label="",style="solid", color="black", weight=3]; 27.10/11.39 11387[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpInt (Neg Zero) (Neg Zero) == GT)",fontsize=16,color="black",shape="box"];11387 -> 11443[label="",style="solid", color="black", weight=3]; 27.10/11.39 11760 -> 11634[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11760[label="primCmpNat yuz405000 yuz400000 == GT",fontsize=16,color="magenta"];11760 -> 11812[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11760 -> 11813[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11761 -> 11482[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11761[label="GT == GT",fontsize=16,color="magenta"];11762 -> 11487[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11762[label="LT == GT",fontsize=16,color="magenta"];11763 -> 11576[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11763[label="EQ == GT",fontsize=16,color="magenta"];11764 -> 11482[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11764[label="GT == GT",fontsize=16,color="magenta"];12177 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12177[label="EQ == LT",fontsize=16,color="magenta"];12178[label="compare1 LT EQ (LT <= EQ) == LT",fontsize=16,color="black",shape="box"];12178 -> 12196[label="",style="solid", color="black", weight=3]; 27.10/11.39 12179[label="compare1 LT GT (LT <= GT) == LT",fontsize=16,color="black",shape="box"];12179 -> 12197[label="",style="solid", color="black", weight=3]; 27.10/11.39 12180[label="compare1 EQ LT (EQ <= LT) == LT",fontsize=16,color="black",shape="box"];12180 -> 12198[label="",style="solid", color="black", weight=3]; 27.10/11.39 12181 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12181[label="EQ == LT",fontsize=16,color="magenta"];12182[label="compare1 EQ GT (EQ <= GT) == LT",fontsize=16,color="black",shape="box"];12182 -> 12199[label="",style="solid", color="black", weight=3]; 27.10/11.39 12183[label="compare1 GT LT (GT <= LT) == LT",fontsize=16,color="black",shape="box"];12183 -> 12200[label="",style="solid", color="black", weight=3]; 27.10/11.39 12184[label="compare1 GT EQ (GT <= EQ) == LT",fontsize=16,color="black",shape="box"];12184 -> 12201[label="",style="solid", color="black", weight=3]; 27.10/11.39 12185 -> 5287[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12185[label="EQ == LT",fontsize=16,color="magenta"];11224[label="Succ yuz35700",fontsize=16,color="green",shape="box"];11225[label="primMulNat Zero (Succ yuz35700)",fontsize=16,color="black",shape="box"];11225 -> 11277[label="",style="solid", color="black", weight=3]; 27.10/11.39 7763[label="Succ Zero",fontsize=16,color="green",shape="box"];7765[label="yuz3380",fontsize=16,color="green",shape="box"];7766 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7766[label="FiniteMap.sizeFM yuz235",fontsize=16,color="magenta"];7766 -> 10541[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 7767[label="yuz3380",fontsize=16,color="green",shape="box"];7768 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.39 7768[label="FiniteMap.sizeFM yuz235",fontsize=16,color="magenta"];7768 -> 10542[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 10740[label="yuz159200",fontsize=16,color="green",shape="box"];10741[label="yuz327200",fontsize=16,color="green",shape="box"];12186[label="yuz2340",fontsize=16,color="green",shape="box"];12187[label="yuz2344",fontsize=16,color="green",shape="box"];12188[label="yuz443",fontsize=16,color="green",shape="box"];12189[label="yuz2341",fontsize=16,color="green",shape="box"];12191 -> 4104[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12191[label="FiniteMap.sizeFM yuz4434 < Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz4433",fontsize=16,color="magenta"];12191 -> 12202[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12191 -> 12203[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12190[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 yuz4430 yuz4431 yuz4432 yuz4433 yuz4434 yuz456",fontsize=16,color="burlywood",shape="triangle"];12990[label="yuz456/False",fontsize=10,color="white",style="solid",shape="box"];12190 -> 12990[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12990 -> 12204[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12991[label="yuz456/True",fontsize=10,color="white",style="solid",shape="box"];12190 -> 12991[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12991 -> 12205[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12192[label="yuz23444",fontsize=16,color="green",shape="box"];12193[label="primMulInt (Pos (Succ (Succ Zero))) yuz455",fontsize=16,color="burlywood",shape="box"];12992[label="yuz455/Pos yuz4550",fontsize=10,color="white",style="solid",shape="box"];12193 -> 12992[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12992 -> 12218[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12993[label="yuz455/Neg yuz4550",fontsize=10,color="white",style="solid",shape="box"];12193 -> 12993[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12993 -> 12219[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12194[label="FiniteMap.mkBalBranch6MkBalBranch00 yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz23440 yuz23441 yuz23442 yuz23443 yuz23444 True",fontsize=16,color="black",shape="box"];12194 -> 12220[label="",style="solid", color="black", weight=3]; 27.10/11.39 12195[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ Zero)))) yuz23440 yuz23441 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz2340 yuz2341 yuz443 yuz23443) yuz23444",fontsize=16,color="black",shape="box"];12195 -> 12221[label="",style="solid", color="black", weight=3]; 27.10/11.39 11430[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz39000) (Succ yuz38900) == GT)",fontsize=16,color="black",shape="box"];11430 -> 11506[label="",style="solid", color="black", weight=3]; 27.10/11.39 11431[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz39000) Zero == GT)",fontsize=16,color="black",shape="box"];11431 -> 11507[label="",style="solid", color="black", weight=3]; 27.10/11.39 11432[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) True",fontsize=16,color="black",shape="box"];11432 -> 11508[label="",style="solid", color="black", weight=3]; 27.10/11.39 11433 -> 11383[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11433[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat Zero (Succ yuz38900) == GT)",fontsize=16,color="magenta"];11433 -> 11509[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11433 -> 11510[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11434[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (EQ == GT)",fontsize=16,color="black",shape="triangle"];11434 -> 11511[label="",style="solid", color="black", weight=3]; 27.10/11.39 11435 -> 11377[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11435[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (GT == GT)",fontsize=16,color="magenta"];11436 -> 11434[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11436[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (EQ == GT)",fontsize=16,color="magenta"];11437[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) False",fontsize=16,color="black",shape="triangle"];11437 -> 11512[label="",style="solid", color="black", weight=3]; 27.10/11.39 11438[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz38900) (Succ yuz39000) == GT)",fontsize=16,color="black",shape="box"];11438 -> 11513[label="",style="solid", color="black", weight=3]; 27.10/11.39 11439[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat Zero (Succ yuz39000) == GT)",fontsize=16,color="black",shape="box"];11439 -> 11514[label="",style="solid", color="black", weight=3]; 27.10/11.39 11440 -> 11382[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11440[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (LT == GT)",fontsize=16,color="magenta"];11441 -> 11434[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11441[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (EQ == GT)",fontsize=16,color="magenta"];11442 -> 11376[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11442[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz38900) Zero == GT)",fontsize=16,color="magenta"];11442 -> 11515[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11442 -> 11516[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11443 -> 11434[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11443[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (EQ == GT)",fontsize=16,color="magenta"];11812[label="yuz400000",fontsize=16,color="green",shape="box"];11813[label="yuz405000",fontsize=16,color="green",shape="box"];12196[label="error []",fontsize=16,color="red",shape="box"];12197[label="error []",fontsize=16,color="red",shape="box"];12198[label="error []",fontsize=16,color="red",shape="box"];12199[label="error []",fontsize=16,color="red",shape="box"];12200[label="error []",fontsize=16,color="red",shape="box"];12201[label="error []",fontsize=16,color="red",shape="box"];11277[label="Zero",fontsize=16,color="green",shape="box"];10541[label="yuz235",fontsize=16,color="green",shape="box"];10542[label="yuz235",fontsize=16,color="green",shape="box"];12202 -> 12172[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12202[label="Pos (Succ (Succ Zero)) * FiniteMap.sizeFM yuz4433",fontsize=16,color="magenta"];12202 -> 12222[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12203 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12203[label="FiniteMap.sizeFM yuz4434",fontsize=16,color="magenta"];12203 -> 12223[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12204[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 yuz4430 yuz4431 yuz4432 yuz4433 yuz4434 False",fontsize=16,color="black",shape="box"];12204 -> 12224[label="",style="solid", color="black", weight=3]; 27.10/11.39 12205[label="FiniteMap.mkBalBranch6MkBalBranch11 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 yuz4430 yuz4431 yuz4432 yuz4433 yuz4434 True",fontsize=16,color="black",shape="box"];12205 -> 12225[label="",style="solid", color="black", weight=3]; 27.10/11.39 12218[label="primMulInt (Pos (Succ (Succ Zero))) (Pos yuz4550)",fontsize=16,color="black",shape="box"];12218 -> 12234[label="",style="solid", color="black", weight=3]; 27.10/11.39 12219[label="primMulInt (Pos (Succ (Succ Zero))) (Neg yuz4550)",fontsize=16,color="black",shape="box"];12219 -> 12235[label="",style="solid", color="black", weight=3]; 27.10/11.39 12220[label="FiniteMap.mkBalBranch6Double_L yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 yuz23443 yuz23444)",fontsize=16,color="burlywood",shape="box"];12994[label="yuz23443/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12220 -> 12994[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12994 -> 12236[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12995[label="yuz23443/FiniteMap.Branch yuz234430 yuz234431 yuz234432 yuz234433 yuz234434",fontsize=10,color="white",style="solid",shape="box"];12220 -> 12995[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12995 -> 12237[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12221 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12221[label="FiniteMap.mkBranchResult yuz23440 yuz23441 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz2340 yuz2341 yuz443 yuz23443) yuz23444",fontsize=16,color="magenta"];12221 -> 12238[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12221 -> 12239[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12221 -> 12240[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12221 -> 12241[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11506[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat yuz39000 yuz38900 == GT)",fontsize=16,color="burlywood",shape="triangle"];12996[label="yuz39000/Succ yuz390000",fontsize=10,color="white",style="solid",shape="box"];11506 -> 12996[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12996 -> 11599[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12997[label="yuz39000/Zero",fontsize=10,color="white",style="solid",shape="box"];11506 -> 12997[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12997 -> 11600[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11507 -> 11377[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11507[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (GT == GT)",fontsize=16,color="magenta"];11508 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11508[label="FiniteMap.mkBalBranch (FiniteMap.glueBal2Mid_key2 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)) (FiniteMap.glueBal2Mid_elt2 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.deleteMin (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344))",fontsize=16,color="magenta"];11508 -> 11789[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11508 -> 11790[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11508 -> 11791[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11508 -> 11792[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11509[label="yuz38900",fontsize=16,color="green",shape="box"];11510[label="Zero",fontsize=16,color="green",shape="box"];11511 -> 11437[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11511[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) False",fontsize=16,color="magenta"];11512[label="FiniteMap.glueBal2GlueBal0 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) otherwise",fontsize=16,color="black",shape="box"];11512 -> 11602[label="",style="solid", color="black", weight=3]; 27.10/11.39 11513 -> 11506[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11513[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat yuz38900 yuz39000 == GT)",fontsize=16,color="magenta"];11513 -> 11603[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11513 -> 11604[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11514 -> 11382[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11514[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (LT == GT)",fontsize=16,color="magenta"];11515[label="yuz38900",fontsize=16,color="green",shape="box"];11516[label="Zero",fontsize=16,color="green",shape="box"];12222 -> 7764[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12222[label="FiniteMap.sizeFM yuz4433",fontsize=16,color="magenta"];12222 -> 12242[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12223[label="yuz4434",fontsize=16,color="green",shape="box"];12224[label="FiniteMap.mkBalBranch6MkBalBranch10 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 yuz4430 yuz4431 yuz4432 yuz4433 yuz4434 otherwise",fontsize=16,color="black",shape="box"];12224 -> 12243[label="",style="solid", color="black", weight=3]; 27.10/11.39 12225[label="FiniteMap.mkBalBranch6Single_R yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344",fontsize=16,color="black",shape="box"];12225 -> 12244[label="",style="solid", color="black", weight=3]; 27.10/11.39 12234[label="Pos (primMulNat (Succ (Succ Zero)) yuz4550)",fontsize=16,color="green",shape="box"];12234 -> 12337[label="",style="dashed", color="green", weight=3]; 27.10/11.39 12235[label="Neg (primMulNat (Succ (Succ Zero)) yuz4550)",fontsize=16,color="green",shape="box"];12235 -> 12338[label="",style="dashed", color="green", weight=3]; 27.10/11.39 12236[label="FiniteMap.mkBalBranch6Double_L yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 FiniteMap.EmptyFM yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 FiniteMap.EmptyFM yuz23444)",fontsize=16,color="black",shape="box"];12236 -> 12339[label="",style="solid", color="black", weight=3]; 27.10/11.39 12237[label="FiniteMap.mkBalBranch6Double_L yuz2340 yuz2341 yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 (FiniteMap.Branch yuz234430 yuz234431 yuz234432 yuz234433 yuz234434) yuz23444) yuz443 (FiniteMap.Branch yuz23440 yuz23441 yuz23442 (FiniteMap.Branch yuz234430 yuz234431 yuz234432 yuz234433 yuz234434) yuz23444)",fontsize=16,color="black",shape="box"];12237 -> 12340[label="",style="solid", color="black", weight=3]; 27.10/11.39 12238[label="yuz23440",fontsize=16,color="green",shape="box"];12239[label="yuz23444",fontsize=16,color="green",shape="box"];12240[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) yuz2340 yuz2341 yuz443 yuz23443",fontsize=16,color="black",shape="box"];12240 -> 12341[label="",style="solid", color="black", weight=3]; 27.10/11.39 12241[label="yuz23441",fontsize=16,color="green",shape="box"];11599[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz390000) yuz38900 == GT)",fontsize=16,color="burlywood",shape="box"];12998[label="yuz38900/Succ yuz389000",fontsize=10,color="white",style="solid",shape="box"];11599 -> 12998[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12998 -> 11651[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12999[label="yuz38900/Zero",fontsize=10,color="white",style="solid",shape="box"];11599 -> 12999[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 12999 -> 11652[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11600[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat Zero yuz38900 == GT)",fontsize=16,color="burlywood",shape="box"];13000[label="yuz38900/Succ yuz389000",fontsize=10,color="white",style="solid",shape="box"];11600 -> 13000[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13000 -> 11653[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13001[label="yuz38900/Zero",fontsize=10,color="white",style="solid",shape="box"];11600 -> 13001[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13001 -> 11654[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11789[label="FiniteMap.glueBal2Mid_key2 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="black",shape="box"];11789 -> 11814[label="",style="solid", color="black", weight=3]; 27.10/11.39 11790[label="FiniteMap.glueBal2Mid_elt2 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="black",shape="box"];11790 -> 11815[label="",style="solid", color="black", weight=3]; 27.10/11.39 11791[label="FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404",fontsize=16,color="green",shape="box"];11792[label="FiniteMap.deleteMin (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="burlywood",shape="triangle"];13002[label="yuz2343/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11792 -> 13002[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13002 -> 11816[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13003[label="yuz2343/FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434",fontsize=10,color="white",style="solid",shape="box"];11792 -> 13003[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13003 -> 11817[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11602[label="FiniteMap.glueBal2GlueBal0 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) True",fontsize=16,color="black",shape="box"];11602 -> 11659[label="",style="solid", color="black", weight=3]; 27.10/11.39 11603[label="yuz39000",fontsize=16,color="green",shape="box"];11604[label="yuz38900",fontsize=16,color="green",shape="box"];12242[label="yuz4433",fontsize=16,color="green",shape="box"];12243[label="FiniteMap.mkBalBranch6MkBalBranch10 yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 yuz4430 yuz4431 yuz4432 yuz4433 yuz4434 True",fontsize=16,color="black",shape="box"];12243 -> 12342[label="",style="solid", color="black", weight=3]; 27.10/11.39 12244 -> 12373[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12244[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))) yuz4430 yuz4431 yuz4433 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))) yuz2340 yuz2341 yuz4434 yuz2344)",fontsize=16,color="magenta"];12244 -> 12374[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12375[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12376[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12377[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12378[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12379[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12380[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12381[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12244 -> 12382[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12337[label="primMulNat (Succ (Succ Zero)) yuz4550",fontsize=16,color="burlywood",shape="triangle"];13004[label="yuz4550/Succ yuz45500",fontsize=10,color="white",style="solid",shape="box"];12337 -> 13004[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13004 -> 12352[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13005[label="yuz4550/Zero",fontsize=10,color="white",style="solid",shape="box"];12337 -> 13005[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13005 -> 12353[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12338 -> 12337[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12338[label="primMulNat (Succ (Succ Zero)) yuz4550",fontsize=16,color="magenta"];12338 -> 12354[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12339[label="error []",fontsize=16,color="red",shape="box"];12340 -> 12373[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12340[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) yuz234430 yuz234431 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) yuz2340 yuz2341 yuz443 yuz234433) (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))) yuz23440 yuz23441 yuz234434 yuz23444)",fontsize=16,color="magenta"];12340 -> 12383[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12384[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12385[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12386[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12387[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12388[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12389[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12390[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12340 -> 12391[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12341 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12341[label="FiniteMap.mkBranchResult yuz2340 yuz2341 yuz443 yuz23443",fontsize=16,color="magenta"];12341 -> 12367[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12341 -> 12368[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12341 -> 12369[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12341 -> 12370[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11651[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz390000) (Succ yuz389000) == GT)",fontsize=16,color="black",shape="box"];11651 -> 11703[label="",style="solid", color="black", weight=3]; 27.10/11.39 11652[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat (Succ yuz390000) Zero == GT)",fontsize=16,color="black",shape="box"];11652 -> 11704[label="",style="solid", color="black", weight=3]; 27.10/11.39 11653[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat Zero (Succ yuz389000) == GT)",fontsize=16,color="black",shape="box"];11653 -> 11705[label="",style="solid", color="black", weight=3]; 27.10/11.39 11654[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat Zero Zero == GT)",fontsize=16,color="black",shape="box"];11654 -> 11706[label="",style="solid", color="black", weight=3]; 27.10/11.39 11814[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.glueBal2Vv3 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="black",shape="box"];11814 -> 11833[label="",style="solid", color="black", weight=3]; 27.10/11.39 11815[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.glueBal2Vv3 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="black",shape="box"];11815 -> 11834[label="",style="solid", color="black", weight=3]; 27.10/11.39 11816[label="FiniteMap.deleteMin (FiniteMap.Branch yuz2340 yuz2341 yuz2342 FiniteMap.EmptyFM yuz2344)",fontsize=16,color="black",shape="box"];11816 -> 11835[label="",style="solid", color="black", weight=3]; 27.10/11.39 11817[label="FiniteMap.deleteMin (FiniteMap.Branch yuz2340 yuz2341 yuz2342 (FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434) yuz2344)",fontsize=16,color="black",shape="box"];11817 -> 11836[label="",style="solid", color="black", weight=3]; 27.10/11.39 11659 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11659[label="FiniteMap.mkBalBranch (FiniteMap.glueBal2Mid_key1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)) (FiniteMap.glueBal2Mid_elt1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)) (FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344)",fontsize=16,color="magenta"];11659 -> 11793[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11659 -> 11794[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11659 -> 11795[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11659 -> 11796[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12342[label="FiniteMap.mkBalBranch6Double_R yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 yuz4434) yuz2344",fontsize=16,color="burlywood",shape="box"];13006[label="yuz4434/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12342 -> 13006[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13006 -> 12371[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13007[label="yuz4434/FiniteMap.Branch yuz44340 yuz44341 yuz44342 yuz44343 yuz44344",fontsize=10,color="white",style="solid",shape="box"];12342 -> 13007[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13007 -> 12372[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12374[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))",fontsize=16,color="green",shape="box"];12375[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))",fontsize=16,color="green",shape="box"];12376[label="yuz4433",fontsize=16,color="green",shape="box"];12377[label="yuz2341",fontsize=16,color="green",shape="box"];12378[label="yuz4430",fontsize=16,color="green",shape="box"];12379[label="yuz2344",fontsize=16,color="green",shape="box"];12380[label="yuz2340",fontsize=16,color="green",shape="box"];12381[label="yuz4431",fontsize=16,color="green",shape="box"];12382[label="yuz4434",fontsize=16,color="green",shape="box"];12373[label="FiniteMap.mkBranch (Pos (Succ yuz498)) yuz499 yuz500 yuz501 (FiniteMap.mkBranch (Pos (Succ yuz502)) yuz503 yuz504 yuz505 yuz506)",fontsize=16,color="black",shape="triangle"];12373 -> 12410[label="",style="solid", color="black", weight=3]; 27.10/11.39 12352[label="primMulNat (Succ (Succ Zero)) (Succ yuz45500)",fontsize=16,color="black",shape="box"];12352 -> 12411[label="",style="solid", color="black", weight=3]; 27.10/11.39 12353[label="primMulNat (Succ (Succ Zero)) Zero",fontsize=16,color="black",shape="box"];12353 -> 12412[label="",style="solid", color="black", weight=3]; 27.10/11.39 12354[label="yuz4550",fontsize=16,color="green",shape="box"];12383[label="Succ (Succ (Succ (Succ Zero)))",fontsize=16,color="green",shape="box"];12384[label="Succ (Succ (Succ (Succ (Succ (Succ Zero)))))",fontsize=16,color="green",shape="box"];12385[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) yuz2340 yuz2341 yuz443 yuz234433",fontsize=16,color="black",shape="box"];12385 -> 12413[label="",style="solid", color="black", weight=3]; 27.10/11.39 12386[label="yuz23441",fontsize=16,color="green",shape="box"];12387[label="yuz234430",fontsize=16,color="green",shape="box"];12388[label="yuz23444",fontsize=16,color="green",shape="box"];12389[label="yuz23440",fontsize=16,color="green",shape="box"];12390[label="yuz234431",fontsize=16,color="green",shape="box"];12391[label="yuz234434",fontsize=16,color="green",shape="box"];12367[label="yuz2340",fontsize=16,color="green",shape="box"];12368[label="yuz23443",fontsize=16,color="green",shape="box"];12369[label="yuz443",fontsize=16,color="green",shape="box"];12370[label="yuz2341",fontsize=16,color="green",shape="box"];11703 -> 11506[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11703[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (primCmpNat yuz390000 yuz389000 == GT)",fontsize=16,color="magenta"];11703 -> 11734[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11703 -> 11735[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11704 -> 11377[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11704[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (GT == GT)",fontsize=16,color="magenta"];11705 -> 11382[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11705[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (LT == GT)",fontsize=16,color="magenta"];11706 -> 11434[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11706[label="FiniteMap.glueBal2GlueBal1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (EQ == GT)",fontsize=16,color="magenta"];11833 -> 12246[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11833[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.findMin (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344))",fontsize=16,color="magenta"];11833 -> 12247[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12248[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12249[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12250[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12251[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12252[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12253[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12254[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12255[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12256[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12257[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12258[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12259[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12260[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11833 -> 12261[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12419[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11834[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.findMin (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344))",fontsize=16,color="magenta"];11834 -> 12420[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12421[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12422[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12423[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12424[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12425[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12426[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12427[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12428[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12429[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12430[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12431[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12432[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12433[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11834 -> 12434[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11835[label="yuz2344",fontsize=16,color="green",shape="box"];11836 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11836[label="FiniteMap.mkBalBranch yuz2340 yuz2341 (FiniteMap.deleteMin (FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434)) yuz2344",fontsize=16,color="magenta"];11836 -> 11886[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11793[label="FiniteMap.glueBal2Mid_key1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="black",shape="box"];11793 -> 11818[label="",style="solid", color="black", weight=3]; 27.10/11.39 11794[label="FiniteMap.glueBal2Mid_elt1 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="black",shape="box"];11794 -> 11819[label="",style="solid", color="black", weight=3]; 27.10/11.39 11795[label="FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404)",fontsize=16,color="burlywood",shape="triangle"];13008[label="yuz2404/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];11795 -> 13008[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13008 -> 11820[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13009[label="yuz2404/FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044",fontsize=10,color="white",style="solid",shape="box"];11795 -> 13009[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13009 -> 11821[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11796[label="FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344",fontsize=16,color="green",shape="box"];12371[label="FiniteMap.mkBalBranch6Double_R yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 FiniteMap.EmptyFM) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 FiniteMap.EmptyFM) yuz2344",fontsize=16,color="black",shape="box"];12371 -> 12414[label="",style="solid", color="black", weight=3]; 27.10/11.39 12372[label="FiniteMap.mkBalBranch6Double_R yuz2340 yuz2341 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 (FiniteMap.Branch yuz44340 yuz44341 yuz44342 yuz44343 yuz44344)) yuz2344 (FiniteMap.Branch yuz4430 yuz4431 yuz4432 yuz4433 (FiniteMap.Branch yuz44340 yuz44341 yuz44342 yuz44343 yuz44344)) yuz2344",fontsize=16,color="black",shape="box"];12372 -> 12415[label="",style="solid", color="black", weight=3]; 27.10/11.39 12410 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12410[label="FiniteMap.mkBranchResult yuz499 yuz500 yuz501 (FiniteMap.mkBranch (Pos (Succ yuz502)) yuz503 yuz504 yuz505 yuz506)",fontsize=16,color="magenta"];12410 -> 12510[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12410 -> 12511[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12410 -> 12512[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12410 -> 12513[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12411 -> 2642[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12411[label="primPlusNat (primMulNat (Succ Zero) (Succ yuz45500)) (Succ yuz45500)",fontsize=16,color="magenta"];12411 -> 12514[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12411 -> 12515[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12412[label="Zero",fontsize=16,color="green",shape="box"];12413 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12413[label="FiniteMap.mkBranchResult yuz2340 yuz2341 yuz443 yuz234433",fontsize=16,color="magenta"];12413 -> 12516[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12413 -> 12517[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12413 -> 12518[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12413 -> 12519[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11734[label="yuz389000",fontsize=16,color="green",shape="box"];11735[label="yuz390000",fontsize=16,color="green",shape="box"];12247[label="yuz2341",fontsize=16,color="green",shape="box"];12248[label="yuz2402",fontsize=16,color="green",shape="box"];12249[label="yuz2401",fontsize=16,color="green",shape="box"];12250[label="yuz2343",fontsize=16,color="green",shape="box"];12251[label="yuz2342",fontsize=16,color="green",shape="box"];12252[label="yuz2340",fontsize=16,color="green",shape="box"];12253[label="yuz2404",fontsize=16,color="green",shape="box"];12254[label="yuz2403",fontsize=16,color="green",shape="box"];12255[label="yuz2342",fontsize=16,color="green",shape="box"];12256[label="yuz2343",fontsize=16,color="green",shape="box"];12257[label="yuz2340",fontsize=16,color="green",shape="box"];12258[label="yuz2344",fontsize=16,color="green",shape="box"];12259[label="yuz2341",fontsize=16,color="green",shape="box"];12260[label="yuz2344",fontsize=16,color="green",shape="box"];12261[label="yuz2400",fontsize=16,color="green",shape="box"];12246[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz461 yuz462 yuz463 yuz464 yuz465) (FiniteMap.Branch yuz466 yuz467 yuz468 yuz469 yuz470) (FiniteMap.findMin (FiniteMap.Branch yuz471 yuz472 yuz473 yuz474 yuz475))",fontsize=16,color="burlywood",shape="triangle"];13010[label="yuz474/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12246 -> 13010[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13010 -> 12416[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13011[label="yuz474/FiniteMap.Branch yuz4740 yuz4741 yuz4742 yuz4743 yuz4744",fontsize=10,color="white",style="solid",shape="box"];12246 -> 13011[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13011 -> 12417[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12420[label="yuz2340",fontsize=16,color="green",shape="box"];12421[label="yuz2401",fontsize=16,color="green",shape="box"];12422[label="yuz2341",fontsize=16,color="green",shape="box"];12423[label="yuz2343",fontsize=16,color="green",shape="box"];12424[label="yuz2404",fontsize=16,color="green",shape="box"];12425[label="yuz2340",fontsize=16,color="green",shape="box"];12426[label="yuz2403",fontsize=16,color="green",shape="box"];12427[label="yuz2344",fontsize=16,color="green",shape="box"];12428[label="yuz2342",fontsize=16,color="green",shape="box"];12429[label="yuz2344",fontsize=16,color="green",shape="box"];12430[label="yuz2342",fontsize=16,color="green",shape="box"];12431[label="yuz2343",fontsize=16,color="green",shape="box"];12432[label="yuz2402",fontsize=16,color="green",shape="box"];12433[label="yuz2400",fontsize=16,color="green",shape="box"];12434[label="yuz2341",fontsize=16,color="green",shape="box"];12419[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz508 yuz509 yuz510 yuz511 yuz512) (FiniteMap.Branch yuz513 yuz514 yuz515 yuz516 yuz517) (FiniteMap.findMin (FiniteMap.Branch yuz518 yuz519 yuz520 yuz521 yuz522))",fontsize=16,color="burlywood",shape="triangle"];13012[label="yuz521/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12419 -> 13012[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13012 -> 12520[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13013[label="yuz521/FiniteMap.Branch yuz5210 yuz5211 yuz5212 yuz5213 yuz5214",fontsize=10,color="white",style="solid",shape="box"];12419 -> 13013[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13013 -> 12521[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11886 -> 11792[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11886[label="FiniteMap.deleteMin (FiniteMap.Branch yuz23430 yuz23431 yuz23432 yuz23433 yuz23434)",fontsize=16,color="magenta"];11886 -> 11925[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11886 -> 11926[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11886 -> 11927[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11886 -> 11928[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11886 -> 11929[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11818[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.glueBal2Vv2 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="black",shape="box"];11818 -> 11837[label="",style="solid", color="black", weight=3]; 27.10/11.39 11819[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.glueBal2Vv2 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="black",shape="box"];11819 -> 11838[label="",style="solid", color="black", weight=3]; 27.10/11.39 11820[label="FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 FiniteMap.EmptyFM)",fontsize=16,color="black",shape="box"];11820 -> 11839[label="",style="solid", color="black", weight=3]; 27.10/11.39 11821[label="FiniteMap.deleteMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044))",fontsize=16,color="black",shape="box"];11821 -> 11840[label="",style="solid", color="black", weight=3]; 27.10/11.39 12414[label="error []",fontsize=16,color="red",shape="box"];12415 -> 12373[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12415[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))) yuz44340 yuz44341 (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) yuz4430 yuz4431 yuz4433 yuz44343) (FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) yuz2340 yuz2341 yuz44344 yuz2344)",fontsize=16,color="magenta"];12415 -> 12522[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12523[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12524[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12525[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12526[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12527[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12528[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12529[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12415 -> 12530[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12510[label="yuz499",fontsize=16,color="green",shape="box"];12511[label="FiniteMap.mkBranch (Pos (Succ yuz502)) yuz503 yuz504 yuz505 yuz506",fontsize=16,color="black",shape="triangle"];12511 -> 12625[label="",style="solid", color="black", weight=3]; 27.10/11.39 12512[label="yuz501",fontsize=16,color="green",shape="box"];12513[label="yuz500",fontsize=16,color="green",shape="box"];12514[label="Succ yuz45500",fontsize=16,color="green",shape="box"];12515 -> 11115[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12515[label="primMulNat (Succ Zero) (Succ yuz45500)",fontsize=16,color="magenta"];12515 -> 12626[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12516[label="yuz2340",fontsize=16,color="green",shape="box"];12517[label="yuz234433",fontsize=16,color="green",shape="box"];12518[label="yuz443",fontsize=16,color="green",shape="box"];12519[label="yuz2341",fontsize=16,color="green",shape="box"];12416[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz461 yuz462 yuz463 yuz464 yuz465) (FiniteMap.Branch yuz466 yuz467 yuz468 yuz469 yuz470) (FiniteMap.findMin (FiniteMap.Branch yuz471 yuz472 yuz473 FiniteMap.EmptyFM yuz475))",fontsize=16,color="black",shape="box"];12416 -> 12531[label="",style="solid", color="black", weight=3]; 27.10/11.39 12417[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz461 yuz462 yuz463 yuz464 yuz465) (FiniteMap.Branch yuz466 yuz467 yuz468 yuz469 yuz470) (FiniteMap.findMin (FiniteMap.Branch yuz471 yuz472 yuz473 (FiniteMap.Branch yuz4740 yuz4741 yuz4742 yuz4743 yuz4744) yuz475))",fontsize=16,color="black",shape="box"];12417 -> 12532[label="",style="solid", color="black", weight=3]; 27.10/11.39 12520[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz508 yuz509 yuz510 yuz511 yuz512) (FiniteMap.Branch yuz513 yuz514 yuz515 yuz516 yuz517) (FiniteMap.findMin (FiniteMap.Branch yuz518 yuz519 yuz520 FiniteMap.EmptyFM yuz522))",fontsize=16,color="black",shape="box"];12520 -> 12627[label="",style="solid", color="black", weight=3]; 27.10/11.39 12521[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz508 yuz509 yuz510 yuz511 yuz512) (FiniteMap.Branch yuz513 yuz514 yuz515 yuz516 yuz517) (FiniteMap.findMin (FiniteMap.Branch yuz518 yuz519 yuz520 (FiniteMap.Branch yuz5210 yuz5211 yuz5212 yuz5213 yuz5214) yuz522))",fontsize=16,color="black",shape="box"];12521 -> 12628[label="",style="solid", color="black", weight=3]; 27.10/11.39 11925[label="yuz23432",fontsize=16,color="green",shape="box"];11926[label="yuz23430",fontsize=16,color="green",shape="box"];11927[label="yuz23433",fontsize=16,color="green",shape="box"];11928[label="yuz23431",fontsize=16,color="green",shape="box"];11929[label="yuz23434",fontsize=16,color="green",shape="box"];11837 -> 12534[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11837[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.findMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="magenta"];11837 -> 12535[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12536[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12537[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12538[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12539[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12540[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12541[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12542[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12543[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12544[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12545[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12546[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12547[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12548[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11837 -> 12549[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12643[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11838[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz2340 yuz2341 yuz2342 yuz2343 yuz2344) (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404) (FiniteMap.findMax (FiniteMap.Branch yuz2400 yuz2401 yuz2402 yuz2403 yuz2404))",fontsize=16,color="magenta"];11838 -> 12644[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12645[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12646[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12647[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12648[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12649[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12650[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12651[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12652[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12653[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12654[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12655[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12656[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12657[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11838 -> 12658[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11839[label="yuz2403",fontsize=16,color="green",shape="box"];11840 -> 11767[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11840[label="FiniteMap.mkBalBranch yuz2400 yuz2401 yuz2403 (FiniteMap.deleteMax (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044))",fontsize=16,color="magenta"];11840 -> 11891[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11840 -> 11892[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11840 -> 11893[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11840 -> 11894[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12522[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];12523[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))",fontsize=16,color="green",shape="box"];12524 -> 12511[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12524[label="FiniteMap.mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) yuz4430 yuz4431 yuz4433 yuz44343",fontsize=16,color="magenta"];12524 -> 12629[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12524 -> 12630[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12524 -> 12631[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12524 -> 12632[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12524 -> 12633[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12525[label="yuz2341",fontsize=16,color="green",shape="box"];12526[label="yuz44340",fontsize=16,color="green",shape="box"];12527[label="yuz2344",fontsize=16,color="green",shape="box"];12528[label="yuz2340",fontsize=16,color="green",shape="box"];12529[label="yuz44341",fontsize=16,color="green",shape="box"];12530[label="yuz44344",fontsize=16,color="green",shape="box"];12625 -> 6747[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12625[label="FiniteMap.mkBranchResult yuz503 yuz504 yuz505 yuz506",fontsize=16,color="magenta"];12625 -> 12734[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12625 -> 12735[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12625 -> 12736[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12625 -> 12737[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12626[label="yuz45500",fontsize=16,color="green",shape="box"];12531[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz461 yuz462 yuz463 yuz464 yuz465) (FiniteMap.Branch yuz466 yuz467 yuz468 yuz469 yuz470) (yuz471,yuz472)",fontsize=16,color="black",shape="box"];12531 -> 12634[label="",style="solid", color="black", weight=3]; 27.10/11.39 12532 -> 12246[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12532[label="FiniteMap.glueBal2Mid_key20 (FiniteMap.Branch yuz461 yuz462 yuz463 yuz464 yuz465) (FiniteMap.Branch yuz466 yuz467 yuz468 yuz469 yuz470) (FiniteMap.findMin (FiniteMap.Branch yuz4740 yuz4741 yuz4742 yuz4743 yuz4744))",fontsize=16,color="magenta"];12532 -> 12635[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12532 -> 12636[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12532 -> 12637[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12532 -> 12638[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12532 -> 12639[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12627[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz508 yuz509 yuz510 yuz511 yuz512) (FiniteMap.Branch yuz513 yuz514 yuz515 yuz516 yuz517) (yuz518,yuz519)",fontsize=16,color="black",shape="box"];12627 -> 12738[label="",style="solid", color="black", weight=3]; 27.10/11.39 12628 -> 12419[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12628[label="FiniteMap.glueBal2Mid_elt20 (FiniteMap.Branch yuz508 yuz509 yuz510 yuz511 yuz512) (FiniteMap.Branch yuz513 yuz514 yuz515 yuz516 yuz517) (FiniteMap.findMin (FiniteMap.Branch yuz5210 yuz5211 yuz5212 yuz5213 yuz5214))",fontsize=16,color="magenta"];12628 -> 12739[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12628 -> 12740[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12628 -> 12741[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12628 -> 12742[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12628 -> 12743[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12535[label="yuz2340",fontsize=16,color="green",shape="box"];12536[label="yuz2341",fontsize=16,color="green",shape="box"];12537[label="yuz2402",fontsize=16,color="green",shape="box"];12538[label="yuz2402",fontsize=16,color="green",shape="box"];12539[label="yuz2343",fontsize=16,color="green",shape="box"];12540[label="yuz2403",fontsize=16,color="green",shape="box"];12541[label="yuz2401",fontsize=16,color="green",shape="box"];12542[label="yuz2403",fontsize=16,color="green",shape="box"];12543[label="yuz2342",fontsize=16,color="green",shape="box"];12544[label="yuz2404",fontsize=16,color="green",shape="box"];12545[label="yuz2400",fontsize=16,color="green",shape="box"];12546[label="yuz2404",fontsize=16,color="green",shape="box"];12547[label="yuz2401",fontsize=16,color="green",shape="box"];12548[label="yuz2344",fontsize=16,color="green",shape="box"];12549[label="yuz2400",fontsize=16,color="green",shape="box"];12534[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz524 yuz525 yuz526 yuz527 yuz528) (FiniteMap.Branch yuz529 yuz530 yuz531 yuz532 yuz533) (FiniteMap.findMax (FiniteMap.Branch yuz534 yuz535 yuz536 yuz537 yuz538))",fontsize=16,color="burlywood",shape="triangle"];13014[label="yuz538/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12534 -> 13014[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13014 -> 12640[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13015[label="yuz538/FiniteMap.Branch yuz5380 yuz5381 yuz5382 yuz5383 yuz5384",fontsize=10,color="white",style="solid",shape="box"];12534 -> 13015[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13015 -> 12641[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 12644[label="yuz2344",fontsize=16,color="green",shape="box"];12645[label="yuz2342",fontsize=16,color="green",shape="box"];12646[label="yuz2402",fontsize=16,color="green",shape="box"];12647[label="yuz2403",fontsize=16,color="green",shape="box"];12648[label="yuz2401",fontsize=16,color="green",shape="box"];12649[label="yuz2400",fontsize=16,color="green",shape="box"];12650[label="yuz2402",fontsize=16,color="green",shape="box"];12651[label="yuz2341",fontsize=16,color="green",shape="box"];12652[label="yuz2404",fontsize=16,color="green",shape="box"];12653[label="yuz2403",fontsize=16,color="green",shape="box"];12654[label="yuz2343",fontsize=16,color="green",shape="box"];12655[label="yuz2401",fontsize=16,color="green",shape="box"];12656[label="yuz2400",fontsize=16,color="green",shape="box"];12657[label="yuz2340",fontsize=16,color="green",shape="box"];12658[label="yuz2404",fontsize=16,color="green",shape="box"];12643[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz540 yuz541 yuz542 yuz543 yuz544) (FiniteMap.Branch yuz545 yuz546 yuz547 yuz548 yuz549) (FiniteMap.findMax (FiniteMap.Branch yuz550 yuz551 yuz552 yuz553 yuz554))",fontsize=16,color="burlywood",shape="triangle"];13016[label="yuz554/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];12643 -> 13016[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13016 -> 12744[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 13017[label="yuz554/FiniteMap.Branch yuz5540 yuz5541 yuz5542 yuz5543 yuz5544",fontsize=10,color="white",style="solid",shape="box"];12643 -> 13017[label="",style="solid", color="burlywood", weight=9]; 27.10/11.39 13017 -> 12745[label="",style="solid", color="burlywood", weight=3]; 27.10/11.39 11891[label="yuz2400",fontsize=16,color="green",shape="box"];11892[label="yuz2401",fontsize=16,color="green",shape="box"];11893[label="yuz2403",fontsize=16,color="green",shape="box"];11894 -> 11795[label="",style="dashed", color="red", weight=0]; 27.10/11.39 11894[label="FiniteMap.deleteMax (FiniteMap.Branch yuz24040 yuz24041 yuz24042 yuz24043 yuz24044)",fontsize=16,color="magenta"];11894 -> 11934[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11894 -> 11935[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11894 -> 11936[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11894 -> 11937[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 11894 -> 11938[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12629[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))",fontsize=16,color="green",shape="box"];12630[label="yuz4431",fontsize=16,color="green",shape="box"];12631[label="yuz44343",fontsize=16,color="green",shape="box"];12632[label="yuz4430",fontsize=16,color="green",shape="box"];12633[label="yuz4433",fontsize=16,color="green",shape="box"];12734[label="yuz503",fontsize=16,color="green",shape="box"];12735[label="yuz506",fontsize=16,color="green",shape="box"];12736[label="yuz505",fontsize=16,color="green",shape="box"];12737[label="yuz504",fontsize=16,color="green",shape="box"];12634[label="yuz471",fontsize=16,color="green",shape="box"];12635[label="yuz4741",fontsize=16,color="green",shape="box"];12636[label="yuz4742",fontsize=16,color="green",shape="box"];12637[label="yuz4740",fontsize=16,color="green",shape="box"];12638[label="yuz4743",fontsize=16,color="green",shape="box"];12639[label="yuz4744",fontsize=16,color="green",shape="box"];12738[label="yuz519",fontsize=16,color="green",shape="box"];12739[label="yuz5210",fontsize=16,color="green",shape="box"];12740[label="yuz5213",fontsize=16,color="green",shape="box"];12741[label="yuz5212",fontsize=16,color="green",shape="box"];12742[label="yuz5214",fontsize=16,color="green",shape="box"];12743[label="yuz5211",fontsize=16,color="green",shape="box"];12640[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz524 yuz525 yuz526 yuz527 yuz528) (FiniteMap.Branch yuz529 yuz530 yuz531 yuz532 yuz533) (FiniteMap.findMax (FiniteMap.Branch yuz534 yuz535 yuz536 yuz537 FiniteMap.EmptyFM))",fontsize=16,color="black",shape="box"];12640 -> 12746[label="",style="solid", color="black", weight=3]; 27.10/11.39 12641[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz524 yuz525 yuz526 yuz527 yuz528) (FiniteMap.Branch yuz529 yuz530 yuz531 yuz532 yuz533) (FiniteMap.findMax (FiniteMap.Branch yuz534 yuz535 yuz536 yuz537 (FiniteMap.Branch yuz5380 yuz5381 yuz5382 yuz5383 yuz5384)))",fontsize=16,color="black",shape="box"];12641 -> 12747[label="",style="solid", color="black", weight=3]; 27.10/11.39 12744[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz540 yuz541 yuz542 yuz543 yuz544) (FiniteMap.Branch yuz545 yuz546 yuz547 yuz548 yuz549) (FiniteMap.findMax (FiniteMap.Branch yuz550 yuz551 yuz552 yuz553 FiniteMap.EmptyFM))",fontsize=16,color="black",shape="box"];12744 -> 12748[label="",style="solid", color="black", weight=3]; 27.10/11.39 12745[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz540 yuz541 yuz542 yuz543 yuz544) (FiniteMap.Branch yuz545 yuz546 yuz547 yuz548 yuz549) (FiniteMap.findMax (FiniteMap.Branch yuz550 yuz551 yuz552 yuz553 (FiniteMap.Branch yuz5540 yuz5541 yuz5542 yuz5543 yuz5544)))",fontsize=16,color="black",shape="box"];12745 -> 12749[label="",style="solid", color="black", weight=3]; 27.10/11.39 11934[label="yuz24043",fontsize=16,color="green",shape="box"];11935[label="yuz24040",fontsize=16,color="green",shape="box"];11936[label="yuz24044",fontsize=16,color="green",shape="box"];11937[label="yuz24041",fontsize=16,color="green",shape="box"];11938[label="yuz24042",fontsize=16,color="green",shape="box"];12746[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz524 yuz525 yuz526 yuz527 yuz528) (FiniteMap.Branch yuz529 yuz530 yuz531 yuz532 yuz533) (yuz534,yuz535)",fontsize=16,color="black",shape="box"];12746 -> 12750[label="",style="solid", color="black", weight=3]; 27.10/11.39 12747 -> 12534[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12747[label="FiniteMap.glueBal2Mid_key10 (FiniteMap.Branch yuz524 yuz525 yuz526 yuz527 yuz528) (FiniteMap.Branch yuz529 yuz530 yuz531 yuz532 yuz533) (FiniteMap.findMax (FiniteMap.Branch yuz5380 yuz5381 yuz5382 yuz5383 yuz5384))",fontsize=16,color="magenta"];12747 -> 12751[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12747 -> 12752[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12747 -> 12753[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12747 -> 12754[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12747 -> 12755[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12748[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz540 yuz541 yuz542 yuz543 yuz544) (FiniteMap.Branch yuz545 yuz546 yuz547 yuz548 yuz549) (yuz550,yuz551)",fontsize=16,color="black",shape="box"];12748 -> 12756[label="",style="solid", color="black", weight=3]; 27.10/11.39 12749 -> 12643[label="",style="dashed", color="red", weight=0]; 27.10/11.39 12749[label="FiniteMap.glueBal2Mid_elt10 (FiniteMap.Branch yuz540 yuz541 yuz542 yuz543 yuz544) (FiniteMap.Branch yuz545 yuz546 yuz547 yuz548 yuz549) (FiniteMap.findMax (FiniteMap.Branch yuz5540 yuz5541 yuz5542 yuz5543 yuz5544))",fontsize=16,color="magenta"];12749 -> 12757[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12749 -> 12758[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12749 -> 12759[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12749 -> 12760[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12749 -> 12761[label="",style="dashed", color="magenta", weight=3]; 27.10/11.39 12750[label="yuz534",fontsize=16,color="green",shape="box"];12751[label="yuz5382",fontsize=16,color="green",shape="box"];12752[label="yuz5381",fontsize=16,color="green",shape="box"];12753[label="yuz5383",fontsize=16,color="green",shape="box"];12754[label="yuz5380",fontsize=16,color="green",shape="box"];12755[label="yuz5384",fontsize=16,color="green",shape="box"];12756[label="yuz551",fontsize=16,color="green",shape="box"];12757[label="yuz5543",fontsize=16,color="green",shape="box"];12758[label="yuz5542",fontsize=16,color="green",shape="box"];12759[label="yuz5544",fontsize=16,color="green",shape="box"];12760[label="yuz5541",fontsize=16,color="green",shape="box"];12761[label="yuz5540",fontsize=16,color="green",shape="box"];} 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (14) 27.10/11.39 Complex Obligation (AND) 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (15) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_glueBal2GlueBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, Succ(yuz390000), Succ(yuz389000), h, ba) -> new_glueBal2GlueBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz390000, yuz389000, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (16) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_glueBal2GlueBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, Succ(yuz390000), Succ(yuz389000), h, ba) -> new_glueBal2GlueBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz390000, yuz389000, h, ba) 27.10/11.39 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, 13 >= 13, 14 >= 14 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (17) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (18) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz43, h) 27.10/11.39 new_filterFM(yuz3, Branch(yuz40, yuz41, yuz42, yuz43, yuz44), h) -> new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) 27.10/11.39 new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz44, h) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (19) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_filterFM(yuz3, Branch(yuz40, yuz41, yuz42, yuz43, yuz44), h) -> new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) 27.10/11.39 The graph contains the following edges 1 >= 1, 2 > 2, 2 > 3, 2 > 4, 2 > 5, 2 > 6, 3 >= 7 27.10/11.39 27.10/11.39 27.10/11.39 *new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz43, h) 27.10/11.39 The graph contains the following edges 1 >= 1, 5 >= 2, 7 >= 3 27.10/11.39 27.10/11.39 27.10/11.39 *new_filterFM1(yuz3, yuz40, yuz41, yuz42, yuz43, yuz44, h) -> new_filterFM(yuz3, yuz44, h) 27.10/11.39 The graph contains the following edges 1 >= 1, 6 >= 2, 7 >= 3 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (20) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (21) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_primMinusNat(Succ(yuz327200), Succ(yuz159200)) -> new_primMinusNat(yuz327200, yuz159200) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (22) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_primMinusNat(Succ(yuz327200), Succ(yuz159200)) -> new_primMinusNat(yuz327200, yuz159200) 27.10/11.39 The graph contains the following edges 1 > 1, 2 > 2 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (23) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (24) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_primPlusNat(Succ(yuz2400), Succ(yuz140)) -> new_primPlusNat(yuz2400, yuz140) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (25) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_primPlusNat(Succ(yuz2400), Succ(yuz140)) -> new_primPlusNat(yuz2400, yuz140) 27.10/11.39 The graph contains the following edges 1 > 1, 2 > 2 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (26) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (27) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_mkVBalBranch3(yuz160, yuz161, yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, yuz160, yuz161, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), h, ba) 27.10/11.39 new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, Branch(yuz15830, yuz15831, yuz15832, yuz15833, yuz15834), yuz1584, yuz160, yuz161, True, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, yuz160, yuz161, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), h, ba) 27.10/11.39 new_mkVBalBranch3MkVBalBranch1(yuz1540, yuz1541, yuz1542, yuz1543, Branch(yuz15440, yuz15441, yuz15442, yuz15443, yuz15444), yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, yuz160, yuz161, True, h, ba) -> new_mkVBalBranch3(yuz160, yuz161, yuz15440, yuz15441, yuz15442, yuz15443, yuz15444, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba) 27.10/11.39 new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, yuz160, yuz161, False, h, ba) -> new_mkVBalBranch3MkVBalBranch1(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, yuz160, yuz161, new_lt0(new_sr(new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba)), new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba)), h, ba) 27.10/11.39 27.10/11.39 The TRS R consists of the following rules: 27.10/11.39 27.10/11.39 new_esEs7 -> False 27.10/11.39 new_esEs10 -> True 27.10/11.39 new_primPlusNat0(Succ(yuz2400), Zero) -> Succ(yuz2400) 27.10/11.39 new_primPlusNat0(Zero, Succ(yuz140)) -> Succ(yuz140) 27.10/11.39 new_primPlusNat0(Zero, Zero) -> Zero 27.10/11.39 new_primMulNat0(Succ(yuz35700)) -> new_primPlusNat0(new_primPlusNat0(new_primPlusNat0(new_primPlusNat0(new_primMulNat(yuz35700), Succ(yuz35700)), Succ(yuz35700)), Succ(yuz35700)), Succ(yuz35700)) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Zero)) -> new_esEs9 27.10/11.39 new_esEs5(Neg(Zero), Pos(Zero)) -> new_esEs9 27.10/11.39 new_esEs8(Succ(yuz15000), yuz16000) -> new_esEs11(yuz15000, yuz16000) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Succ(yuz15000))) -> new_esEs6(yuz15000, Zero) 27.10/11.39 new_esEs9 -> False 27.10/11.39 new_esEs5(Neg(Zero), Neg(Zero)) -> new_esEs9 27.10/11.39 new_sizeFM(Branch(yuz3200, yuz3201, yuz3202, yuz3203, yuz3204), bb, bc) -> yuz3202 27.10/11.39 new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba) -> new_sizeFM(Branch(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544), h, ba) 27.10/11.39 new_esEs5(Pos(Succ(yuz16000)), Pos(yuz1500)) -> new_esEs6(yuz16000, yuz1500) 27.10/11.39 new_sr(yuz357) -> new_primMulInt(yuz357) 27.10/11.39 new_esEs6(yuz16000, Zero) -> new_esEs7 27.10/11.39 new_esEs11(Succ(yuz160000), Succ(yuz150000)) -> new_esEs11(yuz160000, yuz150000) 27.10/11.39 new_esEs5(Pos(Succ(yuz16000)), Neg(yuz1500)) -> new_esEs7 27.10/11.39 new_esEs5(Neg(Zero), Pos(Succ(yuz15000))) -> new_esEs10 27.10/11.39 new_primMulInt0(Pos(yuz3570)) -> Pos(new_primMulNat0(yuz3570)) 27.10/11.39 new_primMulNat(yuz35700) -> new_primPlusNat0(Zero, Succ(yuz35700)) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Succ(yuz15000))) -> new_esEs8(Zero, yuz15000) 27.10/11.39 new_esEs5(Neg(Succ(yuz16000)), Neg(yuz1500)) -> new_esEs8(yuz1500, yuz16000) 27.10/11.39 new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba) -> new_sizeFM(Branch(yuz1580, yuz1581, yuz1582, yuz1583, yuz1584), h, ba) 27.10/11.39 new_esEs5(Neg(Succ(yuz16000)), Pos(yuz1500)) -> new_esEs10 27.10/11.39 new_esEs11(Zero, Succ(yuz150000)) -> new_esEs10 27.10/11.39 new_esEs5(Pos(Zero), Neg(Succ(yuz15000))) -> new_esEs7 27.10/11.39 new_esEs8(Zero, yuz16000) -> new_esEs10 27.10/11.39 new_esEs11(Zero, Zero) -> new_esEs9 27.10/11.39 new_esEs6(yuz16000, Succ(yuz15000)) -> new_esEs11(yuz16000, yuz15000) 27.10/11.39 new_lt0(yuz160, yuz150) -> new_esEs5(yuz160, yuz150) 27.10/11.39 new_primPlusNat0(Succ(yuz2400), Succ(yuz140)) -> Succ(Succ(new_primPlusNat0(yuz2400, yuz140))) 27.10/11.39 new_sizeFM(EmptyFM, bb, bc) -> Pos(Zero) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Zero)) -> new_esEs9 27.10/11.39 new_esEs11(Succ(yuz160000), Zero) -> new_esEs7 27.10/11.39 new_primMulInt0(Neg(yuz3570)) -> Neg(new_primMulNat0(yuz3570)) 27.10/11.39 new_primMulNat0(Zero) -> Zero 27.10/11.39 new_primMulInt(yuz357) -> new_primMulInt0(yuz357) 27.10/11.39 27.10/11.39 The set Q consists of the following terms: 27.10/11.39 27.10/11.39 new_esEs11(Zero, Zero) 27.10/11.39 new_esEs9 27.10/11.39 new_esEs11(Zero, Succ(x0)) 27.10/11.39 new_primMulNat0(Zero) 27.10/11.39 new_esEs10 27.10/11.39 new_esEs5(Pos(Succ(x0)), Pos(x1)) 27.10/11.39 new_sizeFM(EmptyFM, x0, x1) 27.10/11.39 new_esEs6(x0, Zero) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Zero)) 27.10/11.39 new_primMulNat(x0) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Succ(x0)), Neg(x1)) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Succ(x0))) 27.10/11.39 new_sizeFM(Branch(x0, x1, x2, x3, x4), x5, x6) 27.10/11.39 new_mkVBalBranch3Size_l(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 27.10/11.39 new_esEs6(x0, Succ(x1)) 27.10/11.39 new_primPlusNat0(Succ(x0), Succ(x1)) 27.10/11.39 new_primMulInt(x0) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Zero)) 27.10/11.39 new_primMulInt0(Neg(x0)) 27.10/11.39 new_primPlusNat0(Succ(x0), Zero) 27.10/11.39 new_lt0(x0, x1) 27.10/11.39 new_esEs11(Succ(x0), Zero) 27.10/11.39 new_esEs11(Succ(x0), Succ(x1)) 27.10/11.39 new_primPlusNat0(Zero, Succ(x0)) 27.10/11.39 new_sr(x0) 27.10/11.39 new_esEs7 27.10/11.39 new_esEs8(Zero, x0) 27.10/11.39 new_esEs8(Succ(x0), x1) 27.10/11.39 new_primMulInt0(Pos(x0)) 27.10/11.39 new_mkVBalBranch3Size_r(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 27.10/11.39 new_esEs5(Pos(Succ(x0)), Neg(x1)) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Succ(x0)), Pos(x1)) 27.10/11.39 new_primPlusNat0(Zero, Zero) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Zero)) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Zero)) 27.10/11.39 new_primMulNat0(Succ(x0)) 27.10/11.39 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (28) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_mkVBalBranch3MkVBalBranch1(yuz1540, yuz1541, yuz1542, yuz1543, Branch(yuz15440, yuz15441, yuz15442, yuz15443, yuz15444), yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, yuz160, yuz161, True, h, ba) -> new_mkVBalBranch3(yuz160, yuz161, yuz15440, yuz15441, yuz15442, yuz15443, yuz15444, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 *new_mkVBalBranch3(yuz160, yuz161, yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, yuz160, yuz161, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 *new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, Branch(yuz15830, yuz15831, yuz15832, yuz15833, yuz15834), yuz1584, yuz160, yuz161, True, h, ba) -> new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, yuz160, yuz161, new_lt0(new_sr(new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz15830, yuz15831, yuz15832, yuz15833, yuz15834, h, ba)), h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 *new_mkVBalBranch3MkVBalBranch2(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, yuz160, yuz161, False, h, ba) -> new_mkVBalBranch3MkVBalBranch1(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, yuz160, yuz161, new_lt0(new_sr(new_mkVBalBranch3Size_r(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba)), new_mkVBalBranch3Size_l(yuz1540, yuz1541, yuz1542, yuz1543, yuz1544, yuz1580, yuz1581, yuz1582, yuz1583, yuz1584, h, ba)), h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (29) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (30) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_glueBal2Mid_key10(yuz524, yuz525, yuz526, yuz527, yuz528, yuz529, yuz530, yuz531, yuz532, yuz533, yuz534, yuz535, yuz536, yuz537, Branch(yuz5380, yuz5381, yuz5382, yuz5383, yuz5384), h, ba) -> new_glueBal2Mid_key10(yuz524, yuz525, yuz526, yuz527, yuz528, yuz529, yuz530, yuz531, yuz532, yuz533, yuz5380, yuz5381, yuz5382, yuz5383, yuz5384, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (31) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_glueBal2Mid_key10(yuz524, yuz525, yuz526, yuz527, yuz528, yuz529, yuz530, yuz531, yuz532, yuz533, yuz534, yuz535, yuz536, yuz537, Branch(yuz5380, yuz5381, yuz5382, yuz5383, yuz5384), h, ba) -> new_glueBal2Mid_key10(yuz524, yuz525, yuz526, yuz527, yuz528, yuz529, yuz530, yuz531, yuz532, yuz533, yuz5380, yuz5381, yuz5382, yuz5383, yuz5384, h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (32) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (33) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_glueVBal3(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, h, ba) -> new_glueVBal3GlueVBal2(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, new_lt0(new_sr(new_glueVBal3Size_l(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), new_glueVBal3Size_r(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), h, ba) 27.10/11.39 new_glueVBal3GlueVBal2(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, False, h, ba) -> new_glueVBal3GlueVBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, new_lt0(new_sr(new_glueVBal3Size_r(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), new_glueVBal3Size_l(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), h, ba) 27.10/11.39 new_glueVBal3GlueVBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), True, h, ba) -> new_glueVBal3(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, h, ba) 27.10/11.39 new_glueVBal3GlueVBal2(yuz2340, yuz2341, yuz2342, Branch(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434), yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, True, h, ba) -> new_glueVBal3GlueVBal2(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, new_lt0(new_sr(new_glueVBal3Size_l(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), new_glueVBal3Size_r(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), h, ba) 27.10/11.39 27.10/11.39 The TRS R consists of the following rules: 27.10/11.39 27.10/11.39 new_esEs7 -> False 27.10/11.39 new_esEs10 -> True 27.10/11.39 new_primPlusNat0(Succ(yuz2400), Zero) -> Succ(yuz2400) 27.10/11.39 new_primPlusNat0(Zero, Succ(yuz140)) -> Succ(yuz140) 27.10/11.39 new_primPlusNat0(Zero, Zero) -> Zero 27.10/11.39 new_primMulNat0(Succ(yuz35700)) -> new_primPlusNat0(new_primPlusNat0(new_primPlusNat0(new_primPlusNat0(new_primMulNat(yuz35700), Succ(yuz35700)), Succ(yuz35700)), Succ(yuz35700)), Succ(yuz35700)) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Zero)) -> new_esEs9 27.10/11.39 new_esEs5(Neg(Zero), Pos(Zero)) -> new_esEs9 27.10/11.39 new_esEs8(Succ(yuz15000), yuz16000) -> new_esEs11(yuz15000, yuz16000) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Succ(yuz15000))) -> new_esEs6(yuz15000, Zero) 27.10/11.39 new_esEs9 -> False 27.10/11.39 new_esEs5(Neg(Zero), Neg(Zero)) -> new_esEs9 27.10/11.39 new_sizeFM(Branch(yuz3200, yuz3201, yuz3202, yuz3203, yuz3204), h, ba) -> yuz3202 27.10/11.39 new_esEs5(Pos(Succ(yuz16000)), Pos(yuz1500)) -> new_esEs6(yuz16000, yuz1500) 27.10/11.39 new_sr(yuz357) -> new_primMulInt(yuz357) 27.10/11.39 new_esEs6(yuz16000, Zero) -> new_esEs7 27.10/11.39 new_esEs11(Succ(yuz160000), Succ(yuz150000)) -> new_esEs11(yuz160000, yuz150000) 27.10/11.39 new_esEs5(Pos(Succ(yuz16000)), Neg(yuz1500)) -> new_esEs7 27.10/11.39 new_esEs5(Neg(Zero), Pos(Succ(yuz15000))) -> new_esEs10 27.10/11.39 new_primMulInt0(Pos(yuz3570)) -> Pos(new_primMulNat0(yuz3570)) 27.10/11.39 new_primMulNat(yuz35700) -> new_primPlusNat0(Zero, Succ(yuz35700)) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Succ(yuz15000))) -> new_esEs8(Zero, yuz15000) 27.10/11.39 new_esEs5(Neg(Succ(yuz16000)), Neg(yuz1500)) -> new_esEs8(yuz1500, yuz16000) 27.10/11.39 new_esEs5(Neg(Succ(yuz16000)), Pos(yuz1500)) -> new_esEs10 27.10/11.39 new_esEs11(Zero, Succ(yuz150000)) -> new_esEs10 27.10/11.39 new_esEs5(Pos(Zero), Neg(Succ(yuz15000))) -> new_esEs7 27.10/11.39 new_glueVBal3Size_l(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba) -> new_sizeFM(Branch(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404), h, ba) 27.10/11.39 new_esEs8(Zero, yuz16000) -> new_esEs10 27.10/11.39 new_esEs11(Zero, Zero) -> new_esEs9 27.10/11.39 new_esEs6(yuz16000, Succ(yuz15000)) -> new_esEs11(yuz16000, yuz15000) 27.10/11.39 new_lt0(yuz160, yuz150) -> new_esEs5(yuz160, yuz150) 27.10/11.39 new_primPlusNat0(Succ(yuz2400), Succ(yuz140)) -> Succ(Succ(new_primPlusNat0(yuz2400, yuz140))) 27.10/11.39 new_sizeFM(EmptyFM, h, ba) -> Pos(Zero) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Zero)) -> new_esEs9 27.10/11.39 new_esEs11(Succ(yuz160000), Zero) -> new_esEs7 27.10/11.39 new_primMulInt0(Neg(yuz3570)) -> Neg(new_primMulNat0(yuz3570)) 27.10/11.39 new_glueVBal3Size_r(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba) -> new_sizeFM(Branch(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344), h, ba) 27.10/11.39 new_primMulNat0(Zero) -> Zero 27.10/11.39 new_primMulInt(yuz357) -> new_primMulInt0(yuz357) 27.10/11.39 27.10/11.39 The set Q consists of the following terms: 27.10/11.39 27.10/11.39 new_esEs11(Zero, Zero) 27.10/11.39 new_esEs9 27.10/11.39 new_sizeFM(EmptyFM, x0, x1) 27.10/11.39 new_esEs11(Zero, Succ(x0)) 27.10/11.39 new_primMulNat0(Zero) 27.10/11.39 new_esEs10 27.10/11.39 new_esEs5(Pos(Succ(x0)), Pos(x1)) 27.10/11.39 new_esEs6(x0, Zero) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Zero)) 27.10/11.39 new_primMulNat(x0) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Succ(x0)), Neg(x1)) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Succ(x0))) 27.10/11.39 new_esEs6(x0, Succ(x1)) 27.10/11.39 new_primPlusNat0(Succ(x0), Succ(x1)) 27.10/11.39 new_sizeFM(Branch(x0, x1, x2, x3, x4), x5, x6) 27.10/11.39 new_glueVBal3Size_l(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 27.10/11.39 new_primMulInt(x0) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Zero)) 27.10/11.39 new_primMulInt0(Neg(x0)) 27.10/11.39 new_primPlusNat0(Succ(x0), Zero) 27.10/11.39 new_lt0(x0, x1) 27.10/11.39 new_esEs11(Succ(x0), Zero) 27.10/11.39 new_esEs11(Succ(x0), Succ(x1)) 27.10/11.39 new_primPlusNat0(Zero, Succ(x0)) 27.10/11.39 new_glueVBal3Size_r(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) 27.10/11.39 new_sr(x0) 27.10/11.39 new_esEs7 27.10/11.39 new_esEs8(Zero, x0) 27.10/11.39 new_esEs8(Succ(x0), x1) 27.10/11.39 new_primMulInt0(Pos(x0)) 27.10/11.39 new_esEs5(Pos(Succ(x0)), Neg(x1)) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Succ(x0)), Pos(x1)) 27.10/11.39 new_primPlusNat0(Zero, Zero) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Zero)) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Zero)) 27.10/11.39 new_primMulNat0(Succ(x0)) 27.10/11.39 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (34) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_glueVBal3GlueVBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), True, h, ba) -> new_glueVBal3(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 *new_glueVBal3(yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, h, ba) -> new_glueVBal3GlueVBal2(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, new_lt0(new_sr(new_glueVBal3Size_l(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), new_glueVBal3Size_r(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 *new_glueVBal3GlueVBal2(yuz2340, yuz2341, yuz2342, Branch(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434), yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, True, h, ba) -> new_glueVBal3GlueVBal2(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, new_lt0(new_sr(new_glueVBal3Size_l(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), new_glueVBal3Size_r(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 *new_glueVBal3GlueVBal2(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, False, h, ba) -> new_glueVBal3GlueVBal1(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, new_lt0(new_sr(new_glueVBal3Size_r(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), new_glueVBal3Size_l(yuz2340, yuz2341, yuz2342, yuz2343, yuz2344, yuz2400, yuz2401, yuz2402, yuz2403, yuz2404, h, ba)), h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (35) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (36) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_deleteMin(yuz2340, yuz2341, yuz2342, Branch(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434), yuz2344, h, ba) -> new_deleteMin(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (37) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_deleteMin(yuz2340, yuz2341, yuz2342, Branch(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434), yuz2344, h, ba) -> new_deleteMin(yuz23430, yuz23431, yuz23432, yuz23433, yuz23434, h, ba) 27.10/11.39 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (38) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (39) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_glueBal2Mid_elt20(yuz508, yuz509, yuz510, yuz511, yuz512, yuz513, yuz514, yuz515, yuz516, yuz517, yuz518, yuz519, yuz520, Branch(yuz5210, yuz5211, yuz5212, yuz5213, yuz5214), yuz522, h, ba) -> new_glueBal2Mid_elt20(yuz508, yuz509, yuz510, yuz511, yuz512, yuz513, yuz514, yuz515, yuz516, yuz517, yuz5210, yuz5211, yuz5212, yuz5213, yuz5214, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (40) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_glueBal2Mid_elt20(yuz508, yuz509, yuz510, yuz511, yuz512, yuz513, yuz514, yuz515, yuz516, yuz517, yuz518, yuz519, yuz520, Branch(yuz5210, yuz5211, yuz5212, yuz5213, yuz5214), yuz522, h, ba) -> new_glueBal2Mid_elt20(yuz508, yuz509, yuz510, yuz511, yuz512, yuz513, yuz514, yuz515, yuz516, yuz517, yuz5210, yuz5211, yuz5212, yuz5213, yuz5214, h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (41) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (42) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_glueBal2Mid_key20(yuz461, yuz462, yuz463, yuz464, yuz465, yuz466, yuz467, yuz468, yuz469, yuz470, yuz471, yuz472, yuz473, Branch(yuz4740, yuz4741, yuz4742, yuz4743, yuz4744), yuz475, h, ba) -> new_glueBal2Mid_key20(yuz461, yuz462, yuz463, yuz464, yuz465, yuz466, yuz467, yuz468, yuz469, yuz470, yuz4740, yuz4741, yuz4742, yuz4743, yuz4744, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (43) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_glueBal2Mid_key20(yuz461, yuz462, yuz463, yuz464, yuz465, yuz466, yuz467, yuz468, yuz469, yuz470, yuz471, yuz472, yuz473, Branch(yuz4740, yuz4741, yuz4742, yuz4743, yuz4744), yuz475, h, ba) -> new_glueBal2Mid_key20(yuz461, yuz462, yuz463, yuz464, yuz465, yuz466, yuz467, yuz468, yuz469, yuz470, yuz4740, yuz4741, yuz4742, yuz4743, yuz4744, h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (44) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (45) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_deleteMax(yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), h, ba) -> new_deleteMax(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (46) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_deleteMax(yuz2400, yuz2401, yuz2402, yuz2403, Branch(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044), h, ba) -> new_deleteMax(yuz24040, yuz24041, yuz24042, yuz24043, yuz24044, h, ba) 27.10/11.39 The graph contains the following edges 5 > 1, 5 > 2, 5 > 3, 5 > 4, 5 > 5, 6 >= 6, 7 >= 7 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (47) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (48) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_glueBal2Mid_elt10(yuz540, yuz541, yuz542, yuz543, yuz544, yuz545, yuz546, yuz547, yuz548, yuz549, yuz550, yuz551, yuz552, yuz553, Branch(yuz5540, yuz5541, yuz5542, yuz5543, yuz5544), h, ba) -> new_glueBal2Mid_elt10(yuz540, yuz541, yuz542, yuz543, yuz544, yuz545, yuz546, yuz547, yuz548, yuz549, yuz5540, yuz5541, yuz5542, yuz5543, yuz5544, h, ba) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (49) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_glueBal2Mid_elt10(yuz540, yuz541, yuz542, yuz543, yuz544, yuz545, yuz546, yuz547, yuz548, yuz549, yuz550, yuz551, yuz552, yuz553, Branch(yuz5540, yuz5541, yuz5542, yuz5543, yuz5544), h, ba) -> new_glueBal2Mid_elt10(yuz540, yuz541, yuz542, yuz543, yuz544, yuz545, yuz546, yuz547, yuz548, yuz549, yuz5540, yuz5541, yuz5542, yuz5543, yuz5544, h, ba) 27.10/11.39 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 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (50) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (51) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_esEs0(Succ(yuz160000), Succ(yuz150000)) -> new_esEs0(yuz160000, yuz150000) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (52) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_esEs0(Succ(yuz160000), Succ(yuz150000)) -> new_esEs0(yuz160000, yuz150000) 27.10/11.39 The graph contains the following edges 1 > 1, 2 > 2 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (53) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (54) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_addToFM_C1(yuz422, yuz423, yuz424, yuz425, yuz426, yuz427, yuz428, True, bb, bc) -> new_addToFM_C(yuz426, yuz427, yuz428, bb, bc) 27.10/11.39 new_addToFM_C2(yuz400, yuz401, yuz402, yuz403, yuz404, yuz405, yuz406, False, h, ba) -> new_addToFM_C1(yuz400, yuz401, yuz402, yuz403, yuz404, yuz405, yuz406, new_gt(yuz405, yuz400, h), h, ba) 27.10/11.39 new_addToFM_C2(yuz400, yuz401, yuz402, Branch(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034), yuz404, yuz405, yuz406, True, h, ba) -> new_addToFM_C2(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034, yuz405, yuz406, new_lt(yuz405, yuz4030, h), h, ba) 27.10/11.39 new_addToFM_C(Branch(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034), yuz405, yuz406, h, ba) -> new_addToFM_C2(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034, yuz405, yuz406, new_lt(yuz405, yuz4030, h), h, ba) 27.10/11.39 27.10/11.39 The TRS R consists of the following rules: 27.10/11.39 27.10/11.39 new_gt0(Pos(Succ(yuz40500)), Pos(yuz4000)) -> new_esEs12(yuz40500, yuz4000) 27.10/11.39 new_gt0(Pos(Zero), Neg(Succ(yuz40000))) -> new_esEs2 27.10/11.39 new_lt(yuz405, yuz4030, ty_Int) -> new_lt0(yuz405, yuz4030) 27.10/11.39 new_esEs7 -> False 27.10/11.39 new_esEs10 -> True 27.10/11.39 new_esEs1(Zero, Succ(yuz400000)) -> new_esEs3 27.10/11.39 new_esEs5(Pos(Zero), Neg(Zero)) -> new_esEs9 27.10/11.39 new_esEs5(Neg(Zero), Pos(Zero)) -> new_esEs9 27.10/11.39 new_gt(False, False, ty_Bool) -> new_esEs4 27.10/11.39 new_lt(yuz405, yuz4030, app(app(app(ty_@3, ca), cb), cc)) -> error([]) 27.10/11.39 new_gt0(Pos(Zero), Pos(Zero)) -> new_esEs4 27.10/11.39 new_esEs5(Pos(Zero), Pos(Succ(yuz15000))) -> new_esEs8(Zero, yuz15000) 27.10/11.39 new_gt0(Pos(Succ(yuz40500)), Neg(yuz4000)) -> new_esEs2 27.10/11.39 new_esEs11(Zero, Zero) -> new_esEs9 27.10/11.39 new_lt(yuz405, yuz4030, ty_Char) -> error([]) 27.10/11.39 new_gt(False, True, ty_Bool) -> new_esEs3 27.10/11.39 new_esEs5(Pos(Zero), Pos(Zero)) -> new_esEs9 27.10/11.39 new_lt1(True, True) -> new_esEs9 27.10/11.39 new_esEs11(Succ(yuz160000), Zero) -> new_esEs7 27.10/11.39 new_lt(yuz405, yuz4030, ty_Float) -> error([]) 27.10/11.39 new_gt(yuz405, yuz400, app(app(ty_Either, cd), ce)) -> error([]) 27.10/11.39 new_gt(yuz405, yuz400, ty_Integer) -> error([]) 27.10/11.39 new_gt(LT, GT, ty_Ordering) -> error([]) 27.10/11.39 new_gt(GT, LT, ty_Ordering) -> error([]) 27.10/11.39 new_gt(True, False, ty_Bool) -> new_esEs2 27.10/11.39 new_lt(yuz405, yuz4030, ty_Double) -> error([]) 27.10/11.39 new_lt(yuz405, yuz4030, app(app(ty_@2, bf), bg)) -> error([]) 27.10/11.39 new_lt(GT, GT, ty_Ordering) -> new_esEs9 27.10/11.39 new_esEs8(Succ(yuz15000), yuz16000) -> new_esEs11(yuz15000, yuz16000) 27.10/11.39 new_lt(yuz405, yuz4030, ty_@0) -> error([]) 27.10/11.39 new_esEs9 -> False 27.10/11.39 new_gt(yuz405, yuz400, ty_Double) -> error([]) 27.10/11.39 new_esEs5(Pos(Succ(yuz16000)), Pos(yuz1500)) -> new_esEs6(yuz16000, yuz1500) 27.10/11.39 new_gt(yuz405, yuz400, ty_@0) -> error([]) 27.10/11.39 new_esEs1(Zero, Zero) -> new_esEs4 27.10/11.39 new_lt(EQ, GT, ty_Ordering) -> error([]) 27.10/11.39 new_lt(GT, EQ, ty_Ordering) -> error([]) 27.10/11.39 new_gt0(Pos(Zero), Neg(Zero)) -> new_esEs4 27.10/11.39 new_gt0(Neg(Zero), Pos(Zero)) -> new_esEs4 27.10/11.39 new_gt(yuz405, yuz400, ty_Float) -> error([]) 27.10/11.39 new_gt(yuz405, yuz400, app(ty_Maybe, bh)) -> error([]) 27.10/11.39 new_esEs11(Zero, Succ(yuz150000)) -> new_esEs10 27.10/11.39 new_esEs8(Zero, yuz16000) -> new_esEs10 27.10/11.39 new_gt(True, True, ty_Bool) -> new_esEs4 27.10/11.39 new_esEs1(Succ(yuz405000), Succ(yuz400000)) -> new_esEs1(yuz405000, yuz400000) 27.10/11.39 new_esEs6(yuz16000, Succ(yuz15000)) -> new_esEs11(yuz16000, yuz15000) 27.10/11.39 new_lt0(yuz160, yuz150) -> new_esEs5(yuz160, yuz150) 27.10/11.39 new_lt(EQ, EQ, ty_Ordering) -> new_esEs9 27.10/11.39 new_gt(GT, GT, ty_Ordering) -> new_esEs4 27.10/11.39 new_gt(yuz405, yuz400, app(ty_Ratio, bd)) -> error([]) 27.10/11.39 new_esEs12(yuz40500, Succ(yuz40000)) -> new_esEs1(yuz40500, yuz40000) 27.10/11.39 new_esEs1(Succ(yuz405000), Zero) -> new_esEs2 27.10/11.39 new_lt1(False, True) -> new_esEs10 27.10/11.39 new_lt(yuz405, yuz4030, app(ty_Ratio, bd)) -> error([]) 27.10/11.39 new_gt0(Pos(Zero), Pos(Succ(yuz40000))) -> new_esEs13(Zero, yuz40000) 27.10/11.39 new_lt1(False, False) -> new_esEs9 27.10/11.39 new_esEs2 -> True 27.10/11.39 new_esEs3 -> False 27.10/11.39 new_gt0(Neg(Zero), Neg(Succ(yuz40000))) -> new_esEs12(yuz40000, Zero) 27.10/11.39 new_esEs6(yuz16000, Zero) -> new_esEs7 27.10/11.39 new_esEs11(Succ(yuz160000), Succ(yuz150000)) -> new_esEs11(yuz160000, yuz150000) 27.10/11.39 new_gt0(Neg(Zero), Pos(Succ(yuz40000))) -> new_esEs3 27.10/11.39 new_gt(yuz405, yuz400, app(app(app(ty_@3, ca), cb), cc)) -> error([]) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Succ(yuz15000))) -> new_esEs10 27.10/11.39 new_esEs5(Neg(Succ(yuz16000)), Neg(yuz1500)) -> new_esEs8(yuz1500, yuz16000) 27.10/11.39 new_lt(LT, LT, ty_Ordering) -> new_esEs9 27.10/11.39 new_esEs4 -> False 27.10/11.39 new_gt(EQ, EQ, ty_Ordering) -> new_esEs4 27.10/11.39 new_esEs13(Succ(yuz40000), yuz40500) -> new_esEs1(yuz40000, yuz40500) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Succ(yuz15000))) -> new_esEs7 27.10/11.39 new_lt(yuz405, yuz4030, app(ty_Maybe, bh)) -> error([]) 27.10/11.39 new_gt(yuz405, yuz400, app(ty_[], be)) -> error([]) 27.10/11.39 new_lt1(True, False) -> new_esEs7 27.10/11.39 new_lt(yuz405, yuz4030, ty_Bool) -> new_lt1(yuz405, yuz4030) 27.10/11.39 new_gt(LT, EQ, ty_Ordering) -> error([]) 27.10/11.39 new_gt(EQ, LT, ty_Ordering) -> error([]) 27.10/11.39 new_gt0(Neg(Succ(yuz40500)), Pos(yuz4000)) -> new_esEs3 27.10/11.39 new_esEs5(Neg(Zero), Neg(Succ(yuz15000))) -> new_esEs6(yuz15000, Zero) 27.10/11.39 new_gt(yuz405, yuz400, app(app(ty_@2, bf), bg)) -> error([]) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Zero)) -> new_esEs9 27.10/11.39 new_lt(LT, EQ, ty_Ordering) -> error([]) 27.10/11.39 new_lt(EQ, LT, ty_Ordering) -> error([]) 27.10/11.39 new_esEs13(Zero, yuz40500) -> new_esEs3 27.10/11.39 new_lt(yuz405, yuz4030, app(ty_[], be)) -> error([]) 27.10/11.39 new_gt(EQ, GT, ty_Ordering) -> error([]) 27.10/11.39 new_gt(GT, EQ, ty_Ordering) -> error([]) 27.10/11.39 new_esEs5(Pos(Succ(yuz16000)), Neg(yuz1500)) -> new_esEs7 27.10/11.39 new_lt(yuz405, yuz4030, app(app(ty_Either, cd), ce)) -> error([]) 27.10/11.39 new_gt0(Neg(Zero), Neg(Zero)) -> new_esEs4 27.10/11.39 new_gt(yuz405, yuz400, ty_Char) -> error([]) 27.10/11.39 new_esEs12(yuz40500, Zero) -> new_esEs2 27.10/11.39 new_esEs5(Neg(Succ(yuz16000)), Pos(yuz1500)) -> new_esEs10 27.10/11.39 new_lt(yuz405, yuz4030, ty_Integer) -> error([]) 27.10/11.39 new_lt(LT, GT, ty_Ordering) -> error([]) 27.10/11.39 new_lt(GT, LT, ty_Ordering) -> error([]) 27.10/11.39 new_gt(yuz405, yuz400, ty_Int) -> new_gt0(yuz405, yuz400) 27.10/11.39 new_gt0(Neg(Succ(yuz40500)), Neg(yuz4000)) -> new_esEs13(yuz4000, yuz40500) 27.10/11.39 new_gt(LT, LT, ty_Ordering) -> new_esEs4 27.10/11.39 27.10/11.39 The set Q consists of the following terms: 27.10/11.39 27.10/11.39 new_esEs11(Zero, Zero) 27.10/11.39 new_gt(x0, x1, app(ty_Ratio, x2)) 27.10/11.39 new_lt(x0, x1, app(ty_[], x2)) 27.10/11.39 new_gt0(Neg(Succ(x0)), Neg(x1)) 27.10/11.39 new_gt0(Pos(Succ(x0)), Neg(x1)) 27.10/11.39 new_gt0(Neg(Succ(x0)), Pos(x1)) 27.10/11.39 new_esEs5(Pos(Succ(x0)), Pos(x1)) 27.10/11.39 new_gt(LT, GT, ty_Ordering) 27.10/11.39 new_gt(GT, LT, ty_Ordering) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Zero)) 27.10/11.39 new_gt(x0, x1, app(app(ty_Either, x2), x3)) 27.10/11.39 new_gt(x0, x1, ty_@0) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs5(Neg(Succ(x0)), Neg(x1)) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Succ(x0))) 27.10/11.39 new_gt(x0, x1, ty_Double) 27.10/11.39 new_esEs5(Neg(Zero), Neg(Zero)) 27.10/11.39 new_esEs1(Succ(x0), Zero) 27.10/11.39 new_lt0(x0, x1) 27.10/11.39 new_lt(x0, x1, app(app(ty_@2, x2), x3)) 27.10/11.39 new_gt0(Pos(Succ(x0)), Pos(x1)) 27.10/11.39 new_esEs5(Pos(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs5(Pos(Succ(x0)), Neg(x1)) 27.10/11.39 new_esEs5(Neg(Succ(x0)), Pos(x1)) 27.10/11.39 new_lt(x0, x1, ty_Integer) 27.10/11.39 new_lt(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 27.10/11.39 new_esEs5(Pos(Zero), Neg(Zero)) 27.10/11.39 new_esEs5(Neg(Zero), Pos(Zero)) 27.10/11.39 new_lt(x0, x1, ty_Float) 27.10/11.39 new_lt(x0, x1, ty_Double) 27.10/11.39 new_esEs11(Zero, Succ(x0)) 27.10/11.39 new_esEs3 27.10/11.39 new_gt(x0, x1, app(app(ty_@2, x2), x3)) 27.10/11.39 new_esEs12(x0, Succ(x1)) 27.10/11.39 new_esEs13(Zero, x0) 27.10/11.39 new_lt(x0, x1, ty_@0) 27.10/11.39 new_gt(False, True, ty_Bool) 27.10/11.39 new_gt(True, False, ty_Bool) 27.10/11.39 new_esEs2 27.10/11.39 new_lt(x0, x1, ty_Char) 27.10/11.39 new_esEs6(x0, Succ(x1)) 27.10/11.39 new_gt0(Pos(Zero), Neg(Zero)) 27.10/11.39 new_gt0(Neg(Zero), Pos(Zero)) 27.10/11.39 new_gt(LT, EQ, ty_Ordering) 27.10/11.39 new_gt(EQ, LT, ty_Ordering) 27.10/11.39 new_esEs11(Succ(x0), Succ(x1)) 27.10/11.39 new_esEs1(Zero, Succ(x0)) 27.10/11.39 new_gt(GT, GT, ty_Ordering) 27.10/11.39 new_lt1(True, True) 27.10/11.39 new_lt(x0, x1, app(ty_Maybe, x2)) 27.10/11.39 new_esEs8(Zero, x0) 27.10/11.39 new_gt0(Pos(Zero), Pos(Succ(x0))) 27.10/11.39 new_gt(x0, x1, ty_Float) 27.10/11.39 new_lt(EQ, GT, ty_Ordering) 27.10/11.39 new_lt(GT, EQ, ty_Ordering) 27.10/11.39 new_lt(x0, x1, ty_Int) 27.10/11.39 new_gt(x0, x1, ty_Integer) 27.10/11.39 new_esEs9 27.10/11.39 new_gt(x0, x1, app(ty_Maybe, x2)) 27.10/11.39 new_gt(x0, x1, ty_Char) 27.10/11.39 new_esEs6(x0, Zero) 27.10/11.39 new_lt(x0, x1, app(app(ty_Either, x2), x3)) 27.10/11.39 new_lt(EQ, EQ, ty_Ordering) 27.10/11.39 new_lt1(False, False) 27.10/11.39 new_gt(x0, x1, ty_Int) 27.10/11.39 new_esEs11(Succ(x0), Zero) 27.10/11.39 new_gt(x0, x1, app(ty_[], x2)) 27.10/11.39 new_lt(LT, EQ, ty_Ordering) 27.10/11.39 new_lt(EQ, LT, ty_Ordering) 27.10/11.39 new_gt(False, False, ty_Bool) 27.10/11.39 new_gt(LT, LT, ty_Ordering) 27.10/11.39 new_gt0(Pos(Zero), Pos(Zero)) 27.10/11.39 new_esEs12(x0, Zero) 27.10/11.39 new_lt(x0, x1, app(ty_Ratio, x2)) 27.10/11.39 new_lt(GT, GT, ty_Ordering) 27.10/11.39 new_gt0(Neg(Zero), Neg(Succ(x0))) 27.10/11.39 new_esEs1(Succ(x0), Succ(x1)) 27.10/11.39 new_gt(EQ, GT, ty_Ordering) 27.10/11.39 new_gt(GT, EQ, ty_Ordering) 27.10/11.39 new_gt0(Pos(Zero), Neg(Succ(x0))) 27.10/11.39 new_gt0(Neg(Zero), Pos(Succ(x0))) 27.10/11.39 new_esEs1(Zero, Zero) 27.10/11.39 new_lt(x0, x1, ty_Bool) 27.10/11.39 new_lt(LT, GT, ty_Ordering) 27.10/11.39 new_lt(GT, LT, ty_Ordering) 27.10/11.39 new_lt(LT, LT, ty_Ordering) 27.10/11.39 new_esEs10 27.10/11.39 new_esEs5(Neg(Zero), Neg(Succ(x0))) 27.10/11.39 new_lt1(False, True) 27.10/11.39 new_lt1(True, False) 27.10/11.39 new_gt(EQ, EQ, ty_Ordering) 27.10/11.39 new_esEs7 27.10/11.39 new_gt(True, True, ty_Bool) 27.10/11.39 new_esEs8(Succ(x0), x1) 27.10/11.39 new_gt0(Neg(Zero), Neg(Zero)) 27.10/11.39 new_gt(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 27.10/11.39 new_esEs4 27.10/11.39 new_esEs13(Succ(x0), x1) 27.10/11.39 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (55) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_addToFM_C(Branch(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034), yuz405, yuz406, h, ba) -> new_addToFM_C2(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034, yuz405, yuz406, new_lt(yuz405, yuz4030, h), h, ba) 27.10/11.39 The graph contains the following edges 1 > 1, 1 > 2, 1 > 3, 1 > 4, 1 > 5, 2 >= 6, 3 >= 7, 4 >= 9, 5 >= 10 27.10/11.39 27.10/11.39 27.10/11.39 *new_addToFM_C2(yuz400, yuz401, yuz402, yuz403, yuz404, yuz405, yuz406, False, h, ba) -> new_addToFM_C1(yuz400, yuz401, yuz402, yuz403, yuz404, yuz405, yuz406, new_gt(yuz405, yuz400, h), h, ba) 27.10/11.39 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 9 >= 9, 10 >= 10 27.10/11.39 27.10/11.39 27.10/11.39 *new_addToFM_C1(yuz422, yuz423, yuz424, yuz425, yuz426, yuz427, yuz428, True, bb, bc) -> new_addToFM_C(yuz426, yuz427, yuz428, bb, bc) 27.10/11.39 The graph contains the following edges 5 >= 1, 6 >= 2, 7 >= 3, 9 >= 4, 10 >= 5 27.10/11.39 27.10/11.39 27.10/11.39 *new_addToFM_C2(yuz400, yuz401, yuz402, Branch(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034), yuz404, yuz405, yuz406, True, h, ba) -> new_addToFM_C2(yuz4030, yuz4031, yuz4032, yuz4033, yuz4034, yuz405, yuz406, new_lt(yuz405, yuz4030, h), h, ba) 27.10/11.39 The graph contains the following edges 4 > 1, 4 > 2, 4 > 3, 4 > 4, 4 > 5, 6 >= 6, 7 >= 7, 9 >= 9, 10 >= 10 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (56) 27.10/11.39 YES 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (57) 27.10/11.39 Obligation: 27.10/11.39 Q DP problem: 27.10/11.39 The TRS P consists of the following rules: 27.10/11.39 27.10/11.39 new_esEs(Succ(yuz405000), Succ(yuz400000)) -> new_esEs(yuz405000, yuz400000) 27.10/11.39 27.10/11.39 R is empty. 27.10/11.39 Q is empty. 27.10/11.39 We have to consider all minimal (P,Q,R)-chains. 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (58) QDPSizeChangeProof (EQUIVALENT) 27.10/11.39 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. 27.10/11.39 27.10/11.39 From the DPs we obtained the following set of size-change graphs: 27.10/11.39 *new_esEs(Succ(yuz405000), Succ(yuz400000)) -> new_esEs(yuz405000, yuz400000) 27.10/11.39 The graph contains the following edges 1 > 1, 2 > 2 27.10/11.39 27.10/11.39 27.10/11.39 ---------------------------------------- 27.10/11.39 27.10/11.39 (59) 27.10/11.39 YES 27.23/11.47 EOF