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