8.49/3.67 NO 10.42/4.26 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 10.42/4.26 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.42/4.26 10.42/4.26 10.42/4.26 H-Termination with start terms of the given HASKELL could be disproven: 10.42/4.26 10.42/4.26 (0) HASKELL 10.42/4.26 (1) LR [EQUIVALENT, 0 ms] 10.42/4.26 (2) HASKELL 10.42/4.26 (3) BR [EQUIVALENT, 0 ms] 10.42/4.26 (4) HASKELL 10.42/4.26 (5) COR [EQUIVALENT, 0 ms] 10.42/4.26 (6) HASKELL 10.42/4.26 (7) LetRed [EQUIVALENT, 0 ms] 10.42/4.26 (8) HASKELL 10.42/4.26 (9) Narrow [COMPLETE, 0 ms] 10.42/4.26 (10) QDP 10.42/4.26 (11) NonTerminationLoopProof [COMPLETE, 0 ms] 10.42/4.26 (12) NO 10.42/4.26 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (0) 10.42/4.26 Obligation: 10.42/4.26 mainModule Main 10.42/4.26 module Main where { 10.42/4.26 import qualified Prelude; 10.42/4.26 } 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (1) LR (EQUIVALENT) 10.42/4.26 Lambda Reductions: 10.42/4.26 The following Lambda expression 10.42/4.26 "\fs->Hugs_BlockThread (s . fromObj) m'" 10.42/4.26 is transformed to 10.42/4.26 "blockIO0 f s = Hugs_BlockThread (s . fromObj) m'; 10.42/4.26 " 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (2) 10.42/4.26 Obligation: 10.42/4.26 mainModule Main 10.42/4.26 module Main where { 10.42/4.26 import qualified Prelude; 10.42/4.26 } 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (3) BR (EQUIVALENT) 10.42/4.26 Replaced joker patterns by fresh variables and removed binding patterns. 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (4) 10.42/4.26 Obligation: 10.42/4.26 mainModule Main 10.42/4.26 module Main where { 10.42/4.26 import qualified Prelude; 10.42/4.26 } 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (5) COR (EQUIVALENT) 10.42/4.26 Cond Reductions: 10.42/4.26 The following Function with conditions 10.42/4.26 "undefined |Falseundefined; 10.42/4.26 " 10.42/4.26 is transformed to 10.42/4.26 "undefined = undefined1; 10.42/4.26 " 10.42/4.26 "undefined0 True = undefined; 10.42/4.26 " 10.42/4.26 "undefined1 = undefined0 False; 10.42/4.26 " 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (6) 10.42/4.26 Obligation: 10.42/4.26 mainModule Main 10.42/4.26 module Main where { 10.42/4.26 import qualified Prelude; 10.42/4.26 } 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (7) LetRed (EQUIVALENT) 10.42/4.26 Let/Where Reductions: 10.42/4.26 The bindings of the following Let/Where expression 10.42/4.26 "IO blockIO0 where { 10.42/4.26 blockIO0 f s = Hugs_BlockThread (s . fromObj) m'; 10.42/4.26 ; 10.42/4.26 m' k = threadToIOResult (m (k . toObj)); 10.42/4.26 } 10.42/4.26 " 10.42/4.26 are unpacked to the following functions on top level 10.42/4.26 "blockIOBlockIO0 vy f s = Hugs_BlockThread (s . fromObj) (blockIOM' vy); 10.42/4.26 " 10.42/4.26 "blockIOM' vy k = threadToIOResult (vy (k . toObj)); 10.42/4.26 " 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (8) 10.42/4.26 Obligation: 10.42/4.26 mainModule Main 10.42/4.26 module Main where { 10.42/4.26 import qualified Prelude; 10.42/4.26 } 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (9) Narrow (COMPLETE) 10.42/4.26 Haskell To QDPs 10.42/4.26 10.42/4.26 digraph dp_graph { 10.42/4.26 node [outthreshold=100, inthreshold=100];1[label="blockIO",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 3[label="blockIO vz3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 10.42/4.26 4[label="IO (blockIOBlockIO0 vz3)",fontsize=16,color="green",shape="box"];4 -> 5[label="",style="dashed", color="green", weight=3]; 10.42/4.26 5[label="blockIOBlockIO0 vz3",fontsize=16,color="grey",shape="box"];5 -> 6[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 6[label="blockIOBlockIO0 vz3 vz4",fontsize=16,color="grey",shape="box"];6 -> 7[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 7[label="blockIOBlockIO0 vz3 vz4 vz5",fontsize=16,color="black",shape="triangle"];7 -> 8[label="",style="solid", color="black", weight=3]; 10.42/4.26 8[label="Hugs_BlockThread (vz5 . fromObj) (blockIOM' vz3)",fontsize=16,color="green",shape="box"];8 -> 9[label="",style="dashed", color="green", weight=3]; 10.42/4.26 8 -> 10[label="",style="dashed", color="green", weight=3]; 10.42/4.26 9[label="vz5 . fromObj",fontsize=16,color="grey",shape="box"];9 -> 11[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 10[label="blockIOM' vz3",fontsize=16,color="grey",shape="box"];10 -> 12[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 11[label="vz5 . fromObj",fontsize=16,color="black",shape="triangle"];11 -> 13[label="",style="solid", color="black", weight=3]; 10.42/4.26 12[label="blockIOM' vz3 vz7",fontsize=16,color="black",shape="triangle"];12 -> 14[label="",style="solid", color="black", weight=3]; 10.42/4.26 13[label="vz5 (fromObj vz6)",fontsize=16,color="green",shape="box"];13 -> 15[label="",style="dashed", color="green", weight=3]; 10.42/4.26 14 -> 16[label="",style="dashed", color="red", weight=0]; 10.42/4.26 14[label="threadToIOResult (vz3 (vz7 . toObj))",fontsize=16,color="magenta"];14 -> 17[label="",style="dashed", color="magenta", weight=3]; 10.42/4.26 15[label="fromObj vz6",fontsize=16,color="black",shape="triangle"];15 -> 18[label="",style="solid", color="black", weight=3]; 10.42/4.26 17[label="vz3 (vz7 . toObj)",fontsize=16,color="green",shape="box"];17 -> 24[label="",style="dashed", color="green", weight=3]; 10.42/4.26 16[label="threadToIOResult vz8",fontsize=16,color="burlywood",shape="triangle"];39[label="vz8/IO vz80",fontsize=10,color="white",style="solid",shape="box"];16 -> 39[label="",style="solid", color="burlywood", weight=9]; 10.42/4.26 39 -> 20[label="",style="solid", color="burlywood", weight=3]; 10.42/4.26 40[label="vz8/AProVE_IO vz80",fontsize=10,color="white",style="solid",shape="box"];16 -> 40[label="",style="solid", color="burlywood", weight=9]; 10.42/4.26 40 -> 21[label="",style="solid", color="burlywood", weight=3]; 10.42/4.26 41[label="vz8/AProVE_Exception vz80",fontsize=10,color="white",style="solid",shape="box"];16 -> 41[label="",style="solid", color="burlywood", weight=9]; 10.42/4.26 41 -> 22[label="",style="solid", color="burlywood", weight=3]; 10.42/4.26 42[label="vz8/AProVE_Error vz80",fontsize=10,color="white",style="solid",shape="box"];16 -> 42[label="",style="solid", color="burlywood", weight=9]; 10.42/4.26 42 -> 23[label="",style="solid", color="burlywood", weight=3]; 10.42/4.26 18 -> 15[label="",style="dashed", color="red", weight=0]; 10.42/4.26 18[label="fromObj vz6",fontsize=16,color="magenta"];24[label="vz7 . toObj",fontsize=16,color="grey",shape="box"];24 -> 30[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 20[label="threadToIOResult (IO vz80)",fontsize=16,color="black",shape="box"];20 -> 26[label="",style="solid", color="black", weight=3]; 10.42/4.26 21[label="threadToIOResult (AProVE_IO vz80)",fontsize=16,color="black",shape="box"];21 -> 27[label="",style="solid", color="black", weight=3]; 10.42/4.26 22[label="threadToIOResult (AProVE_Exception vz80)",fontsize=16,color="black",shape="box"];22 -> 28[label="",style="solid", color="black", weight=3]; 10.42/4.26 23[label="threadToIOResult (AProVE_Error vz80)",fontsize=16,color="black",shape="box"];23 -> 29[label="",style="solid", color="black", weight=3]; 10.42/4.26 30 -> 25[label="",style="dashed", color="red", weight=0]; 10.42/4.26 30[label="vz7 . toObj",fontsize=16,color="magenta"];30 -> 34[label="",style="dashed", color="magenta", weight=3]; 10.42/4.26 26[label="vz80 Hugs_Error (const Hugs_DeadThread)",fontsize=16,color="green",shape="box"];26 -> 32[label="",style="dashed", color="green", weight=3]; 10.42/4.26 26 -> 33[label="",style="dashed", color="green", weight=3]; 10.42/4.26 27[label="error []",fontsize=16,color="red",shape="box"];28[label="error []",fontsize=16,color="red",shape="box"];29[label="error []",fontsize=16,color="red",shape="box"];34[label="vz10",fontsize=16,color="green",shape="box"];25[label="vz7 . toObj",fontsize=16,color="black",shape="triangle"];25 -> 31[label="",style="solid", color="black", weight=3]; 10.42/4.26 32[label="Hugs_Error",fontsize=16,color="green",shape="box"];33[label="const Hugs_DeadThread",fontsize=16,color="grey",shape="box"];33 -> 36[label="",style="dashed", color="grey", weight=3]; 10.42/4.26 31[label="vz7 (toObj vz9)",fontsize=16,color="green",shape="box"];31 -> 35[label="",style="dashed", color="green", weight=3]; 10.42/4.26 36[label="const Hugs_DeadThread vz11",fontsize=16,color="black",shape="triangle"];36 -> 38[label="",style="solid", color="black", weight=3]; 10.42/4.26 35[label="toObj vz9",fontsize=16,color="black",shape="triangle"];35 -> 37[label="",style="solid", color="black", weight=3]; 10.42/4.26 38[label="Hugs_DeadThread",fontsize=16,color="green",shape="box"];37 -> 35[label="",style="dashed", color="red", weight=0]; 10.42/4.26 37[label="toObj vz9",fontsize=16,color="magenta"];} 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (10) 10.42/4.26 Obligation: 10.42/4.26 Q DP problem: 10.42/4.26 The TRS P consists of the following rules: 10.42/4.26 10.42/4.26 new_fromObj(vz6, h, []) -> new_fromObj(vz6, h, []) 10.42/4.26 10.42/4.26 R is empty. 10.42/4.26 Q is empty. 10.42/4.26 We have to consider all (P,Q,R)-chains. 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (11) NonTerminationLoopProof (COMPLETE) 10.42/4.26 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 10.42/4.26 Found a loop by semiunifying a rule from P directly. 10.42/4.26 10.42/4.26 s = new_fromObj(vz6, h, []) evaluates to t =new_fromObj(vz6, h, []) 10.42/4.26 10.42/4.26 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 10.42/4.26 * Matcher: [ ] 10.42/4.26 * Semiunifier: [ ] 10.42/4.26 10.42/4.26 -------------------------------------------------------------------------------- 10.42/4.26 Rewriting sequence 10.42/4.26 10.42/4.26 The DP semiunifies directly so there is only one rewrite step from new_fromObj(vz6, h, []) to new_fromObj(vz6, h, []). 10.42/4.26 10.42/4.26 10.42/4.26 10.42/4.26 10.42/4.26 ---------------------------------------- 10.42/4.26 10.42/4.26 (12) 10.42/4.26 NO 10.72/4.31 EOF