217.68/194.78 MAYBE 219.77/195.39 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 219.77/195.39 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 219.77/195.39 219.77/195.39 219.77/195.39 H-Termination with start terms of the given HASKELL could not be shown: 219.77/195.39 219.77/195.39 (0) HASKELL 219.77/195.39 (1) LR [EQUIVALENT, 0 ms] 219.77/195.39 (2) HASKELL 219.77/195.39 (3) CR [EQUIVALENT, 0 ms] 219.77/195.39 (4) HASKELL 219.77/195.39 (5) IFR [EQUIVALENT, 0 ms] 219.77/195.39 (6) HASKELL 219.77/195.39 (7) BR [EQUIVALENT, 0 ms] 219.77/195.39 (8) HASKELL 219.77/195.39 (9) COR [EQUIVALENT, 0 ms] 219.77/195.39 (10) HASKELL 219.77/195.39 (11) LetRed [EQUIVALENT, 40 ms] 219.77/195.39 (12) HASKELL 219.77/195.39 (13) NumRed [SOUND, 0 ms] 219.77/195.39 (14) HASKELL 219.77/195.39 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (0) 219.77/195.39 Obligation: 219.77/195.39 mainModule Main 219.77/195.39 module Main where { 219.77/195.39 import qualified Prelude; 219.77/195.39 } 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (1) LR (EQUIVALENT) 219.77/195.39 Lambda Reductions: 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu22->case vu22 of { 219.77/195.39 (')' : [],t) -> ((),t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readsPrec0 vu22 = case vu22 of { 219.77/195.39 (')' : [],t) -> ((),t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu23->case vu23 of { 219.77/195.39 ('(' : [],s) -> concatMap readsPrec0 (lex s); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readsPrec1 vu23 = case vu23 of { 219.77/195.39 ('(' : [],s) -> concatMap readsPrec0 (lex s); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\r->concatMap readsPrec1 (lex r)" 219.77/195.39 is transformed to 219.77/195.39 "readsPrec2 r = concatMap readsPrec1 (lex r); 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu54->case vu54 of { 219.77/195.39 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex0 vu54 = case vu54 of { 219.77/195.39 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu56->case vu56 of { 219.77/195.39 (str,u) -> (ch ++ str,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexString0 ch vu56 = case vu56 of { 219.77/195.39 (str,u) -> (ch ++ str,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu57->case vu57 of { 219.77/195.39 (ch,t) -> concatMap (lexString0 ch) (lexString t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexString1 vu57 = case vu57 of { 219.77/195.39 (ch,t) -> concatMap (lexString0 ch) (lexString t); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu58->case vu58 of { 219.77/195.39 '\' : t -> ([],t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexStrItem0 vu58 = case vu58 of { 219.77/195.39 '\' : t -> ([],t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu55->case vu55 of { 219.77/195.39 (str,t) -> ('"' : str,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex1 vu55 = case vu55 of { 219.77/195.39 (str,t) -> ('"' : str,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu63->case vu63 of { 219.77/195.39 (e,u) -> ('.' : ds ++ e,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexFracExp0 ds vu63 = case vu63 of { 219.77/195.39 (e,u) -> ('.' : ds ++ e,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu64->case vu64 of { 219.77/195.39 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexFracExp1 vu64 = case vu64 of { 219.77/195.39 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu65->case vu65 of { 219.77/195.39 (ds,u) -> (e : c : ds,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp0 e c vu65 = case vu65 of { 219.77/195.39 (ds,u) -> (e : c : ds,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu66->case vu66 of { 219.77/195.39 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp1 e vu66 = case vu66 of { 219.77/195.39 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu67->case vu67 of { 219.77/195.39 (ds,t) -> (e : ds,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp2 e vu67 = case vu67 of { 219.77/195.39 (ds,t) -> (e : ds,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu59->case vu59 of { 219.77/195.39 (sym,t) -> (c : sym,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex2 c vu59 = case vu59 of { 219.77/195.39 (sym,t) -> (c : sym,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu60->case vu60 of { 219.77/195.39 (nam,t) -> (c : nam,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex3 c vu60 = case vu60 of { 219.77/195.39 (nam,t) -> (c : nam,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu61->case vu61 of { 219.77/195.39 (fe,t) -> (c : ds ++ fe,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex4 c ds vu61 = case vu61 of { 219.77/195.39 (fe,t) -> (c : ds ++ fe,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu62->case vu62 of { 219.77/195.39 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex5 c vu62 = case vu62 of { 219.77/195.39 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\ab->(a,b)" 219.77/195.39 is transformed to 219.77/195.39 "zip0 a b = (a,b); 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu68->case vu68 of { 219.77/195.39 (cs@(_ : _),t) -> (cs,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "nonnull0 vu68 = case vu68 of { 219.77/195.39 (cs@(_ : _),t) -> (cs,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu48->case vu48 of { 219.77/195.39 (')' : [],u) -> (x,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "mandatory0 x vu48 = case vu48 of { 219.77/195.39 (')' : [],u) -> (x,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu49->case vu49 of { 219.77/195.39 (x,t) -> concatMap (mandatory0 x) (lex t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "mandatory1 vu49 = case vu49 of { 219.77/195.39 (x,t) -> concatMap (mandatory0 x) (lex t); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu50->case vu50 of { 219.77/195.39 ('(' : [],s) -> concatMap mandatory1 (optional s); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "mandatory2 vu50 = case vu50 of { 219.77/195.39 ('(' : [],s) -> concatMap mandatory1 (optional s); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\ex->if isEOFError ex then return '\10' else ioError ex" 219.77/195.39 is transformed to 219.77/195.39 "getRest0 ex = if isEOFError ex then return '\10' else ioError ex; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\cs->return (c : cs)" 219.77/195.39 is transformed to 219.77/195.39 "getRest1 c cs = return (c : cs); 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\c->if c == '\10' then return [] else getRest >>= getRest1 c" 219.77/195.39 is transformed to 219.77/195.39 "getRest2 c = if c == '\10' then return [] else getRest >>= getRest1 c; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\ls->return (c : ls)" 219.77/195.39 is transformed to 219.77/195.39 "getLine0 c ls = return (c : ls); 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\c->if c == '\10' then return [] else getRest >>= getLine0 c" 219.77/195.39 is transformed to 219.77/195.39 "getLine1 c = if c == '\10' then return [] else getRest >>= getLine0 c; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu89->case vu89 of { 219.77/195.39 ([],[]) -> x : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readIO0 x vu89 = case vu89 of { 219.77/195.39 ([],[]) -> x : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu90->case vu90 of { 219.77/195.39 (x,t) -> concatMap (readIO0 x) (lex t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readIO1 vu90 = case vu90 of { 219.77/195.39 (x,t) -> concatMap (readIO0 x) (lex t); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\r->return r" 219.77/195.39 is transformed to 219.77/195.39 "readLn0 r = return r; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\l->readIO l >>= readLn0" 219.77/195.39 is transformed to 219.77/195.39 "readLn1 l = readIO l >>= readLn0; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu69->case vu69 of { 219.77/195.39 ([],s') -> (mne,s') : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexEsc0 mne vu69 = case vu69 of { 219.77/195.39 ([],s') -> (mne,s') : []; 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\vu70->case vu70 of { 219.77/195.39 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexEsc1 s vu70 = case vu70 of { 219.77/195.39 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 219.77/195.39 _ -> []} 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\(_,zs)->zs" 219.77/195.39 is transformed to 219.77/195.39 "zs0 (_,zs) = zs; 219.77/195.39 " 219.77/195.39 The following Lambda expression 219.77/195.39 "\(ys,_)->ys" 219.77/195.39 is transformed to 219.77/195.39 "ys0 (ys,_) = ys; 219.77/195.39 " 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (2) 219.77/195.39 Obligation: 219.77/195.39 mainModule Main 219.77/195.39 module Main where { 219.77/195.39 import qualified Prelude; 219.77/195.39 } 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (3) CR (EQUIVALENT) 219.77/195.39 Case Reductions: 219.77/195.39 The following Case expression 219.77/195.39 "case vu90 of { 219.77/195.39 (x,t) -> concatMap (readIO0 x) (lex t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readIO10 (x,t) = concatMap (readIO0 x) (lex t); 219.77/195.39 readIO10 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu89 of { 219.77/195.39 ([],[]) -> x : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readIO00 x ([],[]) = x : []; 219.77/195.39 readIO00 x _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu55 of { 219.77/195.39 (str,t) -> ('"' : str,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex10 (str,t) = ('"' : str,t) : []; 219.77/195.39 lex10 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu57 of { 219.77/195.39 (ch,t) -> concatMap (lexString0 ch) (lexString t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 219.77/195.39 lexString10 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu56 of { 219.77/195.39 (str,u) -> (ch ++ str,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexString00 ch (str,u) = (ch ++ str,u) : []; 219.77/195.39 lexString00 ch _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu58 of { 219.77/195.39 '\' : t -> ([],t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexStrItem00 ('\' : t) = ([],t) : []; 219.77/195.39 lexStrItem00 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu59 of { 219.77/195.39 (sym,t) -> (c : sym,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex20 c (sym,t) = (c : sym,t) : []; 219.77/195.39 lex20 c _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu67 of { 219.77/195.39 (ds,t) -> (e : ds,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp20 e (ds,t) = (e : ds,t) : []; 219.77/195.39 lexExp20 e _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu65 of { 219.77/195.39 (ds,u) -> (e : c : ds,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp00 e c (ds,u) = (e : c : ds,u) : []; 219.77/195.39 lexExp00 e c _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu62 of { 219.77/195.39 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 219.77/195.39 lex50 c _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu66 of { 219.77/195.39 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp10 e (c : t) = if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 219.77/195.39 lexExp10 e _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu60 of { 219.77/195.39 (nam,t) -> (c : nam,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex30 c (nam,t) = (c : nam,t) : []; 219.77/195.39 lex30 c _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu61 of { 219.77/195.39 (fe,t) -> (c : ds ++ fe,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 219.77/195.39 lex40 c ds _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu63 of { 219.77/195.39 (e,u) -> ('.' : ds ++ e,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 219.77/195.39 lexFracExp00 ds _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu64 of { 219.77/195.39 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 219.77/195.39 lexFracExp10 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu23 of { 219.77/195.39 ('(' : [],s) -> concatMap readsPrec0 (lex s); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readsPrec10 ('(' : [],s) = concatMap readsPrec0 (lex s); 219.77/195.39 readsPrec10 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu22 of { 219.77/195.39 (')' : [],t) -> ((),t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readsPrec00 (')' : [],t) = ((),t) : []; 219.77/195.39 readsPrec00 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu54 of { 219.77/195.39 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex00 (ch,''' : t) = if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 219.77/195.39 lex00 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu48 of { 219.77/195.39 (')' : [],u) -> (x,u) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "mandatory00 x (')' : [],u) = (x,u) : []; 219.77/195.39 mandatory00 x _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu49 of { 219.77/195.39 (x,t) -> concatMap (mandatory0 x) (lex t); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 219.77/195.39 mandatory10 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu50 of { 219.77/195.39 ('(' : [],s) -> concatMap mandatory1 (optional s); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 219.77/195.39 mandatory20 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu68 of { 219.77/195.39 (cs@(_ : _),t) -> (cs,t) : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 219.77/195.39 nonnull00 _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case concatMap readIO1 (reads s) of { 219.77/195.39 x : [] -> return x; 219.77/195.39 [] -> ioError (userError ('N' : 'P' : [])); 219.77/195.39 _ -> ioError (userError ('A' : 'P' : []))} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readIO2 (x : []) = return x; 219.77/195.39 readIO2 [] = ioError (userError ('N' : 'P' : [])); 219.77/195.39 readIO2 _ = ioError (userError ('A' : 'P' : [])); 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case concatMap (lexEsc1 s) table of { 219.77/195.39 pr : _ -> pr : []; 219.77/195.39 [] -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexEsc2 (pr : _) = pr : []; 219.77/195.39 lexEsc2 [] = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu69 of { 219.77/195.39 ([],s') -> (mne,s') : []; 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexEsc00 mne ([],s') = (mne,s') : []; 219.77/195.39 lexEsc00 mne _ = []; 219.77/195.39 " 219.77/195.39 The following Case expression 219.77/195.39 "case vu70 of { 219.77/195.39 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 219.77/195.39 _ -> []} 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 219.77/195.39 lexEsc10 s _ = []; 219.77/195.39 " 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (4) 219.77/195.39 Obligation: 219.77/195.39 mainModule Main 219.77/195.39 module Main where { 219.77/195.39 import qualified Prelude; 219.77/195.39 } 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (5) IFR (EQUIVALENT) 219.77/195.39 If Reductions: 219.77/195.39 The following If expression 219.77/195.39 "if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []" 219.77/195.39 is transformed to 219.77/195.39 "lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 219.77/195.39 lexExp100 e c t False = []; 219.77/195.39 " 219.77/195.39 The following If expression 219.77/195.39 "if b then mandatory else optional" 219.77/195.39 is transformed to 219.77/195.39 "readParen0 True = mandatory; 219.77/195.39 readParen0 False = optional; 219.77/195.39 " 219.77/195.39 The following If expression 219.77/195.39 "if isEOFError ex then return '\10' else ioError ex" 219.77/195.39 is transformed to 219.77/195.39 "getRest00 ex True = return '\10'; 219.77/195.39 getRest00 ex False = ioError ex; 219.77/195.39 " 219.77/195.39 The following If expression 219.77/195.39 "if c == '\10' then return [] else getRest >>= getLine0 c" 219.77/195.39 is transformed to 219.77/195.39 "getLine10 c True = return []; 219.77/195.39 getLine10 c False = getRest >>= getLine0 c; 219.77/195.39 " 219.77/195.39 The following If expression 219.77/195.39 "if c == '\10' then return [] else getRest >>= getRest1 c" 219.77/195.39 is transformed to 219.77/195.39 "getRest20 c True = return []; 219.77/195.39 getRest20 c False = getRest >>= getRest1 c; 219.77/195.39 " 219.77/195.39 The following If expression 219.77/195.39 "if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []" 219.77/195.39 is transformed to 219.77/195.39 "lex000 ch t True = (''' : ch ++ ''' : [],t) : []; 219.77/195.39 lex000 ch t False = []; 219.77/195.39 " 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (6) 219.77/195.39 Obligation: 219.77/195.39 mainModule Main 219.77/195.39 module Main where { 219.77/195.39 import qualified Prelude; 219.77/195.39 } 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (7) BR (EQUIVALENT) 219.77/195.39 Replaced joker patterns by fresh variables and removed binding patterns. 219.77/195.39 219.77/195.39 Binding Reductions: 219.77/195.39 The bind variable of the following binding Pattern 219.77/195.39 "cs@(wu : wv)" 219.77/195.39 is replaced by the following term 219.77/195.39 "wu : wv" 219.77/195.39 The bind variable of the following binding Pattern 219.77/195.39 "xs@(vvv : vvw)" 219.77/195.39 is replaced by the following term 219.77/195.39 "vvv : vvw" 219.77/195.39 The bind variable of the following binding Pattern 219.77/195.39 "s@(vwu : vwv)" 219.77/195.39 is replaced by the following term 219.77/195.39 "vwu : vwv" 219.77/195.39 The bind variable of the following binding Pattern 219.77/195.39 "xs@(vxu : vxv)" 219.77/195.39 is replaced by the following term 219.77/195.39 "vxu : vxv" 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (8) 219.77/195.39 Obligation: 219.77/195.39 mainModule Main 219.77/195.39 module Main where { 219.77/195.39 import qualified Prelude; 219.77/195.39 } 219.77/195.39 219.77/195.39 ---------------------------------------- 219.77/195.39 219.77/195.39 (9) COR (EQUIVALENT) 219.77/195.39 Cond Reductions: 219.77/195.39 The following Function with conditions 219.77/195.39 "readsPrec00 (')' : [],t) = ((),t) : []; 219.77/195.39 readsPrec00 wx = []; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "readsPrec00 (vyu : vyv,t) = readsPrec002 (vyu : vyv,t); 219.77/195.39 readsPrec00 wx = readsPrec000 wx; 219.77/195.39 " 219.77/195.39 "readsPrec000 wx = []; 219.77/195.39 " 219.77/195.39 "readsPrec001 True (vyu : [],t) = ((),t) : []; 219.77/195.39 readsPrec001 vyw vyx = readsPrec000 vyx; 219.77/195.39 " 219.77/195.39 "readsPrec002 (vyu : vyv,t) = readsPrec001 (vyu == ')') (vyu : vyv,t); 219.77/195.39 readsPrec002 vyy = readsPrec000 vyy; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "takeWhile p [] = []; 219.77/195.39 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "takeWhile p [] = takeWhile3 p []; 219.77/195.39 takeWhile p (x : xs) = takeWhile2 p (x : xs); 219.77/195.39 " 219.77/195.39 "takeWhile1 p x xs True = x : takeWhile p xs; 219.77/195.39 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 219.77/195.39 " 219.77/195.39 "takeWhile0 p x xs True = []; 219.77/195.39 " 219.77/195.39 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 219.77/195.39 " 219.77/195.39 "takeWhile3 p [] = []; 219.77/195.39 takeWhile3 vzv vzw = takeWhile2 vzv vzw; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "lexString ('"' : s) = ('"' : [],s) : []; 219.77/195.39 lexString s = concatMap lexString1 (lexStrItem s); 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexString (vzy : s) = lexString4 (vzy : s); 219.77/195.39 lexString s = lexString2 s; 219.77/195.39 " 219.77/195.39 "lexString2 s = concatMap lexString1 (lexStrItem s); 219.77/195.39 " 219.77/195.39 "lexString3 True (vzy : s) = ('"' : [],s) : []; 219.77/195.39 lexString3 vzz wuu = lexString2 wuu; 219.77/195.39 " 219.77/195.39 "lexString4 (vzy : s) = lexString3 (vzy == '"') (vzy : s); 219.77/195.39 lexString4 wuv = lexString2 wuv; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 219.77/195.39 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 219.77/195.39 lexStrItem s = lexLitChar s; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexStrItem (wvz : wwx) = lexStrItem7 (wvz : wwx); 219.77/195.39 lexStrItem (wux : wvu) = lexStrItem4 (wux : wvu); 219.77/195.39 lexStrItem s = lexStrItem1 s; 219.77/195.39 " 219.77/195.39 "lexStrItem1 s = lexLitChar s; 219.77/195.39 " 219.77/195.39 "lexStrItem2 wux c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 219.77/195.39 lexStrItem2 wux c s False = lexStrItem1 (wux : c : s); 219.77/195.39 " 219.77/195.39 "lexStrItem3 True (wux : c : s) = lexStrItem2 wux c s (isSpace c); 219.77/195.39 lexStrItem3 wvv wvw = lexStrItem1 wvw; 219.77/195.39 " 219.77/195.39 "lexStrItem4 (wux : wvu) = lexStrItem3 (wux == '\') (wux : wvu); 219.77/195.39 lexStrItem4 wvx = lexStrItem1 wvx; 219.77/195.39 " 219.77/195.39 "lexStrItem5 True (wvz : wwv : s) = ('\' : '&' : [],s) : []; 219.77/195.39 lexStrItem5 wwy wwz = lexStrItem4 wwz; 219.77/195.39 " 219.77/195.39 "lexStrItem6 True (wvz : wwv : s) = lexStrItem5 (wwv == '&') (wvz : wwv : s); 219.77/195.39 lexStrItem6 wxu wxv = lexStrItem4 wxv; 219.77/195.39 " 219.77/195.39 "lexStrItem7 (wvz : wwx) = lexStrItem6 (wvz == '\') (wvz : wwx); 219.77/195.39 lexStrItem7 wxw = lexStrItem4 wxw; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "lexStrItem00 ('\' : t) = ([],t) : []; 219.77/195.39 lexStrItem00 xv = []; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexStrItem00 (wxy : t) = lexStrItem002 (wxy : t); 219.77/195.39 lexStrItem00 xv = lexStrItem000 xv; 219.77/195.39 " 219.77/195.39 "lexStrItem000 xv = []; 219.77/195.39 " 219.77/195.39 "lexStrItem001 True (wxy : t) = ([],t) : []; 219.77/195.39 lexStrItem001 wxz wyu = lexStrItem000 wyu; 219.77/195.39 " 219.77/195.39 "lexStrItem002 (wxy : t) = lexStrItem001 (wxy == '\') (wxy : t); 219.77/195.39 lexStrItem002 wyv = lexStrItem000 wyv; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 219.77/195.39 lexExp s = ([],s) : []; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexExp (e : s) = lexExp5 (e : s); 219.77/195.39 lexExp s = lexExp3 s; 219.77/195.39 " 219.77/195.39 "lexExp3 s = ([],s) : []; 219.77/195.39 " 219.77/195.39 "lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 219.77/195.39 lexExp4 e s False = lexExp3 (e : s); 219.77/195.39 " 219.77/195.39 "lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 219.77/195.39 lexExp5 wyx = lexExp3 wyx; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 219.77/195.39 lexFracExp s = lexExp s; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lexFracExp (wyz : wzw) = lexFracExp5 (wyz : wzw); 219.77/195.39 lexFracExp s = lexFracExp2 s; 219.77/195.39 " 219.77/195.39 "lexFracExp2 s = lexExp s; 219.77/195.39 " 219.77/195.39 "lexFracExp3 wyz c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 219.77/195.39 lexFracExp3 wyz c cs False = lexFracExp2 (wyz : c : cs); 219.77/195.39 " 219.77/195.39 "lexFracExp4 True (wyz : c : cs) = lexFracExp3 wyz c cs (isDigit c); 219.77/195.39 lexFracExp4 wzx wzy = lexFracExp2 wzy; 219.77/195.39 " 219.77/195.39 "lexFracExp5 (wyz : wzw) = lexFracExp4 (wyz == '.') (wyz : wzw); 219.77/195.39 lexFracExp5 wzz = lexFracExp2 wzz; 219.77/195.39 " 219.77/195.39 The following Function with conditions 219.77/195.39 "lex [] = ([],[]) : []; 219.77/195.39 lex (c : s)|isSpace clex (dropWhile isSpace s); 219.77/195.39 lex (''' : s) = concatMap lex0 (lexLitChar s); 219.77/195.39 lex ('"' : s) = concatMap lex1 (lexString s) where { 219.77/195.39 lex1 vu55 = lex10 vu55; 219.77/195.39 ; 219.77/195.39 lex10 (str,t) = ('"' : str,t) : []; 219.77/195.39 lex10 xw = []; 219.77/195.39 ; 219.77/195.39 lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 219.77/195.39 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 219.77/195.39 lexStrItem s = lexLitChar s; 219.77/195.39 ; 219.77/195.39 lexStrItem0 vu58 = lexStrItem00 vu58; 219.77/195.39 ; 219.77/195.39 lexStrItem00 ('\' : t) = ([],t) : []; 219.77/195.39 lexStrItem00 xv = []; 219.77/195.39 ; 219.77/195.39 lexString ('"' : s) = ('"' : [],s) : []; 219.77/195.39 lexString s = concatMap lexString1 (lexStrItem s); 219.77/195.39 ; 219.77/195.39 lexString0 ch vu56 = lexString00 ch vu56; 219.77/195.39 ; 219.77/195.39 lexString00 ch (str,u) = (ch ++ str,u) : []; 219.77/195.39 lexString00 ch wz = []; 219.77/195.39 ; 219.77/195.39 lexString1 vu57 = lexString10 vu57; 219.77/195.39 ; 219.77/195.39 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 219.77/195.39 lexString10 xu = []; 219.77/195.39 } 219.77/195.39 ; 219.77/195.39 lex (c : s)|isSingle c(c : [],s) : []|isSym cconcatMap (lex2 c) (span isSym s : [])|isAlpha cconcatMap (lex3 c) (span isIdChar s : [])|isDigit cconcatMap (lex5 c) (span isDigit s : [])|otherwise[] where { 219.77/195.39 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 219.77/195.39 ; 219.77/195.39 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 219.77/195.39 ; 219.77/195.39 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 219.77/195.39 ; 219.77/195.39 lex2 c vu59 = lex20 c vu59; 219.77/195.39 ; 219.77/195.39 lex20 c (sym,t) = (c : sym,t) : []; 219.77/195.39 lex20 c yy = []; 219.77/195.39 ; 219.77/195.39 lex3 c vu60 = lex30 c vu60; 219.77/195.39 ; 219.77/195.39 lex30 c (nam,t) = (c : nam,t) : []; 219.77/195.39 lex30 c yz = []; 219.77/195.39 ; 219.77/195.39 lex4 c ds vu61 = lex40 c ds vu61; 219.77/195.39 ; 219.77/195.39 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 219.77/195.39 lex40 c ds yw = []; 219.77/195.39 ; 219.77/195.39 lex5 c vu62 = lex50 c vu62; 219.77/195.39 ; 219.77/195.39 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 219.77/195.39 lex50 c yx = []; 219.77/195.39 ; 219.77/195.39 lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 219.77/195.39 lexExp s = ([],s) : []; 219.77/195.39 ; 219.77/195.39 lexExp0 e c vu65 = lexExp00 e c vu65; 219.77/195.39 ; 219.77/195.39 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 219.77/195.39 lexExp00 e c xx = []; 219.77/195.39 ; 219.77/195.39 lexExp1 e vu66 = lexExp10 e vu66; 219.77/195.39 ; 219.77/195.39 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 219.77/195.39 lexExp10 e xz = []; 219.77/195.39 ; 219.77/195.39 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 219.77/195.39 lexExp100 e c t False = []; 219.77/195.39 ; 219.77/195.39 lexExp2 e vu67 = lexExp20 e vu67; 219.77/195.39 ; 219.77/195.39 lexExp20 e (ds,t) = (e : ds,t) : []; 219.77/195.39 lexExp20 e xy = []; 219.77/195.39 ; 219.77/195.39 lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 219.77/195.39 lexFracExp s = lexExp s; 219.77/195.39 ; 219.77/195.39 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 219.77/195.39 ; 219.77/195.39 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 219.77/195.39 lexFracExp00 ds yv = []; 219.77/195.39 ; 219.77/195.39 lexFracExp1 vu64 = lexFracExp10 vu64; 219.77/195.39 ; 219.77/195.39 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 219.77/195.39 lexFracExp10 yu = []; 219.77/195.39 } 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 is transformed to 219.77/195.39 "lex [] = lex19 []; 219.77/195.39 lex (c : s) = lex18 (c : s); 219.77/195.39 lex (xvv : s) = lex16 (xvv : s); 219.77/195.39 lex (xuw : s) = lex14 (xuw : s); 219.77/195.39 lex (c : s) = lex12 (c : s); 219.77/195.39 " 219.77/195.39 "lex12 (c : s) = lex11 c s (isSingle c) where { 219.77/195.39 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 219.77/195.39 ; 219.77/195.39 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 219.77/195.39 ; 219.77/195.39 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 219.77/195.39 ; 219.77/195.39 lex11 c s True = (c : [],s) : []; 219.77/195.39 lex11 c s False = lex9 c s (isSym c); 219.77/195.39 ; 219.77/195.39 lex2 c vu59 = lex20 c vu59; 219.77/195.39 ; 219.77/195.39 lex20 c (sym,t) = (c : sym,t) : []; 219.77/195.39 lex20 c yy = []; 219.77/195.39 ; 219.77/195.39 lex3 c vu60 = lex30 c vu60; 219.77/195.39 ; 219.77/195.39 lex30 c (nam,t) = (c : nam,t) : []; 219.77/195.39 lex30 c yz = []; 219.77/195.39 ; 219.77/195.39 lex4 c ds vu61 = lex40 c ds vu61; 219.77/195.39 ; 219.77/195.39 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 219.77/195.39 lex40 c ds yw = []; 219.77/195.39 ; 219.77/195.39 lex5 c vu62 = lex50 c vu62; 219.77/195.39 ; 219.77/195.39 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 219.77/195.39 lex50 c yx = []; 219.77/195.39 ; 219.77/195.39 lex6 c s True = []; 219.77/195.39 ; 219.77/195.39 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 219.77/195.39 lex7 c s False = lex6 c s otherwise; 219.77/195.39 ; 219.77/195.39 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 219.77/195.39 lex8 c s False = lex7 c s (isDigit c); 219.77/195.39 ; 219.77/195.39 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 219.77/195.39 lex9 c s False = lex8 c s (isAlpha c); 219.77/195.39 ; 219.77/195.39 lexExp (e : s) = lexExp5 (e : s); 219.77/195.39 lexExp s = lexExp3 s; 219.77/195.39 ; 219.77/195.39 lexExp0 e c vu65 = lexExp00 e c vu65; 219.77/195.39 ; 219.77/195.39 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 219.77/195.39 lexExp00 e c xx = []; 219.77/195.39 ; 219.77/195.39 lexExp1 e vu66 = lexExp10 e vu66; 219.77/195.39 ; 219.77/195.39 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 219.77/195.39 lexExp10 e xz = []; 219.77/195.39 ; 219.77/195.39 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 219.77/195.39 lexExp100 e c t False = []; 219.77/195.39 ; 219.77/195.39 lexExp2 e vu67 = lexExp20 e vu67; 219.77/195.39 ; 219.77/195.39 lexExp20 e (ds,t) = (e : ds,t) : []; 219.77/195.39 lexExp20 e xy = []; 219.77/195.39 ; 219.77/195.39 lexExp3 s = ([],s) : []; 219.77/195.39 ; 219.77/195.39 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 219.77/195.39 lexExp4 e s False = lexExp3 (e : s); 219.77/195.39 ; 219.77/195.39 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 219.77/195.39 lexExp5 wyx = lexExp3 wyx; 219.77/195.39 ; 219.77/195.39 lexFracExp (wyz : wzw) = lexFracExp5 (wyz : wzw); 219.77/195.39 lexFracExp s = lexFracExp2 s; 219.77/195.39 ; 219.77/195.39 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 219.77/195.39 ; 219.77/195.39 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 219.77/195.39 lexFracExp00 ds yv = []; 219.77/195.39 ; 219.77/195.39 lexFracExp1 vu64 = lexFracExp10 vu64; 219.77/195.39 ; 219.77/195.39 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 219.77/195.39 lexFracExp10 yu = []; 219.77/195.39 ; 219.77/195.39 lexFracExp2 s = lexExp s; 219.77/195.39 ; 219.77/195.39 lexFracExp3 wyz c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 219.77/195.39 lexFracExp3 wyz c cs False = lexFracExp2 (wyz : c : cs); 219.77/195.39 ; 219.77/195.39 lexFracExp4 True (wyz : c : cs) = lexFracExp3 wyz c cs (isDigit c); 219.77/195.39 lexFracExp4 wzx wzy = lexFracExp2 wzy; 219.77/195.39 ; 219.77/195.39 lexFracExp5 (wyz : wzw) = lexFracExp4 (wyz == '.') (wyz : wzw); 219.77/195.39 lexFracExp5 wzz = lexFracExp2 wzz; 219.77/195.39 } 219.77/195.39 ; 219.77/195.39 " 219.77/195.39 "lex13 True (xuw : s) = concatMap lex1 (lexString s) where { 219.77/195.39 lex1 vu55 = lex10 vu55; 219.77/195.39 ; 219.77/195.39 lex10 (str,t) = ('"' : str,t) : []; 219.77/195.39 lex10 xw = []; 219.77/195.39 ; 219.77/195.39 lexStrItem (wvz : wwx) = lexStrItem7 (wvz : wwx); 219.77/195.39 lexStrItem (wux : wvu) = lexStrItem4 (wux : wvu); 219.77/195.39 lexStrItem s = lexStrItem1 s; 219.77/195.39 ; 219.77/195.39 lexStrItem0 vu58 = lexStrItem00 vu58; 219.77/195.39 ; 219.77/195.39 lexStrItem00 (wxy : t) = lexStrItem002 (wxy : t); 219.77/195.39 lexStrItem00 xv = lexStrItem000 xv; 219.77/195.39 ; 219.77/195.39 lexStrItem000 xv = []; 219.77/195.39 ; 219.77/195.39 lexStrItem001 True (wxy : t) = ([],t) : []; 219.77/195.39 lexStrItem001 wxz wyu = lexStrItem000 wyu; 219.77/195.39 ; 219.77/195.39 lexStrItem002 (wxy : t) = lexStrItem001 (wxy == '\') (wxy : t); 220.14/195.44 lexStrItem002 wyv = lexStrItem000 wyv; 220.14/195.44 ; 220.14/195.44 lexStrItem1 s = lexLitChar s; 220.14/195.44 ; 220.14/195.44 lexStrItem2 wux c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 220.14/195.44 lexStrItem2 wux c s False = lexStrItem1 (wux : c : s); 220.14/195.44 ; 220.14/195.44 lexStrItem3 True (wux : c : s) = lexStrItem2 wux c s (isSpace c); 220.14/195.44 lexStrItem3 wvv wvw = lexStrItem1 wvw; 220.14/195.44 ; 220.14/195.44 lexStrItem4 (wux : wvu) = lexStrItem3 (wux == '\') (wux : wvu); 220.14/195.44 lexStrItem4 wvx = lexStrItem1 wvx; 220.14/195.44 ; 220.14/195.44 lexStrItem5 True (wvz : wwv : s) = ('\' : '&' : [],s) : []; 220.14/195.44 lexStrItem5 wwy wwz = lexStrItem4 wwz; 220.14/195.44 ; 220.14/195.44 lexStrItem6 True (wvz : wwv : s) = lexStrItem5 (wwv == '&') (wvz : wwv : s); 220.14/195.44 lexStrItem6 wxu wxv = lexStrItem4 wxv; 220.14/195.44 ; 220.14/195.44 lexStrItem7 (wvz : wwx) = lexStrItem6 (wvz == '\') (wvz : wwx); 220.14/195.44 lexStrItem7 wxw = lexStrItem4 wxw; 220.14/195.44 ; 220.14/195.44 lexString (vzy : s) = lexString4 (vzy : s); 220.14/195.44 lexString s = lexString2 s; 220.14/195.44 ; 220.14/195.44 lexString0 ch vu56 = lexString00 ch vu56; 220.14/195.44 ; 220.14/195.44 lexString00 ch (str,u) = (ch ++ str,u) : []; 220.14/195.44 lexString00 ch wz = []; 220.14/195.44 ; 220.14/195.44 lexString1 vu57 = lexString10 vu57; 220.14/195.44 ; 220.14/195.44 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 220.14/195.44 lexString10 xu = []; 220.14/195.44 ; 220.14/195.44 lexString2 s = concatMap lexString1 (lexStrItem s); 220.14/195.44 ; 220.14/195.44 lexString3 True (vzy : s) = ('"' : [],s) : []; 220.14/195.44 lexString3 vzz wuu = lexString2 wuu; 220.14/195.44 ; 220.14/195.44 lexString4 (vzy : s) = lexString3 (vzy == '"') (vzy : s); 220.14/195.44 lexString4 wuv = lexString2 wuv; 220.14/195.44 } 220.14/195.44 ; 220.14/195.44 lex13 xux xuy = lex12 xuy; 220.14/195.44 " 220.14/195.44 "lex14 (xuw : s) = lex13 (xuw == '"') (xuw : s); 220.14/195.44 lex14 xuz = lex12 xuz; 220.14/195.44 " 220.14/195.44 "lex15 True (xvv : s) = concatMap lex0 (lexLitChar s); 220.14/195.44 lex15 xvw xvx = lex14 xvx; 220.14/195.44 " 220.14/195.44 "lex16 (xvv : s) = lex15 (xvv == ''') (xvv : s); 220.14/195.44 lex16 xvy = lex14 xvy; 220.14/195.44 " 220.14/195.44 "lex17 c s True = lex (dropWhile isSpace s); 220.14/195.44 lex17 c s False = lex16 (c : s); 220.14/195.44 " 220.14/195.44 "lex18 (c : s) = lex17 c s (isSpace c); 220.14/195.44 lex18 xwu = lex16 xwu; 220.14/195.44 " 220.14/195.44 "lex19 [] = ([],[]) : []; 220.14/195.44 lex19 xww = lex18 xww; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "readsPrec10 ('(' : [],s) = concatMap readsPrec0 (lex s); 220.14/195.44 readsPrec10 zv = []; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "readsPrec10 (xwz : xxu,s) = readsPrec102 (xwz : xxu,s); 220.14/195.44 readsPrec10 zv = readsPrec100 zv; 220.14/195.44 " 220.14/195.44 "readsPrec100 zv = []; 220.14/195.44 " 220.14/195.44 "readsPrec101 True (xwz : [],s) = concatMap readsPrec0 (lex s); 220.14/195.44 readsPrec101 xxv xxw = readsPrec100 xxw; 220.14/195.44 " 220.14/195.44 "readsPrec102 (xwz : xxu,s) = readsPrec101 (xwz == '(') (xwz : xxu,s); 220.14/195.44 readsPrec102 xxx = readsPrec100 xxx; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "getChar |terminatorreturn terminator|otherwiseaIOE IOError_EOF; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "getChar = getChar2; 220.14/195.44 " 220.14/195.44 "getChar1 True = return terminator; 220.14/195.44 getChar1 False = getChar0 otherwise; 220.14/195.44 " 220.14/195.44 "getChar0 True = aIOE IOError_EOF; 220.14/195.44 " 220.14/195.44 "getChar2 = getChar1 terminator; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 220.14/195.44 lexmatch xs ys = (xs,ys); 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 220.14/195.44 lexmatch xs ys = lexmatch0 xs ys; 220.14/195.44 " 220.14/195.44 "lexmatch0 xs ys = (xs,ys); 220.14/195.44 " 220.14/195.44 "lexmatch1 x xs y ys True = lexmatch xs ys; 220.14/195.44 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 220.14/195.44 " 220.14/195.44 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 220.14/195.44 lexmatch2 xyu xyv = lexmatch0 xyu xyv; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "undefined |Falseundefined; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "undefined = undefined1; 220.14/195.44 " 220.14/195.44 "undefined0 True = undefined; 220.14/195.44 " 220.14/195.44 "undefined1 = undefined0 False; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 220.14/195.44 mandatory20 vuy = []; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "mandatory20 (xyy : xyz,s) = mandatory202 (xyy : xyz,s); 220.14/195.44 mandatory20 vuy = mandatory200 vuy; 220.14/195.44 " 220.14/195.44 "mandatory200 vuy = []; 220.14/195.44 " 220.14/195.44 "mandatory201 True (xyy : [],s) = concatMap mandatory1 (optional s); 220.14/195.44 mandatory201 xzu xzv = mandatory200 xzv; 220.14/195.44 " 220.14/195.44 "mandatory202 (xyy : xyz,s) = mandatory201 (xyy == '(') (xyy : xyz,s); 220.14/195.44 mandatory202 xzw = mandatory200 xzw; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "mandatory00 x (')' : [],u) = (x,u) : []; 220.14/195.44 mandatory00 x vuz = []; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "mandatory00 x (xzz : yuu,u) = mandatory002 x (xzz : yuu,u); 220.14/195.44 mandatory00 x vuz = mandatory000 x vuz; 220.14/195.44 " 220.14/195.44 "mandatory000 x vuz = []; 220.14/195.44 " 220.14/195.44 "mandatory001 True x (xzz : [],u) = (x,u) : []; 220.14/195.44 mandatory001 yuv yuw yux = mandatory000 yuw yux; 220.14/195.44 " 220.14/195.44 "mandatory002 x (xzz : yuu,u) = mandatory001 (xzz == ')') x (xzz : yuu,u); 220.14/195.44 mandatory002 yuy yuz = mandatory000 yuy yuz; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "dropWhile p [] = []; 220.14/195.44 dropWhile p (vvv : vvw)|p vvvdropWhile p vvw|otherwisevvv : vvw; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "dropWhile p [] = dropWhile3 p []; 220.14/195.44 dropWhile p (vvv : vvw) = dropWhile2 p (vvv : vvw); 220.14/195.44 " 220.14/195.44 "dropWhile1 p vvv vvw True = dropWhile p vvw; 220.14/195.44 dropWhile1 p vvv vvw False = dropWhile0 p vvv vvw otherwise; 220.14/195.44 " 220.14/195.44 "dropWhile0 p vvv vvw True = vvv : vvw; 220.14/195.44 " 220.14/195.44 "dropWhile2 p (vvv : vvw) = dropWhile1 p vvv vvw (p vvv); 220.14/195.44 " 220.14/195.44 "dropWhile3 p [] = []; 220.14/195.44 dropWhile3 yvw yvx = dropWhile2 yvw yvx; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "lex00 (ch,''' : t) = lex000 ch t (ch /= ''' : []); 220.14/195.44 lex00 vvy = []; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "lex00 (ch,ywu : t) = lex003 (ch,ywu : t); 220.14/195.44 lex00 vvy = lex001 vvy; 220.14/195.44 " 220.14/195.44 "lex001 vvy = []; 220.14/195.44 " 220.14/195.44 "lex002 True (ch,ywu : t) = lex000 ch t (ch /= ''' : []); 220.14/195.44 lex002 ywv yww = lex001 yww; 220.14/195.44 " 220.14/195.44 "lex003 (ch,ywu : t) = lex002 (ywu == ''') (ch,ywu : t); 220.14/195.44 lex003 ywx = lex001 ywx; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 220.14/195.44 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 220.14/195.44 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 220.14/195.44 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 220.14/195.44 lexEsc (vwu : vwv)|isDigit vwuspan isDigit (vwu : vwv) : []|isUpper vwulexEsc2 (concatMap (lexEsc1 (vwu : vwv)) table); 220.14/195.44 lexEsc vww = []; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "lexEsc (c : s) = lexEsc16 (c : s); 220.14/195.44 lexEsc (yyz : yzw) = lexEsc14 (yyz : yzw); 220.14/195.44 lexEsc (yyu : s) = lexEsc11 (yyu : s); 220.14/195.44 lexEsc (yxv : s) = lexEsc8 (yxv : s); 220.14/195.44 lexEsc (vwu : vwv) = lexEsc6 (vwu : vwv); 220.14/195.44 lexEsc vww = lexEsc3 vww; 220.14/195.44 " 220.14/195.44 "lexEsc3 vww = []; 220.14/195.44 " 220.14/195.44 "lexEsc5 vwu vwv True = span isDigit (vwu : vwv) : []; 220.14/195.44 lexEsc5 vwu vwv False = lexEsc4 vwu vwv (isUpper vwu); 220.14/195.44 " 220.14/195.44 "lexEsc4 vwu vwv True = lexEsc2 (concatMap (lexEsc1 (vwu : vwv)) table); 220.14/195.44 lexEsc4 vwu vwv False = lexEsc3 (vwu : vwv); 220.14/195.44 " 220.14/195.44 "lexEsc6 (vwu : vwv) = lexEsc5 vwu vwv (isDigit vwu); 220.14/195.44 lexEsc6 ywz = lexEsc3 ywz; 220.14/195.44 " 220.14/195.44 "lexEsc7 True (yxv : s) = prefix 'x' (span isHexDigit s) : []; 220.14/195.44 lexEsc7 yxw yxx = lexEsc6 yxx; 220.14/195.44 " 220.14/195.44 "lexEsc8 (yxv : s) = lexEsc7 (yxv == 'x') (yxv : s); 220.14/195.44 lexEsc8 yxy = lexEsc6 yxy; 220.14/195.44 " 220.14/195.44 "lexEsc9 True (yyu : s) = prefix 'o' (span isOctDigit s) : []; 220.14/195.44 lexEsc9 yyv yyw = lexEsc8 yyw; 220.14/195.44 " 220.14/195.44 "lexEsc11 (yyu : s) = lexEsc9 (yyu == 'o') (yyu : s); 220.14/195.44 lexEsc11 yyx = lexEsc8 yyx; 220.14/195.44 " 220.14/195.44 "lexEsc12 yyz c s True = ('^' : c : [],s) : []; 220.14/195.44 lexEsc12 yyz c s False = lexEsc11 (yyz : c : s); 220.14/195.44 " 220.14/195.44 "lexEsc13 True (yyz : c : s) = lexEsc12 yyz c s (c >= '@' && c <= '_'); 220.14/195.44 lexEsc13 yzx yzy = lexEsc11 yzy; 220.14/195.44 " 220.14/195.44 "lexEsc14 (yyz : yzw) = lexEsc13 (yyz == '^') (yyz : yzw); 220.14/195.44 lexEsc14 yzz = lexEsc11 yzz; 220.14/195.44 " 220.14/195.44 "lexEsc15 c s True = (c : [],s) : []; 220.14/195.44 lexEsc15 c s False = lexEsc14 (c : s); 220.14/195.44 " 220.14/195.44 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 220.14/195.44 lexEsc16 zuv = lexEsc14 zuv; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "lexLitChar [] = []; 220.14/195.44 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 220.14/195.44 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 220.14/195.44 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 220.14/195.44 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 220.14/195.44 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 220.14/195.44 lexEsc (vwu : vwv)|isDigit vwuspan isDigit (vwu : vwv) : []|isUpper vwulexEsc2 (concatMap (lexEsc1 (vwu : vwv)) table); 220.14/195.44 lexEsc vww = []; 220.14/195.44 ; 220.14/195.44 lexEsc0 mne vu69 = lexEsc00 mne vu69; 220.14/195.44 ; 220.14/195.44 lexEsc00 mne ([],s') = (mne,s') : []; 220.14/195.44 lexEsc00 mne vwy = []; 220.14/195.44 ; 220.14/195.44 lexEsc1 s vu70 = lexEsc10 s vu70; 220.14/195.44 ; 220.14/195.44 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 220.14/195.44 lexEsc10 s vwz = []; 220.14/195.44 ; 220.14/195.44 lexEsc2 (pr : vwx) = pr : []; 220.14/195.44 lexEsc2 [] = []; 220.14/195.44 ; 220.14/195.44 prefix c (t,s) = (c : t,s); 220.14/195.44 ; 220.14/195.44 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 220.14/195.44 } 220.14/195.44 ; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "lexLitChar [] = lexLitChar3 []; 220.14/195.44 lexLitChar (c : s) = lexLitChar2 (c : s); 220.14/195.44 " 220.14/195.44 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 220.14/195.44 lexEsc (c : s) = lexEsc16 (c : s); 220.14/195.44 lexEsc (yyz : yzw) = lexEsc14 (yyz : yzw); 220.14/195.44 lexEsc (yyu : s) = lexEsc11 (yyu : s); 220.14/195.44 lexEsc (yxv : s) = lexEsc8 (yxv : s); 220.14/195.44 lexEsc (vwu : vwv) = lexEsc6 (vwu : vwv); 220.14/195.44 lexEsc vww = lexEsc3 vww; 220.14/195.44 ; 220.14/195.44 lexEsc0 mne vu69 = lexEsc00 mne vu69; 220.14/195.44 ; 220.14/195.44 lexEsc00 mne ([],s') = (mne,s') : []; 220.14/195.44 lexEsc00 mne vwy = []; 220.14/195.44 ; 220.14/195.44 lexEsc1 s vu70 = lexEsc10 s vu70; 220.14/195.44 ; 220.14/195.44 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 220.14/195.44 lexEsc10 s vwz = []; 220.14/195.44 ; 220.14/195.44 lexEsc11 (yyu : s) = lexEsc9 (yyu == 'o') (yyu : s); 220.14/195.44 lexEsc11 yyx = lexEsc8 yyx; 220.14/195.44 ; 220.14/195.44 lexEsc12 yyz c s True = ('^' : c : [],s) : []; 220.14/195.44 lexEsc12 yyz c s False = lexEsc11 (yyz : c : s); 220.14/195.44 ; 220.14/195.44 lexEsc13 True (yyz : c : s) = lexEsc12 yyz c s (c >= '@' && c <= '_'); 220.14/195.44 lexEsc13 yzx yzy = lexEsc11 yzy; 220.14/195.44 ; 220.14/195.44 lexEsc14 (yyz : yzw) = lexEsc13 (yyz == '^') (yyz : yzw); 220.14/195.44 lexEsc14 yzz = lexEsc11 yzz; 220.14/195.44 ; 220.14/195.44 lexEsc15 c s True = (c : [],s) : []; 220.14/195.44 lexEsc15 c s False = lexEsc14 (c : s); 220.14/195.44 ; 220.14/195.44 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 220.14/195.44 lexEsc16 zuv = lexEsc14 zuv; 220.14/195.44 ; 220.14/195.44 lexEsc2 (pr : vwx) = pr : []; 220.14/195.44 lexEsc2 [] = []; 220.14/195.44 ; 220.14/195.44 lexEsc3 vww = []; 220.14/195.44 ; 220.14/195.44 lexEsc4 vwu vwv True = lexEsc2 (concatMap (lexEsc1 (vwu : vwv)) table); 220.14/195.44 lexEsc4 vwu vwv False = lexEsc3 (vwu : vwv); 220.14/195.44 ; 220.14/195.44 lexEsc5 vwu vwv True = span isDigit (vwu : vwv) : []; 220.14/195.44 lexEsc5 vwu vwv False = lexEsc4 vwu vwv (isUpper vwu); 220.14/195.44 ; 220.14/195.44 lexEsc6 (vwu : vwv) = lexEsc5 vwu vwv (isDigit vwu); 220.14/195.44 lexEsc6 ywz = lexEsc3 ywz; 220.14/195.44 ; 220.14/195.44 lexEsc7 True (yxv : s) = prefix 'x' (span isHexDigit s) : []; 220.14/195.44 lexEsc7 yxw yxx = lexEsc6 yxx; 220.14/195.44 ; 220.14/195.44 lexEsc8 (yxv : s) = lexEsc7 (yxv == 'x') (yxv : s); 220.14/195.44 lexEsc8 yxy = lexEsc6 yxy; 220.14/195.44 ; 220.14/195.44 lexEsc9 True (yyu : s) = prefix 'o' (span isOctDigit s) : []; 220.14/195.44 lexEsc9 yyv yyw = lexEsc8 yyw; 220.14/195.44 ; 220.14/195.44 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 220.14/195.44 ; 220.14/195.44 lexLitChar1 c s True = (c : [],s) : []; 220.14/195.44 lexLitChar1 c s False = lexLitChar0 c s otherwise; 220.14/195.44 ; 220.14/195.44 prefix c (t,s) = (c : t,s); 220.14/195.44 ; 220.14/195.44 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 220.14/195.44 } 220.14/195.44 ; 220.14/195.44 " 220.14/195.44 "lexLitChar3 [] = []; 220.14/195.44 lexLitChar3 zuy = lexLitChar2 zuy; 220.14/195.44 " 220.14/195.44 The following Function with conditions 220.14/195.44 "span p [] = ([],[]); 220.14/195.44 span p (vxu : vxv)|p vxu(vxu : ys,zs)|otherwise([],vxu : vxv) where { 220.14/195.44 vu43 = span p vxv; 220.14/195.44 ; 220.14/195.44 ys = ys0 vu43; 220.14/195.44 ; 220.14/195.44 ys0 (ys,vxx) = ys; 220.14/195.44 ; 220.14/195.44 zs = zs0 vu43; 220.14/195.44 ; 220.14/195.44 zs0 (vxw,zs) = zs; 220.14/195.44 } 220.14/195.44 ; 220.14/195.44 " 220.14/195.44 is transformed to 220.14/195.44 "span p [] = span3 p []; 220.14/195.44 span p (vxu : vxv) = span2 p (vxu : vxv); 220.14/195.44 " 220.14/195.44 "span2 p (vxu : vxv) = span1 p vxu vxv (p vxu) where { 220.14/195.44 span0 p vxu vxv True = ([],vxu : vxv); 220.14/195.44 ; 220.14/195.44 span1 p vxu vxv True = (vxu : ys,zs); 220.14/195.44 span1 p vxu vxv False = span0 p vxu vxv otherwise; 220.14/195.44 ; 220.14/195.44 vu43 = span p vxv; 220.14/195.44 ; 220.14/195.44 ys = ys0 vu43; 220.14/195.44 ; 220.14/195.44 ys0 (ys,vxx) = ys; 220.14/195.44 ; 220.14/195.44 zs = zs0 vu43; 220.14/195.44 ; 220.14/195.44 zs0 (vxw,zs) = zs; 220.14/195.44 } 220.14/195.44 ; 220.14/195.44 " 220.14/195.44 "span3 p [] = ([],[]); 220.14/195.44 span3 zvv zvw = span2 zvv zvw; 220.14/195.44 " 220.14/195.44 220.14/195.44 ---------------------------------------- 220.14/195.44 220.14/195.44 (10) 220.14/195.44 Obligation: 220.14/195.44 mainModule Main 220.14/195.44 module Main where { 220.14/195.44 import qualified Prelude; 220.14/195.44 } 220.14/195.44 220.14/195.44 ---------------------------------------- 220.14/195.44 220.14/195.44 (11) LetRed (EQUIVALENT) 220.14/195.44 Let/Where Reductions: 220.14/195.44 The bindings of the following Let/Where expression 220.14/195.44 "lexLitChar1 c s (c /= '\') where { 220.14/195.44 lexEsc (c : s) = lexEsc16 (c : s); 220.14/195.44 lexEsc (yyz : yzw) = lexEsc14 (yyz : yzw); 220.14/195.44 lexEsc (yyu : s) = lexEsc11 (yyu : s); 220.14/195.44 lexEsc (yxv : s) = lexEsc8 (yxv : s); 220.14/195.44 lexEsc (vwu : vwv) = lexEsc6 (vwu : vwv); 220.14/195.44 lexEsc vww = lexEsc3 vww; 220.14/195.44 ; 220.14/195.44 lexEsc0 mne vu69 = lexEsc00 mne vu69; 220.14/195.44 ; 220.14/195.44 lexEsc00 mne ([],s') = (mne,s') : []; 220.14/195.44 lexEsc00 mne vwy = []; 220.14/195.44 ; 220.14/195.44 lexEsc1 s vu70 = lexEsc10 s vu70; 220.14/195.44 ; 220.14/195.44 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 220.14/195.44 lexEsc10 s vwz = []; 220.14/195.44 ; 220.14/195.44 lexEsc11 (yyu : s) = lexEsc9 (yyu == 'o') (yyu : s); 220.14/195.44 lexEsc11 yyx = lexEsc8 yyx; 220.14/195.44 ; 220.14/195.44 lexEsc12 yyz c s True = ('^' : c : [],s) : []; 220.14/195.44 lexEsc12 yyz c s False = lexEsc11 (yyz : c : s); 220.14/195.44 ; 220.14/195.44 lexEsc13 True (yyz : c : s) = lexEsc12 yyz c s (c >= '@' && c <= '_'); 220.14/195.44 lexEsc13 yzx yzy = lexEsc11 yzy; 220.14/195.44 ; 220.14/195.44 lexEsc14 (yyz : yzw) = lexEsc13 (yyz == '^') (yyz : yzw); 220.14/195.44 lexEsc14 yzz = lexEsc11 yzz; 220.14/195.44 ; 220.14/195.44 lexEsc15 c s True = (c : [],s) : []; 220.14/195.44 lexEsc15 c s False = lexEsc14 (c : s); 220.14/195.44 ; 220.14/195.44 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 220.14/195.44 lexEsc16 zuv = lexEsc14 zuv; 220.14/195.44 ; 220.14/195.44 lexEsc2 (pr : vwx) = pr : []; 220.14/195.44 lexEsc2 [] = []; 220.14/195.44 ; 220.14/195.44 lexEsc3 vww = []; 220.14/195.44 ; 220.14/195.44 lexEsc4 vwu vwv True = lexEsc2 (concatMap (lexEsc1 (vwu : vwv)) table); 220.14/195.44 lexEsc4 vwu vwv False = lexEsc3 (vwu : vwv); 220.14/195.44 ; 220.14/195.44 lexEsc5 vwu vwv True = span isDigit (vwu : vwv) : []; 220.14/195.44 lexEsc5 vwu vwv False = lexEsc4 vwu vwv (isUpper vwu); 220.14/195.44 ; 220.14/195.44 lexEsc6 (vwu : vwv) = lexEsc5 vwu vwv (isDigit vwu); 220.14/195.44 lexEsc6 ywz = lexEsc3 ywz; 220.14/195.44 ; 220.14/195.44 lexEsc7 True (yxv : s) = prefix 'x' (span isHexDigit s) : []; 220.14/195.44 lexEsc7 yxw yxx = lexEsc6 yxx; 220.14/195.44 ; 220.14/195.44 lexEsc8 (yxv : s) = lexEsc7 (yxv == 'x') (yxv : s); 220.14/195.44 lexEsc8 yxy = lexEsc6 yxy; 220.14/195.44 ; 220.14/195.44 lexEsc9 True (yyu : s) = prefix 'o' (span isOctDigit s) : []; 220.14/195.44 lexEsc9 yyv yyw = lexEsc8 yyw; 220.14/195.44 ; 220.14/195.44 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 220.14/195.44 ; 220.14/195.44 lexLitChar1 c s True = (c : [],s) : []; 220.14/195.44 lexLitChar1 c s False = lexLitChar0 c s otherwise; 220.14/195.44 ; 220.14/195.44 prefix c (t,s) = (c : t,s); 220.14/195.44 ; 220.14/195.44 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 220.14/195.44 } 220.14/195.44 " 220.14/195.44 are unpacked to the following functions on top level 220.14/195.44 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 220.14/195.44 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 220.14/195.44 " 220.14/195.44 "lexLitChar2Prefix c (t,s) = (c : t,s); 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc11 (yyu : s) = lexLitChar2LexEsc9 (yyu == 'o') (yyu : s); 220.14/195.44 lexLitChar2LexEsc11 yyx = lexLitChar2LexEsc8 yyx; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc4 vwu vwv True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (vwu : vwv)) lexLitChar2Table); 220.14/195.44 lexLitChar2LexEsc4 vwu vwv False = lexLitChar2LexEsc3 (vwu : vwv); 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc5 vwu vwv True = span isDigit (vwu : vwv) : []; 220.14/195.44 lexLitChar2LexEsc5 vwu vwv False = lexLitChar2LexEsc4 vwu vwv (isUpper vwu); 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 220.14/195.44 lexLitChar2LexEsc (yyz : yzw) = lexLitChar2LexEsc14 (yyz : yzw); 220.14/195.44 lexLitChar2LexEsc (yyu : s) = lexLitChar2LexEsc11 (yyu : s); 220.14/195.44 lexLitChar2LexEsc (yxv : s) = lexLitChar2LexEsc8 (yxv : s); 220.14/195.44 lexLitChar2LexEsc (vwu : vwv) = lexLitChar2LexEsc6 (vwu : vwv); 220.14/195.44 lexLitChar2LexEsc vww = lexLitChar2LexEsc3 vww; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc12 yyz c s True = ('^' : c : [],s) : []; 220.14/195.44 lexLitChar2LexEsc12 yyz c s False = lexLitChar2LexEsc11 (yyz : c : s); 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc9 True (yyu : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 220.14/195.44 lexLitChar2LexEsc9 yyv yyw = lexLitChar2LexEsc8 yyw; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc7 True (yxv : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 220.14/195.44 lexLitChar2LexEsc7 yxw yxx = lexLitChar2LexEsc6 yxx; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc3 vww = []; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc8 (yxv : s) = lexLitChar2LexEsc7 (yxv == 'x') (yxv : s); 220.14/195.44 lexLitChar2LexEsc8 yxy = lexLitChar2LexEsc6 yxy; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc13 True (yyz : c : s) = lexLitChar2LexEsc12 yyz c s (c >= '@' && c <= '_'); 220.14/195.44 lexLitChar2LexEsc13 yzx yzy = lexLitChar2LexEsc11 yzy; 220.14/195.44 " 220.14/195.44 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 220.14/195.44 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 220.14/195.44 lexLitChar2LexEsc16 zuv = lexLitChar2LexEsc14 zuv; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc6 (vwu : vwv) = lexLitChar2LexEsc5 vwu vwv (isDigit vwu); 220.14/195.44 lexLitChar2LexEsc6 ywz = lexLitChar2LexEsc3 ywz; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 220.14/195.44 lexLitChar2LexEsc10 s vwz = []; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc2 (pr : vwx) = pr : []; 220.14/195.44 lexLitChar2LexEsc2 [] = []; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc14 (yyz : yzw) = lexLitChar2LexEsc13 (yyz == '^') (yyz : yzw); 220.14/195.44 lexLitChar2LexEsc14 yzz = lexLitChar2LexEsc11 yzz; 220.14/195.44 " 220.14/195.44 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 220.14/195.44 lexLitChar2LexEsc00 mne vwy = []; 220.14/195.44 " 220.14/195.44 The bindings of the following Let/Where expression 220.14/195.44 "concatMap lex1 (lexString s) where { 220.14/195.44 lex1 vu55 = lex10 vu55; 220.14/195.44 ; 220.14/195.44 lex10 (str,t) = ('"' : str,t) : []; 220.14/195.44 lex10 xw = []; 220.14/195.44 ; 220.14/195.44 lexStrItem (wvz : wwx) = lexStrItem7 (wvz : wwx); 220.14/195.44 lexStrItem (wux : wvu) = lexStrItem4 (wux : wvu); 220.14/195.44 lexStrItem s = lexStrItem1 s; 220.14/195.44 ; 220.14/195.44 lexStrItem0 vu58 = lexStrItem00 vu58; 220.14/195.44 ; 220.14/195.44 lexStrItem00 (wxy : t) = lexStrItem002 (wxy : t); 220.14/195.44 lexStrItem00 xv = lexStrItem000 xv; 220.14/195.44 ; 220.14/195.44 lexStrItem000 xv = []; 220.14/195.44 ; 220.14/195.44 lexStrItem001 True (wxy : t) = ([],t) : []; 220.14/195.44 lexStrItem001 wxz wyu = lexStrItem000 wyu; 220.14/195.44 ; 220.14/195.44 lexStrItem002 (wxy : t) = lexStrItem001 (wxy == '\') (wxy : t); 220.14/195.49 lexStrItem002 wyv = lexStrItem000 wyv; 220.14/195.49 ; 220.14/195.49 lexStrItem1 s = lexLitChar s; 220.14/195.49 ; 220.14/195.49 lexStrItem2 wux c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 220.14/195.49 lexStrItem2 wux c s False = lexStrItem1 (wux : c : s); 220.14/195.49 ; 220.14/195.49 lexStrItem3 True (wux : c : s) = lexStrItem2 wux c s (isSpace c); 220.14/195.49 lexStrItem3 wvv wvw = lexStrItem1 wvw; 220.14/195.49 ; 220.14/195.49 lexStrItem4 (wux : wvu) = lexStrItem3 (wux == '\') (wux : wvu); 220.14/195.49 lexStrItem4 wvx = lexStrItem1 wvx; 220.14/195.49 ; 220.14/195.49 lexStrItem5 True (wvz : wwv : s) = ('\' : '&' : [],s) : []; 220.14/195.49 lexStrItem5 wwy wwz = lexStrItem4 wwz; 220.14/195.49 ; 220.14/195.49 lexStrItem6 True (wvz : wwv : s) = lexStrItem5 (wwv == '&') (wvz : wwv : s); 220.14/195.49 lexStrItem6 wxu wxv = lexStrItem4 wxv; 220.14/195.49 ; 220.14/195.49 lexStrItem7 (wvz : wwx) = lexStrItem6 (wvz == '\') (wvz : wwx); 220.14/195.49 lexStrItem7 wxw = lexStrItem4 wxw; 220.14/195.49 ; 220.14/195.49 lexString (vzy : s) = lexString4 (vzy : s); 220.14/195.49 lexString s = lexString2 s; 220.14/195.49 ; 220.14/195.49 lexString0 ch vu56 = lexString00 ch vu56; 220.14/195.49 ; 220.14/195.49 lexString00 ch (str,u) = (ch ++ str,u) : []; 220.14/195.49 lexString00 ch wz = []; 220.14/195.49 ; 220.14/195.49 lexString1 vu57 = lexString10 vu57; 220.14/195.49 ; 220.14/195.49 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 220.14/195.49 lexString10 xu = []; 220.14/195.49 ; 220.14/195.49 lexString2 s = concatMap lexString1 (lexStrItem s); 220.14/195.49 ; 220.14/195.49 lexString3 True (vzy : s) = ('"' : [],s) : []; 220.14/195.49 lexString3 vzz wuu = lexString2 wuu; 220.14/195.49 ; 220.14/195.49 lexString4 (vzy : s) = lexString3 (vzy == '"') (vzy : s); 220.14/195.49 lexString4 wuv = lexString2 wuv; 220.14/195.49 } 220.14/195.49 " 220.14/195.49 are unpacked to the following functions on top level 220.14/195.49 "lex13LexString0 ch vu56 = lex13LexString00 ch vu56; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem6 True (wvz : wwv : s) = lex13LexStrItem5 (wwv == '&') (wvz : wwv : s); 220.14/195.49 lex13LexStrItem6 wxu wxv = lex13LexStrItem4 wxv; 220.14/195.49 " 220.14/195.49 "lex13LexString3 True (vzy : s) = ('"' : [],s) : []; 220.14/195.49 lex13LexString3 vzz wuu = lex13LexString2 wuu; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem000 xv = []; 220.14/195.49 " 220.14/195.49 "lex13LexString4 (vzy : s) = lex13LexString3 (vzy == '"') (vzy : s); 220.14/195.49 lex13LexString4 wuv = lex13LexString2 wuv; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem1 s = lexLitChar s; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem2 wux c s True = concatMap lex13LexStrItem0 (dropWhile isSpace s : []); 220.14/195.49 lex13LexStrItem2 wux c s False = lex13LexStrItem1 (wux : c : s); 220.14/195.49 " 220.14/195.49 "lex13LexStrItem001 True (wxy : t) = ([],t) : []; 220.14/195.49 lex13LexStrItem001 wxz wyu = lex13LexStrItem000 wyu; 220.14/195.49 " 220.14/195.49 "lex13Lex1 vu55 = lex13Lex10 vu55; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem00 (wxy : t) = lex13LexStrItem002 (wxy : t); 220.14/195.49 lex13LexStrItem00 xv = lex13LexStrItem000 xv; 220.14/195.49 " 220.14/195.49 "lex13LexString (vzy : s) = lex13LexString4 (vzy : s); 220.14/195.49 lex13LexString s = lex13LexString2 s; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem002 (wxy : t) = lex13LexStrItem001 (wxy == '\') (wxy : t); 220.14/195.49 lex13LexStrItem002 wyv = lex13LexStrItem000 wyv; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem4 (wux : wvu) = lex13LexStrItem3 (wux == '\') (wux : wvu); 220.14/195.49 lex13LexStrItem4 wvx = lex13LexStrItem1 wvx; 220.14/195.49 " 220.14/195.49 "lex13LexString1 vu57 = lex13LexString10 vu57; 220.14/195.49 " 220.14/195.49 "lex13LexString00 ch (str,u) = (ch ++ str,u) : []; 220.14/195.49 lex13LexString00 ch wz = []; 220.14/195.49 " 220.14/195.49 "lex13LexString2 s = concatMap lex13LexString1 (lex13LexStrItem s); 220.14/195.49 " 220.14/195.49 "lex13LexStrItem (wvz : wwx) = lex13LexStrItem7 (wvz : wwx); 220.14/195.49 lex13LexStrItem (wux : wvu) = lex13LexStrItem4 (wux : wvu); 220.14/195.49 lex13LexStrItem s = lex13LexStrItem1 s; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem5 True (wvz : wwv : s) = ('\' : '&' : [],s) : []; 220.14/195.49 lex13LexStrItem5 wwy wwz = lex13LexStrItem4 wwz; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem0 vu58 = lex13LexStrItem00 vu58; 220.14/195.49 " 220.14/195.49 "lex13LexString10 (ch,t) = concatMap (lex13LexString0 ch) (lex13LexString t); 220.14/195.49 lex13LexString10 xu = []; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem3 True (wux : c : s) = lex13LexStrItem2 wux c s (isSpace c); 220.14/195.49 lex13LexStrItem3 wvv wvw = lex13LexStrItem1 wvw; 220.14/195.49 " 220.14/195.49 "lex13LexStrItem7 (wvz : wwx) = lex13LexStrItem6 (wvz == '\') (wvz : wwx); 220.14/195.49 lex13LexStrItem7 wxw = lex13LexStrItem4 wxw; 220.14/195.49 " 220.14/195.49 "lex13Lex10 (str,t) = ('"' : str,t) : []; 220.14/195.49 lex13Lex10 xw = []; 220.14/195.49 " 220.14/195.49 The bindings of the following Let/Where expression 220.14/195.49 "span1 p vxu vxv (p vxu) where { 220.14/195.49 span0 p vxu vxv True = ([],vxu : vxv); 220.14/195.49 ; 220.14/195.49 span1 p vxu vxv True = (vxu : ys,zs); 220.14/195.49 span1 p vxu vxv False = span0 p vxu vxv otherwise; 220.14/195.49 ; 220.14/195.49 vu43 = span p vxv; 220.14/195.49 ; 220.14/195.49 ys = ys0 vu43; 220.14/195.49 ; 220.14/195.49 ys0 (ys,vxx) = ys; 220.14/195.49 ; 220.14/195.49 zs = zs0 vu43; 220.14/195.49 ; 220.14/195.49 zs0 (vxw,zs) = zs; 220.14/195.49 } 220.14/195.49 " 220.14/195.49 are unpacked to the following functions on top level 220.14/195.49 "span2Ys zvx zvy = span2Ys0 zvx zvy (span2Vu43 zvx zvy); 220.14/195.49 " 220.14/195.49 "span2Zs zvx zvy = span2Zs0 zvx zvy (span2Vu43 zvx zvy); 220.14/195.49 " 220.14/195.49 "span2Span0 zvx zvy p vxu vxv True = ([],vxu : vxv); 220.14/195.49 " 220.14/195.49 "span2Span1 zvx zvy p vxu vxv True = (vxu : span2Ys zvx zvy,span2Zs zvx zvy); 220.14/195.49 span2Span1 zvx zvy p vxu vxv False = span2Span0 zvx zvy p vxu vxv otherwise; 220.14/195.49 " 220.14/195.49 "span2Zs0 zvx zvy (vxw,zs) = zs; 220.14/195.49 " 220.14/195.49 "span2Vu43 zvx zvy = span zvx zvy; 220.14/195.49 " 220.14/195.49 "span2Ys0 zvx zvy (ys,vxx) = ys; 220.14/195.49 " 220.14/195.49 The bindings of the following Let/Where expression 220.14/195.49 "lex11 c s (isSingle c) where { 220.14/195.49 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 220.14/195.49 ; 220.14/195.49 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 220.14/195.49 ; 220.14/195.49 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 220.14/195.49 ; 220.14/195.49 lex11 c s True = (c : [],s) : []; 220.14/195.49 lex11 c s False = lex9 c s (isSym c); 220.14/195.49 ; 220.14/195.49 lex2 c vu59 = lex20 c vu59; 220.14/195.49 ; 220.14/195.49 lex20 c (sym,t) = (c : sym,t) : []; 220.14/195.49 lex20 c yy = []; 220.14/195.49 ; 220.14/195.49 lex3 c vu60 = lex30 c vu60; 220.14/195.49 ; 220.14/195.49 lex30 c (nam,t) = (c : nam,t) : []; 220.14/195.49 lex30 c yz = []; 220.14/195.49 ; 220.14/195.49 lex4 c ds vu61 = lex40 c ds vu61; 220.14/195.49 ; 220.14/195.49 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 220.14/195.49 lex40 c ds yw = []; 220.14/195.49 ; 220.14/195.49 lex5 c vu62 = lex50 c vu62; 220.14/195.49 ; 220.14/195.49 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 220.14/195.49 lex50 c yx = []; 220.14/195.49 ; 220.14/195.49 lex6 c s True = []; 220.14/195.49 ; 220.14/195.49 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 220.14/195.49 lex7 c s False = lex6 c s otherwise; 220.14/195.49 ; 220.14/195.49 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 220.14/195.49 lex8 c s False = lex7 c s (isDigit c); 220.14/195.49 ; 220.14/195.49 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 220.14/195.49 lex9 c s False = lex8 c s (isAlpha c); 220.14/195.49 ; 220.14/195.49 lexExp (e : s) = lexExp5 (e : s); 220.14/195.49 lexExp s = lexExp3 s; 220.14/195.49 ; 220.14/195.49 lexExp0 e c vu65 = lexExp00 e c vu65; 220.14/195.49 ; 220.14/195.49 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 220.14/195.49 lexExp00 e c xx = []; 220.14/195.49 ; 220.14/195.49 lexExp1 e vu66 = lexExp10 e vu66; 220.14/195.49 ; 220.14/195.49 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 220.14/195.49 lexExp10 e xz = []; 220.14/195.49 ; 220.14/195.49 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 220.14/195.49 lexExp100 e c t False = []; 220.14/195.49 ; 220.14/195.49 lexExp2 e vu67 = lexExp20 e vu67; 220.14/195.49 ; 220.14/195.49 lexExp20 e (ds,t) = (e : ds,t) : []; 220.14/195.49 lexExp20 e xy = []; 220.14/195.49 ; 220.14/195.49 lexExp3 s = ([],s) : []; 220.14/195.49 ; 220.14/195.49 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 220.14/195.49 lexExp4 e s False = lexExp3 (e : s); 220.14/195.49 ; 220.14/195.49 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 220.14/195.49 lexExp5 wyx = lexExp3 wyx; 220.14/195.49 ; 220.14/195.49 lexFracExp (wyz : wzw) = lexFracExp5 (wyz : wzw); 220.14/195.49 lexFracExp s = lexFracExp2 s; 220.14/195.49 ; 220.14/195.49 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 220.14/195.49 ; 220.14/195.49 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 220.14/195.49 lexFracExp00 ds yv = []; 220.14/195.49 ; 220.14/195.49 lexFracExp1 vu64 = lexFracExp10 vu64; 220.14/195.49 ; 220.14/195.49 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 220.14/195.49 lexFracExp10 yu = []; 220.14/195.49 ; 220.14/195.49 lexFracExp2 s = lexExp s; 220.14/195.49 ; 220.14/195.49 lexFracExp3 wyz c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 220.14/195.49 lexFracExp3 wyz c cs False = lexFracExp2 (wyz : c : cs); 220.14/195.49 ; 220.14/195.49 lexFracExp4 True (wyz : c : cs) = lexFracExp3 wyz c cs (isDigit c); 220.14/195.49 lexFracExp4 wzx wzy = lexFracExp2 wzy; 220.14/195.49 ; 220.14/195.49 lexFracExp5 (wyz : wzw) = lexFracExp4 (wyz == '.') (wyz : wzw); 220.14/195.49 lexFracExp5 wzz = lexFracExp2 wzz; 220.14/195.49 } 220.14/195.49 " 220.14/195.49 are unpacked to the following functions on top level 220.14/195.49 "lex12Lex6 c s True = []; 220.14/195.49 " 220.14/195.49 "lex12LexExp100 e c t True = concatMap (lex12LexExp0 e c) (lexDigits t); 220.14/195.49 lex12LexExp100 e c t False = []; 220.14/195.49 " 220.14/195.49 "lex12Lex11 c s True = (c : [],s) : []; 220.14/195.49 lex12Lex11 c s False = lex12Lex9 c s (lex12IsSym c); 220.14/195.49 " 220.14/195.49 "lex12IsSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 220.14/195.49 " 220.14/195.49 "lex12LexExp0 e c vu65 = lex12LexExp00 e c vu65; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp4 True (wyz : c : cs) = lex12LexFracExp3 wyz c cs (isDigit c); 220.14/195.49 lex12LexFracExp4 wzx wzy = lex12LexFracExp2 wzy; 220.14/195.49 " 220.14/195.49 "lex12Lex30 c (nam,t) = (c : nam,t) : []; 220.14/195.49 lex12Lex30 c yz = []; 220.14/195.49 " 220.14/195.49 "lex12LexExp3 s = ([],s) : []; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 220.14/195.49 lex12LexFracExp00 ds yv = []; 220.14/195.49 " 220.14/195.49 "lex12Lex4 c ds vu61 = lex12Lex40 c ds vu61; 220.14/195.49 " 220.14/195.49 "lex12LexExp20 e (ds,t) = (e : ds,t) : []; 220.14/195.49 lex12LexExp20 e xy = []; 220.14/195.49 " 220.14/195.49 "lex12Lex9 c s True = concatMap (lex12Lex2 c) (span lex12IsSym s : []); 220.14/195.49 lex12Lex9 c s False = lex12Lex8 c s (isAlpha c); 220.14/195.49 " 220.14/195.49 "lex12LexFracExp10 (ds,t) = concatMap (lex12LexFracExp0 ds) (lex12LexExp t); 220.14/195.49 lex12LexFracExp10 yu = []; 220.14/195.49 " 220.14/195.49 "lex12Lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 220.14/195.49 lex12Lex40 c ds yw = []; 220.14/195.49 " 220.14/195.49 "lex12Lex8 c s True = concatMap (lex12Lex3 c) (span lex12IsIdChar s : []); 220.14/195.49 lex12Lex8 c s False = lex12Lex7 c s (isDigit c); 220.14/195.49 " 220.14/195.49 "lex12LexExp2 e vu67 = lex12LexExp20 e vu67; 220.14/195.49 " 220.14/195.49 "lex12Lex3 c vu60 = lex12Lex30 c vu60; 220.14/195.49 " 220.14/195.49 "lex12LexExp00 e c (ds,u) = (e : c : ds,u) : []; 220.14/195.49 lex12LexExp00 e c xx = []; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp2 s = lex12LexExp s; 220.14/195.49 " 220.14/195.49 "lex12IsIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 220.14/195.49 " 220.14/195.49 "lex12Lex5 c vu62 = lex12Lex50 c vu62; 220.14/195.49 " 220.14/195.49 "lex12Lex20 c (sym,t) = (c : sym,t) : []; 220.14/195.49 lex12Lex20 c yy = []; 220.14/195.49 " 220.14/195.49 "lex12LexExp10 e (c : t) = lex12LexExp100 e c t (c `elem` '+' : '-' : []); 220.14/195.49 lex12LexExp10 e xz = []; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp1 vu64 = lex12LexFracExp10 vu64; 220.14/195.49 " 220.14/195.49 "lex12LexExp4 e s True = concatMap (lex12LexExp1 e) (s : []) ++ concatMap (lex12LexExp2 e) (lexDigits s); 220.14/195.49 lex12LexExp4 e s False = lex12LexExp3 (e : s); 220.14/195.49 " 220.14/195.49 "lex12LexFracExp3 wyz c cs True = concatMap lex12LexFracExp1 (lexDigits (c : cs)); 220.14/195.49 lex12LexFracExp3 wyz c cs False = lex12LexFracExp2 (wyz : c : cs); 220.14/195.49 " 220.14/195.49 "lex12Lex7 c s True = concatMap (lex12Lex5 c) (span isDigit s : []); 220.14/195.49 lex12Lex7 c s False = lex12Lex6 c s otherwise; 220.14/195.49 " 220.14/195.49 "lex12Lex2 c vu59 = lex12Lex20 c vu59; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp (wyz : wzw) = lex12LexFracExp5 (wyz : wzw); 220.14/195.49 lex12LexFracExp s = lex12LexFracExp2 s; 220.14/195.49 " 220.14/195.49 "lex12LexExp5 (e : s) = lex12LexExp4 e s (e `elem` 'e' : 'E' : []); 220.14/195.49 lex12LexExp5 wyx = lex12LexExp3 wyx; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp5 (wyz : wzw) = lex12LexFracExp4 (wyz == '.') (wyz : wzw); 220.14/195.49 lex12LexFracExp5 wzz = lex12LexFracExp2 wzz; 220.14/195.49 " 220.14/195.49 "lex12LexExp (e : s) = lex12LexExp5 (e : s); 220.14/195.49 lex12LexExp s = lex12LexExp3 s; 220.14/195.49 " 220.14/195.49 "lex12LexFracExp0 ds vu63 = lex12LexFracExp00 ds vu63; 220.14/195.49 " 220.14/195.49 "lex12LexExp1 e vu66 = lex12LexExp10 e vu66; 220.14/195.49 " 220.14/195.49 "lex12IsSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 220.14/195.49 " 220.14/195.49 "lex12Lex50 c (ds,s) = concatMap (lex12Lex4 c ds) (lex12LexFracExp s); 220.14/195.49 lex12Lex50 c yx = []; 220.14/195.49 " 220.14/195.49 The bindings of the following Let/Where expression 220.14/195.49 "readParen0 b where { 220.14/195.49 mandatory r = concatMap mandatory2 (lex r); 220.14/195.49 ; 220.14/195.49 mandatory0 x vu48 = mandatory00 x vu48; 220.14/195.49 ; 220.14/195.49 mandatory00 x (xzz : yuu,u) = mandatory002 x (xzz : yuu,u); 220.14/195.49 mandatory00 x vuz = mandatory000 x vuz; 220.14/195.49 ; 220.14/195.49 mandatory000 x vuz = []; 220.14/195.49 ; 220.14/195.49 mandatory001 True x (xzz : [],u) = (x,u) : []; 220.14/195.49 mandatory001 yuv yuw yux = mandatory000 yuw yux; 220.14/195.49 ; 220.14/195.49 mandatory002 x (xzz : yuu,u) = mandatory001 (xzz == ')') x (xzz : yuu,u); 220.14/195.49 mandatory002 yuy yuz = mandatory000 yuy yuz; 220.14/195.49 ; 220.14/195.49 mandatory1 vu49 = mandatory10 vu49; 220.14/195.49 ; 220.14/195.49 mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 220.14/195.49 mandatory10 vvu = []; 220.14/195.49 ; 220.14/195.49 mandatory2 vu50 = mandatory20 vu50; 220.14/195.49 ; 220.14/195.49 mandatory20 (xyy : xyz,s) = mandatory202 (xyy : xyz,s); 220.14/195.49 mandatory20 vuy = mandatory200 vuy; 220.14/195.49 ; 220.14/195.49 mandatory200 vuy = []; 220.14/195.49 ; 220.14/195.49 mandatory201 True (xyy : [],s) = concatMap mandatory1 (optional s); 220.14/195.49 mandatory201 xzu xzv = mandatory200 xzv; 220.14/195.49 ; 220.14/195.49 mandatory202 (xyy : xyz,s) = mandatory201 (xyy == '(') (xyy : xyz,s); 220.14/195.49 mandatory202 xzw = mandatory200 xzw; 220.14/195.49 ; 220.14/195.49 optional r = g r ++ mandatory r; 220.14/195.49 ; 220.14/195.49 readParen0 True = mandatory; 220.14/195.49 readParen0 False = optional; 220.14/195.49 } 220.14/195.49 " 220.14/195.49 are unpacked to the following functions on top level 220.14/195.49 "readParenOptional zvz r = zvz r ++ readParenMandatory zvz r; 220.14/195.49 " 220.14/195.49 "readParenMandatory001 zvz True x (xzz : [],u) = (x,u) : []; 220.14/195.49 readParenMandatory001 zvz yuv yuw yux = readParenMandatory000 zvz yuw yux; 220.14/195.49 " 220.14/195.49 "readParenReadParen0 zvz True = readParenMandatory zvz; 220.14/195.49 readParenReadParen0 zvz False = readParenOptional zvz; 220.14/195.49 " 220.14/195.49 "readParenMandatory zvz r = concatMap (readParenMandatory2 zvz) (lex r); 220.14/195.49 " 220.14/195.49 "readParenMandatory200 zvz vuy = []; 220.14/195.49 " 220.14/195.49 "readParenMandatory20 zvz (xyy : xyz,s) = readParenMandatory202 zvz (xyy : xyz,s); 220.14/195.49 readParenMandatory20 zvz vuy = readParenMandatory200 zvz vuy; 220.14/195.49 " 220.14/195.49 "readParenMandatory00 zvz x (xzz : yuu,u) = readParenMandatory002 zvz x (xzz : yuu,u); 220.14/195.49 readParenMandatory00 zvz x vuz = readParenMandatory000 zvz x vuz; 220.14/195.49 " 220.14/195.49 "readParenMandatory000 zvz x vuz = []; 220.14/195.49 " 220.14/195.49 "readParenMandatory1 zvz vu49 = readParenMandatory10 zvz vu49; 220.14/195.49 " 220.14/195.49 "readParenMandatory201 zvz True (xyy : [],s) = concatMap (readParenMandatory1 zvz) (readParenOptional zvz s); 220.14/195.49 readParenMandatory201 zvz xzu xzv = readParenMandatory200 zvz xzv; 220.14/195.49 " 220.14/195.49 "readParenMandatory10 zvz (x,t) = concatMap (readParenMandatory0 zvz x) (lex t); 220.14/195.49 readParenMandatory10 zvz vvu = []; 220.14/195.49 " 220.14/195.49 "readParenMandatory2 zvz vu50 = readParenMandatory20 zvz vu50; 220.14/195.49 " 220.14/195.49 "readParenMandatory0 zvz x vu48 = readParenMandatory00 zvz x vu48; 220.14/195.49 " 220.14/195.49 "readParenMandatory002 zvz x (xzz : yuu,u) = readParenMandatory001 zvz (xzz == ')') x (xzz : yuu,u); 220.14/195.49 readParenMandatory002 zvz yuy yuz = readParenMandatory000 zvz yuy yuz; 220.14/195.49 " 220.14/195.49 "readParenMandatory202 zvz (xyy : xyz,s) = readParenMandatory201 zvz (xyy == '(') (xyy : xyz,s); 220.14/195.49 readParenMandatory202 zvz xzw = readParenMandatory200 zvz xzw; 220.14/195.49 " 220.14/195.49 The bindings of the following Let/Where expression 220.14/195.49 "getChar >>= getLine1 where { 220.14/195.49 getLine0 c ls = return (c : ls); 220.14/195.49 ; 220.14/195.49 getLine1 c = getLine10 c (c == '\10'); 220.14/195.49 ; 220.14/195.49 getLine10 c True = return []; 220.14/195.49 getLine10 c False = getRest >>= getLine0 c; 220.14/195.49 ; 220.14/195.49 getRest = catch getChar getRest0 >>= getRest2; 220.14/195.49 ; 220.14/195.49 getRest0 ex = getRest00 ex (isEOFError ex); 220.14/195.49 ; 220.14/195.49 getRest00 ex True = return '\10'; 220.14/195.49 getRest00 ex False = ioError ex; 220.14/195.49 ; 220.14/195.49 getRest1 c cs = return (c : cs); 220.14/195.49 ; 220.14/195.49 getRest2 c = getRest20 c (c == '\10'); 220.14/195.49 ; 220.14/195.49 getRest20 c True = return []; 220.14/195.49 getRest20 c False = getRest >>= getRest1 c; 220.14/195.49 } 220.14/195.49 " 220.14/195.49 are unpacked to the following functions on top level 220.14/195.49 "getLineGetRest20 c True = return []; 220.14/195.49 getLineGetRest20 c False = getLineGetRest >>= getLineGetRest1 c; 220.14/195.49 " 220.14/195.49 "getLineGetRest1 c cs = return (c : cs); 220.14/195.49 " 220.14/195.49 "getLineGetRest0 ex = getLineGetRest00 ex (isEOFError ex); 220.14/195.49 " 220.14/195.49 "getLineGetRest = catch getChar getLineGetRest0 >>= getLineGetRest2; 220.14/195.49 " 220.14/195.49 "getLineGetLine0 c ls = return (c : ls); 220.14/195.49 " 220.14/195.49 "getLineGetLine10 c True = return []; 220.14/195.49 getLineGetLine10 c False = getLineGetRest >>= getLineGetLine0 c; 220.14/195.49 " 220.14/195.49 "getLineGetLine1 c = getLineGetLine10 c (c == '\10'); 220.14/195.49 " 220.14/195.49 "getLineGetRest2 c = getLineGetRest20 c (c == '\10'); 220.14/195.49 " 220.14/195.49 "getLineGetRest00 ex True = return '\10'; 220.14/195.49 getLineGetRest00 ex False = ioError ex; 220.14/195.49 " 220.14/195.49 220.14/195.49 ---------------------------------------- 220.14/195.49 220.14/195.49 (12) 220.14/195.49 Obligation: 220.14/195.49 mainModule Main 220.14/195.49 module Main where { 220.14/195.49 import qualified Prelude; 220.14/195.49 } 220.14/195.49 220.14/195.49 ---------------------------------------- 220.14/195.49 220.14/195.49 (13) NumRed (SOUND) 220.14/195.49 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 220.14/195.49 ---------------------------------------- 220.14/195.49 220.14/195.49 (14) 220.14/195.49 Obligation: 220.14/195.49 mainModule Main 220.14/195.49 module Main where { 220.14/195.49 import qualified Prelude; 220.14/195.49 } 220.44/195.55 EOF