172.57/156.78 MAYBE 174.78/157.46 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 174.78/157.46 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 174.78/157.46 174.78/157.46 174.78/157.46 H-Termination with start terms of the given HASKELL could not be shown: 174.78/157.46 174.78/157.46 (0) HASKELL 174.78/157.46 (1) LR [EQUIVALENT, 0 ms] 174.78/157.46 (2) HASKELL 174.78/157.46 (3) CR [EQUIVALENT, 0 ms] 174.78/157.46 (4) HASKELL 174.78/157.46 (5) BR [EQUIVALENT, 0 ms] 174.78/157.46 (6) HASKELL 174.78/157.46 (7) COR [EQUIVALENT, 16 ms] 174.78/157.46 (8) HASKELL 174.78/157.46 (9) LetRed [EQUIVALENT, 0 ms] 174.78/157.46 (10) HASKELL 174.78/157.46 (11) NumRed [SOUND, 28 ms] 174.78/157.46 (12) HASKELL 174.78/157.46 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (0) 174.78/157.46 Obligation: 174.78/157.46 mainModule Main 174.78/157.46 module Main where { 174.78/157.46 import qualified Prelude; 174.78/157.46 } 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (1) LR (EQUIVALENT) 174.78/157.46 Lambda Reductions: 174.78/157.46 The following Lambda expression 174.78/157.46 "\ab->(a,b)" 174.78/157.46 is transformed to 174.78/157.46 "zip0 a b = (a,b); 174.78/157.46 " 174.78/157.46 The following Lambda expression 174.78/157.46 "\vu69->case vu69 of { 174.78/157.46 ([],s') -> (mne,s') : []; 174.78/157.46 _ -> []} 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexEsc0 mne vu69 = case vu69 of { 174.78/157.46 ([],s') -> (mne,s') : []; 174.78/157.46 _ -> []} 174.78/157.46 ; 174.78/157.46 " 174.78/157.46 The following Lambda expression 174.78/157.46 "\vu70->case vu70 of { 174.78/157.46 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.46 _ -> []} 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexEsc1 s vu70 = case vu70 of { 174.78/157.46 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.46 _ -> []} 174.78/157.46 ; 174.78/157.46 " 174.78/157.46 The following Lambda expression 174.78/157.46 "\(_,zs)->zs" 174.78/157.46 is transformed to 174.78/157.46 "zs0 (_,zs) = zs; 174.78/157.46 " 174.78/157.46 The following Lambda expression 174.78/157.46 "\(ys,_)->ys" 174.78/157.46 is transformed to 174.78/157.46 "ys0 (ys,_) = ys; 174.78/157.46 " 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (2) 174.78/157.46 Obligation: 174.78/157.46 mainModule Main 174.78/157.46 module Main where { 174.78/157.46 import qualified Prelude; 174.78/157.46 } 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (3) CR (EQUIVALENT) 174.78/157.46 Case Reductions: 174.78/157.46 The following Case expression 174.78/157.46 "case concatMap (lexEsc1 s) table of { 174.78/157.46 pr : _ -> pr : []; 174.78/157.46 [] -> []} 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexEsc2 (pr : _) = pr : []; 174.78/157.46 lexEsc2 [] = []; 174.78/157.46 " 174.78/157.46 The following Case expression 174.78/157.46 "case vu69 of { 174.78/157.46 ([],s') -> (mne,s') : []; 174.78/157.46 _ -> []} 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexEsc00 mne ([],s') = (mne,s') : []; 174.78/157.46 lexEsc00 mne _ = []; 174.78/157.46 " 174.78/157.46 The following Case expression 174.78/157.46 "case vu70 of { 174.78/157.46 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.46 _ -> []} 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.46 lexEsc10 s _ = []; 174.78/157.46 " 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (4) 174.78/157.46 Obligation: 174.78/157.46 mainModule Main 174.78/157.46 module Main where { 174.78/157.46 import qualified Prelude; 174.78/157.46 } 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (5) BR (EQUIVALENT) 174.78/157.46 Replaced joker patterns by fresh variables and removed binding patterns. 174.78/157.46 174.78/157.46 Binding Reductions: 174.78/157.46 The bind variable of the following binding Pattern 174.78/157.46 "s@(wv : ww)" 174.78/157.46 is replaced by the following term 174.78/157.46 "wv : ww" 174.78/157.46 The bind variable of the following binding Pattern 174.78/157.46 "xs@(xv : xw)" 174.78/157.46 is replaced by the following term 174.78/157.46 "xv : xw" 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (6) 174.78/157.46 Obligation: 174.78/157.46 mainModule Main 174.78/157.46 module Main where { 174.78/157.46 import qualified Prelude; 174.78/157.46 } 174.78/157.46 174.78/157.46 ---------------------------------------- 174.78/157.46 174.78/157.46 (7) COR (EQUIVALENT) 174.78/157.46 Cond Reductions: 174.78/157.46 The following Function with conditions 174.78/157.46 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 174.78/157.46 lexmatch xs ys = (xs,ys); 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 174.78/157.46 lexmatch xs ys = lexmatch0 xs ys; 174.78/157.46 " 174.78/157.46 "lexmatch0 xs ys = (xs,ys); 174.78/157.46 " 174.78/157.46 "lexmatch1 x xs y ys True = lexmatch xs ys; 174.78/157.46 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 174.78/157.46 " 174.78/157.46 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 174.78/157.46 lexmatch2 yv yw = lexmatch0 yv yw; 174.78/157.46 " 174.78/157.46 The following Function with conditions 174.78/157.46 "takeWhile p [] = []; 174.78/157.46 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "takeWhile p [] = takeWhile3 p []; 174.78/157.46 takeWhile p (x : xs) = takeWhile2 p (x : xs); 174.78/157.46 " 174.78/157.46 "takeWhile1 p x xs True = x : takeWhile p xs; 174.78/157.46 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 174.78/157.46 " 174.78/157.46 "takeWhile0 p x xs True = []; 174.78/157.46 " 174.78/157.46 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 174.78/157.46 " 174.78/157.46 "takeWhile3 p [] = []; 174.78/157.46 takeWhile3 yz zu = takeWhile2 yz zu; 174.78/157.46 " 174.78/157.46 The following Function with conditions 174.78/157.46 "undefined |Falseundefined; 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "undefined = undefined1; 174.78/157.46 " 174.78/157.46 "undefined0 True = undefined; 174.78/157.46 " 174.78/157.46 "undefined1 = undefined0 False; 174.78/157.46 " 174.78/157.46 The following Function with conditions 174.78/157.46 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 174.78/157.46 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 174.78/157.46 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 174.78/157.46 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 174.78/157.46 lexEsc (wv : ww)|isDigit wvspan isDigit (wv : ww) : []|isUpper wvlexEsc2 (concatMap (lexEsc1 (wv : ww)) table); 174.78/157.46 lexEsc wx = []; 174.78/157.46 " 174.78/157.46 is transformed to 174.78/157.46 "lexEsc (c : s) = lexEsc16 (c : s); 174.78/157.46 lexEsc (vvw : vvz) = lexEsc14 (vvw : vvz); 174.78/157.46 lexEsc (vux : s) = lexEsc11 (vux : s); 174.78/157.46 lexEsc (zy : s) = lexEsc8 (zy : s); 174.78/157.46 lexEsc (wv : ww) = lexEsc6 (wv : ww); 174.78/157.46 lexEsc wx = lexEsc3 wx; 174.78/157.46 " 174.78/157.46 "lexEsc3 wx = []; 174.78/157.46 " 174.78/157.46 "lexEsc4 wv ww True = lexEsc2 (concatMap (lexEsc1 (wv : ww)) table); 174.78/157.46 lexEsc4 wv ww False = lexEsc3 (wv : ww); 174.78/157.46 " 174.78/157.46 "lexEsc5 wv ww True = span isDigit (wv : ww) : []; 174.78/157.46 lexEsc5 wv ww False = lexEsc4 wv ww (isUpper wv); 174.78/157.46 " 174.78/157.46 "lexEsc6 (wv : ww) = lexEsc5 wv ww (isDigit wv); 174.78/157.46 lexEsc6 zw = lexEsc3 zw; 174.78/157.46 " 174.78/157.46 "lexEsc7 True (zy : s) = prefix 'x' (span isHexDigit s) : []; 174.78/157.46 lexEsc7 zz vuu = lexEsc6 vuu; 174.78/157.46 " 174.78/157.46 "lexEsc8 (zy : s) = lexEsc7 (zy == 'x') (zy : s); 174.78/157.46 lexEsc8 vuv = lexEsc6 vuv; 174.78/157.47 " 174.78/157.47 "lexEsc9 True (vux : s) = prefix 'o' (span isOctDigit s) : []; 174.78/157.47 lexEsc9 vuy vuz = lexEsc8 vuz; 174.78/157.47 " 174.78/157.47 "lexEsc11 (vux : s) = lexEsc9 (vux == 'o') (vux : s); 174.78/157.47 lexEsc11 vvu = lexEsc8 vvu; 174.78/157.47 " 174.78/157.47 "lexEsc12 vvw c s True = ('^' : c : [],s) : []; 174.78/157.47 lexEsc12 vvw c s False = lexEsc11 (vvw : c : s); 174.78/157.47 " 174.78/157.47 "lexEsc13 True (vvw : c : s) = lexEsc12 vvw c s (c >= '@' && c <= '_'); 174.78/157.47 lexEsc13 vwu vwv = lexEsc11 vwv; 174.78/157.47 " 174.78/157.47 "lexEsc14 (vvw : vvz) = lexEsc13 (vvw == '^') (vvw : vvz); 174.78/157.47 lexEsc14 vww = lexEsc11 vww; 174.78/157.47 " 174.78/157.47 "lexEsc15 c s True = (c : [],s) : []; 174.78/157.47 lexEsc15 c s False = lexEsc14 (c : s); 174.78/157.47 " 174.78/157.47 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 174.78/157.47 lexEsc16 vwy = lexEsc14 vwy; 174.78/157.47 " 174.78/157.47 The following Function with conditions 174.78/157.47 "lexLitChar [] = []; 174.78/157.47 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 174.78/157.47 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 174.78/157.47 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 174.78/157.47 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 174.78/157.47 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 174.78/157.47 lexEsc (wv : ww)|isDigit wvspan isDigit (wv : ww) : []|isUpper wvlexEsc2 (concatMap (lexEsc1 (wv : ww)) table); 174.78/157.47 lexEsc wx = []; 174.78/157.47 ; 174.78/157.47 lexEsc0 mne vu69 = lexEsc00 mne vu69; 174.78/157.47 ; 174.78/157.47 lexEsc00 mne ([],s') = (mne,s') : []; 174.78/157.47 lexEsc00 mne wz = []; 174.78/157.47 ; 174.78/157.47 lexEsc1 s vu70 = lexEsc10 s vu70; 174.78/157.47 ; 174.78/157.47 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.47 lexEsc10 s xu = []; 174.78/157.47 ; 174.78/157.47 lexEsc2 (pr : wy) = pr : []; 174.78/157.47 lexEsc2 [] = []; 174.78/157.47 ; 174.78/157.47 prefix c (t,s) = (c : t,s); 174.78/157.47 ; 174.78/157.47 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 174.78/157.47 } 174.78/157.47 ; 174.78/157.47 " 174.78/157.47 is transformed to 174.78/157.47 "lexLitChar [] = lexLitChar3 []; 174.78/157.47 lexLitChar (c : s) = lexLitChar2 (c : s); 174.78/157.47 " 174.78/157.47 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 174.78/157.47 lexEsc (c : s) = lexEsc16 (c : s); 174.78/157.47 lexEsc (vvw : vvz) = lexEsc14 (vvw : vvz); 174.78/157.47 lexEsc (vux : s) = lexEsc11 (vux : s); 174.78/157.47 lexEsc (zy : s) = lexEsc8 (zy : s); 174.78/157.47 lexEsc (wv : ww) = lexEsc6 (wv : ww); 174.78/157.47 lexEsc wx = lexEsc3 wx; 174.78/157.47 ; 174.78/157.47 lexEsc0 mne vu69 = lexEsc00 mne vu69; 174.78/157.47 ; 174.78/157.47 lexEsc00 mne ([],s') = (mne,s') : []; 174.78/157.47 lexEsc00 mne wz = []; 174.78/157.47 ; 174.78/157.47 lexEsc1 s vu70 = lexEsc10 s vu70; 174.78/157.47 ; 174.78/157.47 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.47 lexEsc10 s xu = []; 174.78/157.47 ; 174.78/157.47 lexEsc11 (vux : s) = lexEsc9 (vux == 'o') (vux : s); 174.78/157.47 lexEsc11 vvu = lexEsc8 vvu; 174.78/157.47 ; 174.78/157.47 lexEsc12 vvw c s True = ('^' : c : [],s) : []; 174.78/157.47 lexEsc12 vvw c s False = lexEsc11 (vvw : c : s); 174.78/157.47 ; 174.78/157.47 lexEsc13 True (vvw : c : s) = lexEsc12 vvw c s (c >= '@' && c <= '_'); 174.78/157.47 lexEsc13 vwu vwv = lexEsc11 vwv; 174.78/157.47 ; 174.78/157.47 lexEsc14 (vvw : vvz) = lexEsc13 (vvw == '^') (vvw : vvz); 174.78/157.47 lexEsc14 vww = lexEsc11 vww; 174.78/157.47 ; 174.78/157.47 lexEsc15 c s True = (c : [],s) : []; 174.78/157.47 lexEsc15 c s False = lexEsc14 (c : s); 174.78/157.47 ; 174.78/157.47 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 174.78/157.47 lexEsc16 vwy = lexEsc14 vwy; 174.78/157.47 ; 174.78/157.47 lexEsc2 (pr : wy) = pr : []; 174.78/157.47 lexEsc2 [] = []; 174.78/157.47 ; 174.78/157.47 lexEsc3 wx = []; 174.78/157.47 ; 174.78/157.47 lexEsc4 wv ww True = lexEsc2 (concatMap (lexEsc1 (wv : ww)) table); 174.78/157.47 lexEsc4 wv ww False = lexEsc3 (wv : ww); 174.78/157.47 ; 174.78/157.47 lexEsc5 wv ww True = span isDigit (wv : ww) : []; 174.78/157.47 lexEsc5 wv ww False = lexEsc4 wv ww (isUpper wv); 174.78/157.47 ; 174.78/157.47 lexEsc6 (wv : ww) = lexEsc5 wv ww (isDigit wv); 174.78/157.47 lexEsc6 zw = lexEsc3 zw; 174.78/157.47 ; 174.78/157.47 lexEsc7 True (zy : s) = prefix 'x' (span isHexDigit s) : []; 174.78/157.47 lexEsc7 zz vuu = lexEsc6 vuu; 174.78/157.47 ; 174.78/157.47 lexEsc8 (zy : s) = lexEsc7 (zy == 'x') (zy : s); 174.78/157.47 lexEsc8 vuv = lexEsc6 vuv; 174.78/157.47 ; 174.78/157.47 lexEsc9 True (vux : s) = prefix 'o' (span isOctDigit s) : []; 174.78/157.47 lexEsc9 vuy vuz = lexEsc8 vuz; 174.78/157.47 ; 174.78/157.47 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 174.78/157.47 ; 174.78/157.47 lexLitChar1 c s True = (c : [],s) : []; 174.78/157.47 lexLitChar1 c s False = lexLitChar0 c s otherwise; 174.78/157.47 ; 174.78/157.47 prefix c (t,s) = (c : t,s); 174.78/157.47 ; 174.78/157.47 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 174.78/157.47 } 174.78/157.47 ; 174.78/157.47 " 174.78/157.47 "lexLitChar3 [] = []; 174.78/157.47 lexLitChar3 vxv = lexLitChar2 vxv; 174.78/157.47 " 174.78/157.47 The following Function with conditions 174.78/157.47 "span p [] = ([],[]); 174.78/157.47 span p (xv : xw)|p xv(xv : ys,zs)|otherwise([],xv : xw) where { 174.78/157.47 vu43 = span p xw; 174.78/157.47 ; 174.78/157.47 ys = ys0 vu43; 174.78/157.47 ; 174.78/157.47 ys0 (ys,xy) = ys; 174.78/157.47 ; 174.78/157.47 zs = zs0 vu43; 174.78/157.47 ; 174.78/157.47 zs0 (xx,zs) = zs; 174.78/157.47 } 174.78/157.47 ; 174.78/157.47 " 174.78/157.47 is transformed to 174.78/157.47 "span p [] = span3 p []; 174.78/157.47 span p (xv : xw) = span2 p (xv : xw); 174.78/157.47 " 174.78/157.47 "span2 p (xv : xw) = span1 p xv xw (p xv) where { 174.78/157.47 span0 p xv xw True = ([],xv : xw); 174.78/157.47 ; 174.78/157.47 span1 p xv xw True = (xv : ys,zs); 174.78/157.47 span1 p xv xw False = span0 p xv xw otherwise; 174.78/157.47 ; 174.78/157.47 vu43 = span p xw; 174.78/157.47 ; 174.78/157.47 ys = ys0 vu43; 174.78/157.47 ; 174.78/157.47 ys0 (ys,xy) = ys; 174.78/157.47 ; 174.78/157.47 zs = zs0 vu43; 174.78/157.47 ; 174.78/157.47 zs0 (xx,zs) = zs; 174.78/157.47 } 174.78/157.47 ; 174.78/157.47 " 174.78/157.47 "span3 p [] = ([],[]); 174.78/157.47 span3 vxy vxz = span2 vxy vxz; 174.78/157.47 " 174.78/157.47 174.78/157.47 ---------------------------------------- 174.78/157.47 174.78/157.47 (8) 174.78/157.47 Obligation: 174.78/157.47 mainModule Main 174.78/157.47 module Main where { 174.78/157.47 import qualified Prelude; 174.78/157.47 } 174.78/157.47 174.78/157.47 ---------------------------------------- 174.78/157.47 174.78/157.47 (9) LetRed (EQUIVALENT) 174.78/157.47 Let/Where Reductions: 174.78/157.47 The bindings of the following Let/Where expression 174.78/157.47 "span1 p xv xw (p xv) where { 174.78/157.47 span0 p xv xw True = ([],xv : xw); 174.78/157.47 ; 174.78/157.47 span1 p xv xw True = (xv : ys,zs); 174.78/157.47 span1 p xv xw False = span0 p xv xw otherwise; 174.78/157.47 ; 174.78/157.47 vu43 = span p xw; 174.78/157.47 ; 174.78/157.47 ys = ys0 vu43; 174.78/157.47 ; 174.78/157.47 ys0 (ys,xy) = ys; 174.78/157.47 ; 174.78/157.47 zs = zs0 vu43; 174.78/157.47 ; 174.78/157.47 zs0 (xx,zs) = zs; 174.78/157.47 } 174.78/157.47 " 174.78/157.47 are unpacked to the following functions on top level 174.78/157.47 "span2Vu43 vyu vyv = span vyu vyv; 174.78/157.47 " 174.78/157.47 "span2Zs vyu vyv = span2Zs0 vyu vyv (span2Vu43 vyu vyv); 174.78/157.47 " 174.78/157.47 "span2Ys0 vyu vyv (ys,xy) = ys; 174.78/157.47 " 174.78/157.47 "span2Span0 vyu vyv p xv xw True = ([],xv : xw); 174.78/157.47 " 174.78/157.47 "span2Span1 vyu vyv p xv xw True = (xv : span2Ys vyu vyv,span2Zs vyu vyv); 174.78/157.47 span2Span1 vyu vyv p xv xw False = span2Span0 vyu vyv p xv xw otherwise; 174.78/157.47 " 174.78/157.47 "span2Zs0 vyu vyv (xx,zs) = zs; 174.78/157.47 " 174.78/157.47 "span2Ys vyu vyv = span2Ys0 vyu vyv (span2Vu43 vyu vyv); 174.78/157.47 " 174.78/157.47 The bindings of the following Let/Where expression 174.78/157.47 "lexLitChar1 c s (c /= '\') where { 174.78/157.47 lexEsc (c : s) = lexEsc16 (c : s); 174.78/157.47 lexEsc (vvw : vvz) = lexEsc14 (vvw : vvz); 174.78/157.47 lexEsc (vux : s) = lexEsc11 (vux : s); 174.78/157.47 lexEsc (zy : s) = lexEsc8 (zy : s); 174.78/157.47 lexEsc (wv : ww) = lexEsc6 (wv : ww); 174.78/157.47 lexEsc wx = lexEsc3 wx; 174.78/157.47 ; 174.78/157.47 lexEsc0 mne vu69 = lexEsc00 mne vu69; 174.78/157.47 ; 174.78/157.47 lexEsc00 mne ([],s') = (mne,s') : []; 174.78/157.47 lexEsc00 mne wz = []; 174.78/157.47 ; 174.78/157.47 lexEsc1 s vu70 = lexEsc10 s vu70; 174.78/157.47 ; 174.78/157.47 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.78/157.47 lexEsc10 s xu = []; 174.78/157.47 ; 174.78/157.47 lexEsc11 (vux : s) = lexEsc9 (vux == 'o') (vux : s); 174.78/157.47 lexEsc11 vvu = lexEsc8 vvu; 174.78/157.47 ; 174.78/157.47 lexEsc12 vvw c s True = ('^' : c : [],s) : []; 174.78/157.47 lexEsc12 vvw c s False = lexEsc11 (vvw : c : s); 174.78/157.47 ; 174.78/157.47 lexEsc13 True (vvw : c : s) = lexEsc12 vvw c s (c >= '@' && c <= '_'); 174.78/157.47 lexEsc13 vwu vwv = lexEsc11 vwv; 174.78/157.47 ; 174.78/157.47 lexEsc14 (vvw : vvz) = lexEsc13 (vvw == '^') (vvw : vvz); 174.78/157.47 lexEsc14 vww = lexEsc11 vww; 174.78/157.47 ; 174.78/157.47 lexEsc15 c s True = (c : [],s) : []; 174.78/157.47 lexEsc15 c s False = lexEsc14 (c : s); 174.78/157.47 ; 174.78/157.47 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 174.78/157.47 lexEsc16 vwy = lexEsc14 vwy; 174.78/157.47 ; 174.78/157.47 lexEsc2 (pr : wy) = pr : []; 174.78/157.47 lexEsc2 [] = []; 174.78/157.47 ; 174.78/157.47 lexEsc3 wx = []; 174.78/157.47 ; 174.78/157.47 lexEsc4 wv ww True = lexEsc2 (concatMap (lexEsc1 (wv : ww)) table); 174.78/157.47 lexEsc4 wv ww False = lexEsc3 (wv : ww); 174.78/157.47 ; 174.78/157.47 lexEsc5 wv ww True = span isDigit (wv : ww) : []; 174.78/157.47 lexEsc5 wv ww False = lexEsc4 wv ww (isUpper wv); 174.78/157.47 ; 174.78/157.47 lexEsc6 (wv : ww) = lexEsc5 wv ww (isDigit wv); 174.78/157.47 lexEsc6 zw = lexEsc3 zw; 174.78/157.47 ; 174.78/157.47 lexEsc7 True (zy : s) = prefix 'x' (span isHexDigit s) : []; 174.78/157.47 lexEsc7 zz vuu = lexEsc6 vuu; 174.78/157.47 ; 174.78/157.47 lexEsc8 (zy : s) = lexEsc7 (zy == 'x') (zy : s); 174.78/157.47 lexEsc8 vuv = lexEsc6 vuv; 174.78/157.47 ; 174.78/157.47 lexEsc9 True (vux : s) = prefix 'o' (span isOctDigit s) : []; 174.78/157.47 lexEsc9 vuy vuz = lexEsc8 vuz; 174.78/157.47 ; 174.78/157.47 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 174.78/157.47 ; 174.78/157.47 lexLitChar1 c s True = (c : [],s) : []; 174.78/157.47 lexLitChar1 c s False = lexLitChar0 c s otherwise; 174.78/157.47 ; 174.78/157.47 prefix c (t,s) = (c : t,s); 174.78/157.47 ; 174.78/157.47 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 174.78/157.47 } 174.78/157.47 " 174.78/157.47 are unpacked to the following functions on top level 174.78/157.47 "lexLitChar2LexEsc7 True (zy : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 174.78/157.47 lexLitChar2LexEsc7 zz vuu = lexLitChar2LexEsc6 vuu; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 174.78/157.47 lexLitChar2LexEsc (vvw : vvz) = lexLitChar2LexEsc14 (vvw : vvz); 174.78/157.47 lexLitChar2LexEsc (vux : s) = lexLitChar2LexEsc11 (vux : s); 174.78/157.47 lexLitChar2LexEsc (zy : s) = lexLitChar2LexEsc8 (zy : s); 174.78/157.47 lexLitChar2LexEsc (wv : ww) = lexLitChar2LexEsc6 (wv : ww); 174.78/157.47 lexLitChar2LexEsc wx = lexLitChar2LexEsc3 wx; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc9 True (vux : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 174.78/157.47 lexLitChar2LexEsc9 vuy vuz = lexLitChar2LexEsc8 vuz; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc3 wx = []; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc5 wv ww True = span isDigit (wv : ww) : []; 174.78/157.47 lexLitChar2LexEsc5 wv ww False = lexLitChar2LexEsc4 wv ww (isUpper wv); 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 174.78/157.47 lexLitChar2LexEsc10 s xu = []; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc11 (vux : s) = lexLitChar2LexEsc9 (vux == 'o') (vux : s); 174.78/157.47 lexLitChar2LexEsc11 vvu = lexLitChar2LexEsc8 vvu; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc4 wv ww True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (wv : ww)) lexLitChar2Table); 174.78/157.47 lexLitChar2LexEsc4 wv ww False = lexLitChar2LexEsc3 (wv : ww); 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc13 True (vvw : c : s) = lexLitChar2LexEsc12 vvw c s (c >= '@' && c <= '_'); 174.78/157.47 lexLitChar2LexEsc13 vwu vwv = lexLitChar2LexEsc11 vwv; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 174.78/157.47 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 174.78/157.47 " 174.78/157.47 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 174.78/157.47 lexLitChar2LexEsc16 vwy = lexLitChar2LexEsc14 vwy; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 174.78/157.47 lexLitChar2LexEsc00 mne wz = []; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc6 (wv : ww) = lexLitChar2LexEsc5 wv ww (isDigit wv); 174.78/157.47 lexLitChar2LexEsc6 zw = lexLitChar2LexEsc3 zw; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc2 (pr : wy) = pr : []; 174.78/157.47 lexLitChar2LexEsc2 [] = []; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 174.78/157.47 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc8 (zy : s) = lexLitChar2LexEsc7 (zy == 'x') (zy : s); 174.78/157.47 lexLitChar2LexEsc8 vuv = lexLitChar2LexEsc6 vuv; 174.78/157.47 " 174.78/157.47 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc12 vvw c s True = ('^' : c : [],s) : []; 174.78/157.47 lexLitChar2LexEsc12 vvw c s False = lexLitChar2LexEsc11 (vvw : c : s); 174.78/157.47 " 174.78/157.47 "lexLitChar2Prefix c (t,s) = (c : t,s); 174.78/157.47 " 174.78/157.47 "lexLitChar2LexEsc14 (vvw : vvz) = lexLitChar2LexEsc13 (vvw == '^') (vvw : vvz); 174.78/157.47 lexLitChar2LexEsc14 vww = lexLitChar2LexEsc11 vww; 174.78/157.47 " 174.78/157.47 174.78/157.47 ---------------------------------------- 174.78/157.47 174.78/157.47 (10) 174.78/157.47 Obligation: 174.78/157.47 mainModule Main 174.78/157.47 module Main where { 174.78/157.47 import qualified Prelude; 174.78/157.47 } 174.78/157.47 174.78/157.47 ---------------------------------------- 174.78/157.47 174.78/157.47 (11) NumRed (SOUND) 174.78/157.47 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 174.78/157.47 ---------------------------------------- 174.78/157.47 174.78/157.47 (12) 174.78/157.47 Obligation: 174.78/157.47 mainModule Main 174.78/157.47 module Main where { 174.78/157.47 import qualified Prelude; 174.78/157.47 } 175.11/157.51 EOF