10.01/4.27 MAYBE 12.25/4.89 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 12.25/4.89 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 12.25/4.89 12.25/4.89 12.25/4.89 H-Termination with start terms of the given HASKELL could not be shown: 12.25/4.89 12.25/4.89 (0) HASKELL 12.25/4.89 (1) LR [EQUIVALENT, 0 ms] 12.25/4.89 (2) HASKELL 12.25/4.89 (3) BR [EQUIVALENT, 0 ms] 12.25/4.89 (4) HASKELL 12.25/4.89 (5) COR [EQUIVALENT, 0 ms] 12.25/4.89 (6) HASKELL 12.25/4.89 (7) Narrow [SOUND, 0 ms] 12.25/4.89 (8) AND 12.25/4.89 (9) QDP 12.25/4.89 (10) MRRProof [EQUIVALENT, 23 ms] 12.25/4.89 (11) QDP 12.25/4.89 (12) NonTerminationLoopProof [COMPLETE, 0 ms] 12.25/4.89 (13) NO 12.25/4.89 (14) QDP 12.25/4.89 (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.25/4.89 (16) YES 12.25/4.89 (17) QDP 12.25/4.89 (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.25/4.89 (19) YES 12.25/4.89 (20) QDP 12.25/4.89 (21) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.25/4.89 (22) YES 12.25/4.89 (23) QDP 12.25/4.89 (24) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.25/4.89 (25) YES 12.25/4.89 (26) Narrow [COMPLETE, 0 ms] 12.25/4.89 (27) AND 12.25/4.89 (28) QDP 12.25/4.89 (29) DependencyGraphProof [EQUIVALENT, 0 ms] 12.25/4.89 (30) TRUE 12.25/4.89 (31) QDP 12.25/4.89 (32) DependencyGraphProof [EQUIVALENT, 0 ms] 12.25/4.89 (33) TRUE 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (0) 12.25/4.89 Obligation: 12.25/4.89 mainModule Main 12.25/4.89 module Maybe where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Main where { 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Monad where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Prelude; 12.25/4.89 foldM :: Monad a => (c -> b -> a c) -> c -> [b] -> a c; 12.25/4.89 foldM _ a [] = return a; 12.25/4.89 foldM f a (x : xs) = f a x >>= (\fax ->foldM f fax xs); 12.25/4.89 12.25/4.89 foldM_ :: Monad c => (b -> a -> c b) -> b -> [a] -> c (); 12.25/4.89 foldM_ f a xs = foldM f a xs >> return (); 12.25/4.89 12.25/4.89 } 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (1) LR (EQUIVALENT) 12.25/4.89 Lambda Reductions: 12.25/4.89 The following Lambda expression 12.25/4.89 "\_->q" 12.25/4.89 is transformed to 12.25/4.89 "gtGt0 q _ = q; 12.25/4.89 " 12.25/4.89 The following Lambda expression 12.25/4.89 "\fax->foldM f fax xs" 12.25/4.89 is transformed to 12.25/4.89 "foldM0 f xs fax = foldM f fax xs; 12.25/4.89 " 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (2) 12.25/4.89 Obligation: 12.25/4.89 mainModule Main 12.25/4.89 module Maybe where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Main where { 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Monad where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Prelude; 12.25/4.89 foldM :: Monad b => (c -> a -> b c) -> c -> [a] -> b c; 12.25/4.89 foldM _ a [] = return a; 12.25/4.89 foldM f a (x : xs) = f a x >>= foldM0 f xs; 12.25/4.89 12.25/4.89 foldM0 f xs fax = foldM f fax xs; 12.25/4.89 12.25/4.89 foldM_ :: Monad a => (b -> c -> a b) -> b -> [c] -> a (); 12.25/4.89 foldM_ f a xs = foldM f a xs >> return (); 12.25/4.89 12.25/4.89 } 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (3) BR (EQUIVALENT) 12.25/4.89 Replaced joker patterns by fresh variables and removed binding patterns. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (4) 12.25/4.89 Obligation: 12.25/4.89 mainModule Main 12.25/4.89 module Maybe where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Main where { 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Monad where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Prelude; 12.25/4.89 foldM :: Monad b => (a -> c -> b a) -> a -> [c] -> b a; 12.25/4.89 foldM vz a [] = return a; 12.25/4.89 foldM f a (x : xs) = f a x >>= foldM0 f xs; 12.25/4.89 12.25/4.89 foldM0 f xs fax = foldM f fax xs; 12.25/4.89 12.25/4.89 foldM_ :: Monad b => (a -> c -> b a) -> a -> [c] -> b (); 12.25/4.89 foldM_ f a xs = foldM f a xs >> return (); 12.25/4.89 12.25/4.89 } 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (5) COR (EQUIVALENT) 12.25/4.89 Cond Reductions: 12.25/4.89 The following Function with conditions 12.25/4.89 "undefined |Falseundefined; 12.25/4.89 " 12.25/4.89 is transformed to 12.25/4.89 "undefined = undefined1; 12.25/4.89 " 12.25/4.89 "undefined0 True = undefined; 12.25/4.89 " 12.25/4.89 "undefined1 = undefined0 False; 12.25/4.89 " 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (6) 12.25/4.89 Obligation: 12.25/4.89 mainModule Main 12.25/4.89 module Maybe where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Main where { 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Monad; 12.25/4.89 import qualified Prelude; 12.25/4.89 } 12.25/4.89 module Monad where { 12.25/4.89 import qualified Main; 12.25/4.89 import qualified Maybe; 12.25/4.89 import qualified Prelude; 12.25/4.89 foldM :: Monad b => (a -> c -> b a) -> a -> [c] -> b a; 12.25/4.89 foldM vz a [] = return a; 12.25/4.89 foldM f a (x : xs) = f a x >>= foldM0 f xs; 12.25/4.89 12.25/4.89 foldM0 f xs fax = foldM f fax xs; 12.25/4.89 12.25/4.89 foldM_ :: Monad b => (a -> c -> b a) -> a -> [c] -> b (); 12.25/4.89 foldM_ f a xs = foldM f a xs >> return (); 12.25/4.89 12.25/4.89 } 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (7) Narrow (SOUND) 12.25/4.89 Haskell To QDPs 12.25/4.89 12.25/4.89 digraph dp_graph { 12.25/4.89 node [outthreshold=100, inthreshold=100];1[label="Monad.foldM_",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 12.25/4.89 3[label="Monad.foldM_ wu3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 12.25/4.89 4[label="Monad.foldM_ wu3 wu4",fontsize=16,color="grey",shape="box"];4 -> 5[label="",style="dashed", color="grey", weight=3]; 12.25/4.89 5[label="Monad.foldM_ wu3 wu4 wu5",fontsize=16,color="black",shape="triangle"];5 -> 6[label="",style="solid", color="black", weight=3]; 12.25/4.89 6[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="blue",shape="box"];639[label=">> :: (Maybe a) -> (Maybe ()) -> Maybe ()",fontsize=10,color="white",style="solid",shape="box"];6 -> 639[label="",style="solid", color="blue", weight=9]; 12.25/4.89 639 -> 7[label="",style="solid", color="blue", weight=3]; 12.25/4.89 640[label=">> :: ([] a) -> ([] ()) -> [] ()",fontsize=10,color="white",style="solid",shape="box"];6 -> 640[label="",style="solid", color="blue", weight=9]; 12.25/4.89 640 -> 8[label="",style="solid", color="blue", weight=3]; 12.25/4.89 641[label=">> :: (IO a) -> (IO ()) -> IO ()",fontsize=10,color="white",style="solid",shape="box"];6 -> 641[label="",style="solid", color="blue", weight=9]; 12.25/4.89 641 -> 9[label="",style="solid", color="blue", weight=3]; 12.25/4.89 7[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="black",shape="box"];7 -> 10[label="",style="solid", color="black", weight=3]; 12.25/4.89 8[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="black",shape="box"];8 -> 11[label="",style="solid", color="black", weight=3]; 12.25/4.89 9[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="black",shape="box"];9 -> 12[label="",style="solid", color="black", weight=3]; 12.25/4.89 10[label="Monad.foldM wu3 wu4 wu5 >>= gtGt0 (return ())",fontsize=16,color="burlywood",shape="triangle"];642[label="wu5/wu50 : wu51",fontsize=10,color="white",style="solid",shape="box"];10 -> 642[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 642 -> 13[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 643[label="wu5/[]",fontsize=10,color="white",style="solid",shape="box"];10 -> 643[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 643 -> 14[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 11 -> 524[label="",style="dashed", color="red", weight=0]; 12.25/4.89 11[label="Monad.foldM wu3 wu4 wu5 >>= gtGt0 (return ())",fontsize=16,color="magenta"];11 -> 525[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 12[label="Monad.foldM wu3 wu4 wu5 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];12 -> 17[label="",style="solid", color="black", weight=3]; 12.25/4.89 13[label="Monad.foldM wu3 wu4 (wu50 : wu51) >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];13 -> 18[label="",style="solid", color="black", weight=3]; 12.25/4.89 14[label="Monad.foldM wu3 wu4 [] >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];14 -> 19[label="",style="solid", color="black", weight=3]; 12.25/4.89 525[label="Monad.foldM wu3 wu4 wu5",fontsize=16,color="burlywood",shape="triangle"];644[label="wu5/wu50 : wu51",fontsize=10,color="white",style="solid",shape="box"];525 -> 644[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 644 -> 579[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 645[label="wu5/[]",fontsize=10,color="white",style="solid",shape="box"];525 -> 645[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 645 -> 580[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 524[label="wu37 >>= gtGt0 (return ())",fontsize=16,color="burlywood",shape="triangle"];646[label="wu37/wu370 : wu371",fontsize=10,color="white",style="solid",shape="box"];524 -> 646[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 646 -> 581[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 647[label="wu37/[]",fontsize=10,color="white",style="solid",shape="box"];524 -> 647[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 647 -> 582[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 17[label="primbindIO (Monad.foldM wu3 wu4 wu5) (gtGt0 (return ()))",fontsize=16,color="burlywood",shape="triangle"];648[label="wu5/wu50 : wu51",fontsize=10,color="white",style="solid",shape="box"];17 -> 648[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 648 -> 22[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 649[label="wu5/[]",fontsize=10,color="white",style="solid",shape="box"];17 -> 649[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 649 -> 23[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 18 -> 24[label="",style="dashed", color="red", weight=0]; 12.25/4.89 18[label="wu3 wu4 wu50 >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="magenta"];18 -> 25[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 19[label="return wu4 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];19 -> 26[label="",style="solid", color="black", weight=3]; 12.25/4.89 579[label="Monad.foldM wu3 wu4 (wu50 : wu51)",fontsize=16,color="black",shape="box"];579 -> 583[label="",style="solid", color="black", weight=3]; 12.25/4.89 580[label="Monad.foldM wu3 wu4 []",fontsize=16,color="black",shape="box"];580 -> 584[label="",style="solid", color="black", weight=3]; 12.25/4.89 581[label="wu370 : wu371 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];581 -> 585[label="",style="solid", color="black", weight=3]; 12.25/4.89 582[label="[] >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];582 -> 586[label="",style="solid", color="black", weight=3]; 12.25/4.89 22[label="primbindIO (Monad.foldM wu3 wu4 (wu50 : wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];22 -> 30[label="",style="solid", color="black", weight=3]; 12.25/4.89 23[label="primbindIO (Monad.foldM wu3 wu4 []) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];23 -> 31[label="",style="solid", color="black", weight=3]; 12.25/4.89 25[label="wu3 wu4 wu50",fontsize=16,color="green",shape="box"];25 -> 32[label="",style="dashed", color="green", weight=3]; 12.25/4.89 25 -> 33[label="",style="dashed", color="green", weight=3]; 12.25/4.89 24[label="wu6 >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="burlywood",shape="triangle"];650[label="wu6/Nothing",fontsize=10,color="white",style="solid",shape="box"];24 -> 650[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 650 -> 34[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 651[label="wu6/Just wu60",fontsize=10,color="white",style="solid",shape="box"];24 -> 651[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 651 -> 35[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 26[label="Just wu4 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];26 -> 36[label="",style="solid", color="black", weight=3]; 12.25/4.89 583 -> 587[label="",style="dashed", color="red", weight=0]; 12.25/4.89 583[label="wu3 wu4 wu50 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="magenta"];583 -> 588[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 584[label="return wu4",fontsize=16,color="black",shape="triangle"];584 -> 589[label="",style="solid", color="black", weight=3]; 12.25/4.89 585 -> 611[label="",style="dashed", color="red", weight=0]; 12.25/4.89 585[label="gtGt0 (return ()) wu370 ++ (wu371 >>= gtGt0 (return ()))",fontsize=16,color="magenta"];585 -> 612[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 585 -> 613[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 586[label="[]",fontsize=16,color="green",shape="box"];30[label="primbindIO (wu3 wu4 wu50 >>= Monad.foldM0 wu3 wu51) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];30 -> 44[label="",style="solid", color="black", weight=3]; 12.25/4.89 31[label="primbindIO (return wu4) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];31 -> 45[label="",style="solid", color="black", weight=3]; 12.25/4.89 32[label="wu4",fontsize=16,color="green",shape="box"];33[label="wu50",fontsize=16,color="green",shape="box"];34[label="Nothing >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];34 -> 46[label="",style="solid", color="black", weight=3]; 12.25/4.89 35[label="Just wu60 >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];35 -> 47[label="",style="solid", color="black", weight=3]; 12.25/4.89 36[label="gtGt0 (return ()) wu4",fontsize=16,color="black",shape="box"];36 -> 48[label="",style="solid", color="black", weight=3]; 12.25/4.89 588[label="wu3 wu4 wu50",fontsize=16,color="green",shape="box"];588 -> 593[label="",style="dashed", color="green", weight=3]; 12.25/4.89 588 -> 594[label="",style="dashed", color="green", weight=3]; 12.25/4.89 587[label="wu38 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="burlywood",shape="triangle"];652[label="wu38/wu380 : wu381",fontsize=10,color="white",style="solid",shape="box"];587 -> 652[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 652 -> 595[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 653[label="wu38/[]",fontsize=10,color="white",style="solid",shape="box"];587 -> 653[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 653 -> 596[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 589[label="wu4 : []",fontsize=16,color="green",shape="box"];612 -> 524[label="",style="dashed", color="red", weight=0]; 12.25/4.89 612[label="wu371 >>= gtGt0 (return ())",fontsize=16,color="magenta"];612 -> 624[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 613 -> 625[label="",style="dashed", color="red", weight=0]; 12.25/4.89 613[label="gtGt0 (return ()) wu370",fontsize=16,color="magenta"];613 -> 626[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 611[label="wu43 ++ wu42",fontsize=16,color="burlywood",shape="triangle"];654[label="wu43/wu430 : wu431",fontsize=10,color="white",style="solid",shape="box"];611 -> 654[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 654 -> 627[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 655[label="wu43/[]",fontsize=10,color="white",style="solid",shape="box"];611 -> 655[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 655 -> 628[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 44 -> 52[label="",style="dashed", color="red", weight=0]; 12.25/4.89 44[label="primbindIO (primbindIO (wu3 wu4 wu50) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="magenta"];44 -> 53[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 45[label="primbindIO (primretIO wu4) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];45 -> 54[label="",style="solid", color="black", weight=3]; 12.25/4.89 46[label="Nothing >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];46 -> 55[label="",style="solid", color="black", weight=3]; 12.25/4.89 47[label="Monad.foldM0 wu3 wu51 wu60 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];47 -> 56[label="",style="solid", color="black", weight=3]; 12.25/4.89 48[label="return ()",fontsize=16,color="black",shape="box"];48 -> 57[label="",style="solid", color="black", weight=3]; 12.25/4.89 593[label="wu4",fontsize=16,color="green",shape="box"];594[label="wu50",fontsize=16,color="green",shape="box"];595[label="wu380 : wu381 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="black",shape="box"];595 -> 600[label="",style="solid", color="black", weight=3]; 12.25/4.89 596[label="[] >>= Monad.foldM0 wu3 wu51",fontsize=16,color="black",shape="box"];596 -> 601[label="",style="solid", color="black", weight=3]; 12.25/4.89 624[label="wu371",fontsize=16,color="green",shape="box"];626 -> 584[label="",style="dashed", color="red", weight=0]; 12.25/4.89 626[label="return ()",fontsize=16,color="magenta"];626 -> 629[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 625[label="gtGt0 wu44 wu370",fontsize=16,color="black",shape="triangle"];625 -> 630[label="",style="solid", color="black", weight=3]; 12.25/4.89 627[label="(wu430 : wu431) ++ wu42",fontsize=16,color="black",shape="box"];627 -> 633[label="",style="solid", color="black", weight=3]; 12.25/4.89 628[label="[] ++ wu42",fontsize=16,color="black",shape="box"];628 -> 634[label="",style="solid", color="black", weight=3]; 12.25/4.89 53[label="wu3 wu4 wu50",fontsize=16,color="green",shape="box"];53 -> 62[label="",style="dashed", color="green", weight=3]; 12.25/4.89 53 -> 63[label="",style="dashed", color="green", weight=3]; 12.25/4.89 52[label="primbindIO (primbindIO wu8 (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="burlywood",shape="triangle"];656[label="wu8/IO wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 656[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 656 -> 64[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 657[label="wu8/AProVE_IO wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 657[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 657 -> 65[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 658[label="wu8/AProVE_Exception wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 658[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 658 -> 66[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 659[label="wu8/AProVE_Error wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 659[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 659 -> 67[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 54[label="primbindIO (AProVE_IO wu4) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];54 -> 68[label="",style="solid", color="black", weight=3]; 12.25/4.89 55[label="Nothing",fontsize=16,color="green",shape="box"];56 -> 10[label="",style="dashed", color="red", weight=0]; 12.25/4.89 56[label="Monad.foldM wu3 wu60 wu51 >>= gtGt0 (return ())",fontsize=16,color="magenta"];56 -> 69[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 56 -> 70[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 57[label="Just ()",fontsize=16,color="green",shape="box"];600 -> 611[label="",style="dashed", color="red", weight=0]; 12.25/4.89 600[label="Monad.foldM0 wu3 wu51 wu380 ++ (wu381 >>= Monad.foldM0 wu3 wu51)",fontsize=16,color="magenta"];600 -> 618[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 600 -> 619[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 601[label="[]",fontsize=16,color="green",shape="box"];629[label="()",fontsize=16,color="green",shape="box"];630[label="wu44",fontsize=16,color="green",shape="box"];633[label="wu430 : wu431 ++ wu42",fontsize=16,color="green",shape="box"];633 -> 637[label="",style="dashed", color="green", weight=3]; 12.25/4.89 634[label="wu42",fontsize=16,color="green",shape="box"];62[label="wu4",fontsize=16,color="green",shape="box"];63[label="wu50",fontsize=16,color="green",shape="box"];64[label="primbindIO (primbindIO (IO wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];64 -> 74[label="",style="solid", color="black", weight=3]; 12.25/4.89 65[label="primbindIO (primbindIO (AProVE_IO wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];65 -> 75[label="",style="solid", color="black", weight=3]; 12.25/4.89 66[label="primbindIO (primbindIO (AProVE_Exception wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];66 -> 76[label="",style="solid", color="black", weight=3]; 12.25/4.89 67[label="primbindIO (primbindIO (AProVE_Error wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];67 -> 77[label="",style="solid", color="black", weight=3]; 12.25/4.89 68[label="gtGt0 (return ()) wu4",fontsize=16,color="black",shape="box"];68 -> 78[label="",style="solid", color="black", weight=3]; 12.25/4.89 69[label="wu51",fontsize=16,color="green",shape="box"];70[label="wu60",fontsize=16,color="green",shape="box"];618 -> 587[label="",style="dashed", color="red", weight=0]; 12.25/4.89 618[label="wu381 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="magenta"];618 -> 631[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 619[label="Monad.foldM0 wu3 wu51 wu380",fontsize=16,color="black",shape="box"];619 -> 632[label="",style="solid", color="black", weight=3]; 12.25/4.89 637 -> 611[label="",style="dashed", color="red", weight=0]; 12.25/4.89 637[label="wu431 ++ wu42",fontsize=16,color="magenta"];637 -> 638[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 74[label="error []",fontsize=16,color="red",shape="box"];75[label="primbindIO (Monad.foldM0 wu3 wu51 wu80) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];75 -> 82[label="",style="solid", color="black", weight=3]; 12.25/4.89 76[label="primbindIO (AProVE_Exception wu80) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];76 -> 83[label="",style="solid", color="black", weight=3]; 12.25/4.89 77[label="primbindIO (AProVE_Error wu80) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];77 -> 84[label="",style="solid", color="black", weight=3]; 12.25/4.89 78[label="return ()",fontsize=16,color="black",shape="box"];78 -> 85[label="",style="solid", color="black", weight=3]; 12.25/4.89 631[label="wu381",fontsize=16,color="green",shape="box"];632 -> 525[label="",style="dashed", color="red", weight=0]; 12.25/4.89 632[label="Monad.foldM wu3 wu380 wu51",fontsize=16,color="magenta"];632 -> 635[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 632 -> 636[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 638[label="wu431",fontsize=16,color="green",shape="box"];82 -> 17[label="",style="dashed", color="red", weight=0]; 12.25/4.89 82[label="primbindIO (Monad.foldM wu3 wu80 wu51) (gtGt0 (return ()))",fontsize=16,color="magenta"];82 -> 90[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 82 -> 91[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 83[label="AProVE_Exception wu80",fontsize=16,color="green",shape="box"];84[label="AProVE_Error wu80",fontsize=16,color="green",shape="box"];85[label="primretIO ()",fontsize=16,color="black",shape="box"];85 -> 92[label="",style="solid", color="black", weight=3]; 12.25/4.89 635[label="wu51",fontsize=16,color="green",shape="box"];636[label="wu380",fontsize=16,color="green",shape="box"];90[label="wu51",fontsize=16,color="green",shape="box"];91[label="wu80",fontsize=16,color="green",shape="box"];92[label="AProVE_IO ()",fontsize=16,color="green",shape="box"];} 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (8) 12.25/4.89 Complex Obligation (AND) 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (9) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_foldM(wu3, :(wu50, wu51), h, ba) -> new_gtGtEs(wu3, wu51, h, ba) 12.25/4.89 new_gtGtEs(wu3, wu51, h, ba) -> new_gtGtEs(wu3, wu51, h, ba) 12.25/4.89 new_gtGtEs(wu3, wu51, h, ba) -> new_foldM(wu3, wu51, h, ba) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all minimal (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (10) MRRProof (EQUIVALENT) 12.25/4.89 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 12.25/4.89 12.25/4.89 Strictly oriented dependency pairs: 12.25/4.89 12.25/4.89 new_foldM(wu3, :(wu50, wu51), h, ba) -> new_gtGtEs(wu3, wu51, h, ba) 12.25/4.89 new_gtGtEs(wu3, wu51, h, ba) -> new_foldM(wu3, wu51, h, ba) 12.25/4.89 12.25/4.89 12.25/4.89 Used ordering: Polynomial interpretation [POLO]: 12.25/4.89 12.25/4.89 POL(:(x_1, x_2)) = 2 + x_1 + 2*x_2 12.25/4.89 POL(new_foldM(x_1, x_2, x_3, x_4)) = x_1 + 2*x_2 + x_3 + x_4 12.25/4.89 POL(new_gtGtEs(x_1, x_2, x_3, x_4)) = 2 + x_1 + 2*x_2 + x_3 + x_4 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (11) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_gtGtEs(wu3, wu51, h, ba) -> new_gtGtEs(wu3, wu51, h, ba) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all minimal (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (12) NonTerminationLoopProof (COMPLETE) 12.25/4.89 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 12.25/4.89 Found a loop by semiunifying a rule from P directly. 12.25/4.89 12.25/4.89 s = new_gtGtEs(wu3, wu51, h, ba) evaluates to t =new_gtGtEs(wu3, wu51, h, ba) 12.25/4.89 12.25/4.89 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 12.25/4.89 * Matcher: [ ] 12.25/4.89 * Semiunifier: [ ] 12.25/4.89 12.25/4.89 -------------------------------------------------------------------------------- 12.25/4.89 Rewriting sequence 12.25/4.89 12.25/4.89 The DP semiunifies directly so there is only one rewrite step from new_gtGtEs(wu3, wu51, h, ba) to new_gtGtEs(wu3, wu51, h, ba). 12.25/4.89 12.25/4.89 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (13) 12.25/4.89 NO 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (14) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_primbindIO(wu3, wu51, h, ba) -> new_primbindIO0(wu3, wu51, h, ba) 12.25/4.89 new_primbindIO0(wu3, :(wu50, wu51), h, ba) -> new_primbindIO(wu3, wu51, h, ba) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all minimal (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (15) QDPSizeChangeProof (EQUIVALENT) 12.25/4.89 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. 12.25/4.89 12.25/4.89 From the DPs we obtained the following set of size-change graphs: 12.25/4.89 *new_primbindIO0(wu3, :(wu50, wu51), h, ba) -> new_primbindIO(wu3, wu51, h, ba) 12.25/4.89 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 12.25/4.89 12.25/4.89 12.25/4.89 *new_primbindIO(wu3, wu51, h, ba) -> new_primbindIO0(wu3, wu51, h, ba) 12.25/4.89 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (16) 12.25/4.89 YES 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (17) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_psPs(:(wu430, wu431), wu42, h) -> new_psPs(wu431, wu42, h) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all minimal (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (18) QDPSizeChangeProof (EQUIVALENT) 12.25/4.89 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. 12.25/4.89 12.25/4.89 From the DPs we obtained the following set of size-change graphs: 12.25/4.89 *new_psPs(:(wu430, wu431), wu42, h) -> new_psPs(wu431, wu42, h) 12.25/4.89 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (19) 12.25/4.89 YES 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (20) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_gtGtEs2(wu3, :(wu50, wu51), h, ba) -> new_gtGtEs1(wu3, wu51, h, ba) 12.25/4.89 new_gtGtEs1(wu3, wu51, h, ba) -> new_gtGtEs2(wu3, wu51, h, ba) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all minimal (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (21) QDPSizeChangeProof (EQUIVALENT) 12.25/4.89 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. 12.25/4.89 12.25/4.89 From the DPs we obtained the following set of size-change graphs: 12.25/4.89 *new_gtGtEs1(wu3, wu51, h, ba) -> new_gtGtEs2(wu3, wu51, h, ba) 12.25/4.89 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4 12.25/4.89 12.25/4.89 12.25/4.89 *new_gtGtEs2(wu3, :(wu50, wu51), h, ba) -> new_gtGtEs1(wu3, wu51, h, ba) 12.25/4.89 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (22) 12.25/4.89 YES 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (23) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_gtGtEs0(:(wu370, wu371), h) -> new_gtGtEs0(wu371, h) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all minimal (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (24) QDPSizeChangeProof (EQUIVALENT) 12.25/4.89 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. 12.25/4.89 12.25/4.89 From the DPs we obtained the following set of size-change graphs: 12.25/4.89 *new_gtGtEs0(:(wu370, wu371), h) -> new_gtGtEs0(wu371, h) 12.25/4.89 The graph contains the following edges 1 > 1, 2 >= 2 12.25/4.89 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (25) 12.25/4.89 YES 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (26) Narrow (COMPLETE) 12.25/4.89 Haskell To QDPs 12.25/4.89 12.25/4.89 digraph dp_graph { 12.25/4.89 node [outthreshold=100, inthreshold=100];1[label="Monad.foldM_",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 12.25/4.89 3[label="Monad.foldM_ wu3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 12.25/4.89 4[label="Monad.foldM_ wu3 wu4",fontsize=16,color="grey",shape="box"];4 -> 5[label="",style="dashed", color="grey", weight=3]; 12.25/4.89 5[label="Monad.foldM_ wu3 wu4 wu5",fontsize=16,color="black",shape="triangle"];5 -> 6[label="",style="solid", color="black", weight=3]; 12.25/4.89 6[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="blue",shape="box"];639[label=">> :: (Maybe a) -> (Maybe ()) -> Maybe ()",fontsize=10,color="white",style="solid",shape="box"];6 -> 639[label="",style="solid", color="blue", weight=9]; 12.25/4.89 639 -> 7[label="",style="solid", color="blue", weight=3]; 12.25/4.89 640[label=">> :: ([] a) -> ([] ()) -> [] ()",fontsize=10,color="white",style="solid",shape="box"];6 -> 640[label="",style="solid", color="blue", weight=9]; 12.25/4.89 640 -> 8[label="",style="solid", color="blue", weight=3]; 12.25/4.89 641[label=">> :: (IO a) -> (IO ()) -> IO ()",fontsize=10,color="white",style="solid",shape="box"];6 -> 641[label="",style="solid", color="blue", weight=9]; 12.25/4.89 641 -> 9[label="",style="solid", color="blue", weight=3]; 12.25/4.89 7[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="black",shape="box"];7 -> 10[label="",style="solid", color="black", weight=3]; 12.25/4.89 8[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="black",shape="box"];8 -> 11[label="",style="solid", color="black", weight=3]; 12.25/4.89 9[label="Monad.foldM wu3 wu4 wu5 >> return ()",fontsize=16,color="black",shape="box"];9 -> 12[label="",style="solid", color="black", weight=3]; 12.25/4.89 10[label="Monad.foldM wu3 wu4 wu5 >>= gtGt0 (return ())",fontsize=16,color="burlywood",shape="triangle"];642[label="wu5/wu50 : wu51",fontsize=10,color="white",style="solid",shape="box"];10 -> 642[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 642 -> 13[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 643[label="wu5/[]",fontsize=10,color="white",style="solid",shape="box"];10 -> 643[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 643 -> 14[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 11 -> 524[label="",style="dashed", color="red", weight=0]; 12.25/4.89 11[label="Monad.foldM wu3 wu4 wu5 >>= gtGt0 (return ())",fontsize=16,color="magenta"];11 -> 525[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 12[label="Monad.foldM wu3 wu4 wu5 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];12 -> 17[label="",style="solid", color="black", weight=3]; 12.25/4.89 13[label="Monad.foldM wu3 wu4 (wu50 : wu51) >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];13 -> 18[label="",style="solid", color="black", weight=3]; 12.25/4.89 14[label="Monad.foldM wu3 wu4 [] >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];14 -> 19[label="",style="solid", color="black", weight=3]; 12.25/4.89 525[label="Monad.foldM wu3 wu4 wu5",fontsize=16,color="burlywood",shape="triangle"];644[label="wu5/wu50 : wu51",fontsize=10,color="white",style="solid",shape="box"];525 -> 644[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 644 -> 579[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 645[label="wu5/[]",fontsize=10,color="white",style="solid",shape="box"];525 -> 645[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 645 -> 580[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 524[label="wu37 >>= gtGt0 (return ())",fontsize=16,color="burlywood",shape="triangle"];646[label="wu37/wu370 : wu371",fontsize=10,color="white",style="solid",shape="box"];524 -> 646[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 646 -> 581[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 647[label="wu37/[]",fontsize=10,color="white",style="solid",shape="box"];524 -> 647[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 647 -> 582[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 17[label="primbindIO (Monad.foldM wu3 wu4 wu5) (gtGt0 (return ()))",fontsize=16,color="burlywood",shape="triangle"];648[label="wu5/wu50 : wu51",fontsize=10,color="white",style="solid",shape="box"];17 -> 648[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 648 -> 22[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 649[label="wu5/[]",fontsize=10,color="white",style="solid",shape="box"];17 -> 649[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 649 -> 23[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 18 -> 24[label="",style="dashed", color="red", weight=0]; 12.25/4.89 18[label="wu3 wu4 wu50 >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="magenta"];18 -> 25[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 19[label="return wu4 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];19 -> 26[label="",style="solid", color="black", weight=3]; 12.25/4.89 579[label="Monad.foldM wu3 wu4 (wu50 : wu51)",fontsize=16,color="black",shape="box"];579 -> 583[label="",style="solid", color="black", weight=3]; 12.25/4.89 580[label="Monad.foldM wu3 wu4 []",fontsize=16,color="black",shape="box"];580 -> 584[label="",style="solid", color="black", weight=3]; 12.25/4.89 581[label="wu370 : wu371 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];581 -> 585[label="",style="solid", color="black", weight=3]; 12.25/4.89 582[label="[] >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];582 -> 586[label="",style="solid", color="black", weight=3]; 12.25/4.89 22[label="primbindIO (Monad.foldM wu3 wu4 (wu50 : wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];22 -> 30[label="",style="solid", color="black", weight=3]; 12.25/4.89 23[label="primbindIO (Monad.foldM wu3 wu4 []) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];23 -> 31[label="",style="solid", color="black", weight=3]; 12.25/4.89 25[label="wu3 wu4 wu50",fontsize=16,color="green",shape="box"];25 -> 32[label="",style="dashed", color="green", weight=3]; 12.25/4.89 25 -> 33[label="",style="dashed", color="green", weight=3]; 12.25/4.89 24[label="wu6 >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="burlywood",shape="triangle"];650[label="wu6/Nothing",fontsize=10,color="white",style="solid",shape="box"];24 -> 650[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 650 -> 34[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 651[label="wu6/Just wu60",fontsize=10,color="white",style="solid",shape="box"];24 -> 651[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 651 -> 35[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 26[label="Just wu4 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];26 -> 36[label="",style="solid", color="black", weight=3]; 12.25/4.89 583 -> 587[label="",style="dashed", color="red", weight=0]; 12.25/4.89 583[label="wu3 wu4 wu50 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="magenta"];583 -> 588[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 584[label="return wu4",fontsize=16,color="black",shape="triangle"];584 -> 589[label="",style="solid", color="black", weight=3]; 12.25/4.89 585 -> 611[label="",style="dashed", color="red", weight=0]; 12.25/4.89 585[label="gtGt0 (return ()) wu370 ++ (wu371 >>= gtGt0 (return ()))",fontsize=16,color="magenta"];585 -> 612[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 585 -> 613[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 586[label="[]",fontsize=16,color="green",shape="box"];30[label="primbindIO (wu3 wu4 wu50 >>= Monad.foldM0 wu3 wu51) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];30 -> 44[label="",style="solid", color="black", weight=3]; 12.25/4.89 31[label="primbindIO (return wu4) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];31 -> 45[label="",style="solid", color="black", weight=3]; 12.25/4.89 32[label="wu4",fontsize=16,color="green",shape="box"];33[label="wu50",fontsize=16,color="green",shape="box"];34[label="Nothing >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];34 -> 46[label="",style="solid", color="black", weight=3]; 12.25/4.89 35[label="Just wu60 >>= Monad.foldM0 wu3 wu51 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];35 -> 47[label="",style="solid", color="black", weight=3]; 12.25/4.89 36[label="gtGt0 (return ()) wu4",fontsize=16,color="black",shape="box"];36 -> 48[label="",style="solid", color="black", weight=3]; 12.25/4.89 588[label="wu3 wu4 wu50",fontsize=16,color="green",shape="box"];588 -> 593[label="",style="dashed", color="green", weight=3]; 12.25/4.89 588 -> 594[label="",style="dashed", color="green", weight=3]; 12.25/4.89 587[label="wu38 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="burlywood",shape="triangle"];652[label="wu38/wu380 : wu381",fontsize=10,color="white",style="solid",shape="box"];587 -> 652[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 652 -> 595[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 653[label="wu38/[]",fontsize=10,color="white",style="solid",shape="box"];587 -> 653[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 653 -> 596[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 589[label="wu4 : []",fontsize=16,color="green",shape="box"];612 -> 524[label="",style="dashed", color="red", weight=0]; 12.25/4.89 612[label="wu371 >>= gtGt0 (return ())",fontsize=16,color="magenta"];612 -> 624[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 613 -> 625[label="",style="dashed", color="red", weight=0]; 12.25/4.89 613[label="gtGt0 (return ()) wu370",fontsize=16,color="magenta"];613 -> 626[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 611[label="wu43 ++ wu42",fontsize=16,color="burlywood",shape="triangle"];654[label="wu43/wu430 : wu431",fontsize=10,color="white",style="solid",shape="box"];611 -> 654[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 654 -> 627[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 655[label="wu43/[]",fontsize=10,color="white",style="solid",shape="box"];611 -> 655[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 655 -> 628[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 44 -> 52[label="",style="dashed", color="red", weight=0]; 12.25/4.89 44[label="primbindIO (primbindIO (wu3 wu4 wu50) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="magenta"];44 -> 53[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 45[label="primbindIO (primretIO wu4) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];45 -> 54[label="",style="solid", color="black", weight=3]; 12.25/4.89 46[label="Nothing >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];46 -> 55[label="",style="solid", color="black", weight=3]; 12.25/4.89 47[label="Monad.foldM0 wu3 wu51 wu60 >>= gtGt0 (return ())",fontsize=16,color="black",shape="box"];47 -> 56[label="",style="solid", color="black", weight=3]; 12.25/4.89 48[label="return ()",fontsize=16,color="black",shape="box"];48 -> 57[label="",style="solid", color="black", weight=3]; 12.25/4.89 593[label="wu4",fontsize=16,color="green",shape="box"];594[label="wu50",fontsize=16,color="green",shape="box"];595[label="wu380 : wu381 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="black",shape="box"];595 -> 600[label="",style="solid", color="black", weight=3]; 12.25/4.89 596[label="[] >>= Monad.foldM0 wu3 wu51",fontsize=16,color="black",shape="box"];596 -> 601[label="",style="solid", color="black", weight=3]; 12.25/4.89 624[label="wu371",fontsize=16,color="green",shape="box"];626 -> 584[label="",style="dashed", color="red", weight=0]; 12.25/4.89 626[label="return ()",fontsize=16,color="magenta"];626 -> 629[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 625[label="gtGt0 wu44 wu370",fontsize=16,color="black",shape="triangle"];625 -> 630[label="",style="solid", color="black", weight=3]; 12.25/4.89 627[label="(wu430 : wu431) ++ wu42",fontsize=16,color="black",shape="box"];627 -> 633[label="",style="solid", color="black", weight=3]; 12.25/4.89 628[label="[] ++ wu42",fontsize=16,color="black",shape="box"];628 -> 634[label="",style="solid", color="black", weight=3]; 12.25/4.89 53[label="wu3 wu4 wu50",fontsize=16,color="green",shape="box"];53 -> 62[label="",style="dashed", color="green", weight=3]; 12.25/4.89 53 -> 63[label="",style="dashed", color="green", weight=3]; 12.25/4.89 52[label="primbindIO (primbindIO wu8 (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="burlywood",shape="triangle"];656[label="wu8/IO wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 656[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 656 -> 64[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 657[label="wu8/AProVE_IO wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 657[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 657 -> 65[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 658[label="wu8/AProVE_Exception wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 658[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 658 -> 66[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 659[label="wu8/AProVE_Error wu80",fontsize=10,color="white",style="solid",shape="box"];52 -> 659[label="",style="solid", color="burlywood", weight=9]; 12.25/4.89 659 -> 67[label="",style="solid", color="burlywood", weight=3]; 12.25/4.89 54[label="primbindIO (AProVE_IO wu4) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];54 -> 68[label="",style="solid", color="black", weight=3]; 12.25/4.89 55[label="Nothing",fontsize=16,color="green",shape="box"];56 -> 10[label="",style="dashed", color="red", weight=0]; 12.25/4.89 56[label="Monad.foldM wu3 wu60 wu51 >>= gtGt0 (return ())",fontsize=16,color="magenta"];56 -> 69[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 56 -> 70[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 57[label="Just ()",fontsize=16,color="green",shape="box"];600 -> 611[label="",style="dashed", color="red", weight=0]; 12.25/4.89 600[label="Monad.foldM0 wu3 wu51 wu380 ++ (wu381 >>= Monad.foldM0 wu3 wu51)",fontsize=16,color="magenta"];600 -> 618[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 600 -> 619[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 601[label="[]",fontsize=16,color="green",shape="box"];629[label="()",fontsize=16,color="green",shape="box"];630[label="wu44",fontsize=16,color="green",shape="box"];633[label="wu430 : wu431 ++ wu42",fontsize=16,color="green",shape="box"];633 -> 637[label="",style="dashed", color="green", weight=3]; 12.25/4.89 634[label="wu42",fontsize=16,color="green",shape="box"];62[label="wu4",fontsize=16,color="green",shape="box"];63[label="wu50",fontsize=16,color="green",shape="box"];64[label="primbindIO (primbindIO (IO wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];64 -> 74[label="",style="solid", color="black", weight=3]; 12.25/4.89 65[label="primbindIO (primbindIO (AProVE_IO wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];65 -> 75[label="",style="solid", color="black", weight=3]; 12.25/4.89 66[label="primbindIO (primbindIO (AProVE_Exception wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];66 -> 76[label="",style="solid", color="black", weight=3]; 12.25/4.89 67[label="primbindIO (primbindIO (AProVE_Error wu80) (Monad.foldM0 wu3 wu51)) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];67 -> 77[label="",style="solid", color="black", weight=3]; 12.25/4.89 68[label="gtGt0 (return ()) wu4",fontsize=16,color="black",shape="box"];68 -> 78[label="",style="solid", color="black", weight=3]; 12.25/4.89 69[label="wu51",fontsize=16,color="green",shape="box"];70[label="wu60",fontsize=16,color="green",shape="box"];618 -> 587[label="",style="dashed", color="red", weight=0]; 12.25/4.89 618[label="wu381 >>= Monad.foldM0 wu3 wu51",fontsize=16,color="magenta"];618 -> 631[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 619[label="Monad.foldM0 wu3 wu51 wu380",fontsize=16,color="black",shape="box"];619 -> 632[label="",style="solid", color="black", weight=3]; 12.25/4.89 637 -> 611[label="",style="dashed", color="red", weight=0]; 12.25/4.89 637[label="wu431 ++ wu42",fontsize=16,color="magenta"];637 -> 638[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 74[label="error []",fontsize=16,color="red",shape="box"];75[label="primbindIO (Monad.foldM0 wu3 wu51 wu80) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];75 -> 82[label="",style="solid", color="black", weight=3]; 12.25/4.89 76[label="primbindIO (AProVE_Exception wu80) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];76 -> 83[label="",style="solid", color="black", weight=3]; 12.25/4.89 77[label="primbindIO (AProVE_Error wu80) (gtGt0 (return ()))",fontsize=16,color="black",shape="box"];77 -> 84[label="",style="solid", color="black", weight=3]; 12.25/4.89 78[label="return ()",fontsize=16,color="black",shape="box"];78 -> 85[label="",style="solid", color="black", weight=3]; 12.25/4.89 631[label="wu381",fontsize=16,color="green",shape="box"];632 -> 525[label="",style="dashed", color="red", weight=0]; 12.25/4.89 632[label="Monad.foldM wu3 wu380 wu51",fontsize=16,color="magenta"];632 -> 635[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 632 -> 636[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 638[label="wu431",fontsize=16,color="green",shape="box"];82 -> 17[label="",style="dashed", color="red", weight=0]; 12.25/4.89 82[label="primbindIO (Monad.foldM wu3 wu80 wu51) (gtGt0 (return ()))",fontsize=16,color="magenta"];82 -> 90[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 82 -> 91[label="",style="dashed", color="magenta", weight=3]; 12.25/4.89 83[label="AProVE_Exception wu80",fontsize=16,color="green",shape="box"];84[label="AProVE_Error wu80",fontsize=16,color="green",shape="box"];85[label="primretIO ()",fontsize=16,color="black",shape="box"];85 -> 92[label="",style="solid", color="black", weight=3]; 12.25/4.89 635[label="wu51",fontsize=16,color="green",shape="box"];636[label="wu380",fontsize=16,color="green",shape="box"];90[label="wu51",fontsize=16,color="green",shape="box"];91[label="wu80",fontsize=16,color="green",shape="box"];92[label="AProVE_IO ()",fontsize=16,color="green",shape="box"];} 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (27) 12.25/4.89 Complex Obligation (AND) 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (28) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_gtGtEs1(Just(wu60), wu3, wu51, h, ba, []) -> new_gtGtEs2(wu3, wu60, wu51, h, ba, []) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (29) DependencyGraphProof (EQUIVALENT) 12.25/4.89 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (30) 12.25/4.89 TRUE 12.25/4.89 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (31) 12.25/4.89 Obligation: 12.25/4.89 Q DP problem: 12.25/4.89 The TRS P consists of the following rules: 12.25/4.89 12.25/4.89 new_primbindIO(AProVE_IO(wu80), wu3, wu51, h, ba, []) -> new_primbindIO0(wu3, wu80, wu51, h, ba, []) 12.25/4.89 12.25/4.89 R is empty. 12.25/4.89 Q is empty. 12.25/4.89 We have to consider all (P,Q,R)-chains. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (32) DependencyGraphProof (EQUIVALENT) 12.25/4.89 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. 12.25/4.89 ---------------------------------------- 12.25/4.89 12.25/4.89 (33) 12.25/4.89 TRUE 12.50/4.95 EOF