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