45.01/31.76 MAYBE 47.00/32.34 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 47.00/32.34 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 47.00/32.34 47.00/32.34 47.00/32.34 H-Termination with start terms of the given HASKELL could not be shown: 47.00/32.34 47.00/32.34 (0) HASKELL 47.00/32.34 (1) LR [EQUIVALENT, 0 ms] 47.00/32.34 (2) HASKELL 47.00/32.34 (3) IPR [EQUIVALENT, 0 ms] 47.00/32.34 (4) HASKELL 47.00/32.34 (5) BR [EQUIVALENT, 0 ms] 47.00/32.34 (6) HASKELL 47.00/32.34 (7) COR [EQUIVALENT, 0 ms] 47.00/32.34 (8) HASKELL 47.00/32.34 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (0) 47.00/32.34 Obligation: 47.00/32.34 mainModule Main 47.00/32.34 module Maybe where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Main where { 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Monad where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Prelude; 47.00/32.34 mapAndUnzipM :: Monad c => (a -> c (b,d)) -> [a] -> c ([b],[d]); 47.00/32.34 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 47.00/32.34 47.00/32.34 } 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (1) LR (EQUIVALENT) 47.00/32.34 Lambda Reductions: 47.00/32.34 The following Lambda expression 47.00/32.34 "\(a,b)~(as,bs)->(a : as,b : bs)" 47.00/32.34 is transformed to 47.00/32.34 "unzip0 (a,b) ~(as,bs) = (a : as,b : bs); 47.00/32.34 " 47.00/32.34 The following Lambda expression 47.00/32.34 "\xs->return (x : xs)" 47.00/32.34 is transformed to 47.00/32.34 "sequence0 x xs = return (x : xs); 47.00/32.34 " 47.00/32.34 The following Lambda expression 47.00/32.34 "\x->sequence cs >>= sequence0 x" 47.00/32.34 is transformed to 47.00/32.34 "sequence1 cs x = sequence cs >>= sequence0 x; 47.00/32.34 " 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (2) 47.00/32.34 Obligation: 47.00/32.34 mainModule Main 47.00/32.34 module Maybe where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Main where { 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Monad where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Prelude; 47.00/32.34 mapAndUnzipM :: Monad b => (a -> b (d,c)) -> [a] -> b ([d],[c]); 47.00/32.34 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 47.00/32.34 47.00/32.34 } 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (3) IPR (EQUIVALENT) 47.00/32.34 IrrPat Reductions: 47.00/32.34 The variables of the following irrefutable Pattern 47.00/32.34 "~(as,bs)" 47.00/32.34 are replaced by calls to these functions 47.00/32.34 "unzip00 (as,bs) = as; 47.00/32.34 " 47.00/32.34 "unzip01 (as,bs) = bs; 47.00/32.34 " 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (4) 47.00/32.34 Obligation: 47.00/32.34 mainModule Main 47.00/32.34 module Maybe where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Main where { 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Monad where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Prelude; 47.00/32.34 mapAndUnzipM :: Monad c => (b -> c (a,d)) -> [b] -> c ([a],[d]); 47.00/32.34 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 47.00/32.34 47.00/32.34 } 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (5) BR (EQUIVALENT) 47.00/32.34 Replaced joker patterns by fresh variables and removed binding patterns. 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (6) 47.00/32.34 Obligation: 47.00/32.34 mainModule Main 47.00/32.34 module Maybe where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Main where { 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Monad where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Prelude; 47.00/32.34 mapAndUnzipM :: Monad d => (a -> d (c,b)) -> [a] -> d ([c],[b]); 47.00/32.34 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 47.00/32.34 47.00/32.34 } 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (7) COR (EQUIVALENT) 47.00/32.34 Cond Reductions: 47.00/32.34 The following Function with conditions 47.00/32.34 "undefined |Falseundefined; 47.00/32.34 " 47.00/32.34 is transformed to 47.00/32.34 "undefined = undefined1; 47.00/32.34 " 47.00/32.34 "undefined0 True = undefined; 47.00/32.34 " 47.00/32.34 "undefined1 = undefined0 False; 47.00/32.34 " 47.00/32.34 47.00/32.34 ---------------------------------------- 47.00/32.34 47.00/32.34 (8) 47.00/32.34 Obligation: 47.00/32.34 mainModule Main 47.00/32.34 module Maybe where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Main where { 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Monad; 47.00/32.34 import qualified Prelude; 47.00/32.34 } 47.00/32.34 module Monad where { 47.00/32.34 import qualified Main; 47.00/32.34 import qualified Maybe; 47.00/32.34 import qualified Prelude; 47.00/32.34 mapAndUnzipM :: Monad d => (c -> d (a,b)) -> [c] -> d ([a],[b]); 47.00/32.34 mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip; 47.00/32.34 47.00/32.34 } 47.00/32.37 EOF