172.64/157.02 MAYBE 174.70/157.60 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 174.70/157.60 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 174.70/157.60 174.70/157.60 174.70/157.60 H-Termination with start terms of the given HASKELL could not be shown: 174.70/157.60 174.70/157.60 (0) HASKELL 174.70/157.60 (1) LR [EQUIVALENT, 0 ms] 174.70/157.60 (2) HASKELL 174.70/157.60 (3) CR [EQUIVALENT, 0 ms] 174.70/157.60 (4) HASKELL 174.70/157.60 (5) IFR [EQUIVALENT, 0 ms] 174.70/157.60 (6) HASKELL 174.70/157.60 (7) BR [EQUIVALENT, 9 ms] 174.70/157.60 (8) HASKELL 174.70/157.60 (9) COR [EQUIVALENT, 0 ms] 174.70/157.60 (10) HASKELL 174.70/157.60 (11) LetRed [EQUIVALENT, 0 ms] 174.70/157.60 (12) HASKELL 174.70/157.60 (13) NumRed [SOUND, 41 ms] 174.70/157.60 (14) HASKELL 174.70/157.60 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (0) 174.70/157.60 Obligation: 174.70/157.60 mainModule Main 174.70/157.60 module Main where { 174.70/157.60 import qualified Prelude; 174.70/157.60 } 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (1) LR (EQUIVALENT) 174.70/157.60 Lambda Reductions: 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu54->case vu54 of { 174.70/157.60 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex0 vu54 = case vu54 of { 174.70/157.60 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu56->case vu56 of { 174.70/157.60 (str,u) -> (ch ++ str,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexString0 ch vu56 = case vu56 of { 174.70/157.60 (str,u) -> (ch ++ str,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu57->case vu57 of { 174.70/157.60 (ch,t) -> concatMap (lexString0 ch) (lexString t); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexString1 vu57 = case vu57 of { 174.70/157.60 (ch,t) -> concatMap (lexString0 ch) (lexString t); 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu58->case vu58 of { 174.70/157.60 '\' : t -> ([],t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexStrItem0 vu58 = case vu58 of { 174.70/157.60 '\' : t -> ([],t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu55->case vu55 of { 174.70/157.60 (str,t) -> ('"' : str,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex1 vu55 = case vu55 of { 174.70/157.60 (str,t) -> ('"' : str,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu63->case vu63 of { 174.70/157.60 (e,u) -> ('.' : ds ++ e,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexFracExp0 ds vu63 = case vu63 of { 174.70/157.60 (e,u) -> ('.' : ds ++ e,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu64->case vu64 of { 174.70/157.60 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexFracExp1 vu64 = case vu64 of { 174.70/157.60 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu65->case vu65 of { 174.70/157.60 (ds,u) -> (e : c : ds,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp0 e c vu65 = case vu65 of { 174.70/157.60 (ds,u) -> (e : c : ds,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu66->case vu66 of { 174.70/157.60 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp1 e vu66 = case vu66 of { 174.70/157.60 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu67->case vu67 of { 174.70/157.60 (ds,t) -> (e : ds,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp2 e vu67 = case vu67 of { 174.70/157.60 (ds,t) -> (e : ds,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu59->case vu59 of { 174.70/157.60 (sym,t) -> (c : sym,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex2 c vu59 = case vu59 of { 174.70/157.60 (sym,t) -> (c : sym,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu60->case vu60 of { 174.70/157.60 (nam,t) -> (c : nam,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex3 c vu60 = case vu60 of { 174.70/157.60 (nam,t) -> (c : nam,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu61->case vu61 of { 174.70/157.60 (fe,t) -> (c : ds ++ fe,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex4 c ds vu61 = case vu61 of { 174.70/157.60 (fe,t) -> (c : ds ++ fe,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu62->case vu62 of { 174.70/157.60 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex5 c vu62 = case vu62 of { 174.70/157.60 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\ab->(a,b)" 174.70/157.60 is transformed to 174.70/157.60 "zip0 a b = (a,b); 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu68->case vu68 of { 174.70/157.60 (cs@(_ : _),t) -> (cs,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "nonnull0 vu68 = case vu68 of { 174.70/157.60 (cs@(_ : _),t) -> (cs,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu69->case vu69 of { 174.70/157.60 ([],s') -> (mne,s') : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexEsc0 mne vu69 = case vu69 of { 174.70/157.60 ([],s') -> (mne,s') : []; 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\vu70->case vu70 of { 174.70/157.60 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexEsc1 s vu70 = case vu70 of { 174.70/157.60 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.70/157.60 _ -> []} 174.70/157.60 ; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\(_,zs)->zs" 174.70/157.60 is transformed to 174.70/157.60 "zs0 (_,zs) = zs; 174.70/157.60 " 174.70/157.60 The following Lambda expression 174.70/157.60 "\(ys,_)->ys" 174.70/157.60 is transformed to 174.70/157.60 "ys0 (ys,_) = ys; 174.70/157.60 " 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (2) 174.70/157.60 Obligation: 174.70/157.60 mainModule Main 174.70/157.60 module Main where { 174.70/157.60 import qualified Prelude; 174.70/157.60 } 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (3) CR (EQUIVALENT) 174.70/157.60 Case Reductions: 174.70/157.60 The following Case expression 174.70/157.60 "case vu55 of { 174.70/157.60 (str,t) -> ('"' : str,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex10 (str,t) = ('"' : str,t) : []; 174.70/157.60 lex10 _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu57 of { 174.70/157.60 (ch,t) -> concatMap (lexString0 ch) (lexString t); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 174.70/157.60 lexString10 _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu56 of { 174.70/157.60 (str,u) -> (ch ++ str,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexString00 ch (str,u) = (ch ++ str,u) : []; 174.70/157.60 lexString00 ch _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu58 of { 174.70/157.60 '\' : t -> ([],t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexStrItem00 ('\' : t) = ([],t) : []; 174.70/157.60 lexStrItem00 _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu59 of { 174.70/157.60 (sym,t) -> (c : sym,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex20 c (sym,t) = (c : sym,t) : []; 174.70/157.60 lex20 c _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu67 of { 174.70/157.60 (ds,t) -> (e : ds,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp20 e (ds,t) = (e : ds,t) : []; 174.70/157.60 lexExp20 e _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu65 of { 174.70/157.60 (ds,u) -> (e : c : ds,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp00 e c (ds,u) = (e : c : ds,u) : []; 174.70/157.60 lexExp00 e c _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu62 of { 174.70/157.60 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 174.70/157.60 lex50 c _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu66 of { 174.70/157.60 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp10 e (c : t) = if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 174.70/157.60 lexExp10 e _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu60 of { 174.70/157.60 (nam,t) -> (c : nam,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex30 c (nam,t) = (c : nam,t) : []; 174.70/157.60 lex30 c _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu61 of { 174.70/157.60 (fe,t) -> (c : ds ++ fe,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 174.70/157.60 lex40 c ds _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu63 of { 174.70/157.60 (e,u) -> ('.' : ds ++ e,u) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 174.70/157.60 lexFracExp00 ds _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu64 of { 174.70/157.60 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 174.70/157.60 lexFracExp10 _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu54 of { 174.70/157.60 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lex00 (ch,''' : t) = if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 174.70/157.60 lex00 _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu68 of { 174.70/157.60 (cs@(_ : _),t) -> (cs,t) : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 174.70/157.60 nonnull00 _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case concatMap (lexEsc1 s) table of { 174.70/157.60 pr : _ -> pr : []; 174.70/157.60 [] -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexEsc2 (pr : _) = pr : []; 174.70/157.60 lexEsc2 [] = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu69 of { 174.70/157.60 ([],s') -> (mne,s') : []; 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexEsc00 mne ([],s') = (mne,s') : []; 174.70/157.60 lexEsc00 mne _ = []; 174.70/157.60 " 174.70/157.60 The following Case expression 174.70/157.60 "case vu70 of { 174.70/157.60 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.70/157.60 _ -> []} 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 174.70/157.60 lexEsc10 s _ = []; 174.70/157.60 " 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (4) 174.70/157.60 Obligation: 174.70/157.60 mainModule Main 174.70/157.60 module Main where { 174.70/157.60 import qualified Prelude; 174.70/157.60 } 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (5) IFR (EQUIVALENT) 174.70/157.60 If Reductions: 174.70/157.60 The following If expression 174.70/157.60 "if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []" 174.70/157.60 is transformed to 174.70/157.60 "lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 174.70/157.60 lexExp100 e c t False = []; 174.70/157.60 " 174.70/157.60 The following If expression 174.70/157.60 "if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []" 174.70/157.60 is transformed to 174.70/157.60 "lex000 ch t True = (''' : ch ++ ''' : [],t) : []; 174.70/157.60 lex000 ch t False = []; 174.70/157.60 " 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (6) 174.70/157.60 Obligation: 174.70/157.60 mainModule Main 174.70/157.60 module Main where { 174.70/157.60 import qualified Prelude; 174.70/157.60 } 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (7) BR (EQUIVALENT) 174.70/157.60 Replaced joker patterns by fresh variables and removed binding patterns. 174.70/157.60 174.70/157.60 Binding Reductions: 174.70/157.60 The bind variable of the following binding Pattern 174.70/157.60 "cs@(wu : wv)" 174.70/157.60 is replaced by the following term 174.70/157.60 "wu : wv" 174.70/157.60 The bind variable of the following binding Pattern 174.70/157.60 "xs@(zw : zx)" 174.70/157.60 is replaced by the following term 174.70/157.60 "zw : zx" 174.70/157.60 The bind variable of the following binding Pattern 174.70/157.60 "s@(vuu : vuv)" 174.70/157.60 is replaced by the following term 174.70/157.60 "vuu : vuv" 174.70/157.60 The bind variable of the following binding Pattern 174.70/157.60 "xs@(vvu : vvv)" 174.70/157.60 is replaced by the following term 174.70/157.60 "vvu : vvv" 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (8) 174.70/157.60 Obligation: 174.70/157.60 mainModule Main 174.70/157.60 module Main where { 174.70/157.60 import qualified Prelude; 174.70/157.60 } 174.70/157.60 174.70/157.60 ---------------------------------------- 174.70/157.60 174.70/157.60 (9) COR (EQUIVALENT) 174.70/157.60 Cond Reductions: 174.70/157.60 The following Function with conditions 174.70/157.60 "takeWhile p [] = []; 174.70/157.60 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "takeWhile p [] = takeWhile3 p []; 174.70/157.60 takeWhile p (x : xs) = takeWhile2 p (x : xs); 174.70/157.60 " 174.70/157.60 "takeWhile0 p x xs True = []; 174.70/157.60 " 174.70/157.60 "takeWhile1 p x xs True = x : takeWhile p xs; 174.70/157.60 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 174.70/157.60 " 174.70/157.60 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 174.70/157.60 " 174.70/157.60 "takeWhile3 p [] = []; 174.70/157.60 takeWhile3 vwu vwv = takeWhile2 vwu vwv; 174.70/157.60 " 174.70/157.60 The following Function with conditions 174.70/157.60 "lexString ('"' : s) = ('"' : [],s) : []; 174.70/157.60 lexString s = concatMap lexString1 (lexStrItem s); 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexString (vwx : s) = lexString4 (vwx : s); 174.70/157.60 lexString s = lexString2 s; 174.70/157.60 " 174.70/157.60 "lexString2 s = concatMap lexString1 (lexStrItem s); 174.70/157.60 " 174.70/157.60 "lexString3 True (vwx : s) = ('"' : [],s) : []; 174.70/157.60 lexString3 vwy vwz = lexString2 vwz; 174.70/157.60 " 174.70/157.60 "lexString4 (vwx : s) = lexString3 (vwx == '"') (vwx : s); 174.70/157.60 lexString4 vxu = lexString2 vxu; 174.70/157.60 " 174.70/157.60 The following Function with conditions 174.70/157.60 "lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 174.70/157.60 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 174.70/157.60 lexStrItem s = lexLitChar s; 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexStrItem (vyy : vzw) = lexStrItem7 (vyy : vzw); 174.70/157.60 lexStrItem (vxw : vxz) = lexStrItem4 (vxw : vxz); 174.70/157.60 lexStrItem s = lexStrItem1 s; 174.70/157.60 " 174.70/157.60 "lexStrItem1 s = lexLitChar s; 174.70/157.60 " 174.70/157.60 "lexStrItem2 vxw c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 174.70/157.60 lexStrItem2 vxw c s False = lexStrItem1 (vxw : c : s); 174.70/157.60 " 174.70/157.60 "lexStrItem3 True (vxw : c : s) = lexStrItem2 vxw c s (isSpace c); 174.70/157.60 lexStrItem3 vyu vyv = lexStrItem1 vyv; 174.70/157.60 " 174.70/157.60 "lexStrItem4 (vxw : vxz) = lexStrItem3 (vxw == '\') (vxw : vxz); 174.70/157.60 lexStrItem4 vyw = lexStrItem1 vyw; 174.70/157.60 " 174.70/157.60 "lexStrItem5 True (vyy : vzu : s) = ('\' : '&' : [],s) : []; 174.70/157.60 lexStrItem5 vzx vzy = lexStrItem4 vzy; 174.70/157.60 " 174.70/157.60 "lexStrItem6 True (vyy : vzu : s) = lexStrItem5 (vzu == '&') (vyy : vzu : s); 174.70/157.60 lexStrItem6 vzz wuu = lexStrItem4 wuu; 174.70/157.60 " 174.70/157.60 "lexStrItem7 (vyy : vzw) = lexStrItem6 (vyy == '\') (vyy : vzw); 174.70/157.60 lexStrItem7 wuv = lexStrItem4 wuv; 174.70/157.60 " 174.70/157.60 The following Function with conditions 174.70/157.60 "lexStrItem00 ('\' : t) = ([],t) : []; 174.70/157.60 lexStrItem00 wz = []; 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexStrItem00 (wux : t) = lexStrItem002 (wux : t); 174.70/157.60 lexStrItem00 wz = lexStrItem000 wz; 174.70/157.60 " 174.70/157.60 "lexStrItem000 wz = []; 174.70/157.60 " 174.70/157.60 "lexStrItem001 True (wux : t) = ([],t) : []; 174.70/157.60 lexStrItem001 wuy wuz = lexStrItem000 wuz; 174.70/157.60 " 174.70/157.60 "lexStrItem002 (wux : t) = lexStrItem001 (wux == '\') (wux : t); 174.70/157.60 lexStrItem002 wvu = lexStrItem000 wvu; 174.70/157.60 " 174.70/157.60 The following Function with conditions 174.70/157.60 "lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 174.70/157.60 lexExp s = ([],s) : []; 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexExp (e : s) = lexExp5 (e : s); 174.70/157.60 lexExp s = lexExp3 s; 174.70/157.60 " 174.70/157.60 "lexExp3 s = ([],s) : []; 174.70/157.60 " 174.70/157.60 "lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 174.70/157.60 lexExp4 e s False = lexExp3 (e : s); 174.70/157.60 " 174.70/157.60 "lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 174.70/157.60 lexExp5 wvw = lexExp3 wvw; 174.70/157.60 " 174.70/157.60 The following Function with conditions 174.70/157.60 "lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 174.70/157.60 lexFracExp s = lexExp s; 174.70/157.60 " 174.70/157.60 is transformed to 174.70/157.60 "lexFracExp (wvy : wwv) = lexFracExp5 (wvy : wwv); 174.70/157.60 lexFracExp s = lexFracExp2 s; 174.70/157.60 " 174.70/157.60 "lexFracExp2 s = lexExp s; 174.70/157.60 " 174.70/157.60 "lexFracExp3 wvy c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 174.70/157.60 lexFracExp3 wvy c cs False = lexFracExp2 (wvy : c : cs); 174.70/157.60 " 174.70/157.60 "lexFracExp4 True (wvy : c : cs) = lexFracExp3 wvy c cs (isDigit c); 174.70/157.60 lexFracExp4 www wwx = lexFracExp2 wwx; 174.70/157.60 " 174.70/157.60 "lexFracExp5 (wvy : wwv) = lexFracExp4 (wvy == '.') (wvy : wwv); 174.70/157.61 lexFracExp5 wwy = lexFracExp2 wwy; 174.70/157.61 " 174.70/157.61 The following Function with conditions 174.70/157.61 "lex [] = ([],[]) : []; 174.70/157.61 lex (c : s)|isSpace clex (dropWhile isSpace s); 174.70/157.61 lex (''' : s) = concatMap lex0 (lexLitChar s); 174.70/157.61 lex ('"' : s) = concatMap lex1 (lexString s) where { 174.70/157.61 lex1 vu55 = lex10 vu55; 174.70/157.61 ; 174.70/157.61 lex10 (str,t) = ('"' : str,t) : []; 174.70/157.61 lex10 xu = []; 174.70/157.61 ; 174.70/157.61 lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 174.70/157.61 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 174.70/157.61 lexStrItem s = lexLitChar s; 174.70/157.61 ; 174.70/157.61 lexStrItem0 vu58 = lexStrItem00 vu58; 174.70/157.61 ; 174.70/157.61 lexStrItem00 ('\' : t) = ([],t) : []; 174.70/157.61 lexStrItem00 wz = []; 174.70/157.61 ; 174.70/157.61 lexString ('"' : s) = ('"' : [],s) : []; 174.70/157.61 lexString s = concatMap lexString1 (lexStrItem s); 174.70/157.61 ; 174.70/157.61 lexString0 ch vu56 = lexString00 ch vu56; 174.70/157.61 ; 174.70/157.61 lexString00 ch (str,u) = (ch ++ str,u) : []; 174.70/157.61 lexString00 ch wx = []; 174.70/157.61 ; 174.70/157.61 lexString1 vu57 = lexString10 vu57; 174.70/157.61 ; 174.70/157.61 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 174.70/157.61 lexString10 wy = []; 174.70/157.61 } 174.70/157.61 ; 174.70/157.61 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 { 174.70/157.61 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 174.70/157.61 ; 174.70/157.61 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 174.70/157.61 ; 174.70/157.61 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 174.70/157.61 ; 174.70/157.61 lex2 c vu59 = lex20 c vu59; 174.70/157.61 ; 174.70/157.61 lex20 c (sym,t) = (c : sym,t) : []; 174.70/157.61 lex20 c yw = []; 174.70/157.61 ; 174.70/157.61 lex3 c vu60 = lex30 c vu60; 174.70/157.61 ; 174.70/157.61 lex30 c (nam,t) = (c : nam,t) : []; 174.70/157.61 lex30 c yx = []; 174.70/157.61 ; 174.70/157.61 lex4 c ds vu61 = lex40 c ds vu61; 174.70/157.61 ; 174.70/157.61 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 174.70/157.61 lex40 c ds yu = []; 174.70/157.61 ; 174.70/157.61 lex5 c vu62 = lex50 c vu62; 174.70/157.61 ; 174.70/157.61 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 174.70/157.61 lex50 c yv = []; 174.70/157.61 ; 174.70/157.61 lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 174.70/157.61 lexExp s = ([],s) : []; 174.70/157.61 ; 174.70/157.61 lexExp0 e c vu65 = lexExp00 e c vu65; 174.70/157.61 ; 174.70/157.61 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 174.70/157.61 lexExp00 e c xv = []; 174.70/157.61 ; 174.70/157.61 lexExp1 e vu66 = lexExp10 e vu66; 174.70/157.61 ; 174.70/157.61 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 174.70/157.61 lexExp10 e xx = []; 174.70/157.61 ; 174.70/157.61 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 174.70/157.61 lexExp100 e c t False = []; 174.70/157.61 ; 174.70/157.61 lexExp2 e vu67 = lexExp20 e vu67; 174.70/157.61 ; 174.70/157.61 lexExp20 e (ds,t) = (e : ds,t) : []; 174.70/157.61 lexExp20 e xw = []; 174.70/157.61 ; 174.70/157.61 lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 174.70/157.61 lexFracExp s = lexExp s; 174.70/157.61 ; 174.70/157.61 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 174.70/157.61 ; 174.70/157.61 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 174.70/157.61 lexFracExp00 ds xz = []; 174.70/157.61 ; 174.70/157.61 lexFracExp1 vu64 = lexFracExp10 vu64; 174.70/157.61 ; 174.70/157.61 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 174.70/157.61 lexFracExp10 xy = []; 174.70/157.61 } 174.70/157.61 ; 174.70/157.61 " 174.70/157.61 is transformed to 174.70/157.61 "lex [] = lex19 []; 174.70/157.61 lex (c : s) = lex18 (c : s); 174.70/157.61 lex (wyu : s) = lex16 (wyu : s); 174.70/157.61 lex (wxv : s) = lex14 (wxv : s); 174.70/157.61 lex (c : s) = lex12 (c : s); 174.70/157.61 " 174.70/157.61 "lex12 (c : s) = lex11 c s (isSingle c) where { 174.70/157.61 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 174.70/157.61 ; 174.70/157.61 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 174.70/157.61 ; 174.70/157.61 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 175.06/157.74 ; 175.06/157.74 lex11 c s True = (c : [],s) : []; 175.06/157.74 lex11 c s False = lex9 c s (isSym c); 175.06/157.74 ; 175.06/157.74 lex2 c vu59 = lex20 c vu59; 175.06/157.74 ; 175.06/157.74 lex20 c (sym,t) = (c : sym,t) : []; 175.06/157.74 lex20 c yw = []; 175.06/157.74 ; 175.06/157.74 lex3 c vu60 = lex30 c vu60; 175.06/157.74 ; 175.06/157.74 lex30 c (nam,t) = (c : nam,t) : []; 175.06/157.74 lex30 c yx = []; 175.06/157.74 ; 175.06/157.74 lex4 c ds vu61 = lex40 c ds vu61; 175.06/157.74 ; 175.06/157.74 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 175.06/157.74 lex40 c ds yu = []; 175.06/157.74 ; 175.06/157.74 lex5 c vu62 = lex50 c vu62; 175.06/157.74 ; 175.06/157.74 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 175.06/157.74 lex50 c yv = []; 175.06/157.74 ; 175.06/157.74 lex6 c s True = []; 175.06/157.74 ; 175.06/157.74 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 175.06/157.74 lex7 c s False = lex6 c s otherwise; 175.06/157.74 ; 175.06/157.74 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 175.06/157.74 lex8 c s False = lex7 c s (isDigit c); 175.06/157.74 ; 175.06/157.74 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 175.06/157.74 lex9 c s False = lex8 c s (isAlpha c); 175.06/157.74 ; 175.06/157.74 lexExp (e : s) = lexExp5 (e : s); 175.06/157.74 lexExp s = lexExp3 s; 175.06/157.74 ; 175.06/157.74 lexExp0 e c vu65 = lexExp00 e c vu65; 175.06/157.74 ; 175.06/157.74 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 175.06/157.74 lexExp00 e c xv = []; 175.06/157.74 ; 175.06/157.74 lexExp1 e vu66 = lexExp10 e vu66; 175.06/157.74 ; 175.06/157.74 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 175.06/157.74 lexExp10 e xx = []; 175.06/157.74 ; 175.06/157.74 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 175.06/157.74 lexExp100 e c t False = []; 175.06/157.74 ; 175.06/157.74 lexExp2 e vu67 = lexExp20 e vu67; 175.06/157.74 ; 175.06/157.74 lexExp20 e (ds,t) = (e : ds,t) : []; 175.06/157.74 lexExp20 e xw = []; 175.06/157.74 ; 175.06/157.74 lexExp3 s = ([],s) : []; 175.06/157.74 ; 175.06/157.74 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 175.06/157.74 lexExp4 e s False = lexExp3 (e : s); 175.06/157.74 ; 175.06/157.74 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 175.06/157.74 lexExp5 wvw = lexExp3 wvw; 175.06/157.74 ; 175.06/157.74 lexFracExp (wvy : wwv) = lexFracExp5 (wvy : wwv); 175.06/157.74 lexFracExp s = lexFracExp2 s; 175.06/157.74 ; 175.06/157.74 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 175.06/157.74 ; 175.06/157.74 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 175.06/157.74 lexFracExp00 ds xz = []; 175.06/157.74 ; 175.06/157.74 lexFracExp1 vu64 = lexFracExp10 vu64; 175.06/157.74 ; 175.06/157.74 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 175.06/157.74 lexFracExp10 xy = []; 175.06/157.74 ; 175.06/157.74 lexFracExp2 s = lexExp s; 175.06/157.74 ; 175.06/157.74 lexFracExp3 wvy c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 175.06/157.74 lexFracExp3 wvy c cs False = lexFracExp2 (wvy : c : cs); 175.06/157.74 ; 175.06/157.74 lexFracExp4 True (wvy : c : cs) = lexFracExp3 wvy c cs (isDigit c); 175.06/157.74 lexFracExp4 www wwx = lexFracExp2 wwx; 175.06/157.74 ; 175.06/157.74 lexFracExp5 (wvy : wwv) = lexFracExp4 (wvy == '.') (wvy : wwv); 175.06/157.74 lexFracExp5 wwy = lexFracExp2 wwy; 175.06/157.74 } 175.06/157.74 ; 175.06/157.74 " 175.06/157.74 "lex13 True (wxv : s) = concatMap lex1 (lexString s) where { 175.06/157.74 lex1 vu55 = lex10 vu55; 175.06/157.74 ; 175.06/157.74 lex10 (str,t) = ('"' : str,t) : []; 175.06/157.74 lex10 xu = []; 175.06/157.74 ; 175.06/157.74 lexStrItem (vyy : vzw) = lexStrItem7 (vyy : vzw); 175.06/157.74 lexStrItem (vxw : vxz) = lexStrItem4 (vxw : vxz); 175.06/157.74 lexStrItem s = lexStrItem1 s; 175.06/157.74 ; 175.06/157.74 lexStrItem0 vu58 = lexStrItem00 vu58; 175.06/157.74 ; 175.06/157.74 lexStrItem00 (wux : t) = lexStrItem002 (wux : t); 175.06/157.74 lexStrItem00 wz = lexStrItem000 wz; 175.06/157.74 ; 175.06/157.74 lexStrItem000 wz = []; 175.06/157.74 ; 175.06/157.74 lexStrItem001 True (wux : t) = ([],t) : []; 175.06/157.74 lexStrItem001 wuy wuz = lexStrItem000 wuz; 175.06/157.74 ; 175.06/157.74 lexStrItem002 (wux : t) = lexStrItem001 (wux == '\') (wux : t); 175.06/157.74 lexStrItem002 wvu = lexStrItem000 wvu; 175.06/157.74 ; 175.06/157.74 lexStrItem1 s = lexLitChar s; 175.06/157.74 ; 175.06/157.74 lexStrItem2 vxw c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 175.06/157.74 lexStrItem2 vxw c s False = lexStrItem1 (vxw : c : s); 175.06/157.74 ; 175.06/157.74 lexStrItem3 True (vxw : c : s) = lexStrItem2 vxw c s (isSpace c); 175.06/157.74 lexStrItem3 vyu vyv = lexStrItem1 vyv; 175.06/157.74 ; 175.06/157.74 lexStrItem4 (vxw : vxz) = lexStrItem3 (vxw == '\') (vxw : vxz); 175.06/157.74 lexStrItem4 vyw = lexStrItem1 vyw; 175.06/157.74 ; 175.06/157.74 lexStrItem5 True (vyy : vzu : s) = ('\' : '&' : [],s) : []; 175.06/157.74 lexStrItem5 vzx vzy = lexStrItem4 vzy; 175.06/157.74 ; 175.06/157.74 lexStrItem6 True (vyy : vzu : s) = lexStrItem5 (vzu == '&') (vyy : vzu : s); 175.06/157.74 lexStrItem6 vzz wuu = lexStrItem4 wuu; 175.06/157.74 ; 175.06/157.74 lexStrItem7 (vyy : vzw) = lexStrItem6 (vyy == '\') (vyy : vzw); 175.06/157.74 lexStrItem7 wuv = lexStrItem4 wuv; 175.06/157.74 ; 175.06/157.74 lexString (vwx : s) = lexString4 (vwx : s); 175.06/157.74 lexString s = lexString2 s; 175.06/157.74 ; 175.06/157.74 lexString0 ch vu56 = lexString00 ch vu56; 175.06/157.74 ; 175.06/157.74 lexString00 ch (str,u) = (ch ++ str,u) : []; 175.06/157.74 lexString00 ch wx = []; 175.06/157.74 ; 175.06/157.74 lexString1 vu57 = lexString10 vu57; 175.06/157.74 ; 175.06/157.74 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 175.06/157.74 lexString10 wy = []; 175.06/157.74 ; 175.06/157.74 lexString2 s = concatMap lexString1 (lexStrItem s); 175.06/157.74 ; 175.06/157.74 lexString3 True (vwx : s) = ('"' : [],s) : []; 175.06/157.74 lexString3 vwy vwz = lexString2 vwz; 175.06/157.74 ; 175.06/157.74 lexString4 (vwx : s) = lexString3 (vwx == '"') (vwx : s); 175.06/157.74 lexString4 vxu = lexString2 vxu; 175.06/157.74 } 175.06/157.74 ; 175.06/157.74 lex13 wxw wxx = lex12 wxx; 175.06/157.74 " 175.06/157.74 "lex14 (wxv : s) = lex13 (wxv == '"') (wxv : s); 175.06/157.74 lex14 wxy = lex12 wxy; 175.06/157.74 " 175.06/157.74 "lex15 True (wyu : s) = concatMap lex0 (lexLitChar s); 175.06/157.74 lex15 wyv wyw = lex14 wyw; 175.06/157.74 " 175.06/157.74 "lex16 (wyu : s) = lex15 (wyu == ''') (wyu : s); 175.06/157.74 lex16 wyx = lex14 wyx; 175.06/157.74 " 175.06/157.74 "lex17 c s True = lex (dropWhile isSpace s); 175.06/157.74 lex17 c s False = lex16 (c : s); 175.06/157.74 " 175.06/157.74 "lex18 (c : s) = lex17 c s (isSpace c); 175.06/157.74 lex18 wyz = lex16 wyz; 175.06/157.74 " 175.06/157.74 "lex19 [] = ([],[]) : []; 175.06/157.74 lex19 wzv = lex18 wzv; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 175.06/157.74 lexmatch xs ys = (xs,ys); 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 175.06/157.74 lexmatch xs ys = lexmatch0 xs ys; 175.06/157.74 " 175.06/157.74 "lexmatch0 xs ys = (xs,ys); 175.06/157.74 " 175.06/157.74 "lexmatch1 x xs y ys True = lexmatch xs ys; 175.06/157.74 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 175.06/157.74 " 175.06/157.74 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 175.06/157.74 lexmatch2 wzy wzz = lexmatch0 wzy wzz; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "undefined |Falseundefined; 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "undefined = undefined1; 175.06/157.74 " 175.06/157.74 "undefined0 True = undefined; 175.06/157.74 " 175.06/157.74 "undefined1 = undefined0 False; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "dropWhile p [] = []; 175.06/157.74 dropWhile p (zw : zx)|p zwdropWhile p zx|otherwisezw : zx; 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "dropWhile p [] = dropWhile3 p []; 175.06/157.74 dropWhile p (zw : zx) = dropWhile2 p (zw : zx); 175.06/157.74 " 175.06/157.74 "dropWhile0 p zw zx True = zw : zx; 175.06/157.74 " 175.06/157.74 "dropWhile1 p zw zx True = dropWhile p zx; 175.06/157.74 dropWhile1 p zw zx False = dropWhile0 p zw zx otherwise; 175.06/157.74 " 175.06/157.74 "dropWhile2 p (zw : zx) = dropWhile1 p zw zx (p zw); 175.06/157.74 " 175.06/157.74 "dropWhile3 p [] = []; 175.06/157.74 dropWhile3 xuw xux = dropWhile2 xuw xux; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "lex00 (ch,''' : t) = lex000 ch t (ch /= ''' : []); 175.06/157.74 lex00 zy = []; 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "lex00 (ch,xvu : t) = lex003 (ch,xvu : t); 175.06/157.74 lex00 zy = lex001 zy; 175.06/157.74 " 175.06/157.74 "lex001 zy = []; 175.06/157.74 " 175.06/157.74 "lex002 True (ch,xvu : t) = lex000 ch t (ch /= ''' : []); 175.06/157.74 lex002 xvv xvw = lex001 xvw; 175.06/157.74 " 175.06/157.74 "lex003 (ch,xvu : t) = lex002 (xvu == ''') (ch,xvu : t); 175.06/157.74 lex003 xvx = lex001 xvx; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 175.06/157.74 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 175.06/157.74 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 175.06/157.74 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 175.06/157.74 lexEsc (vuu : vuv)|isDigit vuuspan isDigit (vuu : vuv) : []|isUpper vuulexEsc2 (concatMap (lexEsc1 (vuu : vuv)) table); 175.06/157.74 lexEsc vuw = []; 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "lexEsc (c : s) = lexEsc16 (c : s); 175.06/157.74 lexEsc (xxz : xyw) = lexEsc14 (xxz : xyw); 175.06/157.74 lexEsc (xxu : s) = lexEsc11 (xxu : s); 175.06/157.74 lexEsc (xwv : s) = lexEsc8 (xwv : s); 175.06/157.74 lexEsc (vuu : vuv) = lexEsc6 (vuu : vuv); 175.06/157.74 lexEsc vuw = lexEsc3 vuw; 175.06/157.74 " 175.06/157.74 "lexEsc3 vuw = []; 175.06/157.74 " 175.06/157.74 "lexEsc5 vuu vuv True = span isDigit (vuu : vuv) : []; 175.06/157.74 lexEsc5 vuu vuv False = lexEsc4 vuu vuv (isUpper vuu); 175.06/157.74 " 175.06/157.74 "lexEsc4 vuu vuv True = lexEsc2 (concatMap (lexEsc1 (vuu : vuv)) table); 175.06/157.74 lexEsc4 vuu vuv False = lexEsc3 (vuu : vuv); 175.06/157.74 " 175.06/157.74 "lexEsc6 (vuu : vuv) = lexEsc5 vuu vuv (isDigit vuu); 175.06/157.74 lexEsc6 xvz = lexEsc3 xvz; 175.06/157.74 " 175.06/157.74 "lexEsc7 True (xwv : s) = prefix 'x' (span isHexDigit s) : []; 175.06/157.74 lexEsc7 xww xwx = lexEsc6 xwx; 175.06/157.74 " 175.06/157.74 "lexEsc8 (xwv : s) = lexEsc7 (xwv == 'x') (xwv : s); 175.06/157.74 lexEsc8 xwy = lexEsc6 xwy; 175.06/157.74 " 175.06/157.74 "lexEsc9 True (xxu : s) = prefix 'o' (span isOctDigit s) : []; 175.06/157.74 lexEsc9 xxv xxw = lexEsc8 xxw; 175.06/157.74 " 175.06/157.74 "lexEsc11 (xxu : s) = lexEsc9 (xxu == 'o') (xxu : s); 175.06/157.74 lexEsc11 xxx = lexEsc8 xxx; 175.06/157.74 " 175.06/157.74 "lexEsc12 xxz c s True = ('^' : c : [],s) : []; 175.06/157.74 lexEsc12 xxz c s False = lexEsc11 (xxz : c : s); 175.06/157.74 " 175.06/157.74 "lexEsc13 True (xxz : c : s) = lexEsc12 xxz c s (c >= '@' && c <= '_'); 175.06/157.74 lexEsc13 xyx xyy = lexEsc11 xyy; 175.06/157.74 " 175.06/157.74 "lexEsc14 (xxz : xyw) = lexEsc13 (xxz == '^') (xxz : xyw); 175.06/157.74 lexEsc14 xyz = lexEsc11 xyz; 175.06/157.74 " 175.06/157.74 "lexEsc15 c s True = (c : [],s) : []; 175.06/157.74 lexEsc15 c s False = lexEsc14 (c : s); 175.06/157.74 " 175.06/157.74 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 175.06/157.74 lexEsc16 xzv = lexEsc14 xzv; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "lexLitChar [] = []; 175.06/157.74 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 175.06/157.74 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 175.06/157.74 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 175.06/157.74 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 175.06/157.74 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 175.06/157.74 lexEsc (vuu : vuv)|isDigit vuuspan isDigit (vuu : vuv) : []|isUpper vuulexEsc2 (concatMap (lexEsc1 (vuu : vuv)) table); 175.06/157.74 lexEsc vuw = []; 175.06/157.74 ; 175.06/157.74 lexEsc0 mne vu69 = lexEsc00 mne vu69; 175.06/157.74 ; 175.06/157.74 lexEsc00 mne ([],s') = (mne,s') : []; 175.06/157.74 lexEsc00 mne vuy = []; 175.06/157.74 ; 175.06/157.74 lexEsc1 s vu70 = lexEsc10 s vu70; 175.06/157.74 ; 175.06/157.74 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 175.06/157.74 lexEsc10 s vuz = []; 175.06/157.74 ; 175.06/157.74 lexEsc2 (pr : vux) = pr : []; 175.06/157.74 lexEsc2 [] = []; 175.06/157.74 ; 175.06/157.74 prefix c (t,s) = (c : t,s); 175.06/157.74 ; 175.06/157.74 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 175.06/157.74 } 175.06/157.74 ; 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "lexLitChar [] = lexLitChar3 []; 175.06/157.74 lexLitChar (c : s) = lexLitChar2 (c : s); 175.06/157.74 " 175.06/157.74 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 175.06/157.74 lexEsc (c : s) = lexEsc16 (c : s); 175.06/157.74 lexEsc (xxz : xyw) = lexEsc14 (xxz : xyw); 175.06/157.74 lexEsc (xxu : s) = lexEsc11 (xxu : s); 175.06/157.74 lexEsc (xwv : s) = lexEsc8 (xwv : s); 175.06/157.74 lexEsc (vuu : vuv) = lexEsc6 (vuu : vuv); 175.06/157.74 lexEsc vuw = lexEsc3 vuw; 175.06/157.74 ; 175.06/157.74 lexEsc0 mne vu69 = lexEsc00 mne vu69; 175.06/157.74 ; 175.06/157.74 lexEsc00 mne ([],s') = (mne,s') : []; 175.06/157.74 lexEsc00 mne vuy = []; 175.06/157.74 ; 175.06/157.74 lexEsc1 s vu70 = lexEsc10 s vu70; 175.06/157.74 ; 175.06/157.74 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 175.06/157.74 lexEsc10 s vuz = []; 175.06/157.74 ; 175.06/157.74 lexEsc11 (xxu : s) = lexEsc9 (xxu == 'o') (xxu : s); 175.06/157.74 lexEsc11 xxx = lexEsc8 xxx; 175.06/157.74 ; 175.06/157.74 lexEsc12 xxz c s True = ('^' : c : [],s) : []; 175.06/157.74 lexEsc12 xxz c s False = lexEsc11 (xxz : c : s); 175.06/157.74 ; 175.06/157.74 lexEsc13 True (xxz : c : s) = lexEsc12 xxz c s (c >= '@' && c <= '_'); 175.06/157.74 lexEsc13 xyx xyy = lexEsc11 xyy; 175.06/157.74 ; 175.06/157.74 lexEsc14 (xxz : xyw) = lexEsc13 (xxz == '^') (xxz : xyw); 175.06/157.74 lexEsc14 xyz = lexEsc11 xyz; 175.06/157.74 ; 175.06/157.74 lexEsc15 c s True = (c : [],s) : []; 175.06/157.74 lexEsc15 c s False = lexEsc14 (c : s); 175.06/157.74 ; 175.06/157.74 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 175.06/157.74 lexEsc16 xzv = lexEsc14 xzv; 175.06/157.74 ; 175.06/157.74 lexEsc2 (pr : vux) = pr : []; 175.06/157.74 lexEsc2 [] = []; 175.06/157.74 ; 175.06/157.74 lexEsc3 vuw = []; 175.06/157.74 ; 175.06/157.74 lexEsc4 vuu vuv True = lexEsc2 (concatMap (lexEsc1 (vuu : vuv)) table); 175.06/157.74 lexEsc4 vuu vuv False = lexEsc3 (vuu : vuv); 175.06/157.74 ; 175.06/157.74 lexEsc5 vuu vuv True = span isDigit (vuu : vuv) : []; 175.06/157.74 lexEsc5 vuu vuv False = lexEsc4 vuu vuv (isUpper vuu); 175.06/157.74 ; 175.06/157.74 lexEsc6 (vuu : vuv) = lexEsc5 vuu vuv (isDigit vuu); 175.06/157.74 lexEsc6 xvz = lexEsc3 xvz; 175.06/157.74 ; 175.06/157.74 lexEsc7 True (xwv : s) = prefix 'x' (span isHexDigit s) : []; 175.06/157.74 lexEsc7 xww xwx = lexEsc6 xwx; 175.06/157.74 ; 175.06/157.74 lexEsc8 (xwv : s) = lexEsc7 (xwv == 'x') (xwv : s); 175.06/157.74 lexEsc8 xwy = lexEsc6 xwy; 175.06/157.74 ; 175.06/157.74 lexEsc9 True (xxu : s) = prefix 'o' (span isOctDigit s) : []; 175.06/157.74 lexEsc9 xxv xxw = lexEsc8 xxw; 175.06/157.74 ; 175.06/157.74 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 175.06/157.74 ; 175.06/157.74 lexLitChar1 c s True = (c : [],s) : []; 175.06/157.74 lexLitChar1 c s False = lexLitChar0 c s otherwise; 175.06/157.74 ; 175.06/157.74 prefix c (t,s) = (c : t,s); 175.06/157.74 ; 175.06/157.74 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 175.06/157.74 } 175.06/157.74 ; 175.06/157.74 " 175.06/157.74 "lexLitChar3 [] = []; 175.06/157.74 lexLitChar3 xzy = lexLitChar2 xzy; 175.06/157.74 " 175.06/157.74 The following Function with conditions 175.06/157.74 "span p [] = ([],[]); 175.06/157.74 span p (vvu : vvv)|p vvu(vvu : ys,zs)|otherwise([],vvu : vvv) where { 175.06/157.74 vu43 = span p vvv; 175.06/157.74 ; 175.06/157.74 ys = ys0 vu43; 175.06/157.74 ; 175.06/157.74 ys0 (ys,vvx) = ys; 175.06/157.74 ; 175.06/157.74 zs = zs0 vu43; 175.06/157.74 ; 175.06/157.74 zs0 (vvw,zs) = zs; 175.06/157.74 } 175.06/157.74 ; 175.06/157.74 " 175.06/157.74 is transformed to 175.06/157.74 "span p [] = span3 p []; 175.06/157.74 span p (vvu : vvv) = span2 p (vvu : vvv); 175.06/157.74 " 175.06/157.74 "span2 p (vvu : vvv) = span1 p vvu vvv (p vvu) where { 175.06/157.74 span0 p vvu vvv True = ([],vvu : vvv); 175.06/157.74 ; 175.06/157.74 span1 p vvu vvv True = (vvu : ys,zs); 175.06/157.74 span1 p vvu vvv False = span0 p vvu vvv otherwise; 175.06/157.74 ; 175.06/157.74 vu43 = span p vvv; 175.06/157.74 ; 175.06/157.74 ys = ys0 vu43; 175.06/157.74 ; 175.06/157.74 ys0 (ys,vvx) = ys; 175.06/157.74 ; 175.06/157.74 zs = zs0 vu43; 175.06/157.74 ; 175.06/157.74 zs0 (vvw,zs) = zs; 175.06/157.74 } 175.06/157.74 ; 175.06/157.74 " 175.06/157.74 "span3 p [] = ([],[]); 175.06/157.74 span3 yuv yuw = span2 yuv yuw; 175.06/157.74 " 175.06/157.74 175.06/157.74 ---------------------------------------- 175.06/157.74 175.06/157.74 (10) 175.06/157.74 Obligation: 175.06/157.74 mainModule Main 175.06/157.74 module Main where { 175.06/157.74 import qualified Prelude; 175.06/157.74 } 175.06/157.74 175.06/157.74 ---------------------------------------- 175.06/157.74 175.06/157.74 (11) LetRed (EQUIVALENT) 175.06/157.74 Let/Where Reductions: 175.06/157.74 The bindings of the following Let/Where expression 175.06/157.74 "concatMap lex1 (lexString s) where { 175.06/157.74 lex1 vu55 = lex10 vu55; 175.06/157.74 ; 175.06/157.74 lex10 (str,t) = ('"' : str,t) : []; 175.06/157.74 lex10 xu = []; 175.06/157.74 ; 175.06/157.74 lexStrItem (vyy : vzw) = lexStrItem7 (vyy : vzw); 175.06/157.74 lexStrItem (vxw : vxz) = lexStrItem4 (vxw : vxz); 175.06/157.74 lexStrItem s = lexStrItem1 s; 175.06/157.74 ; 175.06/157.74 lexStrItem0 vu58 = lexStrItem00 vu58; 175.06/157.74 ; 175.06/157.74 lexStrItem00 (wux : t) = lexStrItem002 (wux : t); 175.06/157.74 lexStrItem00 wz = lexStrItem000 wz; 175.06/157.74 ; 175.06/157.74 lexStrItem000 wz = []; 175.06/157.74 ; 175.06/157.74 lexStrItem001 True (wux : t) = ([],t) : []; 175.06/157.74 lexStrItem001 wuy wuz = lexStrItem000 wuz; 175.06/157.74 ; 175.06/157.74 lexStrItem002 (wux : t) = lexStrItem001 (wux == '\') (wux : t); 175.06/157.74 lexStrItem002 wvu = lexStrItem000 wvu; 175.06/157.74 ; 175.06/157.74 lexStrItem1 s = lexLitChar s; 175.06/157.74 ; 175.06/157.74 lexStrItem2 vxw c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 175.06/157.74 lexStrItem2 vxw c s False = lexStrItem1 (vxw : c : s); 175.06/157.74 ; 175.06/157.74 lexStrItem3 True (vxw : c : s) = lexStrItem2 vxw c s (isSpace c); 175.06/157.74 lexStrItem3 vyu vyv = lexStrItem1 vyv; 175.06/157.74 ; 175.06/157.74 lexStrItem4 (vxw : vxz) = lexStrItem3 (vxw == '\') (vxw : vxz); 175.06/157.74 lexStrItem4 vyw = lexStrItem1 vyw; 175.06/157.74 ; 175.06/157.74 lexStrItem5 True (vyy : vzu : s) = ('\' : '&' : [],s) : []; 175.06/157.74 lexStrItem5 vzx vzy = lexStrItem4 vzy; 175.06/157.74 ; 175.06/157.74 lexStrItem6 True (vyy : vzu : s) = lexStrItem5 (vzu == '&') (vyy : vzu : s); 175.06/157.74 lexStrItem6 vzz wuu = lexStrItem4 wuu; 175.06/157.74 ; 175.06/157.74 lexStrItem7 (vyy : vzw) = lexStrItem6 (vyy == '\') (vyy : vzw); 175.06/157.74 lexStrItem7 wuv = lexStrItem4 wuv; 175.06/157.74 ; 175.06/157.74 lexString (vwx : s) = lexString4 (vwx : s); 175.06/157.74 lexString s = lexString2 s; 175.06/157.74 ; 175.06/157.74 lexString0 ch vu56 = lexString00 ch vu56; 175.06/157.74 ; 175.06/157.74 lexString00 ch (str,u) = (ch ++ str,u) : []; 175.06/157.74 lexString00 ch wx = []; 175.06/157.74 ; 175.06/157.74 lexString1 vu57 = lexString10 vu57; 175.06/157.74 ; 175.06/157.74 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 175.06/157.74 lexString10 wy = []; 175.06/157.74 ; 175.06/157.74 lexString2 s = concatMap lexString1 (lexStrItem s); 175.06/157.74 ; 175.06/157.74 lexString3 True (vwx : s) = ('"' : [],s) : []; 175.06/157.74 lexString3 vwy vwz = lexString2 vwz; 175.06/157.74 ; 175.06/157.74 lexString4 (vwx : s) = lexString3 (vwx == '"') (vwx : s); 175.06/157.74 lexString4 vxu = lexString2 vxu; 175.06/157.74 } 175.06/157.74 " 175.06/157.74 are unpacked to the following functions on top level 175.06/157.74 "lex13LexStrItem001 True (wux : t) = ([],t) : []; 175.06/157.74 lex13LexStrItem001 wuy wuz = lex13LexStrItem000 wuz; 175.06/157.74 " 175.06/157.74 "lex13LexString3 True (vwx : s) = ('"' : [],s) : []; 175.06/157.74 lex13LexString3 vwy vwz = lex13LexString2 vwz; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem2 vxw c s True = concatMap lex13LexStrItem0 (dropWhile isSpace s : []); 175.06/157.74 lex13LexStrItem2 vxw c s False = lex13LexStrItem1 (vxw : c : s); 175.06/157.74 " 175.06/157.74 "lex13LexStrItem (vyy : vzw) = lex13LexStrItem7 (vyy : vzw); 175.06/157.74 lex13LexStrItem (vxw : vxz) = lex13LexStrItem4 (vxw : vxz); 175.06/157.74 lex13LexStrItem s = lex13LexStrItem1 s; 175.06/157.74 " 175.06/157.74 "lex13LexString10 (ch,t) = concatMap (lex13LexString0 ch) (lex13LexString t); 175.06/157.74 lex13LexString10 wy = []; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem4 (vxw : vxz) = lex13LexStrItem3 (vxw == '\') (vxw : vxz); 175.06/157.74 lex13LexStrItem4 vyw = lex13LexStrItem1 vyw; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem1 s = lexLitChar s; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem00 (wux : t) = lex13LexStrItem002 (wux : t); 175.06/157.74 lex13LexStrItem00 wz = lex13LexStrItem000 wz; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem0 vu58 = lex13LexStrItem00 vu58; 175.06/157.74 " 175.06/157.74 "lex13Lex10 (str,t) = ('"' : str,t) : []; 175.06/157.74 lex13Lex10 xu = []; 175.06/157.74 " 175.06/157.74 "lex13LexString0 ch vu56 = lex13LexString00 ch vu56; 175.06/157.74 " 175.06/157.74 "lex13Lex1 vu55 = lex13Lex10 vu55; 175.06/157.74 " 175.06/157.74 "lex13LexString2 s = concatMap lex13LexString1 (lex13LexStrItem s); 175.06/157.74 " 175.06/157.74 "lex13LexStrItem000 wz = []; 175.06/157.74 " 175.06/157.74 "lex13LexString (vwx : s) = lex13LexString4 (vwx : s); 175.06/157.74 lex13LexString s = lex13LexString2 s; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem5 True (vyy : vzu : s) = ('\' : '&' : [],s) : []; 175.06/157.74 lex13LexStrItem5 vzx vzy = lex13LexStrItem4 vzy; 175.06/157.74 " 175.06/157.74 "lex13LexString00 ch (str,u) = (ch ++ str,u) : []; 175.06/157.74 lex13LexString00 ch wx = []; 175.06/157.74 " 175.06/157.74 "lex13LexString1 vu57 = lex13LexString10 vu57; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem3 True (vxw : c : s) = lex13LexStrItem2 vxw c s (isSpace c); 175.06/157.74 lex13LexStrItem3 vyu vyv = lex13LexStrItem1 vyv; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem7 (vyy : vzw) = lex13LexStrItem6 (vyy == '\') (vyy : vzw); 175.06/157.74 lex13LexStrItem7 wuv = lex13LexStrItem4 wuv; 175.06/157.74 " 175.06/157.74 "lex13LexString4 (vwx : s) = lex13LexString3 (vwx == '"') (vwx : s); 175.06/157.74 lex13LexString4 vxu = lex13LexString2 vxu; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem002 (wux : t) = lex13LexStrItem001 (wux == '\') (wux : t); 175.06/157.74 lex13LexStrItem002 wvu = lex13LexStrItem000 wvu; 175.06/157.74 " 175.06/157.74 "lex13LexStrItem6 True (vyy : vzu : s) = lex13LexStrItem5 (vzu == '&') (vyy : vzu : s); 175.06/157.74 lex13LexStrItem6 vzz wuu = lex13LexStrItem4 wuu; 175.06/157.74 " 175.06/157.74 The bindings of the following Let/Where expression 175.06/157.74 "span1 p vvu vvv (p vvu) where { 175.06/157.74 span0 p vvu vvv True = ([],vvu : vvv); 175.06/157.74 ; 175.06/157.74 span1 p vvu vvv True = (vvu : ys,zs); 175.06/157.74 span1 p vvu vvv False = span0 p vvu vvv otherwise; 175.06/157.74 ; 175.06/157.74 vu43 = span p vvv; 175.06/157.74 ; 175.06/157.74 ys = ys0 vu43; 175.06/157.74 ; 175.06/157.74 ys0 (ys,vvx) = ys; 175.06/157.74 ; 175.06/157.74 zs = zs0 vu43; 175.06/157.74 ; 175.06/157.74 zs0 (vvw,zs) = zs; 175.06/157.74 } 175.06/157.74 " 175.06/157.74 are unpacked to the following functions on top level 175.06/157.74 "span2Zs yux yuy = span2Zs0 yux yuy (span2Vu43 yux yuy); 175.06/157.74 " 175.06/157.74 "span2Vu43 yux yuy = span yux yuy; 175.06/157.74 " 175.06/157.74 "span2Span1 yux yuy p vvu vvv True = (vvu : span2Ys yux yuy,span2Zs yux yuy); 175.06/157.74 span2Span1 yux yuy p vvu vvv False = span2Span0 yux yuy p vvu vvv otherwise; 175.06/157.74 " 175.06/157.74 "span2Ys yux yuy = span2Ys0 yux yuy (span2Vu43 yux yuy); 175.06/157.74 " 175.06/157.74 "span2Ys0 yux yuy (ys,vvx) = ys; 175.06/157.74 " 175.06/157.74 "span2Zs0 yux yuy (vvw,zs) = zs; 175.06/157.74 " 175.06/157.74 "span2Span0 yux yuy p vvu vvv True = ([],vvu : vvv); 175.06/157.74 " 175.06/157.74 The bindings of the following Let/Where expression 175.06/157.74 "lex11 c s (isSingle c) where { 175.06/157.74 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 175.06/157.74 ; 175.06/157.74 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 175.06/157.74 ; 175.06/157.74 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 175.06/157.74 ; 175.06/157.74 lex11 c s True = (c : [],s) : []; 175.06/157.74 lex11 c s False = lex9 c s (isSym c); 175.06/157.74 ; 175.06/157.74 lex2 c vu59 = lex20 c vu59; 175.06/157.74 ; 175.06/157.74 lex20 c (sym,t) = (c : sym,t) : []; 175.06/157.74 lex20 c yw = []; 175.06/157.74 ; 175.06/157.74 lex3 c vu60 = lex30 c vu60; 175.06/157.74 ; 175.06/157.74 lex30 c (nam,t) = (c : nam,t) : []; 175.06/157.74 lex30 c yx = []; 175.06/157.74 ; 175.06/157.74 lex4 c ds vu61 = lex40 c ds vu61; 175.06/157.74 ; 175.06/157.74 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 175.06/157.74 lex40 c ds yu = []; 175.06/157.74 ; 175.06/157.74 lex5 c vu62 = lex50 c vu62; 175.06/157.74 ; 175.06/157.74 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 175.06/157.74 lex50 c yv = []; 175.06/157.74 ; 175.06/157.74 lex6 c s True = []; 175.06/157.74 ; 175.06/157.74 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 175.06/157.74 lex7 c s False = lex6 c s otherwise; 175.06/157.74 ; 175.06/157.74 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 175.06/157.74 lex8 c s False = lex7 c s (isDigit c); 175.06/157.74 ; 175.06/157.74 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 175.06/157.74 lex9 c s False = lex8 c s (isAlpha c); 175.06/157.74 ; 175.06/157.74 lexExp (e : s) = lexExp5 (e : s); 175.06/157.74 lexExp s = lexExp3 s; 175.06/157.74 ; 175.06/157.74 lexExp0 e c vu65 = lexExp00 e c vu65; 175.06/157.74 ; 175.06/157.74 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 175.06/157.74 lexExp00 e c xv = []; 175.06/157.74 ; 175.06/157.74 lexExp1 e vu66 = lexExp10 e vu66; 175.06/157.74 ; 175.06/157.74 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 175.06/157.74 lexExp10 e xx = []; 175.06/157.74 ; 175.06/157.74 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 175.06/157.74 lexExp100 e c t False = []; 175.06/157.74 ; 175.06/157.74 lexExp2 e vu67 = lexExp20 e vu67; 175.06/157.74 ; 175.06/157.74 lexExp20 e (ds,t) = (e : ds,t) : []; 175.06/157.74 lexExp20 e xw = []; 175.06/157.74 ; 175.06/157.74 lexExp3 s = ([],s) : []; 175.06/157.74 ; 175.06/157.74 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 175.06/157.74 lexExp4 e s False = lexExp3 (e : s); 175.06/157.74 ; 175.06/157.74 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 175.06/157.74 lexExp5 wvw = lexExp3 wvw; 175.06/157.74 ; 175.06/157.74 lexFracExp (wvy : wwv) = lexFracExp5 (wvy : wwv); 175.06/157.74 lexFracExp s = lexFracExp2 s; 175.06/157.74 ; 175.06/157.74 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 175.06/157.74 ; 175.06/157.74 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 175.06/157.74 lexFracExp00 ds xz = []; 175.06/157.74 ; 175.06/157.74 lexFracExp1 vu64 = lexFracExp10 vu64; 175.06/157.74 ; 175.06/157.74 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 175.06/157.74 lexFracExp10 xy = []; 175.06/157.74 ; 175.06/157.74 lexFracExp2 s = lexExp s; 175.06/157.74 ; 175.06/157.74 lexFracExp3 wvy c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 175.06/157.74 lexFracExp3 wvy c cs False = lexFracExp2 (wvy : c : cs); 175.06/157.74 ; 175.06/157.74 lexFracExp4 True (wvy : c : cs) = lexFracExp3 wvy c cs (isDigit c); 175.06/157.74 lexFracExp4 www wwx = lexFracExp2 wwx; 175.06/157.74 ; 175.06/157.74 lexFracExp5 (wvy : wwv) = lexFracExp4 (wvy == '.') (wvy : wwv); 175.06/157.74 lexFracExp5 wwy = lexFracExp2 wwy; 175.06/157.74 } 175.06/157.74 " 175.06/157.74 are unpacked to the following functions on top level 175.06/157.74 "lex12IsSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 175.06/157.74 " 175.06/157.74 "lex12LexExp0 e c vu65 = lex12LexExp00 e c vu65; 175.06/157.74 " 175.06/157.74 "lex12Lex6 c s True = []; 175.06/157.74 " 175.06/157.74 "lex12Lex7 c s True = concatMap (lex12Lex5 c) (span isDigit s : []); 175.06/157.74 lex12Lex7 c s False = lex12Lex6 c s otherwise; 175.06/157.74 " 175.06/157.74 "lex12LexExp20 e (ds,t) = (e : ds,t) : []; 175.06/157.74 lex12LexExp20 e xw = []; 175.06/157.74 " 175.06/157.74 "lex12Lex4 c ds vu61 = lex12Lex40 c ds vu61; 175.06/157.74 " 175.06/157.74 "lex12LexExp00 e c (ds,u) = (e : c : ds,u) : []; 175.06/157.74 lex12LexExp00 e c xv = []; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp2 s = lex12LexExp s; 175.06/157.74 " 175.06/157.74 "lex12Lex9 c s True = concatMap (lex12Lex2 c) (span lex12IsSym s : []); 175.06/157.74 lex12Lex9 c s False = lex12Lex8 c s (isAlpha c); 175.06/157.74 " 175.06/157.74 "lex12IsSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp3 wvy c cs True = concatMap lex12LexFracExp1 (lexDigits (c : cs)); 175.06/157.74 lex12LexFracExp3 wvy c cs False = lex12LexFracExp2 (wvy : c : cs); 175.06/157.74 " 175.06/157.74 "lex12LexExp10 e (c : t) = lex12LexExp100 e c t (c `elem` '+' : '-' : []); 175.06/157.74 lex12LexExp10 e xx = []; 175.06/157.74 " 175.06/157.74 "lex12Lex20 c (sym,t) = (c : sym,t) : []; 175.06/157.74 lex12Lex20 c yw = []; 175.06/157.74 " 175.06/157.74 "lex12Lex50 c (ds,s) = concatMap (lex12Lex4 c ds) (lex12LexFracExp s); 175.06/157.74 lex12Lex50 c yv = []; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp1 vu64 = lex12LexFracExp10 vu64; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp10 (ds,t) = concatMap (lex12LexFracExp0 ds) (lex12LexExp t); 175.06/157.74 lex12LexFracExp10 xy = []; 175.06/157.74 " 175.06/157.74 "lex12LexExp4 e s True = concatMap (lex12LexExp1 e) (s : []) ++ concatMap (lex12LexExp2 e) (lexDigits s); 175.06/157.74 lex12LexExp4 e s False = lex12LexExp3 (e : s); 175.06/157.74 " 175.06/157.74 "lex12LexExp2 e vu67 = lex12LexExp20 e vu67; 175.06/157.74 " 175.06/157.74 "lex12LexExp (e : s) = lex12LexExp5 (e : s); 175.06/157.74 lex12LexExp s = lex12LexExp3 s; 175.06/157.74 " 175.06/157.74 "lex12Lex30 c (nam,t) = (c : nam,t) : []; 175.06/157.74 lex12Lex30 c yx = []; 175.06/157.74 " 175.06/157.74 "lex12LexExp100 e c t True = concatMap (lex12LexExp0 e c) (lexDigits t); 175.06/157.74 lex12LexExp100 e c t False = []; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp (wvy : wwv) = lex12LexFracExp5 (wvy : wwv); 175.06/157.74 lex12LexFracExp s = lex12LexFracExp2 s; 175.06/157.74 " 175.06/157.74 "lex12Lex2 c vu59 = lex12Lex20 c vu59; 175.06/157.74 " 175.06/157.74 "lex12LexExp1 e vu66 = lex12LexExp10 e vu66; 175.06/157.74 " 175.06/157.74 "lex12Lex5 c vu62 = lex12Lex50 c vu62; 175.06/157.74 " 175.06/157.74 "lex12Lex3 c vu60 = lex12Lex30 c vu60; 175.06/157.74 " 175.06/157.74 "lex12Lex11 c s True = (c : [],s) : []; 175.06/157.74 lex12Lex11 c s False = lex12Lex9 c s (lex12IsSym c); 175.06/157.74 " 175.06/157.74 "lex12LexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 175.06/157.74 lex12LexFracExp00 ds xz = []; 175.06/157.74 " 175.06/157.74 "lex12LexExp5 (e : s) = lex12LexExp4 e s (e `elem` 'e' : 'E' : []); 175.06/157.74 lex12LexExp5 wvw = lex12LexExp3 wvw; 175.06/157.74 " 175.06/157.74 "lex12LexExp3 s = ([],s) : []; 175.06/157.74 " 175.06/157.74 "lex12Lex8 c s True = concatMap (lex12Lex3 c) (span lex12IsIdChar s : []); 175.06/157.74 lex12Lex8 c s False = lex12Lex7 c s (isDigit c); 175.06/157.74 " 175.06/157.74 "lex12Lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 175.06/157.74 lex12Lex40 c ds yu = []; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp0 ds vu63 = lex12LexFracExp00 ds vu63; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp4 True (wvy : c : cs) = lex12LexFracExp3 wvy c cs (isDigit c); 175.06/157.74 lex12LexFracExp4 www wwx = lex12LexFracExp2 wwx; 175.06/157.74 " 175.06/157.74 "lex12LexFracExp5 (wvy : wwv) = lex12LexFracExp4 (wvy == '.') (wvy : wwv); 175.06/157.74 lex12LexFracExp5 wwy = lex12LexFracExp2 wwy; 175.06/157.74 " 175.06/157.74 "lex12IsIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 175.06/157.75 " 175.06/157.75 The bindings of the following Let/Where expression 175.06/157.75 "lexLitChar1 c s (c /= '\') where { 175.06/157.75 lexEsc (c : s) = lexEsc16 (c : s); 175.06/157.75 lexEsc (xxz : xyw) = lexEsc14 (xxz : xyw); 175.06/157.75 lexEsc (xxu : s) = lexEsc11 (xxu : s); 175.06/157.75 lexEsc (xwv : s) = lexEsc8 (xwv : s); 175.06/157.75 lexEsc (vuu : vuv) = lexEsc6 (vuu : vuv); 175.06/157.75 lexEsc vuw = lexEsc3 vuw; 175.06/157.75 ; 175.06/157.75 lexEsc0 mne vu69 = lexEsc00 mne vu69; 175.06/157.75 ; 175.06/157.75 lexEsc00 mne ([],s') = (mne,s') : []; 175.06/157.75 lexEsc00 mne vuy = []; 175.06/157.75 ; 175.06/157.75 lexEsc1 s vu70 = lexEsc10 s vu70; 175.06/157.75 ; 175.06/157.75 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 175.06/157.75 lexEsc10 s vuz = []; 175.06/157.75 ; 175.06/157.75 lexEsc11 (xxu : s) = lexEsc9 (xxu == 'o') (xxu : s); 175.06/157.75 lexEsc11 xxx = lexEsc8 xxx; 175.06/157.75 ; 175.06/157.75 lexEsc12 xxz c s True = ('^' : c : [],s) : []; 175.06/157.75 lexEsc12 xxz c s False = lexEsc11 (xxz : c : s); 175.06/157.75 ; 175.06/157.75 lexEsc13 True (xxz : c : s) = lexEsc12 xxz c s (c >= '@' && c <= '_'); 175.06/157.75 lexEsc13 xyx xyy = lexEsc11 xyy; 175.06/157.75 ; 175.06/157.75 lexEsc14 (xxz : xyw) = lexEsc13 (xxz == '^') (xxz : xyw); 175.06/157.75 lexEsc14 xyz = lexEsc11 xyz; 175.06/157.75 ; 175.06/157.75 lexEsc15 c s True = (c : [],s) : []; 175.06/157.75 lexEsc15 c s False = lexEsc14 (c : s); 175.06/157.75 ; 175.06/157.75 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 175.06/157.75 lexEsc16 xzv = lexEsc14 xzv; 175.06/157.75 ; 175.06/157.75 lexEsc2 (pr : vux) = pr : []; 175.06/157.75 lexEsc2 [] = []; 175.06/157.75 ; 175.06/157.75 lexEsc3 vuw = []; 175.06/157.75 ; 175.06/157.75 lexEsc4 vuu vuv True = lexEsc2 (concatMap (lexEsc1 (vuu : vuv)) table); 175.06/157.75 lexEsc4 vuu vuv False = lexEsc3 (vuu : vuv); 175.06/157.75 ; 175.06/157.75 lexEsc5 vuu vuv True = span isDigit (vuu : vuv) : []; 175.06/157.75 lexEsc5 vuu vuv False = lexEsc4 vuu vuv (isUpper vuu); 175.06/157.75 ; 175.06/157.75 lexEsc6 (vuu : vuv) = lexEsc5 vuu vuv (isDigit vuu); 175.06/157.75 lexEsc6 xvz = lexEsc3 xvz; 175.06/157.75 ; 175.06/157.75 lexEsc7 True (xwv : s) = prefix 'x' (span isHexDigit s) : []; 175.06/157.75 lexEsc7 xww xwx = lexEsc6 xwx; 175.06/157.75 ; 175.06/157.75 lexEsc8 (xwv : s) = lexEsc7 (xwv == 'x') (xwv : s); 175.06/157.75 lexEsc8 xwy = lexEsc6 xwy; 175.06/157.75 ; 175.06/157.75 lexEsc9 True (xxu : s) = prefix 'o' (span isOctDigit s) : []; 175.06/157.75 lexEsc9 xxv xxw = lexEsc8 xxw; 175.06/157.75 ; 175.06/157.75 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 175.06/157.75 ; 175.06/157.75 lexLitChar1 c s True = (c : [],s) : []; 175.06/157.75 lexLitChar1 c s False = lexLitChar0 c s otherwise; 175.06/157.75 ; 175.06/157.75 prefix c (t,s) = (c : t,s); 175.06/157.75 ; 175.06/157.75 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 175.06/157.75 } 175.06/157.75 " 175.06/157.75 are unpacked to the following functions on top level 175.06/157.75 "lexLitChar2LexEsc2 (pr : vux) = pr : []; 175.06/157.75 lexLitChar2LexEsc2 [] = []; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 175.06/157.75 lexLitChar2LexEsc00 mne vuy = []; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc14 (xxz : xyw) = lexLitChar2LexEsc13 (xxz == '^') (xxz : xyw); 175.06/157.75 lexLitChar2LexEsc14 xyz = lexLitChar2LexEsc11 xyz; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc3 vuw = []; 175.06/157.75 " 175.06/157.75 "lexLitChar2Prefix c (t,s) = (c : t,s); 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc5 vuu vuv True = span isDigit (vuu : vuv) : []; 175.06/157.75 lexLitChar2LexEsc5 vuu vuv False = lexLitChar2LexEsc4 vuu vuv (isUpper vuu); 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 175.06/157.75 lexLitChar2LexEsc10 s vuz = []; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc4 vuu vuv True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (vuu : vuv)) lexLitChar2Table); 175.06/157.75 lexLitChar2LexEsc4 vuu vuv False = lexLitChar2LexEsc3 (vuu : vuv); 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 175.06/157.75 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 175.06/157.75 lexLitChar2LexEsc (xxz : xyw) = lexLitChar2LexEsc14 (xxz : xyw); 175.06/157.75 lexLitChar2LexEsc (xxu : s) = lexLitChar2LexEsc11 (xxu : s); 175.06/157.75 lexLitChar2LexEsc (xwv : s) = lexLitChar2LexEsc8 (xwv : s); 175.06/157.75 lexLitChar2LexEsc (vuu : vuv) = lexLitChar2LexEsc6 (vuu : vuv); 175.06/157.75 lexLitChar2LexEsc vuw = lexLitChar2LexEsc3 vuw; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc11 (xxu : s) = lexLitChar2LexEsc9 (xxu == 'o') (xxu : s); 175.06/157.75 lexLitChar2LexEsc11 xxx = lexLitChar2LexEsc8 xxx; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc6 (vuu : vuv) = lexLitChar2LexEsc5 vuu vuv (isDigit vuu); 175.06/157.75 lexLitChar2LexEsc6 xvz = lexLitChar2LexEsc3 xvz; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 175.06/157.75 " 175.06/157.75 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc7 True (xwv : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 175.06/157.75 lexLitChar2LexEsc7 xww xwx = lexLitChar2LexEsc6 xwx; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 175.06/157.75 lexLitChar2LexEsc16 xzv = lexLitChar2LexEsc14 xzv; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc13 True (xxz : c : s) = lexLitChar2LexEsc12 xxz c s (c >= '@' && c <= '_'); 175.06/157.75 lexLitChar2LexEsc13 xyx xyy = lexLitChar2LexEsc11 xyy; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc9 True (xxu : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 175.06/157.75 lexLitChar2LexEsc9 xxv xxw = lexLitChar2LexEsc8 xxw; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc8 (xwv : s) = lexLitChar2LexEsc7 (xwv == 'x') (xwv : s); 175.06/157.75 lexLitChar2LexEsc8 xwy = lexLitChar2LexEsc6 xwy; 175.06/157.75 " 175.06/157.75 "lexLitChar2LexEsc12 xxz c s True = ('^' : c : [],s) : []; 175.06/157.75 lexLitChar2LexEsc12 xxz c s False = lexLitChar2LexEsc11 (xxz : c : s); 175.06/157.75 " 175.06/157.75 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 175.06/157.75 " 175.06/157.75 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 175.06/157.75 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 175.06/157.75 " 175.06/157.75 175.06/157.75 ---------------------------------------- 175.06/157.75 175.06/157.75 (12) 175.06/157.75 Obligation: 175.06/157.75 mainModule Main 175.06/157.75 module Main where { 175.06/157.75 import qualified Prelude; 175.06/157.75 } 175.06/157.75 175.06/157.75 ---------------------------------------- 175.06/157.75 175.06/157.75 (13) NumRed (SOUND) 175.06/157.75 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 175.06/157.75 ---------------------------------------- 175.06/157.75 175.06/157.75 (14) 175.06/157.75 Obligation: 175.06/157.75 mainModule Main 175.06/157.75 module Main where { 175.06/157.75 import qualified Prelude; 175.06/157.75 } 175.06/157.79 EOF