144.99/130.28 MAYBE 147.51/130.99 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 147.51/130.99 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 147.51/130.99 147.51/130.99 147.51/130.99 H-Termination with start terms of the given HASKELL could not be shown: 147.51/130.99 147.51/130.99 (0) HASKELL 147.51/130.99 (1) LR [EQUIVALENT, 0 ms] 147.51/130.99 (2) HASKELL 147.51/130.99 (3) CR [EQUIVALENT, 0 ms] 147.51/130.99 (4) HASKELL 147.51/130.99 (5) IFR [EQUIVALENT, 0 ms] 147.51/130.99 (6) HASKELL 147.51/130.99 (7) BR [EQUIVALENT, 15 ms] 147.51/130.99 (8) HASKELL 147.51/130.99 (9) COR [EQUIVALENT, 0 ms] 147.51/130.99 (10) HASKELL 147.51/130.99 (11) LetRed [EQUIVALENT, 13 ms] 147.51/130.99 (12) HASKELL 147.51/130.99 (13) NumRed [SOUND, 0 ms] 147.51/130.99 (14) HASKELL 147.51/130.99 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (0) 147.51/130.99 Obligation: 147.51/130.99 mainModule Main 147.51/130.99 module Main where { 147.51/130.99 import qualified Prelude; 147.51/130.99 } 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (1) LR (EQUIVALENT) 147.51/130.99 Lambda Reductions: 147.51/130.99 The following Lambda expression 147.51/130.99 "\nd->n * radix + d" 147.51/130.99 is transformed to 147.51/130.99 "readInt0 radix n d = n * radix + d; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu77->case vu77 of { 147.51/130.99 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readInt1 radix digToInt vu77 = case vu77 of { 147.51/130.99 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\ab->(a,b)" 147.51/130.99 is transformed to 147.51/130.99 "zip0 a b = (a,b); 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu71->case vu71 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc0 vu71 = case vu71 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu72->case vu72 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc1 vu72 = case vu72 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu73->case vu73 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc2 vu73 = case vu73 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu74->case vu74 of { 147.51/130.99 ([],s') -> (c,s') : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc3 c vu74 = case vu74 of { 147.51/130.99 ([],s') -> (c,s') : []; 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu75->case vu75 of { 147.51/130.99 (c,mne) -> concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc4 s vu75 = case vu75 of { 147.51/130.99 (c,mne) -> concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\vu68->case vu68 of { 147.51/130.99 (cs@(_ : _),t) -> (cs,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "nonnull0 vu68 = case vu68 of { 147.51/130.99 (cs@(_ : _),t) -> (cs,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\d->fromEnum d - fromEnum_0" 147.51/130.99 is transformed to 147.51/130.99 "readOct0 d = fromEnum d - fromEnum_0; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\d->fromEnum d - fromEnum_0" 147.51/130.99 is transformed to 147.51/130.99 "readDec0 d = fromEnum d - fromEnum_0; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\(_,zs)->zs" 147.51/130.99 is transformed to 147.51/130.99 "zs0 (_,zs) = zs; 147.51/130.99 " 147.51/130.99 The following Lambda expression 147.51/130.99 "\(ys,_)->ys" 147.51/130.99 is transformed to 147.51/130.99 "ys0 (ys,_) = ys; 147.51/130.99 " 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (2) 147.51/130.99 Obligation: 147.51/130.99 mainModule Main 147.51/130.99 module Main where { 147.51/130.99 import qualified Prelude; 147.51/130.99 } 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (3) CR (EQUIVALENT) 147.51/130.99 Case Reductions: 147.51/130.99 The following Case expression 147.51/130.99 "case vu77 of { 147.51/130.99 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readInt10 radix digToInt (ds,r) = (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 147.51/130.99 readInt10 radix digToInt _ = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case vu73 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc20 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc20 _ = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case vu72 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc10 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc10 _ = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case vu71 of { 147.51/130.99 (n,t) -> (toEnum n,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc00 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc00 _ = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case vu75 of { 147.51/130.99 (c,mne) -> concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 readEsc40 s _ = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case vu74 of { 147.51/130.99 ([],s') -> (c,s') : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc30 c ([],s') = (c,s') : []; 147.51/130.99 readEsc30 c _ = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case concatMap (readEsc4 s) table of { 147.51/130.99 pr : _ -> pr : []; 147.51/130.99 [] -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc5 (pr : _) = pr : []; 147.51/130.99 readEsc5 [] = []; 147.51/130.99 " 147.51/130.99 The following Case expression 147.51/130.99 "case vu68 of { 147.51/130.99 (cs@(_ : _),t) -> (cs,t) : []; 147.51/130.99 _ -> []} 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 147.51/130.99 nonnull00 _ = []; 147.51/130.99 " 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (4) 147.51/130.99 Obligation: 147.51/130.99 mainModule Main 147.51/130.99 module Main where { 147.51/130.99 import qualified Prelude; 147.51/130.99 } 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (5) IFR (EQUIVALENT) 147.51/130.99 If Reductions: 147.51/130.99 The following If expression 147.51/130.99 "if isUpper d then 'A' else 'a'" 147.51/130.99 is transformed to 147.51/130.99 "hex0 True = 'A'; 147.51/130.99 hex0 False = 'a'; 147.51/130.99 " 147.51/130.99 The following If expression 147.51/130.99 "if isDigit d then fromEnum_0 else fromEnum (hex0 (isUpper d)) - 10" 147.51/130.99 is transformed to 147.51/130.99 "hex1 d True = fromEnum_0; 147.51/130.99 hex1 d False = fromEnum (hex0 (isUpper d)) - 10; 147.51/130.99 " 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (6) 147.51/130.99 Obligation: 147.51/130.99 mainModule Main 147.51/130.99 module Main where { 147.51/130.99 import qualified Prelude; 147.51/130.99 } 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (7) BR (EQUIVALENT) 147.51/130.99 Replaced joker patterns by fresh variables and removed binding patterns. 147.51/130.99 147.51/130.99 Binding Reductions: 147.51/130.99 The bind variable of the following binding Pattern 147.51/130.99 "cs@(vy : vz)" 147.51/130.99 is replaced by the following term 147.51/130.99 "vy : vz" 147.51/130.99 The bind variable of the following binding Pattern 147.51/130.99 "s@(ww : wx)" 147.51/130.99 is replaced by the following term 147.51/130.99 "ww : wx" 147.51/130.99 The bind variable of the following binding Pattern 147.51/130.99 "s@(wz : xu)" 147.51/130.99 is replaced by the following term 147.51/130.99 "wz : xu" 147.51/130.99 The bind variable of the following binding Pattern 147.51/130.99 "xs@(zv : zw)" 147.51/130.99 is replaced by the following term 147.51/130.99 "zv : zw" 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (8) 147.51/130.99 Obligation: 147.51/130.99 mainModule Main 147.51/130.99 module Main where { 147.51/130.99 import qualified Prelude; 147.51/130.99 } 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (9) COR (EQUIVALENT) 147.51/130.99 Cond Reductions: 147.51/130.99 The following Function with conditions 147.51/130.99 "takeWhile p [] = []; 147.51/130.99 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "takeWhile p [] = takeWhile3 p []; 147.51/130.99 takeWhile p (x : xs) = takeWhile2 p (x : xs); 147.51/130.99 " 147.51/130.99 "takeWhile0 p x xs True = []; 147.51/130.99 " 147.51/130.99 "takeWhile1 p x xs True = x : takeWhile p xs; 147.51/130.99 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 147.51/130.99 " 147.51/130.99 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 147.51/130.99 " 147.51/130.99 "takeWhile3 p [] = []; 147.51/130.99 takeWhile3 vuv vuw = takeWhile2 vuv vuw; 147.51/130.99 " 147.51/130.99 The following Function with conditions 147.51/130.99 "readEsc ('a' : s) = ('\7',s) : []; 147.51/130.99 readEsc ('b' : s) = ('\8',s) : []; 147.51/130.99 readEsc ('f' : s) = ('\12',s) : []; 147.51/130.99 readEsc ('n' : s) = ('\10',s) : []; 147.51/130.99 readEsc ('r' : s) = ('\13',s) : []; 147.51/130.99 readEsc ('t' : s) = ('\9',s) : []; 147.51/130.99 readEsc ('v' : s) = ('\11',s) : []; 147.51/130.99 readEsc ('\' : s) = ('\',s) : []; 147.51/130.99 readEsc ('"' : s) = ('"',s) : []; 147.51/130.99 readEsc (''' : s) = (''',s) : []; 147.51/130.99 readEsc ('^' : c : s)|c >= '@' && c <= '_'(toEnum (fromEnum c - fromEnum '@'),s) : []; 147.51/130.99 readEsc (ww : wx)|isDigit wwconcatMap readEsc0 (readDec (ww : wx)); 147.51/130.99 readEsc ('o' : s) = concatMap readEsc1 (readOct s); 147.51/130.99 readEsc ('x' : s) = concatMap readEsc2 (readHex s); 147.51/130.99 readEsc (wz : xu)|isUpper wzlet { 147.51/130.99 readEsc3 c vu74 = readEsc30 c vu74; 147.51/130.99 ; 147.51/130.99 readEsc30 c ([],s') = (c,s') : []; 147.51/130.99 readEsc30 c xx = []; 147.51/130.99 ; 147.51/130.99 readEsc4 s vu75 = readEsc40 s vu75; 147.51/130.99 ; 147.51/130.99 readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 readEsc40 s xw = []; 147.51/130.99 ; 147.51/130.99 readEsc5 (pr : xv) = pr : []; 147.51/130.99 readEsc5 [] = []; 147.51/130.99 ; 147.51/130.99 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/130.99 } in readEsc5 (concatMap (readEsc4 (wz : xu)) table); 147.51/130.99 readEsc xy = []; 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readEsc (wzz : s) = readEsc41 (wzz : s); 147.51/130.99 readEsc (wzu : s) = readEsc38 (wzu : s); 147.51/130.99 readEsc (wyv : s) = readEsc36 (wyv : s); 147.51/130.99 readEsc (wxw : s) = readEsc34 (wxw : s); 147.51/130.99 readEsc (wwx : s) = readEsc32 (wwx : s); 147.51/130.99 readEsc (wvy : s) = readEsc29 (wvy : s); 147.51/130.99 readEsc (wuz : s) = readEsc27 (wuz : s); 147.51/130.99 readEsc (wuu : s) = readEsc25 (wuu : s); 147.51/130.99 readEsc (vzv : s) = readEsc23 (vzv : s); 147.51/130.99 readEsc (vyw : s) = readEsc21 (vyw : s); 147.51/130.99 readEsc (vxu : vxx) = readEsc18 (vxu : vxx); 147.51/130.99 readEsc (ww : wx) = readEsc15 (ww : wx); 147.51/130.99 readEsc (vvz : s) = readEsc13 (vvz : s); 147.51/130.99 readEsc (vvu : s) = readEsc11 (vvu : s); 147.51/130.99 readEsc (wz : xu) = readEsc8 (wz : xu); 147.51/130.99 readEsc xy = readEsc6 xy; 147.51/130.99 " 147.51/130.99 "readEsc6 xy = []; 147.51/130.99 " 147.51/130.99 "readEsc7 wz xu True = let { 147.51/130.99 readEsc3 c vu74 = readEsc30 c vu74; 147.51/130.99 ; 147.51/130.99 readEsc30 c ([],s') = (c,s') : []; 147.51/130.99 readEsc30 c xx = []; 147.51/130.99 ; 147.51/130.99 readEsc4 s vu75 = readEsc40 s vu75; 147.51/130.99 ; 147.51/130.99 readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 readEsc40 s xw = []; 147.51/130.99 ; 147.51/130.99 readEsc5 (pr : xv) = pr : []; 147.51/130.99 readEsc5 [] = []; 147.51/130.99 ; 147.51/130.99 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/130.99 } in readEsc5 (concatMap (readEsc4 (wz : xu)) table); 147.51/130.99 readEsc7 wz xu False = readEsc6 (wz : xu); 147.51/130.99 " 147.51/130.99 "readEsc8 (wz : xu) = readEsc7 wz xu (isUpper wz); 147.51/130.99 readEsc8 vuy = readEsc6 vuy; 147.51/130.99 " 147.51/130.99 "readEsc9 True (vvu : s) = concatMap readEsc2 (readHex s); 147.51/130.99 readEsc9 vvv vvw = readEsc8 vvw; 147.51/130.99 " 147.51/130.99 "readEsc11 (vvu : s) = readEsc9 (vvu == 'x') (vvu : s); 147.51/130.99 readEsc11 vvx = readEsc8 vvx; 147.51/130.99 " 147.51/130.99 "readEsc12 True (vvz : s) = concatMap readEsc1 (readOct s); 147.51/130.99 readEsc12 vwu vwv = readEsc11 vwv; 147.51/130.99 " 147.51/130.99 "readEsc13 (vvz : s) = readEsc12 (vvz == 'o') (vvz : s); 147.51/130.99 readEsc13 vww = readEsc11 vww; 147.51/130.99 " 147.51/130.99 "readEsc14 ww wx True = concatMap readEsc0 (readDec (ww : wx)); 147.51/130.99 readEsc14 ww wx False = readEsc13 (ww : wx); 147.51/130.99 " 147.51/130.99 "readEsc15 (ww : wx) = readEsc14 ww wx (isDigit ww); 147.51/130.99 readEsc15 vwy = readEsc13 vwy; 147.51/130.99 " 147.51/130.99 "readEsc16 vxu c s True = (toEnum (fromEnum c - fromEnum '@'),s) : []; 147.51/130.99 readEsc16 vxu c s False = readEsc15 (vxu : c : s); 147.51/130.99 " 147.51/130.99 "readEsc17 True (vxu : c : s) = readEsc16 vxu c s (c >= '@' && c <= '_'); 147.51/130.99 readEsc17 vxy vxz = readEsc15 vxz; 147.51/130.99 " 147.51/130.99 "readEsc18 (vxu : vxx) = readEsc17 (vxu == '^') (vxu : vxx); 147.51/130.99 readEsc18 vyu = readEsc15 vyu; 147.51/130.99 " 147.51/130.99 "readEsc19 True (vyw : s) = (''',s) : []; 147.51/130.99 readEsc19 vyx vyy = readEsc18 vyy; 147.51/130.99 " 147.51/130.99 "readEsc21 (vyw : s) = readEsc19 (vyw == ''') (vyw : s); 147.51/130.99 readEsc21 vyz = readEsc18 vyz; 147.51/130.99 " 147.51/130.99 "readEsc22 True (vzv : s) = ('"',s) : []; 147.51/130.99 readEsc22 vzw vzx = readEsc21 vzx; 147.51/130.99 " 147.51/130.99 "readEsc23 (vzv : s) = readEsc22 (vzv == '"') (vzv : s); 147.51/130.99 readEsc23 vzy = readEsc21 vzy; 147.51/130.99 " 147.51/130.99 "readEsc24 True (wuu : s) = ('\',s) : []; 147.51/130.99 readEsc24 wuv wuw = readEsc23 wuw; 147.51/130.99 " 147.51/130.99 "readEsc25 (wuu : s) = readEsc24 (wuu == '\') (wuu : s); 147.51/130.99 readEsc25 wux = readEsc23 wux; 147.51/130.99 " 147.51/130.99 "readEsc26 True (wuz : s) = ('\11',s) : []; 147.51/130.99 readEsc26 wvu wvv = readEsc25 wvv; 147.51/130.99 " 147.51/130.99 "readEsc27 (wuz : s) = readEsc26 (wuz == 'v') (wuz : s); 147.51/130.99 readEsc27 wvw = readEsc25 wvw; 147.51/130.99 " 147.51/130.99 "readEsc28 True (wvy : s) = ('\9',s) : []; 147.51/130.99 readEsc28 wvz wwu = readEsc27 wwu; 147.51/130.99 " 147.51/130.99 "readEsc29 (wvy : s) = readEsc28 (wvy == 't') (wvy : s); 147.51/130.99 readEsc29 wwv = readEsc27 wwv; 147.51/130.99 " 147.51/130.99 "readEsc31 True (wwx : s) = ('\13',s) : []; 147.51/130.99 readEsc31 wwy wwz = readEsc29 wwz; 147.51/130.99 " 147.51/130.99 "readEsc32 (wwx : s) = readEsc31 (wwx == 'r') (wwx : s); 147.51/130.99 readEsc32 wxu = readEsc29 wxu; 147.51/130.99 " 147.51/130.99 "readEsc33 True (wxw : s) = ('\10',s) : []; 147.51/130.99 readEsc33 wxx wxy = readEsc32 wxy; 147.51/130.99 " 147.51/130.99 "readEsc34 (wxw : s) = readEsc33 (wxw == 'n') (wxw : s); 147.51/130.99 readEsc34 wxz = readEsc32 wxz; 147.51/130.99 " 147.51/130.99 "readEsc35 True (wyv : s) = ('\12',s) : []; 147.51/130.99 readEsc35 wyw wyx = readEsc34 wyx; 147.51/130.99 " 147.51/130.99 "readEsc36 (wyv : s) = readEsc35 (wyv == 'f') (wyv : s); 147.51/130.99 readEsc36 wyy = readEsc34 wyy; 147.51/130.99 " 147.51/130.99 "readEsc37 True (wzu : s) = ('\8',s) : []; 147.51/130.99 readEsc37 wzv wzw = readEsc36 wzw; 147.51/130.99 " 147.51/130.99 "readEsc38 (wzu : s) = readEsc37 (wzu == 'b') (wzu : s); 147.51/130.99 readEsc38 wzx = readEsc36 wzx; 147.51/130.99 " 147.51/130.99 "readEsc39 True (wzz : s) = ('\7',s) : []; 147.51/130.99 readEsc39 xuu xuv = readEsc38 xuv; 147.51/130.99 " 147.51/130.99 "readEsc41 (wzz : s) = readEsc39 (wzz == 'a') (wzz : s); 147.51/130.99 readEsc41 xuw = readEsc38 xuw; 147.51/130.99 " 147.51/130.99 The following Function with conditions 147.51/130.99 "readLitChar ('\' : s) = readEsc s where { 147.51/130.99 readEsc ('a' : s) = ('\7',s) : []; 147.51/130.99 readEsc ('b' : s) = ('\8',s) : []; 147.51/130.99 readEsc ('f' : s) = ('\12',s) : []; 147.51/130.99 readEsc ('n' : s) = ('\10',s) : []; 147.51/130.99 readEsc ('r' : s) = ('\13',s) : []; 147.51/130.99 readEsc ('t' : s) = ('\9',s) : []; 147.51/130.99 readEsc ('v' : s) = ('\11',s) : []; 147.51/130.99 readEsc ('\' : s) = ('\',s) : []; 147.51/130.99 readEsc ('"' : s) = ('"',s) : []; 147.51/130.99 readEsc (''' : s) = (''',s) : []; 147.51/130.99 readEsc ('^' : c : s)|c >= '@' && c <= '_'(toEnum (fromEnum c - fromEnum '@'),s) : []; 147.51/130.99 readEsc (ww : wx)|isDigit wwconcatMap readEsc0 (readDec (ww : wx)); 147.51/130.99 readEsc ('o' : s) = concatMap readEsc1 (readOct s); 147.51/130.99 readEsc ('x' : s) = concatMap readEsc2 (readHex s); 147.51/130.99 readEsc (wz : xu)|isUpper wzlet { 147.51/130.99 readEsc3 c vu74 = readEsc30 c vu74; 147.51/130.99 ; 147.51/130.99 readEsc30 c ([],s') = (c,s') : []; 147.51/130.99 readEsc30 c xx = []; 147.51/130.99 ; 147.51/130.99 readEsc4 s vu75 = readEsc40 s vu75; 147.51/130.99 ; 147.51/130.99 readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 readEsc40 s xw = []; 147.51/130.99 ; 147.51/130.99 readEsc5 (pr : xv) = pr : []; 147.51/130.99 readEsc5 [] = []; 147.51/130.99 ; 147.51/130.99 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/130.99 } in readEsc5 (concatMap (readEsc4 (wz : xu)) table); 147.51/130.99 readEsc xy = []; 147.51/130.99 ; 147.51/130.99 readEsc0 vu71 = readEsc00 vu71; 147.51/130.99 ; 147.51/130.99 readEsc00 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc00 xz = []; 147.51/130.99 ; 147.51/130.99 readEsc1 vu72 = readEsc10 vu72; 147.51/130.99 ; 147.51/130.99 readEsc10 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc10 yu = []; 147.51/130.99 ; 147.51/130.99 readEsc2 vu73 = readEsc20 vu73; 147.51/130.99 ; 147.51/130.99 readEsc20 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc20 yv = []; 147.51/130.99 } 147.51/130.99 ; 147.51/130.99 readLitChar (c : s) = (c,s) : []; 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "readLitChar (xuz : s) = readLitChar2 (xuz : s); 147.51/130.99 readLitChar (c : s) = readLitChar0 (c : s); 147.51/130.99 " 147.51/130.99 "readLitChar0 (c : s) = (c,s) : []; 147.51/130.99 " 147.51/130.99 "readLitChar1 True (xuz : s) = readEsc s where { 147.51/130.99 readEsc (wzz : s) = readEsc41 (wzz : s); 147.51/130.99 readEsc (wzu : s) = readEsc38 (wzu : s); 147.51/130.99 readEsc (wyv : s) = readEsc36 (wyv : s); 147.51/130.99 readEsc (wxw : s) = readEsc34 (wxw : s); 147.51/130.99 readEsc (wwx : s) = readEsc32 (wwx : s); 147.51/130.99 readEsc (wvy : s) = readEsc29 (wvy : s); 147.51/130.99 readEsc (wuz : s) = readEsc27 (wuz : s); 147.51/130.99 readEsc (wuu : s) = readEsc25 (wuu : s); 147.51/130.99 readEsc (vzv : s) = readEsc23 (vzv : s); 147.51/130.99 readEsc (vyw : s) = readEsc21 (vyw : s); 147.51/130.99 readEsc (vxu : vxx) = readEsc18 (vxu : vxx); 147.51/130.99 readEsc (ww : wx) = readEsc15 (ww : wx); 147.51/130.99 readEsc (vvz : s) = readEsc13 (vvz : s); 147.51/130.99 readEsc (vvu : s) = readEsc11 (vvu : s); 147.51/130.99 readEsc (wz : xu) = readEsc8 (wz : xu); 147.51/130.99 readEsc xy = readEsc6 xy; 147.51/130.99 ; 147.51/130.99 readEsc0 vu71 = readEsc00 vu71; 147.51/130.99 ; 147.51/130.99 readEsc00 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc00 xz = []; 147.51/130.99 ; 147.51/130.99 readEsc1 vu72 = readEsc10 vu72; 147.51/130.99 ; 147.51/130.99 readEsc10 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc10 yu = []; 147.51/130.99 ; 147.51/130.99 readEsc11 (vvu : s) = readEsc9 (vvu == 'x') (vvu : s); 147.51/130.99 readEsc11 vvx = readEsc8 vvx; 147.51/130.99 ; 147.51/130.99 readEsc12 True (vvz : s) = concatMap readEsc1 (readOct s); 147.51/130.99 readEsc12 vwu vwv = readEsc11 vwv; 147.51/130.99 ; 147.51/130.99 readEsc13 (vvz : s) = readEsc12 (vvz == 'o') (vvz : s); 147.51/130.99 readEsc13 vww = readEsc11 vww; 147.51/130.99 ; 147.51/130.99 readEsc14 ww wx True = concatMap readEsc0 (readDec (ww : wx)); 147.51/130.99 readEsc14 ww wx False = readEsc13 (ww : wx); 147.51/130.99 ; 147.51/130.99 readEsc15 (ww : wx) = readEsc14 ww wx (isDigit ww); 147.51/130.99 readEsc15 vwy = readEsc13 vwy; 147.51/130.99 ; 147.51/130.99 readEsc16 vxu c s True = (toEnum (fromEnum c - fromEnum '@'),s) : []; 147.51/130.99 readEsc16 vxu c s False = readEsc15 (vxu : c : s); 147.51/130.99 ; 147.51/130.99 readEsc17 True (vxu : c : s) = readEsc16 vxu c s (c >= '@' && c <= '_'); 147.51/130.99 readEsc17 vxy vxz = readEsc15 vxz; 147.51/130.99 ; 147.51/130.99 readEsc18 (vxu : vxx) = readEsc17 (vxu == '^') (vxu : vxx); 147.51/130.99 readEsc18 vyu = readEsc15 vyu; 147.51/130.99 ; 147.51/130.99 readEsc19 True (vyw : s) = (''',s) : []; 147.51/130.99 readEsc19 vyx vyy = readEsc18 vyy; 147.51/130.99 ; 147.51/130.99 readEsc2 vu73 = readEsc20 vu73; 147.51/130.99 ; 147.51/130.99 readEsc20 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc20 yv = []; 147.51/130.99 ; 147.51/130.99 readEsc21 (vyw : s) = readEsc19 (vyw == ''') (vyw : s); 147.51/130.99 readEsc21 vyz = readEsc18 vyz; 147.51/130.99 ; 147.51/130.99 readEsc22 True (vzv : s) = ('"',s) : []; 147.51/130.99 readEsc22 vzw vzx = readEsc21 vzx; 147.51/130.99 ; 147.51/130.99 readEsc23 (vzv : s) = readEsc22 (vzv == '"') (vzv : s); 147.51/130.99 readEsc23 vzy = readEsc21 vzy; 147.51/130.99 ; 147.51/130.99 readEsc24 True (wuu : s) = ('\',s) : []; 147.51/130.99 readEsc24 wuv wuw = readEsc23 wuw; 147.51/130.99 ; 147.51/130.99 readEsc25 (wuu : s) = readEsc24 (wuu == '\') (wuu : s); 147.51/130.99 readEsc25 wux = readEsc23 wux; 147.51/130.99 ; 147.51/130.99 readEsc26 True (wuz : s) = ('\11',s) : []; 147.51/130.99 readEsc26 wvu wvv = readEsc25 wvv; 147.51/130.99 ; 147.51/130.99 readEsc27 (wuz : s) = readEsc26 (wuz == 'v') (wuz : s); 147.51/130.99 readEsc27 wvw = readEsc25 wvw; 147.51/130.99 ; 147.51/130.99 readEsc28 True (wvy : s) = ('\9',s) : []; 147.51/130.99 readEsc28 wvz wwu = readEsc27 wwu; 147.51/130.99 ; 147.51/130.99 readEsc29 (wvy : s) = readEsc28 (wvy == 't') (wvy : s); 147.51/130.99 readEsc29 wwv = readEsc27 wwv; 147.51/130.99 ; 147.51/130.99 readEsc31 True (wwx : s) = ('\13',s) : []; 147.51/130.99 readEsc31 wwy wwz = readEsc29 wwz; 147.51/130.99 ; 147.51/130.99 readEsc32 (wwx : s) = readEsc31 (wwx == 'r') (wwx : s); 147.51/130.99 readEsc32 wxu = readEsc29 wxu; 147.51/130.99 ; 147.51/130.99 readEsc33 True (wxw : s) = ('\10',s) : []; 147.51/130.99 readEsc33 wxx wxy = readEsc32 wxy; 147.51/130.99 ; 147.51/130.99 readEsc34 (wxw : s) = readEsc33 (wxw == 'n') (wxw : s); 147.51/130.99 readEsc34 wxz = readEsc32 wxz; 147.51/130.99 ; 147.51/130.99 readEsc35 True (wyv : s) = ('\12',s) : []; 147.51/130.99 readEsc35 wyw wyx = readEsc34 wyx; 147.51/130.99 ; 147.51/130.99 readEsc36 (wyv : s) = readEsc35 (wyv == 'f') (wyv : s); 147.51/130.99 readEsc36 wyy = readEsc34 wyy; 147.51/130.99 ; 147.51/130.99 readEsc37 True (wzu : s) = ('\8',s) : []; 147.51/130.99 readEsc37 wzv wzw = readEsc36 wzw; 147.51/130.99 ; 147.51/130.99 readEsc38 (wzu : s) = readEsc37 (wzu == 'b') (wzu : s); 147.51/130.99 readEsc38 wzx = readEsc36 wzx; 147.51/130.99 ; 147.51/130.99 readEsc39 True (wzz : s) = ('\7',s) : []; 147.51/130.99 readEsc39 xuu xuv = readEsc38 xuv; 147.51/130.99 ; 147.51/130.99 readEsc41 (wzz : s) = readEsc39 (wzz == 'a') (wzz : s); 147.51/130.99 readEsc41 xuw = readEsc38 xuw; 147.51/130.99 ; 147.51/130.99 readEsc6 xy = []; 147.51/130.99 ; 147.51/130.99 readEsc7 wz xu True = let { 147.51/130.99 readEsc3 c vu74 = readEsc30 c vu74; 147.51/130.99 ; 147.51/130.99 readEsc30 c ([],s') = (c,s') : []; 147.51/130.99 readEsc30 c xx = []; 147.51/130.99 ; 147.51/130.99 readEsc4 s vu75 = readEsc40 s vu75; 147.51/130.99 ; 147.51/130.99 readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/130.99 readEsc40 s xw = []; 147.51/130.99 ; 147.51/130.99 readEsc5 (pr : xv) = pr : []; 147.51/130.99 readEsc5 [] = []; 147.51/130.99 ; 147.51/130.99 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/130.99 } in readEsc5 (concatMap (readEsc4 (wz : xu)) table); 147.51/130.99 readEsc7 wz xu False = readEsc6 (wz : xu); 147.51/130.99 ; 147.51/130.99 readEsc8 (wz : xu) = readEsc7 wz xu (isUpper wz); 147.51/130.99 readEsc8 vuy = readEsc6 vuy; 147.51/130.99 ; 147.51/130.99 readEsc9 True (vvu : s) = concatMap readEsc2 (readHex s); 147.51/130.99 readEsc9 vvv vvw = readEsc8 vvw; 147.51/130.99 } 147.51/130.99 ; 147.51/130.99 readLitChar1 xvu xvv = readLitChar0 xvv; 147.51/130.99 " 147.51/130.99 "readLitChar2 (xuz : s) = readLitChar1 (xuz == '\') (xuz : s); 147.51/130.99 readLitChar2 xvw = readLitChar0 xvw; 147.51/130.99 " 147.51/130.99 The following Function with conditions 147.51/130.99 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 147.51/130.99 lexmatch xs ys = (xs,ys); 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 147.51/130.99 lexmatch xs ys = lexmatch0 xs ys; 147.51/130.99 " 147.51/130.99 "lexmatch0 xs ys = (xs,ys); 147.51/130.99 " 147.51/130.99 "lexmatch1 x xs y ys True = lexmatch xs ys; 147.51/130.99 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 147.51/130.99 " 147.51/130.99 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 147.51/130.99 lexmatch2 xvz xwu = lexmatch0 xvz xwu; 147.51/130.99 " 147.51/130.99 The following Function with conditions 147.51/130.99 "undefined |Falseundefined; 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "undefined = undefined1; 147.51/130.99 " 147.51/130.99 "undefined0 True = undefined; 147.51/130.99 " 147.51/130.99 "undefined1 = undefined0 False; 147.51/130.99 " 147.51/130.99 The following Function with conditions 147.51/130.99 "span p [] = ([],[]); 147.51/130.99 span p (zv : zw)|p zv(zv : ys,zs)|otherwise([],zv : zw) where { 147.51/130.99 vu43 = span p zw; 147.51/130.99 ; 147.51/130.99 ys = ys0 vu43; 147.51/130.99 ; 147.51/130.99 ys0 (ys,zy) = ys; 147.51/130.99 ; 147.51/130.99 zs = zs0 vu43; 147.51/130.99 ; 147.51/130.99 zs0 (zx,zs) = zs; 147.51/130.99 } 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 is transformed to 147.51/130.99 "span p [] = span3 p []; 147.51/130.99 span p (zv : zw) = span2 p (zv : zw); 147.51/130.99 " 147.51/130.99 "span2 p (zv : zw) = span1 p zv zw (p zv) where { 147.51/130.99 span0 p zv zw True = ([],zv : zw); 147.51/130.99 ; 147.51/130.99 span1 p zv zw True = (zv : ys,zs); 147.51/130.99 span1 p zv zw False = span0 p zv zw otherwise; 147.51/130.99 ; 147.51/130.99 vu43 = span p zw; 147.51/130.99 ; 147.51/130.99 ys = ys0 vu43; 147.51/130.99 ; 147.51/130.99 ys0 (ys,zy) = ys; 147.51/130.99 ; 147.51/130.99 zs = zs0 vu43; 147.51/130.99 ; 147.51/130.99 zs0 (zx,zs) = zs; 147.51/130.99 } 147.51/130.99 ; 147.51/130.99 " 147.51/130.99 "span3 p [] = ([],[]); 147.51/130.99 span3 xwx xwy = span2 xwx xwy; 147.51/130.99 " 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (10) 147.51/130.99 Obligation: 147.51/130.99 mainModule Main 147.51/130.99 module Main where { 147.51/130.99 import qualified Prelude; 147.51/130.99 } 147.51/130.99 147.51/130.99 ---------------------------------------- 147.51/130.99 147.51/130.99 (11) LetRed (EQUIVALENT) 147.51/130.99 Let/Where Reductions: 147.51/130.99 The bindings of the following Let/Where expression 147.51/130.99 "span1 p zv zw (p zv) where { 147.51/130.99 span0 p zv zw True = ([],zv : zw); 147.51/130.99 ; 147.51/130.99 span1 p zv zw True = (zv : ys,zs); 147.51/130.99 span1 p zv zw False = span0 p zv zw otherwise; 147.51/130.99 ; 147.51/130.99 vu43 = span p zw; 147.51/130.99 ; 147.51/130.99 ys = ys0 vu43; 147.51/130.99 ; 147.51/130.99 ys0 (ys,zy) = ys; 147.51/130.99 ; 147.51/130.99 zs = zs0 vu43; 147.51/130.99 ; 147.51/130.99 zs0 (zx,zs) = zs; 147.51/130.99 } 147.51/130.99 " 147.51/130.99 are unpacked to the following functions on top level 147.51/130.99 "span2Span0 xwz xxu p zv zw True = ([],zv : zw); 147.51/130.99 " 147.51/130.99 "span2Zs xwz xxu = span2Zs0 xwz xxu (span2Vu43 xwz xxu); 147.51/130.99 " 147.51/130.99 "span2Zs0 xwz xxu (zx,zs) = zs; 147.51/130.99 " 147.51/130.99 "span2Vu43 xwz xxu = span xwz xxu; 147.51/130.99 " 147.51/130.99 "span2Ys xwz xxu = span2Ys0 xwz xxu (span2Vu43 xwz xxu); 147.51/130.99 " 147.51/130.99 "span2Span1 xwz xxu p zv zw True = (zv : span2Ys xwz xxu,span2Zs xwz xxu); 147.51/130.99 span2Span1 xwz xxu p zv zw False = span2Span0 xwz xxu p zv zw otherwise; 147.51/130.99 " 147.51/130.99 "span2Ys0 xwz xxu (ys,zy) = ys; 147.51/130.99 " 147.51/130.99 The bindings of the following Let/Where expression 147.51/130.99 "readInt 16 isHexDigit hex where { 147.51/130.99 hex d = fromEnum d - hex1 d (isDigit d); 147.51/130.99 ; 147.51/130.99 hex0 True = 'A'; 147.51/130.99 hex0 False = 'a'; 147.51/130.99 ; 147.51/130.99 hex1 d True = fromEnum_0; 147.51/130.99 hex1 d False = fromEnum (hex0 (isUpper d)) - 10; 147.51/130.99 } 147.51/130.99 " 147.51/130.99 are unpacked to the following functions on top level 147.51/130.99 "readHexHex0 True = 'A'; 147.51/130.99 readHexHex0 False = 'a'; 147.51/130.99 " 147.51/130.99 "readHexHex d = fromEnum d - readHexHex1 d (isDigit d); 147.51/130.99 " 147.51/130.99 "readHexHex1 d True = fromEnum_0; 147.51/130.99 readHexHex1 d False = fromEnum (readHexHex0 (isUpper d)) - 10; 147.51/130.99 " 147.51/130.99 The bindings of the following Let/Where expression 147.51/130.99 "readEsc s where { 147.51/130.99 readEsc (wzz : s) = readEsc41 (wzz : s); 147.51/130.99 readEsc (wzu : s) = readEsc38 (wzu : s); 147.51/130.99 readEsc (wyv : s) = readEsc36 (wyv : s); 147.51/130.99 readEsc (wxw : s) = readEsc34 (wxw : s); 147.51/130.99 readEsc (wwx : s) = readEsc32 (wwx : s); 147.51/130.99 readEsc (wvy : s) = readEsc29 (wvy : s); 147.51/130.99 readEsc (wuz : s) = readEsc27 (wuz : s); 147.51/130.99 readEsc (wuu : s) = readEsc25 (wuu : s); 147.51/130.99 readEsc (vzv : s) = readEsc23 (vzv : s); 147.51/130.99 readEsc (vyw : s) = readEsc21 (vyw : s); 147.51/130.99 readEsc (vxu : vxx) = readEsc18 (vxu : vxx); 147.51/130.99 readEsc (ww : wx) = readEsc15 (ww : wx); 147.51/130.99 readEsc (vvz : s) = readEsc13 (vvz : s); 147.51/130.99 readEsc (vvu : s) = readEsc11 (vvu : s); 147.51/130.99 readEsc (wz : xu) = readEsc8 (wz : xu); 147.51/130.99 readEsc xy = readEsc6 xy; 147.51/130.99 ; 147.51/130.99 readEsc0 vu71 = readEsc00 vu71; 147.51/130.99 ; 147.51/130.99 readEsc00 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc00 xz = []; 147.51/130.99 ; 147.51/130.99 readEsc1 vu72 = readEsc10 vu72; 147.51/130.99 ; 147.51/130.99 readEsc10 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc10 yu = []; 147.51/130.99 ; 147.51/130.99 readEsc11 (vvu : s) = readEsc9 (vvu == 'x') (vvu : s); 147.51/130.99 readEsc11 vvx = readEsc8 vvx; 147.51/130.99 ; 147.51/130.99 readEsc12 True (vvz : s) = concatMap readEsc1 (readOct s); 147.51/130.99 readEsc12 vwu vwv = readEsc11 vwv; 147.51/130.99 ; 147.51/130.99 readEsc13 (vvz : s) = readEsc12 (vvz == 'o') (vvz : s); 147.51/130.99 readEsc13 vww = readEsc11 vww; 147.51/130.99 ; 147.51/130.99 readEsc14 ww wx True = concatMap readEsc0 (readDec (ww : wx)); 147.51/130.99 readEsc14 ww wx False = readEsc13 (ww : wx); 147.51/130.99 ; 147.51/130.99 readEsc15 (ww : wx) = readEsc14 ww wx (isDigit ww); 147.51/130.99 readEsc15 vwy = readEsc13 vwy; 147.51/130.99 ; 147.51/130.99 readEsc16 vxu c s True = (toEnum (fromEnum c - fromEnum '@'),s) : []; 147.51/130.99 readEsc16 vxu c s False = readEsc15 (vxu : c : s); 147.51/130.99 ; 147.51/130.99 readEsc17 True (vxu : c : s) = readEsc16 vxu c s (c >= '@' && c <= '_'); 147.51/130.99 readEsc17 vxy vxz = readEsc15 vxz; 147.51/130.99 ; 147.51/130.99 readEsc18 (vxu : vxx) = readEsc17 (vxu == '^') (vxu : vxx); 147.51/130.99 readEsc18 vyu = readEsc15 vyu; 147.51/130.99 ; 147.51/130.99 readEsc19 True (vyw : s) = (''',s) : []; 147.51/130.99 readEsc19 vyx vyy = readEsc18 vyy; 147.51/130.99 ; 147.51/130.99 readEsc2 vu73 = readEsc20 vu73; 147.51/130.99 ; 147.51/130.99 readEsc20 (n,t) = (toEnum n,t) : []; 147.51/130.99 readEsc20 yv = []; 147.51/130.99 ; 147.51/130.99 readEsc21 (vyw : s) = readEsc19 (vyw == ''') (vyw : s); 147.51/130.99 readEsc21 vyz = readEsc18 vyz; 147.51/130.99 ; 147.51/130.99 readEsc22 True (vzv : s) = ('"',s) : []; 147.51/130.99 readEsc22 vzw vzx = readEsc21 vzx; 147.51/130.99 ; 147.51/130.99 readEsc23 (vzv : s) = readEsc22 (vzv == '"') (vzv : s); 147.51/130.99 readEsc23 vzy = readEsc21 vzy; 147.51/130.99 ; 147.51/130.99 readEsc24 True (wuu : s) = ('\',s) : []; 147.51/130.99 readEsc24 wuv wuw = readEsc23 wuw; 147.51/130.99 ; 147.51/130.99 readEsc25 (wuu : s) = readEsc24 (wuu == '\') (wuu : s); 147.51/130.99 readEsc25 wux = readEsc23 wux; 147.51/130.99 ; 147.51/130.99 readEsc26 True (wuz : s) = ('\11',s) : []; 147.51/130.99 readEsc26 wvu wvv = readEsc25 wvv; 147.51/130.99 ; 147.51/130.99 readEsc27 (wuz : s) = readEsc26 (wuz == 'v') (wuz : s); 147.51/130.99 readEsc27 wvw = readEsc25 wvw; 147.51/130.99 ; 147.51/130.99 readEsc28 True (wvy : s) = ('\9',s) : []; 147.51/130.99 readEsc28 wvz wwu = readEsc27 wwu; 147.51/130.99 ; 147.51/130.99 readEsc29 (wvy : s) = readEsc28 (wvy == 't') (wvy : s); 147.51/131.00 readEsc29 wwv = readEsc27 wwv; 147.51/131.00 ; 147.51/131.00 readEsc31 True (wwx : s) = ('\13',s) : []; 147.51/131.00 readEsc31 wwy wwz = readEsc29 wwz; 147.51/131.00 ; 147.51/131.00 readEsc32 (wwx : s) = readEsc31 (wwx == 'r') (wwx : s); 147.51/131.00 readEsc32 wxu = readEsc29 wxu; 147.51/131.00 ; 147.51/131.00 readEsc33 True (wxw : s) = ('\10',s) : []; 147.51/131.00 readEsc33 wxx wxy = readEsc32 wxy; 147.51/131.00 ; 147.51/131.00 readEsc34 (wxw : s) = readEsc33 (wxw == 'n') (wxw : s); 147.51/131.00 readEsc34 wxz = readEsc32 wxz; 147.51/131.00 ; 147.51/131.00 readEsc35 True (wyv : s) = ('\12',s) : []; 147.51/131.00 readEsc35 wyw wyx = readEsc34 wyx; 147.51/131.00 ; 147.51/131.00 readEsc36 (wyv : s) = readEsc35 (wyv == 'f') (wyv : s); 147.51/131.00 readEsc36 wyy = readEsc34 wyy; 147.51/131.00 ; 147.51/131.00 readEsc37 True (wzu : s) = ('\8',s) : []; 147.51/131.00 readEsc37 wzv wzw = readEsc36 wzw; 147.51/131.00 ; 147.51/131.00 readEsc38 (wzu : s) = readEsc37 (wzu == 'b') (wzu : s); 147.51/131.00 readEsc38 wzx = readEsc36 wzx; 147.51/131.00 ; 147.51/131.00 readEsc39 True (wzz : s) = ('\7',s) : []; 147.51/131.00 readEsc39 xuu xuv = readEsc38 xuv; 147.51/131.00 ; 147.51/131.00 readEsc41 (wzz : s) = readEsc39 (wzz == 'a') (wzz : s); 147.51/131.00 readEsc41 xuw = readEsc38 xuw; 147.51/131.00 ; 147.51/131.00 readEsc6 xy = []; 147.51/131.00 ; 147.51/131.00 readEsc7 wz xu True = let { 147.51/131.00 readEsc3 c vu74 = readEsc30 c vu74; 147.51/131.00 ; 147.51/131.00 readEsc30 c ([],s') = (c,s') : []; 147.51/131.00 readEsc30 c xx = []; 147.51/131.00 ; 147.51/131.00 readEsc4 s vu75 = readEsc40 s vu75; 147.51/131.00 ; 147.51/131.00 readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/131.00 readEsc40 s xw = []; 147.51/131.00 ; 147.51/131.00 readEsc5 (pr : xv) = pr : []; 147.51/131.00 readEsc5 [] = []; 147.51/131.00 ; 147.51/131.00 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/131.00 } in readEsc5 (concatMap (readEsc4 (wz : xu)) table); 147.51/131.00 readEsc7 wz xu False = readEsc6 (wz : xu); 147.51/131.00 ; 147.51/131.00 readEsc8 (wz : xu) = readEsc7 wz xu (isUpper wz); 147.51/131.00 readEsc8 vuy = readEsc6 vuy; 147.51/131.00 ; 147.51/131.00 readEsc9 True (vvu : s) = concatMap readEsc2 (readHex s); 147.51/131.00 readEsc9 vvv vvw = readEsc8 vvw; 147.51/131.00 } 147.51/131.00 " 147.51/131.00 are unpacked to the following functions on top level 147.51/131.00 "readLitChar1ReadEsc14 ww wx True = concatMap readLitChar1ReadEsc0 (readDec (ww : wx)); 147.51/131.00 readLitChar1ReadEsc14 ww wx False = readLitChar1ReadEsc13 (ww : wx); 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc2 vu73 = readLitChar1ReadEsc20 vu73; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc29 (wvy : s) = readLitChar1ReadEsc28 (wvy == 't') (wvy : s); 147.51/131.00 readLitChar1ReadEsc29 wwv = readLitChar1ReadEsc27 wwv; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc23 (vzv : s) = readLitChar1ReadEsc22 (vzv == '"') (vzv : s); 147.51/131.00 readLitChar1ReadEsc23 vzy = readLitChar1ReadEsc21 vzy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc1 vu72 = readLitChar1ReadEsc10 vu72; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc00 (n,t) = (toEnum n,t) : []; 147.51/131.00 readLitChar1ReadEsc00 xz = []; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc17 True (vxu : c : s) = readLitChar1ReadEsc16 vxu c s (c >= '@' && c <= '_'); 147.51/131.00 readLitChar1ReadEsc17 vxy vxz = readLitChar1ReadEsc15 vxz; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc22 True (vzv : s) = ('"',s) : []; 147.51/131.00 readLitChar1ReadEsc22 vzw vzx = readLitChar1ReadEsc21 vzx; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc21 (vyw : s) = readLitChar1ReadEsc19 (vyw == ''') (vyw : s); 147.51/131.00 readLitChar1ReadEsc21 vyz = readLitChar1ReadEsc18 vyz; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc27 (wuz : s) = readLitChar1ReadEsc26 (wuz == 'v') (wuz : s); 147.51/131.00 readLitChar1ReadEsc27 wvw = readLitChar1ReadEsc25 wvw; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc32 (wwx : s) = readLitChar1ReadEsc31 (wwx == 'r') (wwx : s); 147.51/131.00 readLitChar1ReadEsc32 wxu = readLitChar1ReadEsc29 wxu; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc9 True (vvu : s) = concatMap readLitChar1ReadEsc2 (readHex s); 147.51/131.00 readLitChar1ReadEsc9 vvv vvw = readLitChar1ReadEsc8 vvw; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc35 True (wyv : s) = ('\12',s) : []; 147.51/131.00 readLitChar1ReadEsc35 wyw wyx = readLitChar1ReadEsc34 wyx; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc31 True (wwx : s) = ('\13',s) : []; 147.51/131.00 readLitChar1ReadEsc31 wwy wwz = readLitChar1ReadEsc29 wwz; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc11 (vvu : s) = readLitChar1ReadEsc9 (vvu == 'x') (vvu : s); 147.51/131.00 readLitChar1ReadEsc11 vvx = readLitChar1ReadEsc8 vvx; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc (wzz : s) = readLitChar1ReadEsc41 (wzz : s); 147.51/131.00 readLitChar1ReadEsc (wzu : s) = readLitChar1ReadEsc38 (wzu : s); 147.51/131.00 readLitChar1ReadEsc (wyv : s) = readLitChar1ReadEsc36 (wyv : s); 147.51/131.00 readLitChar1ReadEsc (wxw : s) = readLitChar1ReadEsc34 (wxw : s); 147.51/131.00 readLitChar1ReadEsc (wwx : s) = readLitChar1ReadEsc32 (wwx : s); 147.51/131.00 readLitChar1ReadEsc (wvy : s) = readLitChar1ReadEsc29 (wvy : s); 147.51/131.00 readLitChar1ReadEsc (wuz : s) = readLitChar1ReadEsc27 (wuz : s); 147.51/131.00 readLitChar1ReadEsc (wuu : s) = readLitChar1ReadEsc25 (wuu : s); 147.51/131.00 readLitChar1ReadEsc (vzv : s) = readLitChar1ReadEsc23 (vzv : s); 147.51/131.00 readLitChar1ReadEsc (vyw : s) = readLitChar1ReadEsc21 (vyw : s); 147.51/131.00 readLitChar1ReadEsc (vxu : vxx) = readLitChar1ReadEsc18 (vxu : vxx); 147.51/131.00 readLitChar1ReadEsc (ww : wx) = readLitChar1ReadEsc15 (ww : wx); 147.51/131.00 readLitChar1ReadEsc (vvz : s) = readLitChar1ReadEsc13 (vvz : s); 147.51/131.00 readLitChar1ReadEsc (vvu : s) = readLitChar1ReadEsc11 (vvu : s); 147.51/131.00 readLitChar1ReadEsc (wz : xu) = readLitChar1ReadEsc8 (wz : xu); 147.51/131.00 readLitChar1ReadEsc xy = readLitChar1ReadEsc6 xy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc24 True (wuu : s) = ('\',s) : []; 147.51/131.00 readLitChar1ReadEsc24 wuv wuw = readLitChar1ReadEsc23 wuw; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc6 xy = []; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc18 (vxu : vxx) = readLitChar1ReadEsc17 (vxu == '^') (vxu : vxx); 147.51/131.00 readLitChar1ReadEsc18 vyu = readLitChar1ReadEsc15 vyu; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc10 (n,t) = (toEnum n,t) : []; 147.51/131.00 readLitChar1ReadEsc10 yu = []; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc37 True (wzu : s) = ('\8',s) : []; 147.51/131.00 readLitChar1ReadEsc37 wzv wzw = readLitChar1ReadEsc36 wzw; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc0 vu71 = readLitChar1ReadEsc00 vu71; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc15 (ww : wx) = readLitChar1ReadEsc14 ww wx (isDigit ww); 147.51/131.00 readLitChar1ReadEsc15 vwy = readLitChar1ReadEsc13 vwy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc34 (wxw : s) = readLitChar1ReadEsc33 (wxw == 'n') (wxw : s); 147.51/131.00 readLitChar1ReadEsc34 wxz = readLitChar1ReadEsc32 wxz; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc36 (wyv : s) = readLitChar1ReadEsc35 (wyv == 'f') (wyv : s); 147.51/131.00 readLitChar1ReadEsc36 wyy = readLitChar1ReadEsc34 wyy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc26 True (wuz : s) = ('\11',s) : []; 147.51/131.00 readLitChar1ReadEsc26 wvu wvv = readLitChar1ReadEsc25 wvv; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc16 vxu c s True = (toEnum (fromEnum c - fromEnum '@'),s) : []; 147.51/131.00 readLitChar1ReadEsc16 vxu c s False = readLitChar1ReadEsc15 (vxu : c : s); 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc20 (n,t) = (toEnum n,t) : []; 147.51/131.00 readLitChar1ReadEsc20 yv = []; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc12 True (vvz : s) = concatMap readLitChar1ReadEsc1 (readOct s); 147.51/131.00 readLitChar1ReadEsc12 vwu vwv = readLitChar1ReadEsc11 vwv; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc38 (wzu : s) = readLitChar1ReadEsc37 (wzu == 'b') (wzu : s); 147.51/131.00 readLitChar1ReadEsc38 wzx = readLitChar1ReadEsc36 wzx; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc33 True (wxw : s) = ('\10',s) : []; 147.51/131.00 readLitChar1ReadEsc33 wxx wxy = readLitChar1ReadEsc32 wxy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc41 (wzz : s) = readLitChar1ReadEsc39 (wzz == 'a') (wzz : s); 147.51/131.00 readLitChar1ReadEsc41 xuw = readLitChar1ReadEsc38 xuw; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc25 (wuu : s) = readLitChar1ReadEsc24 (wuu == '\') (wuu : s); 147.51/131.00 readLitChar1ReadEsc25 wux = readLitChar1ReadEsc23 wux; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc19 True (vyw : s) = (''',s) : []; 147.51/131.00 readLitChar1ReadEsc19 vyx vyy = readLitChar1ReadEsc18 vyy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc39 True (wzz : s) = ('\7',s) : []; 147.51/131.00 readLitChar1ReadEsc39 xuu xuv = readLitChar1ReadEsc38 xuv; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc13 (vvz : s) = readLitChar1ReadEsc12 (vvz == 'o') (vvz : s); 147.51/131.00 readLitChar1ReadEsc13 vww = readLitChar1ReadEsc11 vww; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc8 (wz : xu) = readLitChar1ReadEsc7 wz xu (isUpper wz); 147.51/131.00 readLitChar1ReadEsc8 vuy = readLitChar1ReadEsc6 vuy; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc7 wz xu True = readLitChar1ReadEsc7ReadEsc5 (concatMap (readLitChar1ReadEsc7ReadEsc4 (wz : xu)) readLitChar1ReadEsc7Table); 147.51/131.00 readLitChar1ReadEsc7 wz xu False = readLitChar1ReadEsc6 (wz : xu); 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc28 True (wvy : s) = ('\9',s) : []; 147.51/131.00 readLitChar1ReadEsc28 wvz wwu = readLitChar1ReadEsc27 wwu; 147.51/131.00 " 147.51/131.00 The bindings of the following Let/Where expression 147.51/131.00 "let { 147.51/131.00 readEsc3 c vu74 = readEsc30 c vu74; 147.51/131.00 ; 147.51/131.00 readEsc30 c ([],s') = (c,s') : []; 147.51/131.00 readEsc30 c xx = []; 147.51/131.00 ; 147.51/131.00 readEsc4 s vu75 = readEsc40 s vu75; 147.51/131.00 ; 147.51/131.00 readEsc40 s (c,mne) = concatMap (readEsc3 c) (lexmatch mne s : []); 147.51/131.00 readEsc40 s xw = []; 147.51/131.00 ; 147.51/131.00 readEsc5 (pr : xv) = pr : []; 147.51/131.00 readEsc5 [] = []; 147.51/131.00 ; 147.51/131.00 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/131.00 } in readEsc5 (concatMap (readEsc4 (wz : xu)) table)" 147.51/131.00 are unpacked to the following functions on top level 147.51/131.00 "readLitChar1ReadEsc7ReadEsc3 c vu74 = readLitChar1ReadEsc7ReadEsc30 c vu74; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc7ReadEsc30 c ([],s') = (c,s') : []; 147.51/131.00 readLitChar1ReadEsc7ReadEsc30 c xx = []; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc7ReadEsc4 s vu75 = readLitChar1ReadEsc7ReadEsc40 s vu75; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc7ReadEsc5 (pr : xv) = pr : []; 147.51/131.00 readLitChar1ReadEsc7ReadEsc5 [] = []; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc7Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 147.51/131.00 " 147.51/131.00 "readLitChar1ReadEsc7ReadEsc40 s (c,mne) = concatMap (readLitChar1ReadEsc7ReadEsc3 c) (lexmatch mne s : []); 147.51/131.00 readLitChar1ReadEsc7ReadEsc40 s xw = []; 147.51/131.00 " 147.51/131.00 147.51/131.00 ---------------------------------------- 147.51/131.00 147.51/131.00 (12) 147.51/131.00 Obligation: 147.51/131.00 mainModule Main 147.51/131.00 module Main where { 147.51/131.00 import qualified Prelude; 147.51/131.00 } 147.51/131.00 147.51/131.00 ---------------------------------------- 147.51/131.00 147.51/131.00 (13) NumRed (SOUND) 147.51/131.00 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 147.51/131.00 ---------------------------------------- 147.51/131.00 147.51/131.00 (14) 147.51/131.00 Obligation: 147.51/131.00 mainModule Main 147.51/131.00 module Main where { 147.51/131.00 import qualified Prelude; 147.51/131.00 } 147.63/131.04 EOF