9.05/3.92 YES 11.38/4.52 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 11.38/4.52 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 11.38/4.52 11.38/4.52 11.38/4.52 H-Termination with start terms of the given HASKELL could be proven: 11.38/4.52 11.38/4.52 (0) HASKELL 11.38/4.52 (1) LR [EQUIVALENT, 0 ms] 11.38/4.52 (2) HASKELL 11.38/4.52 (3) IPR [EQUIVALENT, 0 ms] 11.38/4.52 (4) HASKELL 11.38/4.52 (5) BR [EQUIVALENT, 0 ms] 11.38/4.52 (6) HASKELL 11.38/4.52 (7) COR [EQUIVALENT, 0 ms] 11.38/4.52 (8) HASKELL 11.38/4.52 (9) Narrow [SOUND, 0 ms] 11.38/4.52 (10) AND 11.38/4.52 (11) QDP 11.38/4.52 (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.38/4.52 (13) YES 11.38/4.52 (14) QDP 11.38/4.52 (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.38/4.52 (16) YES 11.38/4.52 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (0) 11.38/4.52 Obligation: 11.38/4.52 mainModule Main 11.38/4.52 module Maybe where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Main where { 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Monad where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Prelude; 11.38/4.52 mapAndUnzipM :: Monad c => (b -> c (a,d)) -> [b] -> c ([a],[d]); 11.38/4.52 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 11.38/4.52 11.38/4.52 } 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (1) LR (EQUIVALENT) 11.38/4.52 Lambda Reductions: 11.38/4.52 The following Lambda expression 11.38/4.52 "\(a,b)~(as,bs)->(a : as,b : bs)" 11.38/4.52 is transformed to 11.38/4.52 "unzip0 (a,b) ~(as,bs) = (a : as,b : bs); 11.38/4.52 " 11.38/4.52 The following Lambda expression 11.38/4.52 "\xs->return (x : xs)" 11.38/4.52 is transformed to 11.38/4.52 "sequence0 x xs = return (x : xs); 11.38/4.52 " 11.38/4.52 The following Lambda expression 11.38/4.52 "\x->sequence cs >>= sequence0 x" 11.38/4.52 is transformed to 11.38/4.52 "sequence1 cs x = sequence cs >>= sequence0 x; 11.38/4.52 " 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (2) 11.38/4.52 Obligation: 11.38/4.52 mainModule Main 11.38/4.52 module Maybe where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Main where { 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Monad where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Prelude; 11.38/4.52 mapAndUnzipM :: Monad b => (a -> b (d,c)) -> [a] -> b ([d],[c]); 11.38/4.52 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 11.38/4.52 11.38/4.52 } 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (3) IPR (EQUIVALENT) 11.38/4.52 IrrPat Reductions: 11.38/4.52 The variables of the following irrefutable Pattern 11.38/4.52 "~(as,bs)" 11.38/4.52 are replaced by calls to these functions 11.38/4.52 "unzip00 (as,bs) = as; 11.38/4.52 " 11.38/4.52 "unzip01 (as,bs) = bs; 11.38/4.52 " 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (4) 11.38/4.52 Obligation: 11.38/4.52 mainModule Main 11.38/4.52 module Maybe where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Main where { 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Monad where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Prelude; 11.38/4.52 mapAndUnzipM :: Monad a => (c -> a (b,d)) -> [c] -> a ([b],[d]); 11.38/4.52 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 11.38/4.52 11.38/4.52 } 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (5) BR (EQUIVALENT) 11.38/4.52 Replaced joker patterns by fresh variables and removed binding patterns. 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (6) 11.38/4.52 Obligation: 11.38/4.52 mainModule Main 11.38/4.52 module Maybe where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Main where { 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Monad where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Prelude; 11.38/4.52 mapAndUnzipM :: Monad d => (b -> d (a,c)) -> [b] -> d ([a],[c]); 11.38/4.52 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 11.38/4.52 11.38/4.52 } 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (7) COR (EQUIVALENT) 11.38/4.52 Cond Reductions: 11.38/4.52 The following Function with conditions 11.38/4.52 "undefined |Falseundefined; 11.38/4.52 " 11.38/4.52 is transformed to 11.38/4.52 "undefined = undefined1; 11.38/4.52 " 11.38/4.52 "undefined0 True = undefined; 11.38/4.52 " 11.38/4.52 "undefined1 = undefined0 False; 11.38/4.52 " 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (8) 11.38/4.52 Obligation: 11.38/4.52 mainModule Main 11.38/4.52 module Maybe where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Main where { 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Monad; 11.38/4.52 import qualified Prelude; 11.38/4.52 } 11.38/4.52 module Monad where { 11.38/4.52 import qualified Main; 11.38/4.52 import qualified Maybe; 11.38/4.52 import qualified Prelude; 11.38/4.52 mapAndUnzipM :: Monad b => (c -> b (d,a)) -> [c] -> b ([d],[a]); 11.38/4.52 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 11.38/4.52 11.38/4.52 } 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (9) Narrow (SOUND) 11.38/4.52 Haskell To QDPs 11.38/4.52 11.38/4.52 digraph dp_graph { 11.38/4.52 node [outthreshold=100, inthreshold=100];1[label="Monad.mapAndUnzipM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 11.38/4.52 3[label="Monad.mapAndUnzipM vz3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 11.38/4.52 4[label="Monad.mapAndUnzipM vz3 vz4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 11.38/4.52 5[label="sequence (map vz3 vz4) >>= return . unzip",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 11.38/4.52 6 -> 174[label="",style="dashed", color="red", weight=0]; 11.38/4.52 6[label="primbindIO (sequence (map vz3 vz4)) (return . unzip)",fontsize=16,color="magenta"];6 -> 175[label="",style="dashed", color="magenta", weight=3]; 11.38/4.52 175[label="sequence (map vz3 vz4)",fontsize=16,color="burlywood",shape="triangle"];325[label="vz4/vz40 : vz41",fontsize=10,color="white",style="solid",shape="box"];175 -> 325[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 325 -> 260[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 326[label="vz4/[]",fontsize=10,color="white",style="solid",shape="box"];175 -> 326[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 326 -> 261[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 174[label="primbindIO vz11 (return . unzip)",fontsize=16,color="burlywood",shape="triangle"];327[label="vz11/IO vz110",fontsize=10,color="white",style="solid",shape="box"];174 -> 327[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 327 -> 262[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 328[label="vz11/AProVE_IO vz110",fontsize=10,color="white",style="solid",shape="box"];174 -> 328[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 328 -> 263[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 329[label="vz11/AProVE_Exception vz110",fontsize=10,color="white",style="solid",shape="box"];174 -> 329[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 329 -> 264[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 330[label="vz11/AProVE_Error vz110",fontsize=10,color="white",style="solid",shape="box"];174 -> 330[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 330 -> 265[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 260[label="sequence (map vz3 (vz40 : vz41))",fontsize=16,color="black",shape="box"];260 -> 266[label="",style="solid", color="black", weight=3]; 11.38/4.52 261[label="sequence (map vz3 [])",fontsize=16,color="black",shape="box"];261 -> 267[label="",style="solid", color="black", weight=3]; 11.38/4.52 262[label="primbindIO (IO vz110) (return . unzip)",fontsize=16,color="black",shape="box"];262 -> 268[label="",style="solid", color="black", weight=3]; 11.38/4.52 263[label="primbindIO (AProVE_IO vz110) (return . unzip)",fontsize=16,color="black",shape="box"];263 -> 269[label="",style="solid", color="black", weight=3]; 11.38/4.52 264[label="primbindIO (AProVE_Exception vz110) (return . unzip)",fontsize=16,color="black",shape="box"];264 -> 270[label="",style="solid", color="black", weight=3]; 11.38/4.52 265[label="primbindIO (AProVE_Error vz110) (return . unzip)",fontsize=16,color="black",shape="box"];265 -> 271[label="",style="solid", color="black", weight=3]; 11.38/4.52 266[label="sequence (vz3 vz40 : map vz3 vz41)",fontsize=16,color="black",shape="box"];266 -> 272[label="",style="solid", color="black", weight=3]; 11.38/4.52 267[label="sequence []",fontsize=16,color="black",shape="box"];267 -> 273[label="",style="solid", color="black", weight=3]; 11.38/4.52 268[label="error []",fontsize=16,color="red",shape="box"];269[label="return . unzip",fontsize=16,color="black",shape="box"];269 -> 274[label="",style="solid", color="black", weight=3]; 11.38/4.52 270[label="AProVE_Exception vz110",fontsize=16,color="green",shape="box"];271[label="AProVE_Error vz110",fontsize=16,color="green",shape="box"];272[label="vz3 vz40 >>= sequence1 (map vz3 vz41)",fontsize=16,color="black",shape="box"];272 -> 275[label="",style="solid", color="black", weight=3]; 11.38/4.52 273[label="return []",fontsize=16,color="black",shape="box"];273 -> 276[label="",style="solid", color="black", weight=3]; 11.38/4.52 274[label="return (unzip vz110)",fontsize=16,color="black",shape="box"];274 -> 277[label="",style="solid", color="black", weight=3]; 11.38/4.52 275 -> 278[label="",style="dashed", color="red", weight=0]; 11.38/4.52 275[label="primbindIO (vz3 vz40) (sequence1 (map vz3 vz41))",fontsize=16,color="magenta"];275 -> 279[label="",style="dashed", color="magenta", weight=3]; 11.38/4.52 276[label="primretIO []",fontsize=16,color="black",shape="box"];276 -> 280[label="",style="solid", color="black", weight=3]; 11.38/4.52 277[label="primretIO (unzip vz110)",fontsize=16,color="black",shape="box"];277 -> 281[label="",style="solid", color="black", weight=3]; 11.38/4.52 279[label="vz3 vz40",fontsize=16,color="green",shape="box"];279 -> 287[label="",style="dashed", color="green", weight=3]; 11.38/4.52 278[label="primbindIO vz12 (sequence1 (map vz3 vz41))",fontsize=16,color="burlywood",shape="triangle"];331[label="vz12/IO vz120",fontsize=10,color="white",style="solid",shape="box"];278 -> 331[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 331 -> 283[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 332[label="vz12/AProVE_IO vz120",fontsize=10,color="white",style="solid",shape="box"];278 -> 332[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 332 -> 284[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 333[label="vz12/AProVE_Exception vz120",fontsize=10,color="white",style="solid",shape="box"];278 -> 333[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 333 -> 285[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 334[label="vz12/AProVE_Error vz120",fontsize=10,color="white",style="solid",shape="box"];278 -> 334[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 334 -> 286[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 280[label="AProVE_IO []",fontsize=16,color="green",shape="box"];281[label="AProVE_IO (unzip vz110)",fontsize=16,color="green",shape="box"];281 -> 288[label="",style="dashed", color="green", weight=3]; 11.38/4.52 287[label="vz40",fontsize=16,color="green",shape="box"];283[label="primbindIO (IO vz120) (sequence1 (map vz3 vz41))",fontsize=16,color="black",shape="box"];283 -> 289[label="",style="solid", color="black", weight=3]; 11.38/4.52 284[label="primbindIO (AProVE_IO vz120) (sequence1 (map vz3 vz41))",fontsize=16,color="black",shape="box"];284 -> 290[label="",style="solid", color="black", weight=3]; 11.38/4.52 285[label="primbindIO (AProVE_Exception vz120) (sequence1 (map vz3 vz41))",fontsize=16,color="black",shape="box"];285 -> 291[label="",style="solid", color="black", weight=3]; 11.38/4.52 286[label="primbindIO (AProVE_Error vz120) (sequence1 (map vz3 vz41))",fontsize=16,color="black",shape="box"];286 -> 292[label="",style="solid", color="black", weight=3]; 11.38/4.52 288[label="unzip vz110",fontsize=16,color="black",shape="box"];288 -> 293[label="",style="solid", color="black", weight=3]; 11.38/4.52 289[label="error []",fontsize=16,color="red",shape="box"];290[label="sequence1 (map vz3 vz41) vz120",fontsize=16,color="black",shape="box"];290 -> 294[label="",style="solid", color="black", weight=3]; 11.38/4.52 291[label="AProVE_Exception vz120",fontsize=16,color="green",shape="box"];292[label="AProVE_Error vz120",fontsize=16,color="green",shape="box"];293[label="foldr unzip0 ([],[]) vz110",fontsize=16,color="burlywood",shape="triangle"];335[label="vz110/vz1100 : vz1101",fontsize=10,color="white",style="solid",shape="box"];293 -> 335[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 335 -> 295[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 336[label="vz110/[]",fontsize=10,color="white",style="solid",shape="box"];293 -> 336[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 336 -> 296[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 294 -> 297[label="",style="dashed", color="red", weight=0]; 11.38/4.52 294[label="sequence (map vz3 vz41) >>= sequence0 vz120",fontsize=16,color="magenta"];294 -> 298[label="",style="dashed", color="magenta", weight=3]; 11.38/4.52 295[label="foldr unzip0 ([],[]) (vz1100 : vz1101)",fontsize=16,color="black",shape="box"];295 -> 299[label="",style="solid", color="black", weight=3]; 11.38/4.52 296[label="foldr unzip0 ([],[]) []",fontsize=16,color="black",shape="box"];296 -> 300[label="",style="solid", color="black", weight=3]; 11.38/4.52 298 -> 175[label="",style="dashed", color="red", weight=0]; 11.38/4.52 298[label="sequence (map vz3 vz41)",fontsize=16,color="magenta"];298 -> 301[label="",style="dashed", color="magenta", weight=3]; 11.38/4.52 297[label="vz13 >>= sequence0 vz120",fontsize=16,color="black",shape="triangle"];297 -> 302[label="",style="solid", color="black", weight=3]; 11.38/4.52 299 -> 303[label="",style="dashed", color="red", weight=0]; 11.38/4.52 299[label="unzip0 vz1100 (foldr unzip0 ([],[]) vz1101)",fontsize=16,color="magenta"];299 -> 304[label="",style="dashed", color="magenta", weight=3]; 11.38/4.52 300[label="([],[])",fontsize=16,color="green",shape="box"];301[label="vz41",fontsize=16,color="green",shape="box"];302[label="primbindIO vz13 (sequence0 vz120)",fontsize=16,color="burlywood",shape="box"];337[label="vz13/IO vz130",fontsize=10,color="white",style="solid",shape="box"];302 -> 337[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 337 -> 305[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 338[label="vz13/AProVE_IO vz130",fontsize=10,color="white",style="solid",shape="box"];302 -> 338[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 338 -> 306[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 339[label="vz13/AProVE_Exception vz130",fontsize=10,color="white",style="solid",shape="box"];302 -> 339[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 339 -> 307[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 340[label="vz13/AProVE_Error vz130",fontsize=10,color="white",style="solid",shape="box"];302 -> 340[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 340 -> 308[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 304 -> 293[label="",style="dashed", color="red", weight=0]; 11.38/4.52 304[label="foldr unzip0 ([],[]) vz1101",fontsize=16,color="magenta"];304 -> 309[label="",style="dashed", color="magenta", weight=3]; 11.38/4.52 303[label="unzip0 vz1100 vz14",fontsize=16,color="burlywood",shape="triangle"];341[label="vz1100/(vz11000,vz11001)",fontsize=10,color="white",style="solid",shape="box"];303 -> 341[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 341 -> 310[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 305[label="primbindIO (IO vz130) (sequence0 vz120)",fontsize=16,color="black",shape="box"];305 -> 311[label="",style="solid", color="black", weight=3]; 11.38/4.52 306[label="primbindIO (AProVE_IO vz130) (sequence0 vz120)",fontsize=16,color="black",shape="box"];306 -> 312[label="",style="solid", color="black", weight=3]; 11.38/4.52 307[label="primbindIO (AProVE_Exception vz130) (sequence0 vz120)",fontsize=16,color="black",shape="box"];307 -> 313[label="",style="solid", color="black", weight=3]; 11.38/4.52 308[label="primbindIO (AProVE_Error vz130) (sequence0 vz120)",fontsize=16,color="black",shape="box"];308 -> 314[label="",style="solid", color="black", weight=3]; 11.38/4.52 309[label="vz1101",fontsize=16,color="green",shape="box"];310[label="unzip0 (vz11000,vz11001) vz14",fontsize=16,color="black",shape="box"];310 -> 315[label="",style="solid", color="black", weight=3]; 11.38/4.52 311[label="error []",fontsize=16,color="red",shape="box"];312[label="sequence0 vz120 vz130",fontsize=16,color="black",shape="box"];312 -> 316[label="",style="solid", color="black", weight=3]; 11.38/4.52 313[label="AProVE_Exception vz130",fontsize=16,color="green",shape="box"];314[label="AProVE_Error vz130",fontsize=16,color="green",shape="box"];315[label="(vz11000 : unzip00 vz14,vz11001 : unzip01 vz14)",fontsize=16,color="green",shape="box"];315 -> 317[label="",style="dashed", color="green", weight=3]; 11.38/4.52 315 -> 318[label="",style="dashed", color="green", weight=3]; 11.38/4.52 316[label="return (vz120 : vz130)",fontsize=16,color="black",shape="box"];316 -> 319[label="",style="solid", color="black", weight=3]; 11.38/4.52 317[label="unzip00 vz14",fontsize=16,color="burlywood",shape="box"];342[label="vz14/(vz140,vz141)",fontsize=10,color="white",style="solid",shape="box"];317 -> 342[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 342 -> 320[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 318[label="unzip01 vz14",fontsize=16,color="burlywood",shape="box"];343[label="vz14/(vz140,vz141)",fontsize=10,color="white",style="solid",shape="box"];318 -> 343[label="",style="solid", color="burlywood", weight=9]; 11.38/4.52 343 -> 321[label="",style="solid", color="burlywood", weight=3]; 11.38/4.52 319[label="primretIO (vz120 : vz130)",fontsize=16,color="black",shape="box"];319 -> 322[label="",style="solid", color="black", weight=3]; 11.38/4.52 320[label="unzip00 (vz140,vz141)",fontsize=16,color="black",shape="box"];320 -> 323[label="",style="solid", color="black", weight=3]; 11.38/4.52 321[label="unzip01 (vz140,vz141)",fontsize=16,color="black",shape="box"];321 -> 324[label="",style="solid", color="black", weight=3]; 11.38/4.52 322[label="AProVE_IO (vz120 : vz130)",fontsize=16,color="green",shape="box"];323[label="vz140",fontsize=16,color="green",shape="box"];324[label="vz141",fontsize=16,color="green",shape="box"];} 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (10) 11.38/4.52 Complex Obligation (AND) 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (11) 11.38/4.52 Obligation: 11.38/4.52 Q DP problem: 11.38/4.52 The TRS P consists of the following rules: 11.38/4.52 11.38/4.52 new_foldr(:(vz1100, vz1101), h, ba) -> new_foldr(vz1101, h, ba) 11.38/4.52 11.38/4.52 R is empty. 11.38/4.52 Q is empty. 11.38/4.52 We have to consider all minimal (P,Q,R)-chains. 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (12) QDPSizeChangeProof (EQUIVALENT) 11.38/4.52 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. 11.38/4.52 11.38/4.52 From the DPs we obtained the following set of size-change graphs: 11.38/4.52 *new_foldr(:(vz1100, vz1101), h, ba) -> new_foldr(vz1101, h, ba) 11.38/4.52 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 11.38/4.52 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (13) 11.38/4.52 YES 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (14) 11.38/4.52 Obligation: 11.38/4.52 Q DP problem: 11.38/4.52 The TRS P consists of the following rules: 11.38/4.52 11.38/4.52 new_sequence(vz3, :(vz40, vz41), h, ba, bb) -> new_primbindIO(vz3, vz41, h, ba, bb) 11.38/4.52 new_primbindIO(vz3, vz41, h, ba, bb) -> new_sequence(vz3, vz41, h, ba, bb) 11.38/4.52 11.38/4.52 R is empty. 11.38/4.52 Q is empty. 11.38/4.52 We have to consider all minimal (P,Q,R)-chains. 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (15) QDPSizeChangeProof (EQUIVALENT) 11.38/4.52 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. 11.38/4.52 11.38/4.52 From the DPs we obtained the following set of size-change graphs: 11.38/4.52 *new_primbindIO(vz3, vz41, h, ba, bb) -> new_sequence(vz3, vz41, h, ba, bb) 11.38/4.52 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5 11.38/4.52 11.38/4.52 11.38/4.52 *new_sequence(vz3, :(vz40, vz41), h, ba, bb) -> new_primbindIO(vz3, vz41, h, ba, bb) 11.38/4.52 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5 11.38/4.52 11.38/4.52 11.38/4.52 ---------------------------------------- 11.38/4.52 11.38/4.52 (16) 11.38/4.52 YES 11.48/4.56 EOF