189.63/169.13 MAYBE 191.77/169.75 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 191.77/169.75 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 191.77/169.75 191.77/169.75 191.77/169.75 H-Termination with start terms of the given HASKELL could not be shown: 191.77/169.75 191.77/169.75 (0) HASKELL 191.77/169.75 (1) LR [EQUIVALENT, 0 ms] 191.77/169.75 (2) HASKELL 191.77/169.75 (3) CR [EQUIVALENT, 0 ms] 191.77/169.75 (4) HASKELL 191.77/169.75 (5) IFR [EQUIVALENT, 0 ms] 191.77/169.75 (6) HASKELL 191.77/169.75 (7) BR [EQUIVALENT, 0 ms] 191.77/169.75 (8) HASKELL 191.77/169.75 (9) COR [EQUIVALENT, 0 ms] 191.77/169.75 (10) HASKELL 191.77/169.75 (11) LetRed [EQUIVALENT, 49 ms] 191.77/169.75 (12) HASKELL 191.77/169.75 (13) NumRed [SOUND, 0 ms] 191.77/169.75 (14) HASKELL 191.77/169.75 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (0) 191.77/169.75 Obligation: 191.77/169.75 mainModule Main 191.77/169.75 module Main where { 191.77/169.75 import qualified Prelude; 191.77/169.75 } 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (1) LR (EQUIVALENT) 191.77/169.75 Lambda Reductions: 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu54->case vu54 of { 191.77/169.75 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex0 vu54 = case vu54 of { 191.77/169.75 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu56->case vu56 of { 191.77/169.75 (str,u) -> (ch ++ str,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexString0 ch vu56 = case vu56 of { 191.77/169.75 (str,u) -> (ch ++ str,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu57->case vu57 of { 191.77/169.75 (ch,t) -> concatMap (lexString0 ch) (lexString t); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexString1 vu57 = case vu57 of { 191.77/169.75 (ch,t) -> concatMap (lexString0 ch) (lexString t); 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu58->case vu58 of { 191.77/169.75 '\' : t -> ([],t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexStrItem0 vu58 = case vu58 of { 191.77/169.75 '\' : t -> ([],t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu55->case vu55 of { 191.77/169.75 (str,t) -> ('"' : str,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex1 vu55 = case vu55 of { 191.77/169.75 (str,t) -> ('"' : str,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu63->case vu63 of { 191.77/169.75 (e,u) -> ('.' : ds ++ e,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexFracExp0 ds vu63 = case vu63 of { 191.77/169.75 (e,u) -> ('.' : ds ++ e,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu64->case vu64 of { 191.77/169.75 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexFracExp1 vu64 = case vu64 of { 191.77/169.75 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu65->case vu65 of { 191.77/169.75 (ds,u) -> (e : c : ds,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp0 e c vu65 = case vu65 of { 191.77/169.75 (ds,u) -> (e : c : ds,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu66->case vu66 of { 191.77/169.75 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp1 e vu66 = case vu66 of { 191.77/169.75 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu67->case vu67 of { 191.77/169.75 (ds,t) -> (e : ds,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp2 e vu67 = case vu67 of { 191.77/169.75 (ds,t) -> (e : ds,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu59->case vu59 of { 191.77/169.75 (sym,t) -> (c : sym,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex2 c vu59 = case vu59 of { 191.77/169.75 (sym,t) -> (c : sym,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu60->case vu60 of { 191.77/169.75 (nam,t) -> (c : nam,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex3 c vu60 = case vu60 of { 191.77/169.75 (nam,t) -> (c : nam,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu61->case vu61 of { 191.77/169.75 (fe,t) -> (c : ds ++ fe,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex4 c ds vu61 = case vu61 of { 191.77/169.75 (fe,t) -> (c : ds ++ fe,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu62->case vu62 of { 191.77/169.75 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex5 c vu62 = case vu62 of { 191.77/169.75 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\ab->(a,b)" 191.77/169.75 is transformed to 191.77/169.75 "zip0 a b = (a,b); 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu68->case vu68 of { 191.77/169.75 (cs@(_ : _),t) -> (cs,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "nonnull0 vu68 = case vu68 of { 191.77/169.75 (cs@(_ : _),t) -> (cs,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu48->case vu48 of { 191.77/169.75 (')' : [],u) -> (x,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "mandatory0 x vu48 = case vu48 of { 191.77/169.75 (')' : [],u) -> (x,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu49->case vu49 of { 191.77/169.75 (x,t) -> concatMap (mandatory0 x) (lex t); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "mandatory1 vu49 = case vu49 of { 191.77/169.75 (x,t) -> concatMap (mandatory0 x) (lex t); 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu50->case vu50 of { 191.77/169.75 ('(' : [],s) -> concatMap mandatory1 (optional s); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "mandatory2 vu50 = case vu50 of { 191.77/169.75 ('(' : [],s) -> concatMap mandatory1 (optional s); 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu69->case vu69 of { 191.77/169.75 ([],s') -> (mne,s') : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexEsc0 mne vu69 = case vu69 of { 191.77/169.75 ([],s') -> (mne,s') : []; 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\vu70->case vu70 of { 191.77/169.75 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexEsc1 s vu70 = case vu70 of { 191.77/169.75 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 191.77/169.75 _ -> []} 191.77/169.75 ; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\(_,zs)->zs" 191.77/169.75 is transformed to 191.77/169.75 "zs0 (_,zs) = zs; 191.77/169.75 " 191.77/169.75 The following Lambda expression 191.77/169.75 "\(ys,_)->ys" 191.77/169.75 is transformed to 191.77/169.75 "ys0 (ys,_) = ys; 191.77/169.75 " 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (2) 191.77/169.75 Obligation: 191.77/169.75 mainModule Main 191.77/169.75 module Main where { 191.77/169.75 import qualified Prelude; 191.77/169.75 } 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (3) CR (EQUIVALENT) 191.77/169.75 Case Reductions: 191.77/169.75 The following Case expression 191.77/169.75 "case vu55 of { 191.77/169.75 (str,t) -> ('"' : str,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex10 (str,t) = ('"' : str,t) : []; 191.77/169.75 lex10 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu57 of { 191.77/169.75 (ch,t) -> concatMap (lexString0 ch) (lexString t); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 191.77/169.75 lexString10 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu56 of { 191.77/169.75 (str,u) -> (ch ++ str,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexString00 ch (str,u) = (ch ++ str,u) : []; 191.77/169.75 lexString00 ch _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu58 of { 191.77/169.75 '\' : t -> ([],t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexStrItem00 ('\' : t) = ([],t) : []; 191.77/169.75 lexStrItem00 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu59 of { 191.77/169.75 (sym,t) -> (c : sym,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex20 c (sym,t) = (c : sym,t) : []; 191.77/169.75 lex20 c _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu67 of { 191.77/169.75 (ds,t) -> (e : ds,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp20 e (ds,t) = (e : ds,t) : []; 191.77/169.75 lexExp20 e _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu65 of { 191.77/169.75 (ds,u) -> (e : c : ds,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp00 e c (ds,u) = (e : c : ds,u) : []; 191.77/169.75 lexExp00 e c _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu62 of { 191.77/169.75 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 191.77/169.75 lex50 c _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu66 of { 191.77/169.75 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp10 e (c : t) = if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 191.77/169.75 lexExp10 e _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu60 of { 191.77/169.75 (nam,t) -> (c : nam,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex30 c (nam,t) = (c : nam,t) : []; 191.77/169.75 lex30 c _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu61 of { 191.77/169.75 (fe,t) -> (c : ds ++ fe,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 191.77/169.75 lex40 c ds _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu63 of { 191.77/169.75 (e,u) -> ('.' : ds ++ e,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 191.77/169.75 lexFracExp00 ds _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu64 of { 191.77/169.75 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 191.77/169.75 lexFracExp10 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu54 of { 191.77/169.75 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lex00 (ch,''' : t) = if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 191.77/169.75 lex00 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu48 of { 191.77/169.75 (')' : [],u) -> (x,u) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "mandatory00 x (')' : [],u) = (x,u) : []; 191.77/169.75 mandatory00 x _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu49 of { 191.77/169.75 (x,t) -> concatMap (mandatory0 x) (lex t); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 191.77/169.75 mandatory10 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu50 of { 191.77/169.75 ('(' : [],s) -> concatMap mandatory1 (optional s); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 191.77/169.75 mandatory20 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu68 of { 191.77/169.75 (cs@(_ : _),t) -> (cs,t) : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 191.77/169.75 nonnull00 _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case concatMap (lexEsc1 s) table of { 191.77/169.75 pr : _ -> pr : []; 191.77/169.75 [] -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexEsc2 (pr : _) = pr : []; 191.77/169.75 lexEsc2 [] = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu69 of { 191.77/169.75 ([],s') -> (mne,s') : []; 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexEsc00 mne ([],s') = (mne,s') : []; 191.77/169.75 lexEsc00 mne _ = []; 191.77/169.75 " 191.77/169.75 The following Case expression 191.77/169.75 "case vu70 of { 191.77/169.75 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 191.77/169.75 _ -> []} 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 191.77/169.75 lexEsc10 s _ = []; 191.77/169.75 " 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (4) 191.77/169.75 Obligation: 191.77/169.75 mainModule Main 191.77/169.75 module Main where { 191.77/169.75 import qualified Prelude; 191.77/169.75 } 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (5) IFR (EQUIVALENT) 191.77/169.75 If Reductions: 191.77/169.75 The following If expression 191.77/169.75 "if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []" 191.77/169.75 is transformed to 191.77/169.75 "lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 191.77/169.75 lexExp100 e c t False = []; 191.77/169.75 " 191.77/169.75 The following If expression 191.77/169.75 "if b then mandatory else optional" 191.77/169.75 is transformed to 191.77/169.75 "readParen0 True = mandatory; 191.77/169.75 readParen0 False = optional; 191.77/169.75 " 191.77/169.75 The following If expression 191.77/169.75 "if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []" 191.77/169.75 is transformed to 191.77/169.75 "lex000 ch t True = (''' : ch ++ ''' : [],t) : []; 191.77/169.75 lex000 ch t False = []; 191.77/169.75 " 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (6) 191.77/169.75 Obligation: 191.77/169.75 mainModule Main 191.77/169.75 module Main where { 191.77/169.75 import qualified Prelude; 191.77/169.75 } 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (7) BR (EQUIVALENT) 191.77/169.75 Replaced joker patterns by fresh variables and removed binding patterns. 191.77/169.75 191.77/169.75 Binding Reductions: 191.77/169.75 The bind variable of the following binding Pattern 191.77/169.75 "cs@(wu : wv)" 191.77/169.75 is replaced by the following term 191.77/169.75 "wu : wv" 191.77/169.75 The bind variable of the following binding Pattern 191.77/169.75 "xs@(zz : vuu)" 191.77/169.75 is replaced by the following term 191.77/169.75 "zz : vuu" 191.77/169.75 The bind variable of the following binding Pattern 191.77/169.75 "s@(vux : vuy)" 191.77/169.75 is replaced by the following term 191.77/169.75 "vux : vuy" 191.77/169.75 The bind variable of the following binding Pattern 191.77/169.75 "xs@(vvx : vvy)" 191.77/169.75 is replaced by the following term 191.77/169.75 "vvx : vvy" 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (8) 191.77/169.75 Obligation: 191.77/169.75 mainModule Main 191.77/169.75 module Main where { 191.77/169.75 import qualified Prelude; 191.77/169.75 } 191.77/169.75 191.77/169.75 ---------------------------------------- 191.77/169.75 191.77/169.75 (9) COR (EQUIVALENT) 191.77/169.75 Cond Reductions: 191.77/169.75 The following Function with conditions 191.77/169.75 "takeWhile p [] = []; 191.77/169.75 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "takeWhile p [] = takeWhile3 p []; 191.77/169.75 takeWhile p (x : xs) = takeWhile2 p (x : xs); 191.77/169.75 " 191.77/169.75 "takeWhile1 p x xs True = x : takeWhile p xs; 191.77/169.75 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 191.77/169.75 " 191.77/169.75 "takeWhile0 p x xs True = []; 191.77/169.75 " 191.77/169.75 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 191.77/169.75 " 191.77/169.75 "takeWhile3 p [] = []; 191.77/169.75 takeWhile3 vwx vwy = takeWhile2 vwx vwy; 191.77/169.75 " 191.77/169.75 The following Function with conditions 191.77/169.75 "lexString ('"' : s) = ('"' : [],s) : []; 191.77/169.75 lexString s = concatMap lexString1 (lexStrItem s); 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexString (vxu : s) = lexString4 (vxu : s); 191.77/169.75 lexString s = lexString2 s; 191.77/169.75 " 191.77/169.75 "lexString2 s = concatMap lexString1 (lexStrItem s); 191.77/169.75 " 191.77/169.75 "lexString3 True (vxu : s) = ('"' : [],s) : []; 191.77/169.75 lexString3 vxv vxw = lexString2 vxw; 191.77/169.75 " 191.77/169.75 "lexString4 (vxu : s) = lexString3 (vxu == '"') (vxu : s); 191.77/169.75 lexString4 vxx = lexString2 vxx; 191.77/169.75 " 191.77/169.75 The following Function with conditions 191.77/169.75 "lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 191.77/169.75 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 191.77/169.75 lexStrItem s = lexLitChar s; 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexStrItem (vzv : vzz) = lexStrItem7 (vzv : vzz); 191.77/169.75 lexStrItem (vxz : vyw) = lexStrItem4 (vxz : vyw); 191.77/169.75 lexStrItem s = lexStrItem1 s; 191.77/169.75 " 191.77/169.75 "lexStrItem1 s = lexLitChar s; 191.77/169.75 " 191.77/169.75 "lexStrItem2 vxz c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 191.77/169.75 lexStrItem2 vxz c s False = lexStrItem1 (vxz : c : s); 191.77/169.75 " 191.77/169.75 "lexStrItem3 True (vxz : c : s) = lexStrItem2 vxz c s (isSpace c); 191.77/169.75 lexStrItem3 vyx vyy = lexStrItem1 vyy; 191.77/169.75 " 191.77/169.75 "lexStrItem4 (vxz : vyw) = lexStrItem3 (vxz == '\') (vxz : vyw); 191.77/169.75 lexStrItem4 vyz = lexStrItem1 vyz; 191.77/169.75 " 191.77/169.75 "lexStrItem5 True (vzv : vzx : s) = ('\' : '&' : [],s) : []; 191.77/169.75 lexStrItem5 wuu wuv = lexStrItem4 wuv; 191.77/169.75 " 191.77/169.75 "lexStrItem6 True (vzv : vzx : s) = lexStrItem5 (vzx == '&') (vzv : vzx : s); 191.77/169.75 lexStrItem6 wuw wux = lexStrItem4 wux; 191.77/169.75 " 191.77/169.75 "lexStrItem7 (vzv : vzz) = lexStrItem6 (vzv == '\') (vzv : vzz); 191.77/169.75 lexStrItem7 wuy = lexStrItem4 wuy; 191.77/169.75 " 191.77/169.75 The following Function with conditions 191.77/169.75 "lexStrItem00 ('\' : t) = ([],t) : []; 191.77/169.75 lexStrItem00 wz = []; 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexStrItem00 (wvu : t) = lexStrItem002 (wvu : t); 191.77/169.75 lexStrItem00 wz = lexStrItem000 wz; 191.77/169.75 " 191.77/169.75 "lexStrItem000 wz = []; 191.77/169.75 " 191.77/169.75 "lexStrItem001 True (wvu : t) = ([],t) : []; 191.77/169.75 lexStrItem001 wvv wvw = lexStrItem000 wvw; 191.77/169.75 " 191.77/169.75 "lexStrItem002 (wvu : t) = lexStrItem001 (wvu == '\') (wvu : t); 191.77/169.75 lexStrItem002 wvx = lexStrItem000 wvx; 191.77/169.75 " 191.77/169.75 The following Function with conditions 191.77/169.75 "lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 191.77/169.75 lexExp s = ([],s) : []; 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexExp (e : s) = lexExp5 (e : s); 191.77/169.75 lexExp s = lexExp3 s; 191.77/169.75 " 191.77/169.75 "lexExp3 s = ([],s) : []; 191.77/169.75 " 191.77/169.75 "lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 191.77/169.75 lexExp4 e s False = lexExp3 (e : s); 191.77/169.75 " 191.77/169.75 "lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 191.77/169.75 lexExp5 wvz = lexExp3 wvz; 191.77/169.75 " 191.77/169.75 The following Function with conditions 191.77/169.75 "lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 191.77/169.75 lexFracExp s = lexExp s; 191.77/169.75 " 191.77/169.75 is transformed to 191.77/169.75 "lexFracExp (wwv : wwy) = lexFracExp5 (wwv : wwy); 191.77/169.75 lexFracExp s = lexFracExp2 s; 191.77/169.75 " 191.77/169.75 "lexFracExp2 s = lexExp s; 191.77/169.75 " 191.77/169.75 "lexFracExp3 wwv c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 191.77/169.75 lexFracExp3 wwv c cs False = lexFracExp2 (wwv : c : cs); 191.77/169.75 " 191.77/169.75 "lexFracExp4 True (wwv : c : cs) = lexFracExp3 wwv c cs (isDigit c); 191.77/169.75 lexFracExp4 wwz wxu = lexFracExp2 wxu; 191.77/169.75 " 191.77/169.75 "lexFracExp5 (wwv : wwy) = lexFracExp4 (wwv == '.') (wwv : wwy); 191.77/169.75 lexFracExp5 wxv = lexFracExp2 wxv; 191.77/169.75 " 191.77/169.75 The following Function with conditions 191.77/169.75 "lex [] = ([],[]) : []; 191.77/169.75 lex (c : s)|isSpace clex (dropWhile isSpace s); 191.77/169.75 lex (''' : s) = concatMap lex0 (lexLitChar s); 191.77/169.75 lex ('"' : s) = concatMap lex1 (lexString s) where { 191.77/169.75 lex1 vu55 = lex10 vu55; 191.77/169.75 ; 191.77/169.75 lex10 (str,t) = ('"' : str,t) : []; 191.77/169.75 lex10 xu = []; 191.77/169.75 ; 191.77/169.75 lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 191.77/169.75 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 191.77/169.75 lexStrItem s = lexLitChar s; 191.77/169.75 ; 191.77/169.75 lexStrItem0 vu58 = lexStrItem00 vu58; 191.77/169.75 ; 191.77/169.75 lexStrItem00 ('\' : t) = ([],t) : []; 191.77/169.75 lexStrItem00 wz = []; 191.77/169.75 ; 191.77/169.75 lexString ('"' : s) = ('"' : [],s) : []; 191.77/169.75 lexString s = concatMap lexString1 (lexStrItem s); 191.77/169.76 ; 191.77/169.76 lexString0 ch vu56 = lexString00 ch vu56; 191.77/169.76 ; 191.77/169.76 lexString00 ch (str,u) = (ch ++ str,u) : []; 191.77/169.76 lexString00 ch wx = []; 191.77/169.76 ; 191.77/169.76 lexString1 vu57 = lexString10 vu57; 191.77/169.76 ; 191.77/169.76 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 191.77/169.76 lexString10 wy = []; 191.77/169.76 } 191.77/169.76 ; 191.77/169.76 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 { 191.77/169.76 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 191.77/169.76 ; 191.77/169.76 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 191.77/169.76 ; 191.77/169.76 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 191.77/169.76 ; 191.77/169.76 lex2 c vu59 = lex20 c vu59; 191.77/169.76 ; 191.77/169.76 lex20 c (sym,t) = (c : sym,t) : []; 191.77/169.76 lex20 c yw = []; 191.77/169.76 ; 191.77/169.76 lex3 c vu60 = lex30 c vu60; 191.77/169.76 ; 191.77/169.76 lex30 c (nam,t) = (c : nam,t) : []; 191.77/169.76 lex30 c yx = []; 191.77/169.76 ; 191.77/169.76 lex4 c ds vu61 = lex40 c ds vu61; 191.77/169.76 ; 191.77/169.76 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 191.77/169.76 lex40 c ds yu = []; 191.93/169.81 ; 191.93/169.81 lex5 c vu62 = lex50 c vu62; 191.93/169.81 ; 191.93/169.81 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 191.93/169.81 lex50 c yv = []; 191.93/169.81 ; 191.93/169.81 lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 191.93/169.81 lexExp s = ([],s) : []; 191.93/169.81 ; 191.93/169.81 lexExp0 e c vu65 = lexExp00 e c vu65; 191.93/169.81 ; 191.93/169.81 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 191.93/169.81 lexExp00 e c xv = []; 191.93/169.81 ; 191.93/169.81 lexExp1 e vu66 = lexExp10 e vu66; 191.93/169.81 ; 191.93/169.81 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 191.93/169.81 lexExp10 e xx = []; 191.93/169.81 ; 191.93/169.81 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 191.93/169.81 lexExp100 e c t False = []; 191.93/169.81 ; 191.93/169.81 lexExp2 e vu67 = lexExp20 e vu67; 191.93/169.81 ; 191.93/169.81 lexExp20 e (ds,t) = (e : ds,t) : []; 191.93/169.81 lexExp20 e xw = []; 191.93/169.81 ; 191.93/169.81 lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 191.93/169.81 lexFracExp s = lexExp s; 191.93/169.81 ; 191.93/169.81 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 191.93/169.81 ; 191.93/169.81 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 191.93/169.81 lexFracExp00 ds xz = []; 191.93/169.81 ; 191.93/169.81 lexFracExp1 vu64 = lexFracExp10 vu64; 191.93/169.81 ; 191.93/169.81 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 191.93/169.81 lexFracExp10 xy = []; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "lex [] = lex19 []; 191.93/169.81 lex (c : s) = lex18 (c : s); 191.93/169.81 lex (wyx : s) = lex16 (wyx : s); 191.93/169.81 lex (wxy : s) = lex14 (wxy : s); 191.93/169.81 lex (c : s) = lex12 (c : s); 191.93/169.81 " 191.93/169.81 "lex12 (c : s) = lex11 c s (isSingle c) where { 191.93/169.81 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 191.93/169.81 ; 191.93/169.81 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 191.93/169.81 ; 191.93/169.81 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 191.93/169.81 ; 191.93/169.81 lex11 c s True = (c : [],s) : []; 191.93/169.81 lex11 c s False = lex9 c s (isSym c); 191.93/169.81 ; 191.93/169.81 lex2 c vu59 = lex20 c vu59; 191.93/169.81 ; 191.93/169.81 lex20 c (sym,t) = (c : sym,t) : []; 191.93/169.81 lex20 c yw = []; 191.93/169.81 ; 191.93/169.81 lex3 c vu60 = lex30 c vu60; 191.93/169.81 ; 191.93/169.81 lex30 c (nam,t) = (c : nam,t) : []; 191.93/169.81 lex30 c yx = []; 191.93/169.81 ; 191.93/169.81 lex4 c ds vu61 = lex40 c ds vu61; 191.93/169.81 ; 191.93/169.81 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 191.93/169.81 lex40 c ds yu = []; 191.93/169.81 ; 191.93/169.81 lex5 c vu62 = lex50 c vu62; 191.93/169.81 ; 191.93/169.81 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 191.93/169.81 lex50 c yv = []; 191.93/169.81 ; 191.93/169.81 lex6 c s True = []; 191.93/169.81 ; 191.93/169.81 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 191.93/169.81 lex7 c s False = lex6 c s otherwise; 191.93/169.81 ; 191.93/169.81 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 191.93/169.81 lex8 c s False = lex7 c s (isDigit c); 191.93/169.81 ; 191.93/169.81 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 191.93/169.81 lex9 c s False = lex8 c s (isAlpha c); 191.93/169.81 ; 191.93/169.81 lexExp (e : s) = lexExp5 (e : s); 191.93/169.81 lexExp s = lexExp3 s; 191.93/169.81 ; 191.93/169.81 lexExp0 e c vu65 = lexExp00 e c vu65; 191.93/169.81 ; 191.93/169.81 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 191.93/169.81 lexExp00 e c xv = []; 191.93/169.81 ; 191.93/169.81 lexExp1 e vu66 = lexExp10 e vu66; 191.93/169.81 ; 191.93/169.81 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 191.93/169.81 lexExp10 e xx = []; 191.93/169.81 ; 191.93/169.81 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 191.93/169.81 lexExp100 e c t False = []; 191.93/169.81 ; 191.93/169.81 lexExp2 e vu67 = lexExp20 e vu67; 191.93/169.81 ; 191.93/169.81 lexExp20 e (ds,t) = (e : ds,t) : []; 191.93/169.81 lexExp20 e xw = []; 191.93/169.81 ; 191.93/169.81 lexExp3 s = ([],s) : []; 191.93/169.81 ; 191.93/169.81 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 191.93/169.81 lexExp4 e s False = lexExp3 (e : s); 191.93/169.81 ; 191.93/169.81 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 191.93/169.81 lexExp5 wvz = lexExp3 wvz; 191.93/169.81 ; 191.93/169.81 lexFracExp (wwv : wwy) = lexFracExp5 (wwv : wwy); 191.93/169.81 lexFracExp s = lexFracExp2 s; 191.93/169.81 ; 191.93/169.81 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 191.93/169.81 ; 191.93/169.81 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 191.93/169.81 lexFracExp00 ds xz = []; 191.93/169.81 ; 191.93/169.81 lexFracExp1 vu64 = lexFracExp10 vu64; 191.93/169.81 ; 191.93/169.81 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 191.93/169.81 lexFracExp10 xy = []; 191.93/169.81 ; 191.93/169.81 lexFracExp2 s = lexExp s; 191.93/169.81 ; 191.93/169.81 lexFracExp3 wwv c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 191.93/169.81 lexFracExp3 wwv c cs False = lexFracExp2 (wwv : c : cs); 191.93/169.81 ; 191.93/169.81 lexFracExp4 True (wwv : c : cs) = lexFracExp3 wwv c cs (isDigit c); 191.93/169.81 lexFracExp4 wwz wxu = lexFracExp2 wxu; 191.93/169.81 ; 191.93/169.81 lexFracExp5 (wwv : wwy) = lexFracExp4 (wwv == '.') (wwv : wwy); 191.93/169.81 lexFracExp5 wxv = lexFracExp2 wxv; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 " 191.93/169.81 "lex13 True (wxy : s) = concatMap lex1 (lexString s) where { 191.93/169.81 lex1 vu55 = lex10 vu55; 191.93/169.81 ; 191.93/169.81 lex10 (str,t) = ('"' : str,t) : []; 191.93/169.81 lex10 xu = []; 191.93/169.81 ; 191.93/169.81 lexStrItem (vzv : vzz) = lexStrItem7 (vzv : vzz); 191.93/169.81 lexStrItem (vxz : vyw) = lexStrItem4 (vxz : vyw); 191.93/169.81 lexStrItem s = lexStrItem1 s; 191.93/169.81 ; 191.93/169.81 lexStrItem0 vu58 = lexStrItem00 vu58; 191.93/169.81 ; 191.93/169.81 lexStrItem00 (wvu : t) = lexStrItem002 (wvu : t); 191.93/169.81 lexStrItem00 wz = lexStrItem000 wz; 191.93/169.81 ; 191.93/169.81 lexStrItem000 wz = []; 191.93/169.81 ; 191.93/169.81 lexStrItem001 True (wvu : t) = ([],t) : []; 191.93/169.81 lexStrItem001 wvv wvw = lexStrItem000 wvw; 191.93/169.81 ; 191.93/169.81 lexStrItem002 (wvu : t) = lexStrItem001 (wvu == '\') (wvu : t); 191.93/169.81 lexStrItem002 wvx = lexStrItem000 wvx; 191.93/169.81 ; 191.93/169.81 lexStrItem1 s = lexLitChar s; 191.93/169.81 ; 191.93/169.81 lexStrItem2 vxz c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 191.93/169.81 lexStrItem2 vxz c s False = lexStrItem1 (vxz : c : s); 191.93/169.81 ; 191.93/169.81 lexStrItem3 True (vxz : c : s) = lexStrItem2 vxz c s (isSpace c); 191.93/169.81 lexStrItem3 vyx vyy = lexStrItem1 vyy; 191.93/169.81 ; 191.93/169.81 lexStrItem4 (vxz : vyw) = lexStrItem3 (vxz == '\') (vxz : vyw); 191.93/169.81 lexStrItem4 vyz = lexStrItem1 vyz; 191.93/169.81 ; 191.93/169.81 lexStrItem5 True (vzv : vzx : s) = ('\' : '&' : [],s) : []; 191.93/169.81 lexStrItem5 wuu wuv = lexStrItem4 wuv; 191.93/169.81 ; 191.93/169.81 lexStrItem6 True (vzv : vzx : s) = lexStrItem5 (vzx == '&') (vzv : vzx : s); 191.93/169.81 lexStrItem6 wuw wux = lexStrItem4 wux; 191.93/169.81 ; 191.93/169.81 lexStrItem7 (vzv : vzz) = lexStrItem6 (vzv == '\') (vzv : vzz); 191.93/169.81 lexStrItem7 wuy = lexStrItem4 wuy; 191.93/169.81 ; 191.93/169.81 lexString (vxu : s) = lexString4 (vxu : s); 191.93/169.81 lexString s = lexString2 s; 191.93/169.81 ; 191.93/169.81 lexString0 ch vu56 = lexString00 ch vu56; 191.93/169.81 ; 191.93/169.81 lexString00 ch (str,u) = (ch ++ str,u) : []; 191.93/169.81 lexString00 ch wx = []; 191.93/169.81 ; 191.93/169.81 lexString1 vu57 = lexString10 vu57; 191.93/169.81 ; 191.93/169.81 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 191.93/169.81 lexString10 wy = []; 191.93/169.81 ; 191.93/169.81 lexString2 s = concatMap lexString1 (lexStrItem s); 191.93/169.81 ; 191.93/169.81 lexString3 True (vxu : s) = ('"' : [],s) : []; 191.93/169.81 lexString3 vxv vxw = lexString2 vxw; 191.93/169.81 ; 191.93/169.81 lexString4 (vxu : s) = lexString3 (vxu == '"') (vxu : s); 191.93/169.81 lexString4 vxx = lexString2 vxx; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 lex13 wxz wyu = lex12 wyu; 191.93/169.81 " 191.93/169.81 "lex14 (wxy : s) = lex13 (wxy == '"') (wxy : s); 191.93/169.81 lex14 wyv = lex12 wyv; 191.93/169.81 " 191.93/169.81 "lex15 True (wyx : s) = concatMap lex0 (lexLitChar s); 191.93/169.81 lex15 wyy wyz = lex14 wyz; 191.93/169.81 " 191.93/169.81 "lex16 (wyx : s) = lex15 (wyx == ''') (wyx : s); 191.93/169.81 lex16 wzu = lex14 wzu; 191.93/169.81 " 191.93/169.81 "lex17 c s True = lex (dropWhile isSpace s); 191.93/169.81 lex17 c s False = lex16 (c : s); 191.93/169.81 " 191.93/169.81 "lex18 (c : s) = lex17 c s (isSpace c); 191.93/169.81 lex18 wzw = lex16 wzw; 191.93/169.81 " 191.93/169.81 "lex19 [] = ([],[]) : []; 191.93/169.81 lex19 wzy = lex18 wzy; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 191.93/169.81 lexmatch xs ys = (xs,ys); 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 191.93/169.81 lexmatch xs ys = lexmatch0 xs ys; 191.93/169.81 " 191.93/169.81 "lexmatch0 xs ys = (xs,ys); 191.93/169.81 " 191.93/169.81 "lexmatch1 x xs y ys True = lexmatch xs ys; 191.93/169.81 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 191.93/169.81 " 191.93/169.81 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 191.93/169.81 lexmatch2 xuv xuw = lexmatch0 xuv xuw; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "undefined |Falseundefined; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "undefined = undefined1; 191.93/169.81 " 191.93/169.81 "undefined0 True = undefined; 191.93/169.81 " 191.93/169.81 "undefined1 = undefined0 False; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 191.93/169.81 mandatory20 zw = []; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "mandatory20 (xuz : xvu,s) = mandatory202 (xuz : xvu,s); 191.93/169.81 mandatory20 zw = mandatory200 zw; 191.93/169.81 " 191.93/169.81 "mandatory200 zw = []; 191.93/169.81 " 191.93/169.81 "mandatory201 True (xuz : [],s) = concatMap mandatory1 (optional s); 191.93/169.81 mandatory201 xvv xvw = mandatory200 xvw; 191.93/169.81 " 191.93/169.81 "mandatory202 (xuz : xvu,s) = mandatory201 (xuz == '(') (xuz : xvu,s); 191.93/169.81 mandatory202 xvx = mandatory200 xvx; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "mandatory00 x (')' : [],u) = (x,u) : []; 191.93/169.81 mandatory00 x zx = []; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "mandatory00 x (xwu : xwv,u) = mandatory002 x (xwu : xwv,u); 191.93/169.81 mandatory00 x zx = mandatory000 x zx; 191.93/169.81 " 191.93/169.81 "mandatory000 x zx = []; 191.93/169.81 " 191.93/169.81 "mandatory001 True x (xwu : [],u) = (x,u) : []; 191.93/169.81 mandatory001 xww xwx xwy = mandatory000 xwx xwy; 191.93/169.81 " 191.93/169.81 "mandatory002 x (xwu : xwv,u) = mandatory001 (xwu == ')') x (xwu : xwv,u); 191.93/169.81 mandatory002 xwz xxu = mandatory000 xwz xxu; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "dropWhile p [] = []; 191.93/169.81 dropWhile p (zz : vuu)|p zzdropWhile p vuu|otherwisezz : vuu; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "dropWhile p [] = dropWhile3 p []; 191.93/169.81 dropWhile p (zz : vuu) = dropWhile2 p (zz : vuu); 191.93/169.81 " 191.93/169.81 "dropWhile1 p zz vuu True = dropWhile p vuu; 191.93/169.81 dropWhile1 p zz vuu False = dropWhile0 p zz vuu otherwise; 191.93/169.81 " 191.93/169.81 "dropWhile0 p zz vuu True = zz : vuu; 191.93/169.81 " 191.93/169.81 "dropWhile2 p (zz : vuu) = dropWhile1 p zz vuu (p zz); 191.93/169.81 " 191.93/169.81 "dropWhile3 p [] = []; 191.93/169.81 dropWhile3 xxx xxy = dropWhile2 xxx xxy; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "lex00 (ch,''' : t) = lex000 ch t (ch /= ''' : []); 191.93/169.81 lex00 vuv = []; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "lex00 (ch,xyv : t) = lex003 (ch,xyv : t); 191.93/169.81 lex00 vuv = lex001 vuv; 191.93/169.81 " 191.93/169.81 "lex001 vuv = []; 191.93/169.81 " 191.93/169.81 "lex002 True (ch,xyv : t) = lex000 ch t (ch /= ''' : []); 191.93/169.81 lex002 xyw xyx = lex001 xyx; 191.93/169.81 " 191.93/169.81 "lex003 (ch,xyv : t) = lex002 (xyv == ''') (ch,xyv : t); 191.93/169.81 lex003 xyy = lex001 xyy; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 191.93/169.81 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 191.93/169.81 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 191.93/169.81 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 191.93/169.81 lexEsc (vux : vuy)|isDigit vuxspan isDigit (vux : vuy) : []|isUpper vuxlexEsc2 (concatMap (lexEsc1 (vux : vuy)) table); 191.93/169.81 lexEsc vuz = []; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "lexEsc (c : s) = lexEsc16 (c : s); 191.93/169.81 lexEsc (yvu : yvx) = lexEsc14 (yvu : yvx); 191.93/169.81 lexEsc (yuv : s) = lexEsc11 (yuv : s); 191.93/169.81 lexEsc (xzw : s) = lexEsc8 (xzw : s); 191.93/169.81 lexEsc (vux : vuy) = lexEsc6 (vux : vuy); 191.93/169.81 lexEsc vuz = lexEsc3 vuz; 191.93/169.81 " 191.93/169.81 "lexEsc3 vuz = []; 191.93/169.81 " 191.93/169.81 "lexEsc5 vux vuy True = span isDigit (vux : vuy) : []; 191.93/169.81 lexEsc5 vux vuy False = lexEsc4 vux vuy (isUpper vux); 191.93/169.81 " 191.93/169.81 "lexEsc4 vux vuy True = lexEsc2 (concatMap (lexEsc1 (vux : vuy)) table); 191.93/169.81 lexEsc4 vux vuy False = lexEsc3 (vux : vuy); 191.93/169.81 " 191.93/169.81 "lexEsc6 (vux : vuy) = lexEsc5 vux vuy (isDigit vux); 191.93/169.81 lexEsc6 xzu = lexEsc3 xzu; 191.93/169.81 " 191.93/169.81 "lexEsc7 True (xzw : s) = prefix 'x' (span isHexDigit s) : []; 191.93/169.81 lexEsc7 xzx xzy = lexEsc6 xzy; 191.93/169.81 " 191.93/169.81 "lexEsc8 (xzw : s) = lexEsc7 (xzw == 'x') (xzw : s); 191.93/169.81 lexEsc8 xzz = lexEsc6 xzz; 191.93/169.81 " 191.93/169.81 "lexEsc9 True (yuv : s) = prefix 'o' (span isOctDigit s) : []; 191.93/169.81 lexEsc9 yuw yux = lexEsc8 yux; 191.93/169.81 " 191.93/169.81 "lexEsc11 (yuv : s) = lexEsc9 (yuv == 'o') (yuv : s); 191.93/169.81 lexEsc11 yuy = lexEsc8 yuy; 191.93/169.81 " 191.93/169.81 "lexEsc12 yvu c s True = ('^' : c : [],s) : []; 191.93/169.81 lexEsc12 yvu c s False = lexEsc11 (yvu : c : s); 191.93/169.81 " 191.93/169.81 "lexEsc13 True (yvu : c : s) = lexEsc12 yvu c s (c >= '@' && c <= '_'); 191.93/169.81 lexEsc13 yvy yvz = lexEsc11 yvz; 191.93/169.81 " 191.93/169.81 "lexEsc14 (yvu : yvx) = lexEsc13 (yvu == '^') (yvu : yvx); 191.93/169.81 lexEsc14 ywu = lexEsc11 ywu; 191.93/169.81 " 191.93/169.81 "lexEsc15 c s True = (c : [],s) : []; 191.93/169.81 lexEsc15 c s False = lexEsc14 (c : s); 191.93/169.81 " 191.93/169.81 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 191.93/169.81 lexEsc16 yww = lexEsc14 yww; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "lexLitChar [] = []; 191.93/169.81 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 191.93/169.81 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 191.93/169.81 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 191.93/169.81 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 191.93/169.81 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 191.93/169.81 lexEsc (vux : vuy)|isDigit vuxspan isDigit (vux : vuy) : []|isUpper vuxlexEsc2 (concatMap (lexEsc1 (vux : vuy)) table); 191.93/169.81 lexEsc vuz = []; 191.93/169.81 ; 191.93/169.81 lexEsc0 mne vu69 = lexEsc00 mne vu69; 191.93/169.81 ; 191.93/169.81 lexEsc00 mne ([],s') = (mne,s') : []; 191.93/169.81 lexEsc00 mne vvv = []; 191.93/169.81 ; 191.93/169.81 lexEsc1 s vu70 = lexEsc10 s vu70; 191.93/169.81 ; 191.93/169.81 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 191.93/169.81 lexEsc10 s vvw = []; 191.93/169.81 ; 191.93/169.81 lexEsc2 (pr : vvu) = pr : []; 191.93/169.81 lexEsc2 [] = []; 191.93/169.81 ; 191.93/169.81 prefix c (t,s) = (c : t,s); 191.93/169.81 ; 191.93/169.81 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "lexLitChar [] = lexLitChar3 []; 191.93/169.81 lexLitChar (c : s) = lexLitChar2 (c : s); 191.93/169.81 " 191.93/169.81 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 191.93/169.81 lexEsc (c : s) = lexEsc16 (c : s); 191.93/169.81 lexEsc (yvu : yvx) = lexEsc14 (yvu : yvx); 191.93/169.81 lexEsc (yuv : s) = lexEsc11 (yuv : s); 191.93/169.81 lexEsc (xzw : s) = lexEsc8 (xzw : s); 191.93/169.81 lexEsc (vux : vuy) = lexEsc6 (vux : vuy); 191.93/169.81 lexEsc vuz = lexEsc3 vuz; 191.93/169.81 ; 191.93/169.81 lexEsc0 mne vu69 = lexEsc00 mne vu69; 191.93/169.81 ; 191.93/169.81 lexEsc00 mne ([],s') = (mne,s') : []; 191.93/169.81 lexEsc00 mne vvv = []; 191.93/169.81 ; 191.93/169.81 lexEsc1 s vu70 = lexEsc10 s vu70; 191.93/169.81 ; 191.93/169.81 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 191.93/169.81 lexEsc10 s vvw = []; 191.93/169.81 ; 191.93/169.81 lexEsc11 (yuv : s) = lexEsc9 (yuv == 'o') (yuv : s); 191.93/169.81 lexEsc11 yuy = lexEsc8 yuy; 191.93/169.81 ; 191.93/169.81 lexEsc12 yvu c s True = ('^' : c : [],s) : []; 191.93/169.81 lexEsc12 yvu c s False = lexEsc11 (yvu : c : s); 191.93/169.81 ; 191.93/169.81 lexEsc13 True (yvu : c : s) = lexEsc12 yvu c s (c >= '@' && c <= '_'); 191.93/169.81 lexEsc13 yvy yvz = lexEsc11 yvz; 191.93/169.81 ; 191.93/169.81 lexEsc14 (yvu : yvx) = lexEsc13 (yvu == '^') (yvu : yvx); 191.93/169.81 lexEsc14 ywu = lexEsc11 ywu; 191.93/169.81 ; 191.93/169.81 lexEsc15 c s True = (c : [],s) : []; 191.93/169.81 lexEsc15 c s False = lexEsc14 (c : s); 191.93/169.81 ; 191.93/169.81 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 191.93/169.81 lexEsc16 yww = lexEsc14 yww; 191.93/169.81 ; 191.93/169.81 lexEsc2 (pr : vvu) = pr : []; 191.93/169.81 lexEsc2 [] = []; 191.93/169.81 ; 191.93/169.81 lexEsc3 vuz = []; 191.93/169.81 ; 191.93/169.81 lexEsc4 vux vuy True = lexEsc2 (concatMap (lexEsc1 (vux : vuy)) table); 191.93/169.81 lexEsc4 vux vuy False = lexEsc3 (vux : vuy); 191.93/169.81 ; 191.93/169.81 lexEsc5 vux vuy True = span isDigit (vux : vuy) : []; 191.93/169.81 lexEsc5 vux vuy False = lexEsc4 vux vuy (isUpper vux); 191.93/169.81 ; 191.93/169.81 lexEsc6 (vux : vuy) = lexEsc5 vux vuy (isDigit vux); 191.93/169.81 lexEsc6 xzu = lexEsc3 xzu; 191.93/169.81 ; 191.93/169.81 lexEsc7 True (xzw : s) = prefix 'x' (span isHexDigit s) : []; 191.93/169.81 lexEsc7 xzx xzy = lexEsc6 xzy; 191.93/169.81 ; 191.93/169.81 lexEsc8 (xzw : s) = lexEsc7 (xzw == 'x') (xzw : s); 191.93/169.81 lexEsc8 xzz = lexEsc6 xzz; 191.93/169.81 ; 191.93/169.81 lexEsc9 True (yuv : s) = prefix 'o' (span isOctDigit s) : []; 191.93/169.81 lexEsc9 yuw yux = lexEsc8 yux; 191.93/169.81 ; 191.93/169.81 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 191.93/169.81 ; 191.93/169.81 lexLitChar1 c s True = (c : [],s) : []; 191.93/169.81 lexLitChar1 c s False = lexLitChar0 c s otherwise; 191.93/169.81 ; 191.93/169.81 prefix c (t,s) = (c : t,s); 191.93/169.81 ; 191.93/169.81 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 " 191.93/169.81 "lexLitChar3 [] = []; 191.93/169.81 lexLitChar3 ywz = lexLitChar2 ywz; 191.93/169.81 " 191.93/169.81 The following Function with conditions 191.93/169.81 "span p [] = ([],[]); 191.93/169.81 span p (vvx : vvy)|p vvx(vvx : ys,zs)|otherwise([],vvx : vvy) where { 191.93/169.81 vu43 = span p vvy; 191.93/169.81 ; 191.93/169.81 ys = ys0 vu43; 191.93/169.81 ; 191.93/169.81 ys0 (ys,vwu) = ys; 191.93/169.81 ; 191.93/169.81 zs = zs0 vu43; 191.93/169.81 ; 191.93/169.81 zs0 (vvz,zs) = zs; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 " 191.93/169.81 is transformed to 191.93/169.81 "span p [] = span3 p []; 191.93/169.81 span p (vvx : vvy) = span2 p (vvx : vvy); 191.93/169.81 " 191.93/169.81 "span2 p (vvx : vvy) = span1 p vvx vvy (p vvx) where { 191.93/169.81 span0 p vvx vvy True = ([],vvx : vvy); 191.93/169.81 ; 191.93/169.81 span1 p vvx vvy True = (vvx : ys,zs); 191.93/169.81 span1 p vvx vvy False = span0 p vvx vvy otherwise; 191.93/169.81 ; 191.93/169.81 vu43 = span p vvy; 191.93/169.81 ; 191.93/169.81 ys = ys0 vu43; 191.93/169.81 ; 191.93/169.81 ys0 (ys,vwu) = ys; 191.93/169.81 ; 191.93/169.81 zs = zs0 vu43; 191.93/169.81 ; 191.93/169.81 zs0 (vvz,zs) = zs; 191.93/169.81 } 191.93/169.81 ; 191.93/169.81 " 191.93/169.81 "span3 p [] = ([],[]); 191.93/169.81 span3 yxw yxx = span2 yxw yxx; 191.93/169.81 " 191.93/169.81 191.93/169.81 ---------------------------------------- 191.93/169.81 191.93/169.81 (10) 191.93/169.81 Obligation: 191.93/169.81 mainModule Main 191.93/169.81 module Main where { 191.93/169.81 import qualified Prelude; 191.93/169.81 } 191.93/169.81 191.93/169.81 ---------------------------------------- 191.93/169.81 191.93/169.81 (11) LetRed (EQUIVALENT) 191.93/169.81 Let/Where Reductions: 191.93/169.81 The bindings of the following Let/Where expression 191.93/169.81 "concatMap lex1 (lexString s) where { 191.93/169.81 lex1 vu55 = lex10 vu55; 191.93/169.81 ; 191.93/169.81 lex10 (str,t) = ('"' : str,t) : []; 191.93/169.81 lex10 xu = []; 191.93/169.81 ; 191.93/169.81 lexStrItem (vzv : vzz) = lexStrItem7 (vzv : vzz); 191.93/169.81 lexStrItem (vxz : vyw) = lexStrItem4 (vxz : vyw); 191.93/169.81 lexStrItem s = lexStrItem1 s; 191.93/169.81 ; 191.93/169.81 lexStrItem0 vu58 = lexStrItem00 vu58; 191.93/169.81 ; 191.93/169.81 lexStrItem00 (wvu : t) = lexStrItem002 (wvu : t); 191.93/169.81 lexStrItem00 wz = lexStrItem000 wz; 191.93/169.81 ; 191.93/169.81 lexStrItem000 wz = []; 191.93/169.81 ; 191.93/169.81 lexStrItem001 True (wvu : t) = ([],t) : []; 191.93/169.81 lexStrItem001 wvv wvw = lexStrItem000 wvw; 191.93/169.81 ; 191.93/169.81 lexStrItem002 (wvu : t) = lexStrItem001 (wvu == '\') (wvu : t); 191.93/169.81 lexStrItem002 wvx = lexStrItem000 wvx; 191.93/169.81 ; 191.93/169.81 lexStrItem1 s = lexLitChar s; 191.93/169.81 ; 191.93/169.81 lexStrItem2 vxz c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 191.93/169.81 lexStrItem2 vxz c s False = lexStrItem1 (vxz : c : s); 191.93/169.81 ; 191.93/169.81 lexStrItem3 True (vxz : c : s) = lexStrItem2 vxz c s (isSpace c); 191.93/169.81 lexStrItem3 vyx vyy = lexStrItem1 vyy; 191.93/169.81 ; 191.93/169.81 lexStrItem4 (vxz : vyw) = lexStrItem3 (vxz == '\') (vxz : vyw); 191.93/169.81 lexStrItem4 vyz = lexStrItem1 vyz; 191.93/169.81 ; 191.93/169.81 lexStrItem5 True (vzv : vzx : s) = ('\' : '&' : [],s) : []; 191.93/169.81 lexStrItem5 wuu wuv = lexStrItem4 wuv; 191.93/169.81 ; 191.93/169.81 lexStrItem6 True (vzv : vzx : s) = lexStrItem5 (vzx == '&') (vzv : vzx : s); 191.93/169.81 lexStrItem6 wuw wux = lexStrItem4 wux; 191.93/169.81 ; 191.93/169.81 lexStrItem7 (vzv : vzz) = lexStrItem6 (vzv == '\') (vzv : vzz); 191.93/169.81 lexStrItem7 wuy = lexStrItem4 wuy; 191.93/169.81 ; 191.93/169.81 lexString (vxu : s) = lexString4 (vxu : s); 191.93/169.81 lexString s = lexString2 s; 191.93/169.81 ; 191.93/169.81 lexString0 ch vu56 = lexString00 ch vu56; 191.93/169.81 ; 191.93/169.81 lexString00 ch (str,u) = (ch ++ str,u) : []; 191.93/169.81 lexString00 ch wx = []; 191.93/169.81 ; 191.93/169.81 lexString1 vu57 = lexString10 vu57; 191.93/169.81 ; 191.93/169.81 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 191.93/169.81 lexString10 wy = []; 191.93/169.81 ; 191.93/169.81 lexString2 s = concatMap lexString1 (lexStrItem s); 191.93/169.81 ; 191.93/169.81 lexString3 True (vxu : s) = ('"' : [],s) : []; 191.93/169.81 lexString3 vxv vxw = lexString2 vxw; 191.93/169.81 ; 191.93/169.81 lexString4 (vxu : s) = lexString3 (vxu == '"') (vxu : s); 191.93/169.81 lexString4 vxx = lexString2 vxx; 191.93/169.81 } 191.93/169.81 " 191.93/169.81 are unpacked to the following functions on top level 191.93/169.81 "lex13LexString3 True (vxu : s) = ('"' : [],s) : []; 191.93/169.81 lex13LexString3 vxv vxw = lex13LexString2 vxw; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem7 (vzv : vzz) = lex13LexStrItem6 (vzv == '\') (vzv : vzz); 191.93/169.83 lex13LexStrItem7 wuy = lex13LexStrItem4 wuy; 191.93/169.83 " 191.93/169.83 "lex13Lex1 vu55 = lex13Lex10 vu55; 191.93/169.83 " 191.93/169.83 "lex13LexString2 s = concatMap lex13LexString1 (lex13LexStrItem s); 191.93/169.83 " 191.93/169.83 "lex13LexStrItem1 s = lexLitChar s; 191.93/169.83 " 191.93/169.83 "lex13Lex10 (str,t) = ('"' : str,t) : []; 191.93/169.83 lex13Lex10 xu = []; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem5 True (vzv : vzx : s) = ('\' : '&' : [],s) : []; 191.93/169.83 lex13LexStrItem5 wuu wuv = lex13LexStrItem4 wuv; 191.93/169.83 " 191.93/169.83 "lex13LexString00 ch (str,u) = (ch ++ str,u) : []; 191.93/169.83 lex13LexString00 ch wx = []; 191.93/169.83 " 191.93/169.83 "lex13LexString4 (vxu : s) = lex13LexString3 (vxu == '"') (vxu : s); 191.93/169.83 lex13LexString4 vxx = lex13LexString2 vxx; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem2 vxz c s True = concatMap lex13LexStrItem0 (dropWhile isSpace s : []); 191.93/169.83 lex13LexStrItem2 vxz c s False = lex13LexStrItem1 (vxz : c : s); 191.93/169.83 " 191.93/169.83 "lex13LexString1 vu57 = lex13LexString10 vu57; 191.93/169.83 " 191.93/169.83 "lex13LexString (vxu : s) = lex13LexString4 (vxu : s); 191.93/169.83 lex13LexString s = lex13LexString2 s; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem002 (wvu : t) = lex13LexStrItem001 (wvu == '\') (wvu : t); 191.93/169.83 lex13LexStrItem002 wvx = lex13LexStrItem000 wvx; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem4 (vxz : vyw) = lex13LexStrItem3 (vxz == '\') (vxz : vyw); 191.93/169.83 lex13LexStrItem4 vyz = lex13LexStrItem1 vyz; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem0 vu58 = lex13LexStrItem00 vu58; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem (vzv : vzz) = lex13LexStrItem7 (vzv : vzz); 191.93/169.83 lex13LexStrItem (vxz : vyw) = lex13LexStrItem4 (vxz : vyw); 191.93/169.83 lex13LexStrItem s = lex13LexStrItem1 s; 191.93/169.83 " 191.93/169.83 "lex13LexString0 ch vu56 = lex13LexString00 ch vu56; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem00 (wvu : t) = lex13LexStrItem002 (wvu : t); 191.93/169.83 lex13LexStrItem00 wz = lex13LexStrItem000 wz; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem3 True (vxz : c : s) = lex13LexStrItem2 vxz c s (isSpace c); 191.93/169.83 lex13LexStrItem3 vyx vyy = lex13LexStrItem1 vyy; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem6 True (vzv : vzx : s) = lex13LexStrItem5 (vzx == '&') (vzv : vzx : s); 191.93/169.83 lex13LexStrItem6 wuw wux = lex13LexStrItem4 wux; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem000 wz = []; 191.93/169.83 " 191.93/169.83 "lex13LexString10 (ch,t) = concatMap (lex13LexString0 ch) (lex13LexString t); 191.93/169.83 lex13LexString10 wy = []; 191.93/169.83 " 191.93/169.83 "lex13LexStrItem001 True (wvu : t) = ([],t) : []; 191.93/169.83 lex13LexStrItem001 wvv wvw = lex13LexStrItem000 wvw; 191.93/169.83 " 191.93/169.83 The bindings of the following Let/Where expression 191.93/169.83 "span1 p vvx vvy (p vvx) where { 191.93/169.83 span0 p vvx vvy True = ([],vvx : vvy); 191.93/169.83 ; 191.93/169.83 span1 p vvx vvy True = (vvx : ys,zs); 191.93/169.83 span1 p vvx vvy False = span0 p vvx vvy otherwise; 191.93/169.83 ; 191.93/169.83 vu43 = span p vvy; 191.93/169.83 ; 191.93/169.83 ys = ys0 vu43; 191.93/169.83 ; 191.93/169.83 ys0 (ys,vwu) = ys; 191.93/169.83 ; 191.93/169.83 zs = zs0 vu43; 191.93/169.83 ; 191.93/169.83 zs0 (vvz,zs) = zs; 191.93/169.83 } 191.93/169.83 " 191.93/169.83 are unpacked to the following functions on top level 191.93/169.83 "span2Span1 yxy yxz p vvx vvy True = (vvx : span2Ys yxy yxz,span2Zs yxy yxz); 191.93/169.83 span2Span1 yxy yxz p vvx vvy False = span2Span0 yxy yxz p vvx vvy otherwise; 191.93/169.83 " 191.93/169.83 "span2Ys yxy yxz = span2Ys0 yxy yxz (span2Vu43 yxy yxz); 191.93/169.83 " 191.93/169.83 "span2Span0 yxy yxz p vvx vvy True = ([],vvx : vvy); 191.93/169.83 " 191.93/169.83 "span2Vu43 yxy yxz = span yxy yxz; 191.93/169.83 " 191.93/169.83 "span2Zs yxy yxz = span2Zs0 yxy yxz (span2Vu43 yxy yxz); 191.93/169.83 " 191.93/169.83 "span2Zs0 yxy yxz (vvz,zs) = zs; 191.93/169.83 " 191.93/169.83 "span2Ys0 yxy yxz (ys,vwu) = ys; 191.93/169.83 " 191.93/169.83 The bindings of the following Let/Where expression 191.93/169.83 "lex11 c s (isSingle c) where { 191.93/169.83 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 191.93/169.83 ; 191.93/169.83 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 191.93/169.83 ; 191.93/169.83 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 191.93/169.83 ; 191.93/169.83 lex11 c s True = (c : [],s) : []; 191.93/169.83 lex11 c s False = lex9 c s (isSym c); 191.93/169.83 ; 191.93/169.83 lex2 c vu59 = lex20 c vu59; 191.93/169.83 ; 191.93/169.83 lex20 c (sym,t) = (c : sym,t) : []; 191.93/169.83 lex20 c yw = []; 191.93/169.83 ; 191.93/169.83 lex3 c vu60 = lex30 c vu60; 191.93/169.83 ; 191.93/169.83 lex30 c (nam,t) = (c : nam,t) : []; 191.93/169.83 lex30 c yx = []; 191.93/169.83 ; 191.93/169.83 lex4 c ds vu61 = lex40 c ds vu61; 191.93/169.83 ; 191.93/169.83 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 191.93/169.83 lex40 c ds yu = []; 191.93/169.83 ; 191.93/169.83 lex5 c vu62 = lex50 c vu62; 191.93/169.83 ; 191.93/169.83 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 191.93/169.83 lex50 c yv = []; 191.93/169.83 ; 191.93/169.83 lex6 c s True = []; 191.93/169.83 ; 191.93/169.83 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 191.93/169.83 lex7 c s False = lex6 c s otherwise; 191.93/169.83 ; 191.93/169.83 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 191.93/169.83 lex8 c s False = lex7 c s (isDigit c); 191.93/169.83 ; 191.93/169.83 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 191.93/169.83 lex9 c s False = lex8 c s (isAlpha c); 191.93/169.83 ; 191.93/169.83 lexExp (e : s) = lexExp5 (e : s); 191.93/169.83 lexExp s = lexExp3 s; 191.93/169.83 ; 191.93/169.83 lexExp0 e c vu65 = lexExp00 e c vu65; 191.93/169.83 ; 191.93/169.83 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 191.93/169.83 lexExp00 e c xv = []; 191.93/169.83 ; 191.93/169.83 lexExp1 e vu66 = lexExp10 e vu66; 191.93/169.83 ; 191.93/169.83 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 191.93/169.83 lexExp10 e xx = []; 191.93/169.83 ; 191.93/169.83 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 191.93/169.83 lexExp100 e c t False = []; 191.93/169.83 ; 191.93/169.83 lexExp2 e vu67 = lexExp20 e vu67; 191.93/169.83 ; 191.93/169.83 lexExp20 e (ds,t) = (e : ds,t) : []; 191.93/169.83 lexExp20 e xw = []; 191.93/169.83 ; 191.93/169.83 lexExp3 s = ([],s) : []; 191.93/169.83 ; 191.93/169.83 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 191.93/169.83 lexExp4 e s False = lexExp3 (e : s); 191.93/169.83 ; 191.93/169.83 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 191.93/169.83 lexExp5 wvz = lexExp3 wvz; 191.93/169.83 ; 191.93/169.83 lexFracExp (wwv : wwy) = lexFracExp5 (wwv : wwy); 191.93/169.83 lexFracExp s = lexFracExp2 s; 191.93/169.83 ; 191.93/169.83 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 191.93/169.83 ; 191.93/169.83 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 191.93/169.83 lexFracExp00 ds xz = []; 191.93/169.83 ; 191.93/169.83 lexFracExp1 vu64 = lexFracExp10 vu64; 191.93/169.83 ; 191.93/169.83 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 191.93/169.83 lexFracExp10 xy = []; 191.93/169.83 ; 191.93/169.83 lexFracExp2 s = lexExp s; 191.93/169.83 ; 191.93/169.83 lexFracExp3 wwv c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 191.93/169.83 lexFracExp3 wwv c cs False = lexFracExp2 (wwv : c : cs); 191.93/169.83 ; 191.93/169.83 lexFracExp4 True (wwv : c : cs) = lexFracExp3 wwv c cs (isDigit c); 191.93/169.83 lexFracExp4 wwz wxu = lexFracExp2 wxu; 191.93/169.83 ; 191.93/169.83 lexFracExp5 (wwv : wwy) = lexFracExp4 (wwv == '.') (wwv : wwy); 191.93/169.83 lexFracExp5 wxv = lexFracExp2 wxv; 191.93/169.83 } 191.93/169.83 " 191.93/169.83 are unpacked to the following functions on top level 191.93/169.83 "lex12LexExp0 e c vu65 = lex12LexExp00 e c vu65; 191.93/169.83 " 191.93/169.83 "lex12Lex6 c s True = []; 191.93/169.83 " 191.93/169.83 "lex12LexExp100 e c t True = concatMap (lex12LexExp0 e c) (lexDigits t); 191.93/169.83 lex12LexExp100 e c t False = []; 191.93/169.83 " 191.93/169.83 "lex12LexExp (e : s) = lex12LexExp5 (e : s); 191.93/169.83 lex12LexExp s = lex12LexExp3 s; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 191.93/169.83 lex12LexFracExp00 ds xz = []; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp4 True (wwv : c : cs) = lex12LexFracExp3 wwv c cs (isDigit c); 191.93/169.83 lex12LexFracExp4 wwz wxu = lex12LexFracExp2 wxu; 191.93/169.83 " 191.93/169.83 "lex12Lex3 c vu60 = lex12Lex30 c vu60; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp (wwv : wwy) = lex12LexFracExp5 (wwv : wwy); 191.93/169.83 lex12LexFracExp s = lex12LexFracExp2 s; 191.93/169.83 " 191.93/169.83 "lex12Lex50 c (ds,s) = concatMap (lex12Lex4 c ds) (lex12LexFracExp s); 191.93/169.83 lex12Lex50 c yv = []; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp5 (wwv : wwy) = lex12LexFracExp4 (wwv == '.') (wwv : wwy); 191.93/169.83 lex12LexFracExp5 wxv = lex12LexFracExp2 wxv; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp2 s = lex12LexExp s; 191.93/169.83 " 191.93/169.83 "lex12LexExp3 s = ([],s) : []; 191.93/169.83 " 191.93/169.83 "lex12IsSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp0 ds vu63 = lex12LexFracExp00 ds vu63; 191.93/169.83 " 191.93/169.83 "lex12Lex7 c s True = concatMap (lex12Lex5 c) (span isDigit s : []); 191.93/169.83 lex12Lex7 c s False = lex12Lex6 c s otherwise; 191.93/169.83 " 191.93/169.83 "lex12LexExp20 e (ds,t) = (e : ds,t) : []; 191.93/169.83 lex12LexExp20 e xw = []; 191.93/169.83 " 191.93/169.83 "lex12Lex9 c s True = concatMap (lex12Lex2 c) (span lex12IsSym s : []); 191.93/169.83 lex12Lex9 c s False = lex12Lex8 c s (isAlpha c); 191.93/169.83 " 191.93/169.83 "lex12Lex5 c vu62 = lex12Lex50 c vu62; 191.93/169.83 " 191.93/169.83 "lex12LexExp00 e c (ds,u) = (e : c : ds,u) : []; 191.93/169.83 lex12LexExp00 e c xv = []; 191.93/169.83 " 191.93/169.83 "lex12LexExp4 e s True = concatMap (lex12LexExp1 e) (s : []) ++ concatMap (lex12LexExp2 e) (lexDigits s); 191.93/169.83 lex12LexExp4 e s False = lex12LexExp3 (e : s); 191.93/169.83 " 191.93/169.83 "lex12LexExp10 e (c : t) = lex12LexExp100 e c t (c `elem` '+' : '-' : []); 191.93/169.83 lex12LexExp10 e xx = []; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp10 (ds,t) = concatMap (lex12LexFracExp0 ds) (lex12LexExp t); 191.93/169.83 lex12LexFracExp10 xy = []; 191.93/169.83 " 191.93/169.83 "lex12LexExp1 e vu66 = lex12LexExp10 e vu66; 191.93/169.83 " 191.93/169.83 "lex12Lex11 c s True = (c : [],s) : []; 191.93/169.83 lex12Lex11 c s False = lex12Lex9 c s (lex12IsSym c); 191.93/169.83 " 191.93/169.83 "lex12LexExp5 (e : s) = lex12LexExp4 e s (e `elem` 'e' : 'E' : []); 191.93/169.83 lex12LexExp5 wvz = lex12LexExp3 wvz; 191.93/169.83 " 191.93/169.83 "lex12Lex2 c vu59 = lex12Lex20 c vu59; 191.93/169.83 " 191.93/169.83 "lex12Lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 191.93/169.83 lex12Lex40 c ds yu = []; 191.93/169.83 " 191.93/169.83 "lex12Lex30 c (nam,t) = (c : nam,t) : []; 191.93/169.83 lex12Lex30 c yx = []; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp3 wwv c cs True = concatMap lex12LexFracExp1 (lexDigits (c : cs)); 191.93/169.83 lex12LexFracExp3 wwv c cs False = lex12LexFracExp2 (wwv : c : cs); 191.93/169.83 " 191.93/169.83 "lex12IsSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 191.93/169.83 " 191.93/169.83 "lex12LexFracExp1 vu64 = lex12LexFracExp10 vu64; 191.93/169.83 " 191.93/169.83 "lex12Lex8 c s True = concatMap (lex12Lex3 c) (span lex12IsIdChar s : []); 192.28/169.85 lex12Lex8 c s False = lex12Lex7 c s (isDigit c); 192.28/169.85 " 192.28/169.85 "lex12LexExp2 e vu67 = lex12LexExp20 e vu67; 192.28/169.85 " 192.28/169.85 "lex12Lex20 c (sym,t) = (c : sym,t) : []; 192.28/169.85 lex12Lex20 c yw = []; 192.28/169.85 " 192.28/169.85 "lex12IsIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 192.28/169.85 " 192.28/169.85 "lex12Lex4 c ds vu61 = lex12Lex40 c ds vu61; 192.28/169.85 " 192.28/169.85 The bindings of the following Let/Where expression 192.28/169.85 "lexLitChar1 c s (c /= '\') where { 192.28/169.85 lexEsc (c : s) = lexEsc16 (c : s); 192.28/169.85 lexEsc (yvu : yvx) = lexEsc14 (yvu : yvx); 192.28/169.85 lexEsc (yuv : s) = lexEsc11 (yuv : s); 192.28/169.85 lexEsc (xzw : s) = lexEsc8 (xzw : s); 192.28/169.85 lexEsc (vux : vuy) = lexEsc6 (vux : vuy); 192.28/169.85 lexEsc vuz = lexEsc3 vuz; 192.28/169.85 ; 192.28/169.85 lexEsc0 mne vu69 = lexEsc00 mne vu69; 192.28/169.85 ; 192.28/169.85 lexEsc00 mne ([],s') = (mne,s') : []; 192.28/169.85 lexEsc00 mne vvv = []; 192.28/169.85 ; 192.28/169.85 lexEsc1 s vu70 = lexEsc10 s vu70; 192.28/169.85 ; 192.28/169.85 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 192.28/169.85 lexEsc10 s vvw = []; 192.28/169.85 ; 192.28/169.85 lexEsc11 (yuv : s) = lexEsc9 (yuv == 'o') (yuv : s); 192.28/169.85 lexEsc11 yuy = lexEsc8 yuy; 192.28/169.85 ; 192.28/169.85 lexEsc12 yvu c s True = ('^' : c : [],s) : []; 192.28/169.85 lexEsc12 yvu c s False = lexEsc11 (yvu : c : s); 192.28/169.86 ; 192.28/169.86 lexEsc13 True (yvu : c : s) = lexEsc12 yvu c s (c >= '@' && c <= '_'); 192.28/169.86 lexEsc13 yvy yvz = lexEsc11 yvz; 192.28/169.86 ; 192.28/169.86 lexEsc14 (yvu : yvx) = lexEsc13 (yvu == '^') (yvu : yvx); 192.28/169.86 lexEsc14 ywu = lexEsc11 ywu; 192.28/169.86 ; 192.28/169.86 lexEsc15 c s True = (c : [],s) : []; 192.28/169.86 lexEsc15 c s False = lexEsc14 (c : s); 192.28/169.86 ; 192.28/169.86 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 192.28/169.86 lexEsc16 yww = lexEsc14 yww; 192.28/169.86 ; 192.28/169.86 lexEsc2 (pr : vvu) = pr : []; 192.28/169.86 lexEsc2 [] = []; 192.28/169.86 ; 192.28/169.86 lexEsc3 vuz = []; 192.28/169.86 ; 192.28/169.86 lexEsc4 vux vuy True = lexEsc2 (concatMap (lexEsc1 (vux : vuy)) table); 192.28/169.86 lexEsc4 vux vuy False = lexEsc3 (vux : vuy); 192.28/169.86 ; 192.28/169.86 lexEsc5 vux vuy True = span isDigit (vux : vuy) : []; 192.28/169.86 lexEsc5 vux vuy False = lexEsc4 vux vuy (isUpper vux); 192.28/169.86 ; 192.28/169.86 lexEsc6 (vux : vuy) = lexEsc5 vux vuy (isDigit vux); 192.28/169.86 lexEsc6 xzu = lexEsc3 xzu; 192.28/169.86 ; 192.28/169.86 lexEsc7 True (xzw : s) = prefix 'x' (span isHexDigit s) : []; 192.28/169.86 lexEsc7 xzx xzy = lexEsc6 xzy; 192.28/169.86 ; 192.28/169.86 lexEsc8 (xzw : s) = lexEsc7 (xzw == 'x') (xzw : s); 192.28/169.86 lexEsc8 xzz = lexEsc6 xzz; 192.28/169.86 ; 192.28/169.86 lexEsc9 True (yuv : s) = prefix 'o' (span isOctDigit s) : []; 192.28/169.86 lexEsc9 yuw yux = lexEsc8 yux; 192.28/169.86 ; 192.28/169.86 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 192.28/169.86 ; 192.28/169.86 lexLitChar1 c s True = (c : [],s) : []; 192.28/169.86 lexLitChar1 c s False = lexLitChar0 c s otherwise; 192.28/169.86 ; 192.28/169.86 prefix c (t,s) = (c : t,s); 192.28/169.86 ; 192.28/169.86 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 192.28/169.86 } 192.28/169.86 " 192.28/169.86 are unpacked to the following functions on top level 192.28/169.86 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 192.28/169.86 lexLitChar2LexEsc16 yww = lexLitChar2LexEsc14 yww; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc4 vux vuy True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (vux : vuy)) lexLitChar2Table); 192.28/169.86 lexLitChar2LexEsc4 vux vuy False = lexLitChar2LexEsc3 (vux : vuy); 192.28/169.86 " 192.28/169.86 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 192.28/169.86 lexLitChar2LexEsc (yvu : yvx) = lexLitChar2LexEsc14 (yvu : yvx); 192.28/169.86 lexLitChar2LexEsc (yuv : s) = lexLitChar2LexEsc11 (yuv : s); 192.28/169.86 lexLitChar2LexEsc (xzw : s) = lexLitChar2LexEsc8 (xzw : s); 192.28/169.86 lexLitChar2LexEsc (vux : vuy) = lexLitChar2LexEsc6 (vux : vuy); 192.28/169.86 lexLitChar2LexEsc vuz = lexLitChar2LexEsc3 vuz; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 192.28/169.86 lexLitChar2LexEsc00 mne vvv = []; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 192.28/169.86 lexLitChar2LexEsc10 s vvw = []; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc2 (pr : vvu) = pr : []; 192.28/169.86 lexLitChar2LexEsc2 [] = []; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 192.28/169.86 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 192.28/169.86 " 192.28/169.86 "lexLitChar2Prefix c (t,s) = (c : t,s); 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc11 (yuv : s) = lexLitChar2LexEsc9 (yuv == 'o') (yuv : s); 192.28/169.86 lexLitChar2LexEsc11 yuy = lexLitChar2LexEsc8 yuy; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc12 yvu c s True = ('^' : c : [],s) : []; 192.28/169.86 lexLitChar2LexEsc12 yvu c s False = lexLitChar2LexEsc11 (yvu : c : s); 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc6 (vux : vuy) = lexLitChar2LexEsc5 vux vuy (isDigit vux); 192.28/169.86 lexLitChar2LexEsc6 xzu = lexLitChar2LexEsc3 xzu; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc13 True (yvu : c : s) = lexLitChar2LexEsc12 yvu c s (c >= '@' && c <= '_'); 192.28/169.86 lexLitChar2LexEsc13 yvy yvz = lexLitChar2LexEsc11 yvz; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc8 (xzw : s) = lexLitChar2LexEsc7 (xzw == 'x') (xzw : s); 192.28/169.86 lexLitChar2LexEsc8 xzz = lexLitChar2LexEsc6 xzz; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 192.28/169.86 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc9 True (yuv : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 192.28/169.86 lexLitChar2LexEsc9 yuw yux = lexLitChar2LexEsc8 yux; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc14 (yvu : yvx) = lexLitChar2LexEsc13 (yvu == '^') (yvu : yvx); 192.28/169.86 lexLitChar2LexEsc14 ywu = lexLitChar2LexEsc11 ywu; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc3 vuz = []; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc5 vux vuy True = span isDigit (vux : vuy) : []; 192.28/169.86 lexLitChar2LexEsc5 vux vuy False = lexLitChar2LexEsc4 vux vuy (isUpper vux); 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc7 True (xzw : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 192.28/169.86 lexLitChar2LexEsc7 xzx xzy = lexLitChar2LexEsc6 xzy; 192.28/169.86 " 192.28/169.86 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 192.28/169.86 " 192.28/169.86 The bindings of the following Let/Where expression 192.28/169.86 "readParen0 b where { 192.28/169.86 mandatory r = concatMap mandatory2 (lex r); 192.28/169.86 ; 192.28/169.86 mandatory0 x vu48 = mandatory00 x vu48; 192.28/169.86 ; 192.28/169.86 mandatory00 x (xwu : xwv,u) = mandatory002 x (xwu : xwv,u); 192.28/169.86 mandatory00 x zx = mandatory000 x zx; 192.28/169.86 ; 192.28/169.86 mandatory000 x zx = []; 192.28/169.86 ; 192.28/169.86 mandatory001 True x (xwu : [],u) = (x,u) : []; 192.28/169.86 mandatory001 xww xwx xwy = mandatory000 xwx xwy; 192.28/169.86 ; 192.28/169.86 mandatory002 x (xwu : xwv,u) = mandatory001 (xwu == ')') x (xwu : xwv,u); 192.28/169.86 mandatory002 xwz xxu = mandatory000 xwz xxu; 192.28/169.86 ; 192.28/169.86 mandatory1 vu49 = mandatory10 vu49; 192.28/169.86 ; 192.28/169.86 mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 192.28/169.86 mandatory10 zy = []; 192.28/169.86 ; 192.28/169.86 mandatory2 vu50 = mandatory20 vu50; 192.28/169.86 ; 192.28/169.86 mandatory20 (xuz : xvu,s) = mandatory202 (xuz : xvu,s); 192.28/169.86 mandatory20 zw = mandatory200 zw; 192.28/169.86 ; 192.28/169.86 mandatory200 zw = []; 192.28/169.86 ; 192.28/169.86 mandatory201 True (xuz : [],s) = concatMap mandatory1 (optional s); 192.28/169.86 mandatory201 xvv xvw = mandatory200 xvw; 192.28/169.86 ; 192.28/169.86 mandatory202 (xuz : xvu,s) = mandatory201 (xuz == '(') (xuz : xvu,s); 192.28/169.86 mandatory202 xvx = mandatory200 xvx; 192.28/169.86 ; 192.28/169.86 optional r = g r ++ mandatory r; 192.28/169.86 ; 192.28/169.86 readParen0 True = mandatory; 192.28/169.86 readParen0 False = optional; 192.28/169.86 } 192.28/169.86 " 192.28/169.86 are unpacked to the following functions on top level 192.28/169.86 "readParenOptional yyu r = yyu r ++ readParenMandatory yyu r; 192.28/169.86 " 192.28/169.86 "readParenMandatory001 yyu True x (xwu : [],u) = (x,u) : []; 192.28/169.86 readParenMandatory001 yyu xww xwx xwy = readParenMandatory000 yyu xwx xwy; 192.28/169.86 " 192.28/169.86 "readParenReadParen0 yyu True = readParenMandatory yyu; 192.28/169.86 readParenReadParen0 yyu False = readParenOptional yyu; 192.28/169.86 " 192.28/169.86 "readParenMandatory202 yyu (xuz : xvu,s) = readParenMandatory201 yyu (xuz == '(') (xuz : xvu,s); 192.28/169.86 readParenMandatory202 yyu xvx = readParenMandatory200 yyu xvx; 192.28/169.86 " 192.28/169.86 "readParenMandatory200 yyu zw = []; 192.28/169.86 " 192.28/169.86 "readParenMandatory201 yyu True (xuz : [],s) = concatMap (readParenMandatory1 yyu) (readParenOptional yyu s); 192.28/169.86 readParenMandatory201 yyu xvv xvw = readParenMandatory200 yyu xvw; 192.28/169.86 " 192.28/169.86 "readParenMandatory1 yyu vu49 = readParenMandatory10 yyu vu49; 192.28/169.86 " 192.28/169.86 "readParenMandatory0 yyu x vu48 = readParenMandatory00 yyu x vu48; 192.28/169.86 " 192.28/169.86 "readParenMandatory00 yyu x (xwu : xwv,u) = readParenMandatory002 yyu x (xwu : xwv,u); 192.28/169.86 readParenMandatory00 yyu x zx = readParenMandatory000 yyu x zx; 192.28/169.86 " 192.28/169.86 "readParenMandatory002 yyu x (xwu : xwv,u) = readParenMandatory001 yyu (xwu == ')') x (xwu : xwv,u); 192.28/169.86 readParenMandatory002 yyu xwz xxu = readParenMandatory000 yyu xwz xxu; 192.28/169.86 " 192.28/169.86 "readParenMandatory20 yyu (xuz : xvu,s) = readParenMandatory202 yyu (xuz : xvu,s); 192.28/169.86 readParenMandatory20 yyu zw = readParenMandatory200 yyu zw; 192.28/169.86 " 192.28/169.86 "readParenMandatory2 yyu vu50 = readParenMandatory20 yyu vu50; 192.28/169.86 " 192.28/169.86 "readParenMandatory10 yyu (x,t) = concatMap (readParenMandatory0 yyu x) (lex t); 192.28/169.86 readParenMandatory10 yyu zy = []; 192.28/169.86 " 192.28/169.86 "readParenMandatory yyu r = concatMap (readParenMandatory2 yyu) (lex r); 192.28/169.86 " 192.28/169.86 "readParenMandatory000 yyu x zx = []; 192.28/169.86 " 192.28/169.86 192.28/169.86 ---------------------------------------- 192.28/169.86 192.28/169.86 (12) 192.28/169.86 Obligation: 192.28/169.86 mainModule Main 192.28/169.86 module Main where { 192.28/169.86 import qualified Prelude; 192.28/169.86 } 192.28/169.86 192.28/169.86 ---------------------------------------- 192.28/169.86 192.28/169.86 (13) NumRed (SOUND) 192.28/169.86 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 192.28/169.86 ---------------------------------------- 192.28/169.86 192.28/169.86 (14) 192.28/169.86 Obligation: 192.28/169.86 mainModule Main 192.28/169.86 module Main where { 192.28/169.86 import qualified Prelude; 192.28/169.86 } 192.34/169.90 EOF