/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.hs /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.hs # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 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) CR [EQUIVALENT, 0 ms] (4) HASKELL (5) IFR [EQUIVALENT, 0 ms] (6) HASKELL (7) BR [EQUIVALENT, 0 ms] (8) HASKELL (9) COR [EQUIVALENT, 0 ms] (10) HASKELL (11) LetRed [EQUIVALENT, 0 ms] (12) HASKELL (13) NumRed [SOUND, 19 ms] (14) HASKELL ---------------------------------------- (0) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (1) LR (EQUIVALENT) Lambda Reductions: The following Lambda expression "\_->q" is transformed to "gtGt0 q _ = q; " The following Lambda expression "\ab->(a,b)" is transformed to "zip0 a b = (a,b); " ---------------------------------------- (2) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (3) CR (EQUIVALENT) Case Reductions: The following Case expression "case loc of { [] -> id; _ -> (showString ('\10' : 'A' : 'c' : 't' : 'i' : 'o' : 'n' : ':' : '\32' : [])) . showString loc} " is transformed to "showsPrec0 loc [] = id; showsPrec0 loc _ = (showString ('\10' : 'A' : 'c' : 't' : 'i' : 'o' : 'n' : ':' : '\32' : [])) . showString loc; " The following Case expression "case descr of { [] -> id; _ -> (showString ('\10' : 'R' : 'e' : 'a' : 's' : 'o' : 'n' : ':' : '\32' : [])) . showString descr} " is transformed to "showsPrec1 descr [] = id; showsPrec1 descr _ = (showString ('\10' : 'R' : 'e' : 'a' : 's' : 'o' : 'n' : ':' : '\32' : [])) . showString descr; " The following Case expression "case mbFile of { Nothing -> id; Just name -> (showString ('\10' : 'R' : 'e' : 's' : 'o' : 'u' : 'r' : 'c' : 'e' : ':' : '\32' : [])) . showString name} " is transformed to "showsPrec2 Nothing = id; showsPrec2 (Just name) = (showString ('\10' : 'R' : 'e' : 's' : 'o' : 'u' : 'r' : 'c' : 'e' : ':' : '\32' : [])) . showString name; " The following Case expression "case x of { IOError_UserError -> 'U' : 'E' : []; IOError_IllegalError -> 'I' : 'O' : []; IOError_PermDenied -> 'P' : 'D' : []; IOError_AlreadyExists -> 'A' : 'E' : []; IOError_AlreadyInUse -> 'R' : 'B' : []; IOError_DoesNotExist -> 'D' : 'N' : 'E' : []; IOError_FullError -> 'R' : 'E' : []; IOError_EOF -> 'E' : 'O' : 'F' : []; IOError_WriteError -> 'W' : 'E' : []} " is transformed to "show0 IOError_UserError = 'U' : 'E' : []; show0 IOError_IllegalError = 'I' : 'O' : []; show0 IOError_PermDenied = 'P' : 'D' : []; show0 IOError_AlreadyExists = 'A' : 'E' : []; show0 IOError_AlreadyInUse = 'R' : 'B' : []; show0 IOError_DoesNotExist = 'D' : 'N' : 'E' : []; show0 IOError_FullError = 'R' : 'E' : []; show0 IOError_EOF = 'E' : 'O' : 'F' : []; show0 IOError_WriteError = 'W' : 'E' : []; " ---------------------------------------- (4) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (5) IFR (EQUIVALENT) If Reductions: The following If expression "if b then (showChar '(') . p . showChar ')' else p" is transformed to "showParen0 p True = (showChar '(') . p . showChar ')'; showParen0 p False = p; " The following If expression "if primGEqNatS x y then Succ (primDivNatS (primMinusNatS x y) (Succ y)) else Zero" is transformed to "primDivNatS0 x y True = Succ (primDivNatS (primMinusNatS x y) (Succ y)); primDivNatS0 x y False = Zero; " The following If expression "if primGEqNatS x y then primModNatS (primMinusNatS x y) (Succ y) else Succ x" is transformed to "primModNatS0 x y True = primModNatS (primMinusNatS x y) (Succ y); primModNatS0 x y False = Succ x; " The following If expression "if primGEqNatS x y then primModNatP (primMinusNatS x y) (Succ y) else primMinusNatS y x" is transformed to "primModNatP0 x y True = primModNatP (primMinusNatS x y) (Succ y); primModNatP0 x y False = primMinusNatS y x; " ---------------------------------------- (6) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (7) BR (EQUIVALENT) Replaced joker patterns by fresh variables and removed binding patterns. Binding Reductions: The bind variable of the following binding Pattern "s@(wz : xu)" is replaced by the following term "wz : xu" ---------------------------------------- (8) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (9) COR (EQUIVALENT) Cond Reductions: The following Function with conditions "showsPrec p ''' = showString (''' : '\' : ''' : ''' : []); showsPrec p c = (showChar ''') . (showLitChar c) . showChar '''; " is transformed to "showsPrec p zx = showsPrec5 p zx; showsPrec p c = showsPrec3 p c; " "showsPrec3 p c = (showChar ''') . (showLitChar c) . showChar '''; " "showsPrec4 True p zx = showString (''' : '\' : ''' : ''' : []); showsPrec4 zy zz vuu = showsPrec3 zz vuu; " "showsPrec5 p zx = showsPrec4 (zx == ''') p zx; showsPrec5 vuv vuw = showsPrec3 vuv vuw; " The following Function with conditions "showl [] = showChar '"'; showl ('"' : cs) = (showString ('\' : '"' : [])) . showl cs; showl (c : cs) = (showLitChar c) . showl cs; " is transformed to "showl [] = showl3 []; showl (vuz : cs) = showl2 (vuz : cs); showl (c : cs) = showl0 (c : cs); " "showl0 (c : cs) = (showLitChar c) . showl cs; " "showl1 True (vuz : cs) = (showString ('\' : '"' : [])) . showl cs; showl1 vvu vvv = showl0 vvv; " "showl2 (vuz : cs) = showl1 (vuz == '"') (vuz : cs); showl2 vvw = showl0 vvw; " "showl3 [] = showChar '"'; showl3 vvy = showl2 vvy; " The following Function with conditions "randomSelect (x : []) = x; randomSelect (x : xs)|terminatorrandomSelect xs|otherwisex; " is transformed to "randomSelect (x : []) = randomSelect3 (x : []); randomSelect (x : xs) = randomSelect2 (x : xs); " "randomSelect0 x xs True = x; " "randomSelect1 x xs True = randomSelect xs; randomSelect1 x xs False = randomSelect0 x xs otherwise; " "randomSelect2 (x : xs) = randomSelect1 x xs terminator; " "randomSelect3 (x : []) = x; randomSelect3 vww = randomSelect2 vww; " The following Function with conditions "takeWhile p [] = []; takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; " is transformed to "takeWhile p [] = takeWhile3 p []; takeWhile p (x : xs) = takeWhile2 p (x : xs); " "takeWhile0 p x xs True = []; " "takeWhile1 p x xs True = x : takeWhile p xs; takeWhile1 p x xs False = takeWhile0 p x xs otherwise; " "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); " "takeWhile3 p [] = []; takeWhile3 vwz vxu = takeWhile2 vwz vxu; " The following Function with conditions "!! (x : vy) 0 = x; !! (vz : xs) n|n > 0xs !! (n - 1); !! (wu : wv) ww = error []; !! [] wx = error []; " is transformed to "!! (x : vy) vyx = emEm5 (x : vy) vyx; !! (vz : xs) n = emEm3 (vz : xs) n; !! (wu : wv) ww = emEm1 (wu : wv) ww; !! [] wx = emEm0 [] wx; " "emEm0 [] wx = error []; " "emEm1 (wu : wv) ww = error []; emEm1 vxx vxy = emEm0 vxx vxy; " "emEm2 vz xs n True = xs !! (n - 1); emEm2 vz xs n False = emEm1 (vz : xs) n; " "emEm3 (vz : xs) n = emEm2 vz xs n (n > 0); emEm3 vyu vyv = emEm1 vyu vyv; " "emEm4 True (x : vy) vyx = x; emEm4 vyy vyz vzu = emEm3 vyz vzu; " "emEm5 (x : vy) vyx = emEm4 (vyx == 0) (x : vy) vyx; emEm5 vzv vzw = emEm3 vzv vzw; " The following Function with conditions "showLitChar c|c > '\127'(showChar '\') . protectEsc isDigit (shows (fromEnum c)); showLitChar '\127' = showString ('\' : 'D' : 'E' : 'L' : []); showLitChar '\' = showString ('\' : '\' : []); showLitChar c|c >= '\32'showChar c; showLitChar '\7' = showString ('\' : 'a' : []); showLitChar '\8' = showString ('\' : 'b' : []); showLitChar '\12' = showString ('\' : 'f' : []); showLitChar '\10' = showString ('\' : 'n' : []); showLitChar '\13' = showString ('\' : 'r' : []); showLitChar '\9' = showString ('\' : 't' : []); showLitChar '\11' = showString ('\' : 'v' : []); showLitChar '\14' = protectEsc ('H' ==) (showString ('\' : 'S' : 'O' : [])); showLitChar c = showString ('\' : snd (asciiTab !! (fromEnum c))); " is transformed to "showLitChar c = showLitChar24 c; showLitChar wzy = showLitChar22 wzy; showLitChar wzu = showLitChar20 wzu; showLitChar c = showLitChar18 c; showLitChar wyv = showLitChar16 wyv; showLitChar wxx = showLitChar14 wxx; showLitChar wwz = showLitChar12 wwz; showLitChar wwv = showLitChar10 wwv; showLitChar wvx = showLitChar8 wvx; showLitChar wuz = showLitChar6 wuz; showLitChar wuv = showLitChar4 wuv; showLitChar vzx = showLitChar2 vzx; showLitChar c = showLitChar0 c; " "showLitChar0 c = showString ('\' : snd (asciiTab !! (fromEnum c))); " "showLitChar1 True vzx = protectEsc ('H' ==) (showString ('\' : 'S' : 'O' : [])); showLitChar1 vzy vzz = showLitChar0 vzz; " "showLitChar2 vzx = showLitChar1 (vzx == '\14') vzx; showLitChar2 wuu = showLitChar0 wuu; " "showLitChar3 True wuv = showString ('\' : 'v' : []); showLitChar3 wuw wux = showLitChar2 wux; " "showLitChar4 wuv = showLitChar3 (wuv == '\11') wuv; showLitChar4 wuy = showLitChar2 wuy; " "showLitChar5 True wuz = showString ('\' : 't' : []); showLitChar5 wvu wvv = showLitChar4 wvv; " "showLitChar6 wuz = showLitChar5 (wuz == '\9') wuz; showLitChar6 wvw = showLitChar4 wvw; " "showLitChar7 True wvx = showString ('\' : 'r' : []); showLitChar7 wvy wvz = showLitChar6 wvz; " "showLitChar8 wvx = showLitChar7 (wvx == '\13') wvx; showLitChar8 wwu = showLitChar6 wwu; " "showLitChar9 True wwv = showString ('\' : 'n' : []); showLitChar9 www wwx = showLitChar8 wwx; " "showLitChar10 wwv = showLitChar9 (wwv == '\10') wwv; showLitChar10 wwy = showLitChar8 wwy; " "showLitChar11 True wwz = showString ('\' : 'f' : []); showLitChar11 wxu wxv = showLitChar10 wxv; " "showLitChar12 wwz = showLitChar11 (wwz == '\12') wwz; showLitChar12 wxw = showLitChar10 wxw; " "showLitChar13 True wxx = showString ('\' : 'b' : []); showLitChar13 wxy wxz = showLitChar12 wxz; " "showLitChar14 wxx = showLitChar13 (wxx == '\8') wxx; showLitChar14 wyu = showLitChar12 wyu; " "showLitChar15 True wyv = showString ('\' : 'a' : []); showLitChar15 wyw wyx = showLitChar14 wyx; " "showLitChar16 wyv = showLitChar15 (wyv == '\7') wyv; showLitChar16 wyy = showLitChar14 wyy; " "showLitChar17 c True = showChar c; showLitChar17 c False = showLitChar16 c; " "showLitChar18 c = showLitChar17 c (c >= '\32'); showLitChar18 wyz = showLitChar16 wyz; " "showLitChar19 True wzu = showString ('\' : '\' : []); showLitChar19 wzv wzw = showLitChar18 wzw; " "showLitChar20 wzu = showLitChar19 (wzu == '\') wzu; showLitChar20 wzx = showLitChar18 wzx; " "showLitChar21 True wzy = showString ('\' : 'D' : 'E' : 'L' : []); showLitChar21 wzz xuu = showLitChar20 xuu; " "showLitChar22 wzy = showLitChar21 (wzy == '\127') wzy; showLitChar22 xuv = showLitChar20 xuv; " "showLitChar23 c True = (showChar '\') . protectEsc isDigit (shows (fromEnum c)); showLitChar23 c False = showLitChar22 c; " "showLitChar24 c = showLitChar23 c (c > '\127'); showLitChar24 xuw = showLitChar22 xuw; " The following Function with conditions "cont (wz : xu)|p wz('\' : '&' : []) ++ wz : xu; cont s = s; " is transformed to "cont (wz : xu) = cont2 (wz : xu); cont s = cont0 s; " "cont0 s = s; " "cont1 wz xu True = ('\' : '&' : []) ++ wz : xu; cont1 wz xu False = cont0 (wz : xu); " "cont2 (wz : xu) = cont1 wz xu (p wz); cont2 xuy = cont0 xuy; " The following Function with conditions "undefined |Falseundefined; " is transformed to "undefined = undefined1; " "undefined0 True = undefined; " "undefined1 = undefined0 False; " ---------------------------------------- (10) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (11) LetRed (EQUIVALENT) Let/Where Reductions: The bindings of the following Let/Where expression "(showChar '[') . (shows x) . showl xs where { showl [] = showChar ']'; showl (x : xs) = (showChar ',') . (shows x) . showl xs; } " are unpacked to the following functions on top level "showListShowl [] = showChar ']'; showListShowl (x : xs) = (showChar ',') . (shows x) . showListShowl xs; " The bindings of the following Let/Where expression "(showChar '"') . showl cs where { showl [] = showl3 []; showl (vuz : cs) = showl2 (vuz : cs); showl (c : cs) = showl0 (c : cs); ; showl0 (c : cs) = (showLitChar c) . showl cs; ; showl1 True (vuz : cs) = (showString ('\' : '"' : [])) . showl cs; showl1 vvu vvv = showl0 vvv; ; showl2 (vuz : cs) = showl1 (vuz == '"') (vuz : cs); showl2 vvw = showl0 vvw; ; showl3 [] = showChar '"'; showl3 vvy = showl2 vvy; } " are unpacked to the following functions on top level "showListShowl3 [] = showChar '"'; showListShowl3 vvy = showListShowl2 vvy; " "showListShowl2 (vuz : cs) = showListShowl1 (vuz == '"') (vuz : cs); showListShowl2 vvw = showListShowl0 vvw; " "showListShowl0 (c : cs) = (showLitChar c) . showListShowl4 cs; " "showListShowl1 True (vuz : cs) = (showString ('\' : '"' : [])) . showListShowl4 cs; showListShowl1 vvu vvv = showListShowl0 vvv; " "showListShowl4 [] = showListShowl3 []; showListShowl4 (vuz : cs) = showListShowl2 (vuz : cs); showListShowl4 (c : cs) = showListShowl0 (c : cs); " The bindings of the following Let/Where expression "f . cont where { cont (wz : xu) = cont2 (wz : xu); cont s = cont0 s; ; cont0 s = s; ; cont1 wz xu True = ('\' : '&' : []) ++ wz : xu; cont1 wz xu False = cont0 (wz : xu); ; cont2 (wz : xu) = cont1 wz xu (p wz); cont2 xuy = cont0 xuy; } " are unpacked to the following functions on top level "protectEscCont0 xuz s = s; " "protectEscCont xuz (wz : xu) = protectEscCont2 xuz (wz : xu); protectEscCont xuz s = protectEscCont0 xuz s; " "protectEscCont1 xuz wz xu True = ('\' : '&' : []) ++ wz : xu; protectEscCont1 xuz wz xu False = protectEscCont0 xuz (wz : xu); " "protectEscCont2 xuz (wz : xu) = protectEscCont1 xuz wz xu (xuz wz); protectEscCont2 xuz xuy = protectEscCont0 xuz xuy; " ---------------------------------------- (12) Obligation: mainModule Main module Main where { import qualified Prelude; } ---------------------------------------- (13) NumRed (SOUND) Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. ---------------------------------------- (14) Obligation: mainModule Main module Main where { import qualified Prelude; }