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