11.71/5.02 YES 13.81/5.64 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 13.81/5.64 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 13.81/5.64 13.81/5.64 13.81/5.64 H-Termination with start terms of the given HASKELL could be proven: 13.81/5.64 13.81/5.64 (0) HASKELL 13.81/5.64 (1) CR [EQUIVALENT, 0 ms] 13.81/5.64 (2) HASKELL 13.81/5.64 (3) BR [EQUIVALENT, 0 ms] 13.81/5.64 (4) HASKELL 13.81/5.64 (5) COR [EQUIVALENT, 0 ms] 13.81/5.64 (6) HASKELL 13.81/5.64 (7) Narrow [SOUND, 0 ms] 13.81/5.64 (8) QDP 13.81/5.64 (9) DependencyGraphProof [EQUIVALENT, 0 ms] 13.81/5.64 (10) AND 13.81/5.64 (11) QDP 13.81/5.64 (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] 13.81/5.64 (13) YES 13.81/5.64 (14) QDP 13.81/5.64 (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] 13.81/5.64 (16) YES 13.81/5.64 13.81/5.64 13.81/5.64 ---------------------------------------- 13.81/5.64 13.81/5.64 (0) 13.81/5.64 Obligation: 13.81/5.64 mainModule Main 13.81/5.64 module FiniteMap where { 13.81/5.64 import qualified Main; 13.81/5.64 import qualified Maybe; 13.81/5.64 import qualified Prelude; 13.81/5.64 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 13.81/5.64 13.81/5.64 instance (Eq a, Eq b) => Eq FiniteMap b a where { 13.81/5.64 } 13.81/5.64 lookupFM :: Ord a => FiniteMap a b -> a -> Maybe b; 13.81/5.64 lookupFM EmptyFM key = Nothing; 13.81/5.64 lookupFM (Branch key elt _ fm_l fm_r) key_to_find | key_to_find < key = lookupFM fm_l key_to_find 13.81/5.64 | key_to_find > key = lookupFM fm_r key_to_find 13.81/5.64 | otherwise = Just elt; 13.81/5.64 13.81/5.64 lookupWithDefaultFM :: Ord b => FiniteMap b a -> a -> b -> a; 13.81/5.64 lookupWithDefaultFM fm deflt key = case lookupFM fm key of { 13.81/5.64 Nothing-> deflt; 13.81/5.64 Just elt-> elt; 13.81/5.64 } ; 13.81/5.64 13.81/5.64 } 13.81/5.64 module Maybe where { 13.81/5.64 import qualified FiniteMap; 13.81/5.64 import qualified Main; 13.81/5.64 import qualified Prelude; 13.81/5.64 } 13.81/5.64 module Main where { 13.81/5.64 import qualified FiniteMap; 13.81/5.64 import qualified Maybe; 13.81/5.64 import qualified Prelude; 13.81/5.64 } 13.81/5.64 13.81/5.64 ---------------------------------------- 13.81/5.64 13.81/5.64 (1) CR (EQUIVALENT) 13.81/5.64 Case Reductions: 13.81/5.64 The following Case expression 13.81/5.64 "case lookupFM fm key of { 13.81/5.64 Nothing -> deflt; 13.81/5.64 Just elt -> elt} 13.81/5.64 " 13.81/5.64 is transformed to 13.81/5.64 "lookupWithDefaultFM0 deflt Nothing = deflt; 13.81/5.64 lookupWithDefaultFM0 deflt (Just elt) = elt; 13.81/5.64 " 13.81/5.64 13.81/5.64 ---------------------------------------- 13.81/5.64 13.81/5.64 (2) 13.81/5.64 Obligation: 13.81/5.64 mainModule Main 13.81/5.64 module FiniteMap where { 13.81/5.64 import qualified Main; 13.81/5.64 import qualified Maybe; 13.81/5.64 import qualified Prelude; 13.81/5.64 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 13.81/5.64 13.81/5.64 instance (Eq a, Eq b) => Eq FiniteMap a b where { 13.81/5.64 } 13.81/5.64 lookupFM :: Ord a => FiniteMap a b -> a -> Maybe b; 13.81/5.64 lookupFM EmptyFM key = Nothing; 13.81/5.64 lookupFM (Branch key elt _ fm_l fm_r) key_to_find | key_to_find < key = lookupFM fm_l key_to_find 13.81/5.64 | key_to_find > key = lookupFM fm_r key_to_find 13.81/5.64 | otherwise = Just elt; 13.81/5.64 13.81/5.64 lookupWithDefaultFM :: Ord b => FiniteMap b a -> a -> b -> a; 13.81/5.64 lookupWithDefaultFM fm deflt key = lookupWithDefaultFM0 deflt (lookupFM fm key); 13.81/5.64 13.81/5.64 lookupWithDefaultFM0 deflt Nothing = deflt; 13.81/5.64 lookupWithDefaultFM0 deflt (Just elt) = elt; 13.81/5.64 13.81/5.64 } 13.81/5.64 module Maybe where { 13.81/5.64 import qualified FiniteMap; 13.81/5.64 import qualified Main; 13.81/5.64 import qualified Prelude; 13.81/5.64 } 13.81/5.64 module Main where { 13.81/5.64 import qualified FiniteMap; 13.81/5.64 import qualified Maybe; 13.81/5.64 import qualified Prelude; 13.81/5.64 } 13.81/5.64 13.81/5.64 ---------------------------------------- 13.81/5.64 13.81/5.64 (3) BR (EQUIVALENT) 13.81/5.64 Replaced joker patterns by fresh variables and removed binding patterns. 13.81/5.64 ---------------------------------------- 13.81/5.64 13.81/5.64 (4) 13.81/5.64 Obligation: 13.81/5.64 mainModule Main 13.81/5.64 module FiniteMap where { 13.81/5.65 import qualified Main; 13.81/5.65 import qualified Maybe; 13.81/5.65 import qualified Prelude; 13.81/5.65 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 13.81/5.65 13.81/5.65 instance (Eq a, Eq b) => Eq FiniteMap b a where { 13.81/5.65 } 13.81/5.65 lookupFM :: Ord a => FiniteMap a b -> a -> Maybe b; 13.81/5.65 lookupFM EmptyFM key = Nothing; 13.81/5.65 lookupFM (Branch key elt vy fm_l fm_r) key_to_find | key_to_find < key = lookupFM fm_l key_to_find 13.81/5.65 | key_to_find > key = lookupFM fm_r key_to_find 13.81/5.65 | otherwise = Just elt; 13.81/5.65 13.81/5.65 lookupWithDefaultFM :: Ord b => FiniteMap b a -> a -> b -> a; 13.81/5.65 lookupWithDefaultFM fm deflt key = lookupWithDefaultFM0 deflt (lookupFM fm key); 13.81/5.65 13.81/5.65 lookupWithDefaultFM0 deflt Nothing = deflt; 13.81/5.65 lookupWithDefaultFM0 deflt (Just elt) = elt; 13.81/5.65 13.81/5.65 } 13.81/5.65 module Maybe where { 13.81/5.65 import qualified FiniteMap; 13.81/5.65 import qualified Main; 13.81/5.65 import qualified Prelude; 13.81/5.65 } 13.81/5.65 module Main where { 13.81/5.65 import qualified FiniteMap; 13.81/5.65 import qualified Maybe; 13.81/5.65 import qualified Prelude; 13.81/5.65 } 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (5) COR (EQUIVALENT) 13.81/5.65 Cond Reductions: 13.81/5.65 The following Function with conditions 13.81/5.65 "undefined |Falseundefined; 13.81/5.65 " 13.81/5.65 is transformed to 13.81/5.65 "undefined = undefined1; 13.81/5.65 " 13.81/5.65 "undefined0 True = undefined; 13.81/5.65 " 13.81/5.65 "undefined1 = undefined0 False; 13.81/5.65 " 13.81/5.65 The following Function with conditions 13.81/5.65 "lookupFM EmptyFM key = Nothing; 13.81/5.65 lookupFM (Branch key elt vy fm_l fm_r) key_to_find|key_to_find < keylookupFM fm_l key_to_find|key_to_find > keylookupFM fm_r key_to_find|otherwiseJust elt; 13.81/5.65 " 13.81/5.65 is transformed to 13.81/5.65 "lookupFM EmptyFM key = lookupFM4 EmptyFM key; 13.81/5.65 lookupFM (Branch key elt vy fm_l fm_r) key_to_find = lookupFM3 (Branch key elt vy fm_l fm_r) key_to_find; 13.81/5.65 " 13.81/5.65 "lookupFM0 key elt vy fm_l fm_r key_to_find True = Just elt; 13.81/5.65 " 13.81/5.65 "lookupFM1 key elt vy fm_l fm_r key_to_find True = lookupFM fm_r key_to_find; 13.81/5.65 lookupFM1 key elt vy fm_l fm_r key_to_find False = lookupFM0 key elt vy fm_l fm_r key_to_find otherwise; 13.81/5.65 " 13.81/5.65 "lookupFM2 key elt vy fm_l fm_r key_to_find True = lookupFM fm_l key_to_find; 13.81/5.65 lookupFM2 key elt vy fm_l fm_r key_to_find False = lookupFM1 key elt vy fm_l fm_r key_to_find (key_to_find > key); 13.81/5.65 " 13.81/5.65 "lookupFM3 (Branch key elt vy fm_l fm_r) key_to_find = lookupFM2 key elt vy fm_l fm_r key_to_find (key_to_find < key); 13.81/5.65 " 13.81/5.65 "lookupFM4 EmptyFM key = Nothing; 13.81/5.65 lookupFM4 wv ww = lookupFM3 wv ww; 13.81/5.65 " 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (6) 13.81/5.65 Obligation: 13.81/5.65 mainModule Main 13.81/5.65 module FiniteMap where { 13.81/5.65 import qualified Main; 13.81/5.65 import qualified Maybe; 13.81/5.65 import qualified Prelude; 13.81/5.65 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 13.81/5.65 13.81/5.65 instance (Eq a, Eq b) => Eq FiniteMap b a where { 13.81/5.65 } 13.81/5.65 lookupFM :: Ord b => FiniteMap b a -> b -> Maybe a; 13.81/5.65 lookupFM EmptyFM key = lookupFM4 EmptyFM key; 13.81/5.65 lookupFM (Branch key elt vy fm_l fm_r) key_to_find = lookupFM3 (Branch key elt vy fm_l fm_r) key_to_find; 13.81/5.65 13.81/5.65 lookupFM0 key elt vy fm_l fm_r key_to_find True = Just elt; 13.81/5.65 13.81/5.65 lookupFM1 key elt vy fm_l fm_r key_to_find True = lookupFM fm_r key_to_find; 13.81/5.65 lookupFM1 key elt vy fm_l fm_r key_to_find False = lookupFM0 key elt vy fm_l fm_r key_to_find otherwise; 13.81/5.65 13.81/5.65 lookupFM2 key elt vy fm_l fm_r key_to_find True = lookupFM fm_l key_to_find; 13.81/5.65 lookupFM2 key elt vy fm_l fm_r key_to_find False = lookupFM1 key elt vy fm_l fm_r key_to_find (key_to_find > key); 13.81/5.65 13.81/5.65 lookupFM3 (Branch key elt vy fm_l fm_r) key_to_find = lookupFM2 key elt vy fm_l fm_r key_to_find (key_to_find < key); 13.81/5.65 13.81/5.65 lookupFM4 EmptyFM key = Nothing; 13.81/5.65 lookupFM4 wv ww = lookupFM3 wv ww; 13.81/5.65 13.81/5.65 lookupWithDefaultFM :: Ord b => FiniteMap b a -> a -> b -> a; 13.81/5.65 lookupWithDefaultFM fm deflt key = lookupWithDefaultFM0 deflt (lookupFM fm key); 13.81/5.65 13.81/5.65 lookupWithDefaultFM0 deflt Nothing = deflt; 13.81/5.65 lookupWithDefaultFM0 deflt (Just elt) = elt; 13.81/5.65 13.81/5.65 } 13.81/5.65 module Maybe where { 13.81/5.65 import qualified FiniteMap; 13.81/5.65 import qualified Main; 13.81/5.65 import qualified Prelude; 13.81/5.65 } 13.81/5.65 module Main where { 13.81/5.65 import qualified FiniteMap; 13.81/5.65 import qualified Maybe; 13.81/5.65 import qualified Prelude; 13.81/5.65 } 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (7) Narrow (SOUND) 13.81/5.65 Haskell To QDPs 13.81/5.65 13.81/5.65 digraph dp_graph { 13.81/5.65 node [outthreshold=100, inthreshold=100];1[label="FiniteMap.lookupWithDefaultFM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 13.81/5.65 3[label="FiniteMap.lookupWithDefaultFM wx3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 13.81/5.65 4[label="FiniteMap.lookupWithDefaultFM wx3 wx4",fontsize=16,color="grey",shape="box"];4 -> 5[label="",style="dashed", color="grey", weight=3]; 13.81/5.65 5[label="FiniteMap.lookupWithDefaultFM wx3 wx4 wx5",fontsize=16,color="black",shape="triangle"];5 -> 6[label="",style="solid", color="black", weight=3]; 13.81/5.65 6[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM wx3 wx5)",fontsize=16,color="burlywood",shape="triangle"];813[label="wx3/FiniteMap.EmptyFM",fontsize=10,color="white",style="solid",shape="box"];6 -> 813[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 813 -> 7[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 814[label="wx3/FiniteMap.Branch wx30 wx31 wx32 wx33 wx34",fontsize=10,color="white",style="solid",shape="box"];6 -> 814[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 814 -> 8[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 7[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM FiniteMap.EmptyFM wx5)",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 13.81/5.65 8[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM (FiniteMap.Branch wx30 wx31 wx32 wx33 wx34) wx5)",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 13.81/5.65 9[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM4 FiniteMap.EmptyFM wx5)",fontsize=16,color="black",shape="box"];9 -> 11[label="",style="solid", color="black", weight=3]; 13.81/5.65 10[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM3 (FiniteMap.Branch wx30 wx31 wx32 wx33 wx34) wx5)",fontsize=16,color="black",shape="box"];10 -> 12[label="",style="solid", color="black", weight=3]; 13.81/5.65 11[label="FiniteMap.lookupWithDefaultFM0 wx4 Nothing",fontsize=16,color="black",shape="box"];11 -> 13[label="",style="solid", color="black", weight=3]; 13.81/5.65 12[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 wx30 wx31 wx32 wx33 wx34 wx5 (wx5 < wx30))",fontsize=16,color="black",shape="box"];12 -> 14[label="",style="solid", color="black", weight=3]; 13.81/5.65 13[label="wx4",fontsize=16,color="green",shape="box"];14[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 wx30 wx31 wx32 wx33 wx34 wx5 (compare wx5 wx30 == LT))",fontsize=16,color="black",shape="box"];14 -> 15[label="",style="solid", color="black", weight=3]; 13.81/5.65 15[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 wx30 wx31 wx32 wx33 wx34 wx5 (primCmpChar wx5 wx30 == LT))",fontsize=16,color="burlywood",shape="box"];815[label="wx5/Char wx50",fontsize=10,color="white",style="solid",shape="box"];15 -> 815[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 815 -> 16[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 16[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 wx30 wx31 wx32 wx33 wx34 (Char wx50) (primCmpChar (Char wx50) wx30 == LT))",fontsize=16,color="burlywood",shape="box"];816[label="wx30/Char wx300",fontsize=10,color="white",style="solid",shape="box"];16 -> 816[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 816 -> 17[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 17[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char wx300) wx31 wx32 wx33 wx34 (Char wx50) (primCmpChar (Char wx50) (Char wx300) == LT))",fontsize=16,color="black",shape="box"];17 -> 18[label="",style="solid", color="black", weight=3]; 13.81/5.65 18[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char wx300) wx31 wx32 wx33 wx34 (Char wx50) (primCmpNat wx50 wx300 == LT))",fontsize=16,color="burlywood",shape="box"];817[label="wx50/Succ wx500",fontsize=10,color="white",style="solid",shape="box"];18 -> 817[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 817 -> 19[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 818[label="wx50/Zero",fontsize=10,color="white",style="solid",shape="box"];18 -> 818[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 818 -> 20[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 19[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char wx300) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (primCmpNat (Succ wx500) wx300 == LT))",fontsize=16,color="burlywood",shape="box"];819[label="wx300/Succ wx3000",fontsize=10,color="white",style="solid",shape="box"];19 -> 819[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 819 -> 21[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 820[label="wx300/Zero",fontsize=10,color="white",style="solid",shape="box"];19 -> 820[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 820 -> 22[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 20[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char wx300) wx31 wx32 wx33 wx34 (Char Zero) (primCmpNat Zero wx300 == LT))",fontsize=16,color="burlywood",shape="box"];821[label="wx300/Succ wx3000",fontsize=10,color="white",style="solid",shape="box"];20 -> 821[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 821 -> 23[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 822[label="wx300/Zero",fontsize=10,color="white",style="solid",shape="box"];20 -> 822[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 822 -> 24[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 21[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char (Succ wx3000)) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (primCmpNat (Succ wx500) (Succ wx3000) == LT))",fontsize=16,color="black",shape="box"];21 -> 25[label="",style="solid", color="black", weight=3]; 13.81/5.65 22[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (primCmpNat (Succ wx500) Zero == LT))",fontsize=16,color="black",shape="box"];22 -> 26[label="",style="solid", color="black", weight=3]; 13.81/5.65 23[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char (Succ wx3000)) wx31 wx32 wx33 wx34 (Char Zero) (primCmpNat Zero (Succ wx3000) == LT))",fontsize=16,color="black",shape="box"];23 -> 27[label="",style="solid", color="black", weight=3]; 13.81/5.65 24[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (primCmpNat Zero Zero == LT))",fontsize=16,color="black",shape="box"];24 -> 28[label="",style="solid", color="black", weight=3]; 13.81/5.65 25 -> 327[label="",style="dashed", color="red", weight=0]; 13.81/5.65 25[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char (Succ wx3000)) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (primCmpNat wx500 wx3000 == LT))",fontsize=16,color="magenta"];25 -> 328[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 329[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 330[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 331[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 332[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 333[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 334[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 335[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 25 -> 336[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 26[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (GT == LT))",fontsize=16,color="black",shape="box"];26 -> 31[label="",style="solid", color="black", weight=3]; 13.81/5.65 27[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char (Succ wx3000)) wx31 wx32 wx33 wx34 (Char Zero) (LT == LT))",fontsize=16,color="black",shape="box"];27 -> 32[label="",style="solid", color="black", weight=3]; 13.81/5.65 28[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (EQ == LT))",fontsize=16,color="black",shape="box"];28 -> 33[label="",style="solid", color="black", weight=3]; 13.81/5.65 328[label="wx500",fontsize=16,color="green",shape="box"];329[label="wx32",fontsize=16,color="green",shape="box"];330[label="wx4",fontsize=16,color="green",shape="box"];331[label="wx3000",fontsize=16,color="green",shape="box"];332[label="wx31",fontsize=16,color="green",shape="box"];333[label="wx34",fontsize=16,color="green",shape="box"];334[label="wx500",fontsize=16,color="green",shape="box"];335[label="wx3000",fontsize=16,color="green",shape="box"];336[label="wx33",fontsize=16,color="green",shape="box"];327[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat wx37 wx38 == LT))",fontsize=16,color="burlywood",shape="triangle"];823[label="wx37/Succ wx370",fontsize=10,color="white",style="solid",shape="box"];327 -> 823[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 823 -> 418[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 824[label="wx37/Zero",fontsize=10,color="white",style="solid",shape="box"];327 -> 824[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 824 -> 419[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 31[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) False)",fontsize=16,color="black",shape="box"];31 -> 38[label="",style="solid", color="black", weight=3]; 13.81/5.65 32[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char (Succ wx3000)) wx31 wx32 wx33 wx34 (Char Zero) True)",fontsize=16,color="black",shape="box"];32 -> 39[label="",style="solid", color="black", weight=3]; 13.81/5.65 33[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM2 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) False)",fontsize=16,color="black",shape="box"];33 -> 40[label="",style="solid", color="black", weight=3]; 13.81/5.65 418[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat (Succ wx370) wx38 == LT))",fontsize=16,color="burlywood",shape="box"];825[label="wx38/Succ wx380",fontsize=10,color="white",style="solid",shape="box"];418 -> 825[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 825 -> 420[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 826[label="wx38/Zero",fontsize=10,color="white",style="solid",shape="box"];418 -> 826[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 826 -> 421[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 419[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat Zero wx38 == LT))",fontsize=16,color="burlywood",shape="box"];827[label="wx38/Succ wx380",fontsize=10,color="white",style="solid",shape="box"];419 -> 827[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 827 -> 422[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 828[label="wx38/Zero",fontsize=10,color="white",style="solid",shape="box"];419 -> 828[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 828 -> 423[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 38[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (Char (Succ wx500) > Char Zero))",fontsize=16,color="black",shape="box"];38 -> 45[label="",style="solid", color="black", weight=3]; 13.81/5.65 39 -> 6[label="",style="dashed", color="red", weight=0]; 13.81/5.65 39[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM wx33 (Char Zero))",fontsize=16,color="magenta"];39 -> 46[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 39 -> 47[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 40[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (Char Zero > Char Zero))",fontsize=16,color="black",shape="box"];40 -> 48[label="",style="solid", color="black", weight=3]; 13.81/5.65 420[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat (Succ wx370) (Succ wx380) == LT))",fontsize=16,color="black",shape="box"];420 -> 424[label="",style="solid", color="black", weight=3]; 13.81/5.65 421[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat (Succ wx370) Zero == LT))",fontsize=16,color="black",shape="box"];421 -> 425[label="",style="solid", color="black", weight=3]; 13.81/5.65 422[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat Zero (Succ wx380) == LT))",fontsize=16,color="black",shape="box"];422 -> 426[label="",style="solid", color="black", weight=3]; 13.81/5.65 423[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat Zero Zero == LT))",fontsize=16,color="black",shape="box"];423 -> 427[label="",style="solid", color="black", weight=3]; 13.81/5.65 45[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (compare (Char (Succ wx500)) (Char Zero) == GT))",fontsize=16,color="black",shape="box"];45 -> 54[label="",style="solid", color="black", weight=3]; 13.81/5.65 46[label="wx33",fontsize=16,color="green",shape="box"];47[label="Char Zero",fontsize=16,color="green",shape="box"];48[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (compare (Char Zero) (Char Zero) == GT))",fontsize=16,color="black",shape="box"];48 -> 55[label="",style="solid", color="black", weight=3]; 13.81/5.65 424 -> 327[label="",style="dashed", color="red", weight=0]; 13.81/5.65 424[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat wx370 wx380 == LT))",fontsize=16,color="magenta"];424 -> 428[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 424 -> 429[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 425[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (GT == LT))",fontsize=16,color="black",shape="box"];425 -> 430[label="",style="solid", color="black", weight=3]; 13.81/5.65 426[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (LT == LT))",fontsize=16,color="black",shape="box"];426 -> 431[label="",style="solid", color="black", weight=3]; 13.81/5.65 427[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (EQ == LT))",fontsize=16,color="black",shape="box"];427 -> 432[label="",style="solid", color="black", weight=3]; 13.81/5.65 54[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (primCmpChar (Char (Succ wx500)) (Char Zero) == GT))",fontsize=16,color="black",shape="box"];54 -> 63[label="",style="solid", color="black", weight=3]; 13.81/5.65 55[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (primCmpChar (Char Zero) (Char Zero) == GT))",fontsize=16,color="black",shape="box"];55 -> 64[label="",style="solid", color="black", weight=3]; 13.81/5.65 428[label="wx370",fontsize=16,color="green",shape="box"];429[label="wx380",fontsize=16,color="green",shape="box"];430[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) False)",fontsize=16,color="black",shape="triangle"];430 -> 433[label="",style="solid", color="black", weight=3]; 13.81/5.65 431[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) True)",fontsize=16,color="black",shape="box"];431 -> 434[label="",style="solid", color="black", weight=3]; 13.81/5.65 432 -> 430[label="",style="dashed", color="red", weight=0]; 13.81/5.65 432[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM2 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) False)",fontsize=16,color="magenta"];63[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (primCmpNat (Succ wx500) Zero == GT))",fontsize=16,color="black",shape="box"];63 -> 73[label="",style="solid", color="black", weight=3]; 13.81/5.65 64[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (primCmpNat Zero Zero == GT))",fontsize=16,color="black",shape="box"];64 -> 74[label="",style="solid", color="black", weight=3]; 13.81/5.65 433[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM1 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (Char (Succ wx36) > Char (Succ wx31)))",fontsize=16,color="black",shape="box"];433 -> 435[label="",style="solid", color="black", weight=3]; 13.81/5.65 434 -> 6[label="",style="dashed", color="red", weight=0]; 13.81/5.65 434[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM wx34 (Char (Succ wx36)))",fontsize=16,color="magenta"];434 -> 436[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 434 -> 437[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 434 -> 438[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 73[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) (GT == GT))",fontsize=16,color="black",shape="box"];73 -> 82[label="",style="solid", color="black", weight=3]; 13.81/5.65 74[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) (EQ == GT))",fontsize=16,color="black",shape="box"];74 -> 83[label="",style="solid", color="black", weight=3]; 13.81/5.65 435[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM1 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (compare (Char (Succ wx36)) (Char (Succ wx31)) == GT))",fontsize=16,color="black",shape="box"];435 -> 439[label="",style="solid", color="black", weight=3]; 13.81/5.65 436[label="wx30",fontsize=16,color="green",shape="box"];437[label="wx34",fontsize=16,color="green",shape="box"];438[label="Char (Succ wx36)",fontsize=16,color="green",shape="box"];82[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char (Succ wx500)) True)",fontsize=16,color="black",shape="box"];82 -> 93[label="",style="solid", color="black", weight=3]; 13.81/5.65 83[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM1 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) False)",fontsize=16,color="black",shape="box"];83 -> 94[label="",style="solid", color="black", weight=3]; 13.81/5.65 439[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM1 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpChar (Char (Succ wx36)) (Char (Succ wx31)) == GT))",fontsize=16,color="black",shape="box"];439 -> 440[label="",style="solid", color="black", weight=3]; 13.81/5.65 93 -> 6[label="",style="dashed", color="red", weight=0]; 13.81/5.65 93[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM wx34 (Char (Succ wx500)))",fontsize=16,color="magenta"];93 -> 105[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 93 -> 106[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 94[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM0 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) otherwise)",fontsize=16,color="black",shape="box"];94 -> 107[label="",style="solid", color="black", weight=3]; 13.81/5.65 440 -> 689[label="",style="dashed", color="red", weight=0]; 13.81/5.65 440[label="FiniteMap.lookupWithDefaultFM0 wx30 (FiniteMap.lookupFM1 (Char (Succ wx31)) wx32 wx33 wx34 wx35 (Char (Succ wx36)) (primCmpNat (Succ wx36) (Succ wx31) == GT))",fontsize=16,color="magenta"];440 -> 690[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 691[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 692[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 693[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 694[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 695[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 696[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 697[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 440 -> 698[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 105[label="wx34",fontsize=16,color="green",shape="box"];106[label="Char (Succ wx500)",fontsize=16,color="green",shape="box"];107[label="FiniteMap.lookupWithDefaultFM0 wx4 (FiniteMap.lookupFM0 (Char Zero) wx31 wx32 wx33 wx34 (Char Zero) True)",fontsize=16,color="black",shape="box"];107 -> 117[label="",style="solid", color="black", weight=3]; 13.81/5.65 690[label="wx34",fontsize=16,color="green",shape="box"];691[label="wx30",fontsize=16,color="green",shape="box"];692[label="Succ wx36",fontsize=16,color="green",shape="box"];693[label="wx36",fontsize=16,color="green",shape="box"];694[label="wx32",fontsize=16,color="green",shape="box"];695[label="wx33",fontsize=16,color="green",shape="box"];696[label="wx31",fontsize=16,color="green",shape="box"];697[label="Succ wx31",fontsize=16,color="green",shape="box"];698[label="wx35",fontsize=16,color="green",shape="box"];689[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat wx91 wx92 == GT))",fontsize=16,color="burlywood",shape="triangle"];829[label="wx91/Succ wx910",fontsize=10,color="white",style="solid",shape="box"];689 -> 829[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 829 -> 789[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 830[label="wx91/Zero",fontsize=10,color="white",style="solid",shape="box"];689 -> 830[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 830 -> 790[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 117[label="FiniteMap.lookupWithDefaultFM0 wx4 (Just wx31)",fontsize=16,color="black",shape="triangle"];117 -> 129[label="",style="solid", color="black", weight=3]; 13.81/5.65 789[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat (Succ wx910) wx92 == GT))",fontsize=16,color="burlywood",shape="box"];831[label="wx92/Succ wx920",fontsize=10,color="white",style="solid",shape="box"];789 -> 831[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 831 -> 791[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 832[label="wx92/Zero",fontsize=10,color="white",style="solid",shape="box"];789 -> 832[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 832 -> 792[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 790[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat Zero wx92 == GT))",fontsize=16,color="burlywood",shape="box"];833[label="wx92/Succ wx920",fontsize=10,color="white",style="solid",shape="box"];790 -> 833[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 833 -> 793[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 834[label="wx92/Zero",fontsize=10,color="white",style="solid",shape="box"];790 -> 834[label="",style="solid", color="burlywood", weight=9]; 13.81/5.65 834 -> 794[label="",style="solid", color="burlywood", weight=3]; 13.81/5.65 129[label="wx31",fontsize=16,color="green",shape="box"];791[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat (Succ wx910) (Succ wx920) == GT))",fontsize=16,color="black",shape="box"];791 -> 795[label="",style="solid", color="black", weight=3]; 13.81/5.65 792[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat (Succ wx910) Zero == GT))",fontsize=16,color="black",shape="box"];792 -> 796[label="",style="solid", color="black", weight=3]; 13.81/5.65 793[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat Zero (Succ wx920) == GT))",fontsize=16,color="black",shape="box"];793 -> 797[label="",style="solid", color="black", weight=3]; 13.81/5.65 794[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat Zero Zero == GT))",fontsize=16,color="black",shape="box"];794 -> 798[label="",style="solid", color="black", weight=3]; 13.81/5.65 795 -> 689[label="",style="dashed", color="red", weight=0]; 13.81/5.65 795[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (primCmpNat wx910 wx920 == GT))",fontsize=16,color="magenta"];795 -> 799[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 795 -> 800[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 796[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (GT == GT))",fontsize=16,color="black",shape="box"];796 -> 801[label="",style="solid", color="black", weight=3]; 13.81/5.65 797[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (LT == GT))",fontsize=16,color="black",shape="box"];797 -> 802[label="",style="solid", color="black", weight=3]; 13.81/5.65 798[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) (EQ == GT))",fontsize=16,color="black",shape="box"];798 -> 803[label="",style="solid", color="black", weight=3]; 13.81/5.65 799[label="wx910",fontsize=16,color="green",shape="box"];800[label="wx920",fontsize=16,color="green",shape="box"];801[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) True)",fontsize=16,color="black",shape="box"];801 -> 804[label="",style="solid", color="black", weight=3]; 13.81/5.65 802[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) False)",fontsize=16,color="black",shape="triangle"];802 -> 805[label="",style="solid", color="black", weight=3]; 13.81/5.65 803 -> 802[label="",style="dashed", color="red", weight=0]; 13.81/5.65 803[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM1 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) False)",fontsize=16,color="magenta"];804 -> 6[label="",style="dashed", color="red", weight=0]; 13.81/5.65 804[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM wx89 (Char (Succ wx90)))",fontsize=16,color="magenta"];804 -> 806[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 804 -> 807[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 804 -> 808[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 805[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM0 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) otherwise)",fontsize=16,color="black",shape="box"];805 -> 809[label="",style="solid", color="black", weight=3]; 13.81/5.65 806[label="wx84",fontsize=16,color="green",shape="box"];807[label="wx89",fontsize=16,color="green",shape="box"];808[label="Char (Succ wx90)",fontsize=16,color="green",shape="box"];809[label="FiniteMap.lookupWithDefaultFM0 wx84 (FiniteMap.lookupFM0 (Char (Succ wx85)) wx86 wx87 wx88 wx89 (Char (Succ wx90)) True)",fontsize=16,color="black",shape="box"];809 -> 810[label="",style="solid", color="black", weight=3]; 13.81/5.65 810 -> 117[label="",style="dashed", color="red", weight=0]; 13.81/5.65 810[label="FiniteMap.lookupWithDefaultFM0 wx84 (Just wx86)",fontsize=16,color="magenta"];810 -> 811[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 810 -> 812[label="",style="dashed", color="magenta", weight=3]; 13.81/5.65 811[label="wx84",fontsize=16,color="green",shape="box"];812[label="wx86",fontsize=16,color="green",shape="box"];} 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (8) 13.81/5.65 Obligation: 13.81/5.65 Q DP problem: 13.81/5.65 The TRS P consists of the following rules: 13.81/5.65 13.81/5.65 new_lookupWithDefaultFM02(wx30, wx31, wx32, wx33, wx34, wx35, wx36, h) -> new_lookupWithDefaultFM00(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx36), Succ(wx31), h) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx370), Zero, h) -> new_lookupWithDefaultFM00(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx36), Succ(wx31), h) 13.81/5.65 new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, Succ(wx910), Succ(wx920), ba) -> new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, wx910, wx920, ba) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx370), Succ(wx380), h) -> new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, wx370, wx380, h) 13.81/5.65 new_lookupWithDefaultFM01(wx4, Branch(Char(Succ(wx3000)), wx31, wx32, wx33, wx34), Char(Zero), bb) -> new_lookupWithDefaultFM01(wx4, wx33, Char(Zero), bb) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Zero, Succ(wx380), h) -> new_lookupWithDefaultFM01(wx30, wx34, Char(Succ(wx36)), h) 13.81/5.65 new_lookupWithDefaultFM01(wx4, Branch(Char(Succ(wx3000)), wx31, wx32, wx33, wx34), Char(Succ(wx500)), bb) -> new_lookupWithDefaultFM0(wx4, wx3000, wx31, wx32, wx33, wx34, wx500, wx500, wx3000, bb) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Zero, Zero, h) -> new_lookupWithDefaultFM02(wx30, wx31, wx32, wx33, wx34, wx35, wx36, h) 13.81/5.65 new_lookupWithDefaultFM01(wx4, Branch(Char(Zero), wx31, wx32, wx33, wx34), Char(Succ(wx500)), bb) -> new_lookupWithDefaultFM01(wx4, wx34, Char(Succ(wx500)), bb) 13.81/5.65 new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, Succ(wx910), Zero, ba) -> new_lookupWithDefaultFM01(wx84, wx89, Char(Succ(wx90)), ba) 13.81/5.65 13.81/5.65 R is empty. 13.81/5.65 Q is empty. 13.81/5.65 We have to consider all minimal (P,Q,R)-chains. 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (9) DependencyGraphProof (EQUIVALENT) 13.81/5.65 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs. 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (10) 13.81/5.65 Complex Obligation (AND) 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (11) 13.81/5.65 Obligation: 13.81/5.65 Q DP problem: 13.81/5.65 The TRS P consists of the following rules: 13.81/5.65 13.81/5.65 new_lookupWithDefaultFM01(wx4, Branch(Char(Succ(wx3000)), wx31, wx32, wx33, wx34), Char(Zero), bb) -> new_lookupWithDefaultFM01(wx4, wx33, Char(Zero), bb) 13.81/5.65 13.81/5.65 R is empty. 13.81/5.65 Q is empty. 13.81/5.65 We have to consider all minimal (P,Q,R)-chains. 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (12) QDPSizeChangeProof (EQUIVALENT) 13.81/5.65 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. 13.81/5.65 13.81/5.65 From the DPs we obtained the following set of size-change graphs: 13.81/5.65 *new_lookupWithDefaultFM01(wx4, Branch(Char(Succ(wx3000)), wx31, wx32, wx33, wx34), Char(Zero), bb) -> new_lookupWithDefaultFM01(wx4, wx33, Char(Zero), bb) 13.81/5.65 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 13.81/5.65 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (13) 13.81/5.65 YES 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (14) 13.81/5.65 Obligation: 13.81/5.65 Q DP problem: 13.81/5.65 The TRS P consists of the following rules: 13.81/5.65 13.81/5.65 new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, Succ(wx910), Succ(wx920), ba) -> new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, wx910, wx920, ba) 13.81/5.65 new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, Succ(wx910), Zero, ba) -> new_lookupWithDefaultFM01(wx84, wx89, Char(Succ(wx90)), ba) 13.81/5.65 new_lookupWithDefaultFM01(wx4, Branch(Char(Succ(wx3000)), wx31, wx32, wx33, wx34), Char(Succ(wx500)), bb) -> new_lookupWithDefaultFM0(wx4, wx3000, wx31, wx32, wx33, wx34, wx500, wx500, wx3000, bb) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx370), Zero, h) -> new_lookupWithDefaultFM00(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx36), Succ(wx31), h) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx370), Succ(wx380), h) -> new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, wx370, wx380, h) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Zero, Succ(wx380), h) -> new_lookupWithDefaultFM01(wx30, wx34, Char(Succ(wx36)), h) 13.81/5.65 new_lookupWithDefaultFM01(wx4, Branch(Char(Zero), wx31, wx32, wx33, wx34), Char(Succ(wx500)), bb) -> new_lookupWithDefaultFM01(wx4, wx34, Char(Succ(wx500)), bb) 13.81/5.65 new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Zero, Zero, h) -> new_lookupWithDefaultFM02(wx30, wx31, wx32, wx33, wx34, wx35, wx36, h) 13.81/5.65 new_lookupWithDefaultFM02(wx30, wx31, wx32, wx33, wx34, wx35, wx36, h) -> new_lookupWithDefaultFM00(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx36), Succ(wx31), h) 13.81/5.65 13.81/5.65 R is empty. 13.81/5.65 Q is empty. 13.81/5.65 We have to consider all minimal (P,Q,R)-chains. 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (15) QDPSizeChangeProof (EQUIVALENT) 13.81/5.65 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. 13.81/5.65 13.81/5.65 From the DPs we obtained the following set of size-change graphs: 13.81/5.65 *new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, Succ(wx910), Succ(wx920), ba) -> new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, wx910, wx920, ba) 13.81/5.65 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 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM00(wx84, wx85, wx86, wx87, wx88, wx89, wx90, Succ(wx910), Zero, ba) -> new_lookupWithDefaultFM01(wx84, wx89, Char(Succ(wx90)), ba) 13.81/5.65 The graph contains the following edges 1 >= 1, 6 >= 2, 10 >= 4 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx370), Zero, h) -> new_lookupWithDefaultFM00(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx36), Succ(wx31), h) 13.81/5.65 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 10 >= 10 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM02(wx30, wx31, wx32, wx33, wx34, wx35, wx36, h) -> new_lookupWithDefaultFM00(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx36), Succ(wx31), h) 13.81/5.65 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 8 >= 10 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM01(wx4, Branch(Char(Zero), wx31, wx32, wx33, wx34), Char(Succ(wx500)), bb) -> new_lookupWithDefaultFM01(wx4, wx34, Char(Succ(wx500)), bb) 13.81/5.65 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM01(wx4, Branch(Char(Succ(wx3000)), wx31, wx32, wx33, wx34), Char(Succ(wx500)), bb) -> new_lookupWithDefaultFM0(wx4, wx3000, wx31, wx32, wx33, wx34, wx500, wx500, wx3000, bb) 13.81/5.65 The graph contains the following edges 1 >= 1, 2 > 2, 2 > 3, 2 > 4, 2 > 5, 2 > 6, 3 > 7, 3 > 8, 2 > 9, 4 >= 10 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Zero, Succ(wx380), h) -> new_lookupWithDefaultFM01(wx30, wx34, Char(Succ(wx36)), h) 13.81/5.65 The graph contains the following edges 1 >= 1, 5 >= 2, 10 >= 4 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Succ(wx370), Succ(wx380), h) -> new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, wx370, wx380, h) 13.81/5.65 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 13.81/5.65 13.81/5.65 13.81/5.65 *new_lookupWithDefaultFM0(wx30, wx31, wx32, wx33, wx34, wx35, wx36, Zero, Zero, h) -> new_lookupWithDefaultFM02(wx30, wx31, wx32, wx33, wx34, wx35, wx36, h) 13.81/5.65 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6, 7 >= 7, 10 >= 8 13.81/5.65 13.81/5.65 13.81/5.65 ---------------------------------------- 13.81/5.65 13.81/5.65 (16) 13.81/5.65 YES 14.17/5.75 EOF