244.86/217.38 MAYBE 247.03/218.00 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 247.03/218.00 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 247.03/218.00 247.03/218.00 247.03/218.00 H-Termination with start terms of the given HASKELL could not be shown: 247.03/218.00 247.03/218.00 (0) HASKELL 247.03/218.00 (1) LR [EQUIVALENT, 0 ms] 247.03/218.00 (2) HASKELL 247.03/218.00 (3) CR [EQUIVALENT, 0 ms] 247.03/218.00 (4) HASKELL 247.03/218.00 (5) IFR [EQUIVALENT, 0 ms] 247.03/218.00 (6) HASKELL 247.03/218.00 (7) BR [EQUIVALENT, 1 ms] 247.03/218.00 (8) HASKELL 247.03/218.00 (9) COR [EQUIVALENT, 0 ms] 247.03/218.00 (10) HASKELL 247.03/218.00 (11) LetRed [EQUIVALENT, 32 ms] 247.03/218.00 (12) HASKELL 247.03/218.00 (13) NumRed [SOUND, 0 ms] 247.03/218.00 (14) HASKELL 247.03/218.00 247.03/218.00 247.03/218.00 ---------------------------------------- 247.03/218.00 247.03/218.00 (0) 247.03/218.00 Obligation: 247.03/218.00 mainModule Main 247.03/218.00 module Main where { 247.03/218.00 import qualified Prelude; 247.03/218.00 } 247.03/218.00 247.03/218.00 ---------------------------------------- 247.03/218.00 247.03/218.00 (1) LR (EQUIVALENT) 247.03/218.00 Lambda Reductions: 247.03/218.00 The following Lambda expression 247.03/218.00 "\lv1->case lv1 of { 247.03/218.00 ('F' : 'a' : 'l' : 's' : 'e' : [],r0) -> (False,r0) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "readsPrec0 lv1 = case lv1 of { 247.03/218.00 ('F' : 'a' : 'l' : 's' : 'e' : [],r0) -> (False,r0) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\lr1->concatMap readsPrec0 (lex lr1)" 247.03/218.00 is transformed to 247.03/218.00 "readsPrec1 lr1 = concatMap readsPrec0 (lex lr1); 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\lv1->case lv1 of { 247.03/218.00 ('T' : 'r' : 'u' : 'e' : [],r0) -> (True,r0) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "readsPrec2 lv1 = case lv1 of { 247.03/218.00 ('T' : 'r' : 'u' : 'e' : [],r0) -> (True,r0) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\lr2->concatMap readsPrec2 (lex lr2)" 247.03/218.00 is transformed to 247.03/218.00 "readsPrec3 lr2 = concatMap readsPrec2 (lex lr2); 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu54->case vu54 of { 247.03/218.00 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex0 vu54 = case vu54 of { 247.03/218.00 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu56->case vu56 of { 247.03/218.00 (str,u) -> (ch ++ str,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexString0 ch vu56 = case vu56 of { 247.03/218.00 (str,u) -> (ch ++ str,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu57->case vu57 of { 247.03/218.00 (ch,t) -> concatMap (lexString0 ch) (lexString t); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexString1 vu57 = case vu57 of { 247.03/218.00 (ch,t) -> concatMap (lexString0 ch) (lexString t); 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu58->case vu58 of { 247.03/218.00 '\' : t -> ([],t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexStrItem0 vu58 = case vu58 of { 247.03/218.00 '\' : t -> ([],t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu55->case vu55 of { 247.03/218.00 (str,t) -> ('"' : str,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex1 vu55 = case vu55 of { 247.03/218.00 (str,t) -> ('"' : str,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu63->case vu63 of { 247.03/218.00 (e,u) -> ('.' : ds ++ e,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexFracExp0 ds vu63 = case vu63 of { 247.03/218.00 (e,u) -> ('.' : ds ++ e,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu64->case vu64 of { 247.03/218.00 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexFracExp1 vu64 = case vu64 of { 247.03/218.00 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu65->case vu65 of { 247.03/218.00 (ds,u) -> (e : c : ds,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexExp0 e c vu65 = case vu65 of { 247.03/218.00 (ds,u) -> (e : c : ds,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu66->case vu66 of { 247.03/218.00 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexExp1 e vu66 = case vu66 of { 247.03/218.00 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu67->case vu67 of { 247.03/218.00 (ds,t) -> (e : ds,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexExp2 e vu67 = case vu67 of { 247.03/218.00 (ds,t) -> (e : ds,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu59->case vu59 of { 247.03/218.00 (sym,t) -> (c : sym,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex2 c vu59 = case vu59 of { 247.03/218.00 (sym,t) -> (c : sym,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu60->case vu60 of { 247.03/218.00 (nam,t) -> (c : nam,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex3 c vu60 = case vu60 of { 247.03/218.00 (nam,t) -> (c : nam,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu61->case vu61 of { 247.03/218.00 (fe,t) -> (c : ds ++ fe,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex4 c ds vu61 = case vu61 of { 247.03/218.00 (fe,t) -> (c : ds ++ fe,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu62->case vu62 of { 247.03/218.00 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex5 c vu62 = case vu62 of { 247.03/218.00 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\ab->(a,b)" 247.03/218.00 is transformed to 247.03/218.00 "zip0 a b = (a,b); 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu68->case vu68 of { 247.03/218.00 (cs@(_ : _),t) -> (cs,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "nonnull0 vu68 = case vu68 of { 247.03/218.00 (cs@(_ : _),t) -> (cs,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu48->case vu48 of { 247.03/218.00 (')' : [],u) -> (x,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "mandatory0 x vu48 = case vu48 of { 247.03/218.00 (')' : [],u) -> (x,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu49->case vu49 of { 247.03/218.00 (x,t) -> concatMap (mandatory0 x) (lex t); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "mandatory1 vu49 = case vu49 of { 247.03/218.00 (x,t) -> concatMap (mandatory0 x) (lex t); 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu50->case vu50 of { 247.03/218.00 ('(' : [],s) -> concatMap mandatory1 (optional s); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "mandatory2 vu50 = case vu50 of { 247.03/218.00 ('(' : [],s) -> concatMap mandatory1 (optional s); 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu69->case vu69 of { 247.03/218.00 ([],s') -> (mne,s') : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexEsc0 mne vu69 = case vu69 of { 247.03/218.00 ([],s') -> (mne,s') : []; 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\vu70->case vu70 of { 247.03/218.00 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexEsc1 s vu70 = case vu70 of { 247.03/218.00 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.00 _ -> []} 247.03/218.00 ; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\(_,zs)->zs" 247.03/218.00 is transformed to 247.03/218.00 "zs0 (_,zs) = zs; 247.03/218.00 " 247.03/218.00 The following Lambda expression 247.03/218.00 "\(ys,_)->ys" 247.03/218.00 is transformed to 247.03/218.00 "ys0 (ys,_) = ys; 247.03/218.00 " 247.03/218.00 247.03/218.00 ---------------------------------------- 247.03/218.00 247.03/218.00 (2) 247.03/218.00 Obligation: 247.03/218.00 mainModule Main 247.03/218.00 module Main where { 247.03/218.00 import qualified Prelude; 247.03/218.00 } 247.03/218.00 247.03/218.00 ---------------------------------------- 247.03/218.00 247.03/218.00 (3) CR (EQUIVALENT) 247.03/218.00 Case Reductions: 247.03/218.00 The following Case expression 247.03/218.00 "case vu55 of { 247.03/218.00 (str,t) -> ('"' : str,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex10 (str,t) = ('"' : str,t) : []; 247.03/218.00 lex10 _ = []; 247.03/218.00 " 247.03/218.00 The following Case expression 247.03/218.00 "case vu57 of { 247.03/218.00 (ch,t) -> concatMap (lexString0 ch) (lexString t); 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 247.03/218.00 lexString10 _ = []; 247.03/218.00 " 247.03/218.00 The following Case expression 247.03/218.00 "case vu56 of { 247.03/218.00 (str,u) -> (ch ++ str,u) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexString00 ch (str,u) = (ch ++ str,u) : []; 247.03/218.00 lexString00 ch _ = []; 247.03/218.00 " 247.03/218.00 The following Case expression 247.03/218.00 "case vu58 of { 247.03/218.00 '\' : t -> ([],t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lexStrItem00 ('\' : t) = ([],t) : []; 247.03/218.00 lexStrItem00 _ = []; 247.03/218.00 " 247.03/218.00 The following Case expression 247.03/218.00 "case vu59 of { 247.03/218.00 (sym,t) -> (c : sym,t) : []; 247.03/218.00 _ -> []} 247.03/218.00 " 247.03/218.00 is transformed to 247.03/218.00 "lex20 c (sym,t) = (c : sym,t) : []; 247.03/218.00 lex20 c _ = []; 247.03/218.00 " 247.03/218.00 The following Case expression 247.03/218.01 "case vu67 of { 247.03/218.01 (ds,t) -> (e : ds,t) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexExp20 e (ds,t) = (e : ds,t) : []; 247.03/218.01 lexExp20 e _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu65 of { 247.03/218.01 (ds,u) -> (e : c : ds,u) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexExp00 e c (ds,u) = (e : c : ds,u) : []; 247.03/218.01 lexExp00 e c _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu62 of { 247.03/218.01 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 247.03/218.01 lex50 c _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu66 of { 247.03/218.01 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexExp10 e (c : t) = if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 247.03/218.01 lexExp10 e _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu60 of { 247.03/218.01 (nam,t) -> (c : nam,t) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lex30 c (nam,t) = (c : nam,t) : []; 247.03/218.01 lex30 c _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu61 of { 247.03/218.01 (fe,t) -> (c : ds ++ fe,t) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 247.03/218.01 lex40 c ds _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu63 of { 247.03/218.01 (e,u) -> ('.' : ds ++ e,u) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 247.03/218.01 lexFracExp00 ds _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu64 of { 247.03/218.01 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 247.03/218.01 lexFracExp10 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case lv1 of { 247.03/218.01 ('T' : 'r' : 'u' : 'e' : [],r0) -> (True,r0) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "readsPrec20 ('T' : 'r' : 'u' : 'e' : [],r0) = (True,r0) : []; 247.03/218.01 readsPrec20 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case lv1 of { 247.03/218.01 ('F' : 'a' : 'l' : 's' : 'e' : [],r0) -> (False,r0) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "readsPrec00 ('F' : 'a' : 'l' : 's' : 'e' : [],r0) = (False,r0) : []; 247.03/218.01 readsPrec00 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu54 of { 247.03/218.01 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lex00 (ch,''' : t) = if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 247.03/218.01 lex00 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu48 of { 247.03/218.01 (')' : [],u) -> (x,u) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "mandatory00 x (')' : [],u) = (x,u) : []; 247.03/218.01 mandatory00 x _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu49 of { 247.03/218.01 (x,t) -> concatMap (mandatory0 x) (lex t); 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 247.03/218.01 mandatory10 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu50 of { 247.03/218.01 ('(' : [],s) -> concatMap mandatory1 (optional s); 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 247.03/218.01 mandatory20 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu68 of { 247.03/218.01 (cs@(_ : _),t) -> (cs,t) : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 247.03/218.01 nonnull00 _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case concatMap (lexEsc1 s) table of { 247.03/218.01 pr : _ -> pr : []; 247.03/218.01 [] -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexEsc2 (pr : _) = pr : []; 247.03/218.01 lexEsc2 [] = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu69 of { 247.03/218.01 ([],s') -> (mne,s') : []; 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexEsc00 mne ([],s') = (mne,s') : []; 247.03/218.01 lexEsc00 mne _ = []; 247.03/218.01 " 247.03/218.01 The following Case expression 247.03/218.01 "case vu70 of { 247.03/218.01 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.01 _ -> []} 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.01 lexEsc10 s _ = []; 247.03/218.01 " 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (4) 247.03/218.01 Obligation: 247.03/218.01 mainModule Main 247.03/218.01 module Main where { 247.03/218.01 import qualified Prelude; 247.03/218.01 } 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (5) IFR (EQUIVALENT) 247.03/218.01 If Reductions: 247.03/218.01 The following If expression 247.03/218.01 "if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []" 247.03/218.01 is transformed to 247.03/218.01 "lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 247.03/218.01 lexExp100 e c t False = []; 247.03/218.01 " 247.03/218.01 The following If expression 247.03/218.01 "if b then mandatory else optional" 247.03/218.01 is transformed to 247.03/218.01 "readParen0 True = mandatory; 247.03/218.01 readParen0 False = optional; 247.03/218.01 " 247.03/218.01 The following If expression 247.03/218.01 "if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []" 247.03/218.01 is transformed to 247.03/218.01 "lex000 ch t True = (''' : ch ++ ''' : [],t) : []; 247.03/218.01 lex000 ch t False = []; 247.03/218.01 " 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (6) 247.03/218.01 Obligation: 247.03/218.01 mainModule Main 247.03/218.01 module Main where { 247.03/218.01 import qualified Prelude; 247.03/218.01 } 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (7) BR (EQUIVALENT) 247.03/218.01 Replaced joker patterns by fresh variables and removed binding patterns. 247.03/218.01 247.03/218.01 Binding Reductions: 247.03/218.01 The bind variable of the following binding Pattern 247.03/218.01 "cs@(wu : wv)" 247.03/218.01 is replaced by the following term 247.03/218.01 "wu : wv" 247.03/218.01 The bind variable of the following binding Pattern 247.03/218.01 "xs@(vuv : vuw)" 247.03/218.01 is replaced by the following term 247.03/218.01 "vuv : vuw" 247.03/218.01 The bind variable of the following binding Pattern 247.03/218.01 "s@(vuz : vvu)" 247.03/218.01 is replaced by the following term 247.03/218.01 "vuz : vvu" 247.03/218.01 The bind variable of the following binding Pattern 247.03/218.01 "xs@(vvz : vwu)" 247.03/218.01 is replaced by the following term 247.03/218.01 "vvz : vwu" 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (8) 247.03/218.01 Obligation: 247.03/218.01 mainModule Main 247.03/218.01 module Main where { 247.03/218.01 import qualified Prelude; 247.03/218.01 } 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (9) COR (EQUIVALENT) 247.03/218.01 Cond Reductions: 247.03/218.01 The following Function with conditions 247.03/218.01 "readsPrec00 ('F' : 'a' : 'l' : 's' : 'e' : [],r0) = (False,r0) : []; 247.03/218.01 readsPrec00 wx = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "readsPrec00 (vwz : vzy,r0) = readsPrec006 (vwz : vzy,r0); 247.03/218.01 readsPrec00 wx = readsPrec000 wx; 247.03/218.01 " 247.03/218.01 "readsPrec000 wx = []; 247.03/218.01 " 247.03/218.01 "readsPrec001 True (vwz : vxv : vxx : vxz : vyv : [],r0) = (False,r0) : []; 247.03/218.01 readsPrec001 vzz wuu = readsPrec000 wuu; 247.03/218.01 " 247.03/218.01 "readsPrec002 True (vwz : vxv : vxx : vxz : vyv : vyw,r0) = readsPrec001 (vyv == 'e') (vwz : vxv : vxx : vxz : vyv : vyw,r0); 247.03/218.01 readsPrec002 wuv wuw = readsPrec000 wuw; 247.03/218.01 " 247.03/218.01 "readsPrec003 True (vwz : vxv : vxx : vxz : vyy,r0) = readsPrec002 (vxz == 's') (vwz : vxv : vxx : vxz : vyy,r0); 247.03/218.01 readsPrec003 wux wuy = readsPrec000 wuy; 247.03/218.01 " 247.03/218.01 "readsPrec004 True (vwz : vxv : vxx : vzu,r0) = readsPrec003 (vxx == 'l') (vwz : vxv : vxx : vzu,r0); 247.03/218.01 readsPrec004 wuz wvu = readsPrec000 wvu; 247.03/218.01 " 247.03/218.01 "readsPrec005 True (vwz : vxv : vzw,r0) = readsPrec004 (vxv == 'a') (vwz : vxv : vzw,r0); 247.03/218.01 readsPrec005 wvv wvw = readsPrec000 wvw; 247.03/218.01 " 247.03/218.01 "readsPrec006 (vwz : vzy,r0) = readsPrec005 (vwz == 'F') (vwz : vzy,r0); 247.03/218.01 readsPrec006 wvx = readsPrec000 wvx; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "takeWhile p [] = []; 247.03/218.01 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "takeWhile p [] = takeWhile3 p []; 247.03/218.01 takeWhile p (x : xs) = takeWhile2 p (x : xs); 247.03/218.01 " 247.03/218.01 "takeWhile0 p x xs True = []; 247.03/218.01 " 247.03/218.01 "takeWhile1 p x xs True = x : takeWhile p xs; 247.03/218.01 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 247.03/218.01 " 247.03/218.01 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 247.03/218.01 " 247.03/218.01 "takeWhile3 p [] = []; 247.03/218.01 takeWhile3 wwu wwv = takeWhile2 wwu wwv; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexString ('"' : s) = ('"' : [],s) : []; 247.03/218.01 lexString s = concatMap lexString1 (lexStrItem s); 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexString (wwx : s) = lexString4 (wwx : s); 247.03/218.01 lexString s = lexString2 s; 247.03/218.01 " 247.03/218.01 "lexString2 s = concatMap lexString1 (lexStrItem s); 247.03/218.01 " 247.03/218.01 "lexString3 True (wwx : s) = ('"' : [],s) : []; 247.03/218.01 lexString3 wwy wwz = lexString2 wwz; 247.03/218.01 " 247.03/218.01 "lexString4 (wwx : s) = lexString3 (wwx == '"') (wwx : s); 247.03/218.01 lexString4 wxu = lexString2 wxu; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 247.03/218.01 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 247.03/218.01 lexStrItem s = lexLitChar s; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexStrItem (wyy : wzw) = lexStrItem7 (wyy : wzw); 247.03/218.01 lexStrItem (wxw : wxz) = lexStrItem4 (wxw : wxz); 247.03/218.01 lexStrItem s = lexStrItem1 s; 247.03/218.01 " 247.03/218.01 "lexStrItem1 s = lexLitChar s; 247.03/218.01 " 247.03/218.01 "lexStrItem2 wxw c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 247.03/218.01 lexStrItem2 wxw c s False = lexStrItem1 (wxw : c : s); 247.03/218.01 " 247.03/218.01 "lexStrItem3 True (wxw : c : s) = lexStrItem2 wxw c s (isSpace c); 247.03/218.01 lexStrItem3 wyu wyv = lexStrItem1 wyv; 247.03/218.01 " 247.03/218.01 "lexStrItem4 (wxw : wxz) = lexStrItem3 (wxw == '\') (wxw : wxz); 247.03/218.01 lexStrItem4 wyw = lexStrItem1 wyw; 247.03/218.01 " 247.03/218.01 "lexStrItem5 True (wyy : wzu : s) = ('\' : '&' : [],s) : []; 247.03/218.01 lexStrItem5 wzx wzy = lexStrItem4 wzy; 247.03/218.01 " 247.03/218.01 "lexStrItem6 True (wyy : wzu : s) = lexStrItem5 (wzu == '&') (wyy : wzu : s); 247.03/218.01 lexStrItem6 wzz xuu = lexStrItem4 xuu; 247.03/218.01 " 247.03/218.01 "lexStrItem7 (wyy : wzw) = lexStrItem6 (wyy == '\') (wyy : wzw); 247.03/218.01 lexStrItem7 xuv = lexStrItem4 xuv; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexStrItem00 ('\' : t) = ([],t) : []; 247.03/218.01 lexStrItem00 xu = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexStrItem00 (xux : t) = lexStrItem002 (xux : t); 247.03/218.01 lexStrItem00 xu = lexStrItem000 xu; 247.03/218.01 " 247.03/218.01 "lexStrItem000 xu = []; 247.03/218.01 " 247.03/218.01 "lexStrItem001 True (xux : t) = ([],t) : []; 247.03/218.01 lexStrItem001 xuy xuz = lexStrItem000 xuz; 247.03/218.01 " 247.03/218.01 "lexStrItem002 (xux : t) = lexStrItem001 (xux == '\') (xux : t); 247.03/218.01 lexStrItem002 xvu = lexStrItem000 xvu; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 247.03/218.01 lexExp s = ([],s) : []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexExp (e : s) = lexExp5 (e : s); 247.03/218.01 lexExp s = lexExp3 s; 247.03/218.01 " 247.03/218.01 "lexExp3 s = ([],s) : []; 247.03/218.01 " 247.03/218.01 "lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 247.03/218.01 lexExp4 e s False = lexExp3 (e : s); 247.03/218.01 " 247.03/218.01 "lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 247.03/218.01 lexExp5 xvw = lexExp3 xvw; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 247.03/218.01 lexFracExp s = lexExp s; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexFracExp (xvy : xwv) = lexFracExp5 (xvy : xwv); 247.03/218.01 lexFracExp s = lexFracExp2 s; 247.03/218.01 " 247.03/218.01 "lexFracExp2 s = lexExp s; 247.03/218.01 " 247.03/218.01 "lexFracExp3 xvy c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 247.03/218.01 lexFracExp3 xvy c cs False = lexFracExp2 (xvy : c : cs); 247.03/218.01 " 247.03/218.01 "lexFracExp4 True (xvy : c : cs) = lexFracExp3 xvy c cs (isDigit c); 247.03/218.01 lexFracExp4 xww xwx = lexFracExp2 xwx; 247.03/218.01 " 247.03/218.01 "lexFracExp5 (xvy : xwv) = lexFracExp4 (xvy == '.') (xvy : xwv); 247.03/218.01 lexFracExp5 xwy = lexFracExp2 xwy; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lex [] = ([],[]) : []; 247.03/218.01 lex (c : s)|isSpace clex (dropWhile isSpace s); 247.03/218.01 lex (''' : s) = concatMap lex0 (lexLitChar s); 247.03/218.01 lex ('"' : s) = concatMap lex1 (lexString s) where { 247.03/218.01 lex1 vu55 = lex10 vu55; 247.03/218.01 ; 247.03/218.01 lex10 (str,t) = ('"' : str,t) : []; 247.03/218.01 lex10 xv = []; 247.03/218.01 ; 247.03/218.01 lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 247.03/218.01 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 247.03/218.01 lexStrItem s = lexLitChar s; 247.03/218.01 ; 247.03/218.01 lexStrItem0 vu58 = lexStrItem00 vu58; 247.03/218.01 ; 247.03/218.01 lexStrItem00 ('\' : t) = ([],t) : []; 247.03/218.01 lexStrItem00 xu = []; 247.03/218.01 ; 247.03/218.01 lexString ('"' : s) = ('"' : [],s) : []; 247.03/218.01 lexString s = concatMap lexString1 (lexStrItem s); 247.03/218.01 ; 247.03/218.01 lexString0 ch vu56 = lexString00 ch vu56; 247.03/218.01 ; 247.03/218.01 lexString00 ch (str,u) = (ch ++ str,u) : []; 247.03/218.01 lexString00 ch wy = []; 247.03/218.01 ; 247.03/218.01 lexString1 vu57 = lexString10 vu57; 247.03/218.01 ; 247.03/218.01 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 247.03/218.01 lexString10 wz = []; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 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 { 247.03/218.01 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 247.03/218.01 ; 247.03/218.01 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 247.03/218.01 ; 247.03/218.01 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 247.03/218.01 ; 247.03/218.01 lex2 c vu59 = lex20 c vu59; 247.03/218.01 ; 247.03/218.01 lex20 c (sym,t) = (c : sym,t) : []; 247.03/218.01 lex20 c yx = []; 247.03/218.01 ; 247.03/218.01 lex3 c vu60 = lex30 c vu60; 247.03/218.01 ; 247.03/218.01 lex30 c (nam,t) = (c : nam,t) : []; 247.03/218.01 lex30 c yy = []; 247.03/218.01 ; 247.03/218.01 lex4 c ds vu61 = lex40 c ds vu61; 247.03/218.01 ; 247.03/218.01 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 247.03/218.01 lex40 c ds yv = []; 247.03/218.01 ; 247.03/218.01 lex5 c vu62 = lex50 c vu62; 247.03/218.01 ; 247.03/218.01 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 247.03/218.01 lex50 c yw = []; 247.03/218.01 ; 247.03/218.01 lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 247.03/218.01 lexExp s = ([],s) : []; 247.03/218.01 ; 247.03/218.01 lexExp0 e c vu65 = lexExp00 e c vu65; 247.03/218.01 ; 247.03/218.01 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 247.03/218.01 lexExp00 e c xw = []; 247.03/218.01 ; 247.03/218.01 lexExp1 e vu66 = lexExp10 e vu66; 247.03/218.01 ; 247.03/218.01 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 247.03/218.01 lexExp10 e xy = []; 247.03/218.01 ; 247.03/218.01 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 247.03/218.01 lexExp100 e c t False = []; 247.03/218.01 ; 247.03/218.01 lexExp2 e vu67 = lexExp20 e vu67; 247.03/218.01 ; 247.03/218.01 lexExp20 e (ds,t) = (e : ds,t) : []; 247.03/218.01 lexExp20 e xx = []; 247.03/218.01 ; 247.03/218.01 lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 247.03/218.01 lexFracExp s = lexExp s; 247.03/218.01 ; 247.03/218.01 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 247.03/218.01 ; 247.03/218.01 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 247.03/218.01 lexFracExp00 ds yu = []; 247.03/218.01 ; 247.03/218.01 lexFracExp1 vu64 = lexFracExp10 vu64; 247.03/218.01 ; 247.03/218.01 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 247.03/218.01 lexFracExp10 xz = []; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lex [] = lex19 []; 247.03/218.01 lex (c : s) = lex18 (c : s); 247.03/218.01 lex (xyu : s) = lex16 (xyu : s); 247.03/218.01 lex (xxv : s) = lex14 (xxv : s); 247.03/218.01 lex (c : s) = lex12 (c : s); 247.03/218.01 " 247.03/218.01 "lex12 (c : s) = lex11 c s (isSingle c) where { 247.03/218.01 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 247.03/218.01 ; 247.03/218.01 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 247.03/218.01 ; 247.03/218.01 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 247.03/218.01 ; 247.03/218.01 lex11 c s True = (c : [],s) : []; 247.03/218.01 lex11 c s False = lex9 c s (isSym c); 247.03/218.01 ; 247.03/218.01 lex2 c vu59 = lex20 c vu59; 247.03/218.01 ; 247.03/218.01 lex20 c (sym,t) = (c : sym,t) : []; 247.03/218.01 lex20 c yx = []; 247.03/218.01 ; 247.03/218.01 lex3 c vu60 = lex30 c vu60; 247.03/218.01 ; 247.03/218.01 lex30 c (nam,t) = (c : nam,t) : []; 247.03/218.01 lex30 c yy = []; 247.03/218.01 ; 247.03/218.01 lex4 c ds vu61 = lex40 c ds vu61; 247.03/218.01 ; 247.03/218.01 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 247.03/218.01 lex40 c ds yv = []; 247.03/218.01 ; 247.03/218.01 lex5 c vu62 = lex50 c vu62; 247.03/218.01 ; 247.03/218.01 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 247.03/218.01 lex50 c yw = []; 247.03/218.01 ; 247.03/218.01 lex6 c s True = []; 247.03/218.01 ; 247.03/218.01 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 247.03/218.01 lex7 c s False = lex6 c s otherwise; 247.03/218.01 ; 247.03/218.01 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 247.03/218.01 lex8 c s False = lex7 c s (isDigit c); 247.03/218.01 ; 247.03/218.01 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 247.03/218.01 lex9 c s False = lex8 c s (isAlpha c); 247.03/218.01 ; 247.03/218.01 lexExp (e : s) = lexExp5 (e : s); 247.03/218.01 lexExp s = lexExp3 s; 247.03/218.01 ; 247.03/218.01 lexExp0 e c vu65 = lexExp00 e c vu65; 247.03/218.01 ; 247.03/218.01 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 247.03/218.01 lexExp00 e c xw = []; 247.03/218.01 ; 247.03/218.01 lexExp1 e vu66 = lexExp10 e vu66; 247.03/218.01 ; 247.03/218.01 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 247.03/218.01 lexExp10 e xy = []; 247.03/218.01 ; 247.03/218.01 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 247.03/218.01 lexExp100 e c t False = []; 247.03/218.01 ; 247.03/218.01 lexExp2 e vu67 = lexExp20 e vu67; 247.03/218.01 ; 247.03/218.01 lexExp20 e (ds,t) = (e : ds,t) : []; 247.03/218.01 lexExp20 e xx = []; 247.03/218.01 ; 247.03/218.01 lexExp3 s = ([],s) : []; 247.03/218.01 ; 247.03/218.01 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 247.03/218.01 lexExp4 e s False = lexExp3 (e : s); 247.03/218.01 ; 247.03/218.01 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 247.03/218.01 lexExp5 xvw = lexExp3 xvw; 247.03/218.01 ; 247.03/218.01 lexFracExp (xvy : xwv) = lexFracExp5 (xvy : xwv); 247.03/218.01 lexFracExp s = lexFracExp2 s; 247.03/218.01 ; 247.03/218.01 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 247.03/218.01 ; 247.03/218.01 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 247.03/218.01 lexFracExp00 ds yu = []; 247.03/218.01 ; 247.03/218.01 lexFracExp1 vu64 = lexFracExp10 vu64; 247.03/218.01 ; 247.03/218.01 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 247.03/218.01 lexFracExp10 xz = []; 247.03/218.01 ; 247.03/218.01 lexFracExp2 s = lexExp s; 247.03/218.01 ; 247.03/218.01 lexFracExp3 xvy c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 247.03/218.01 lexFracExp3 xvy c cs False = lexFracExp2 (xvy : c : cs); 247.03/218.01 ; 247.03/218.01 lexFracExp4 True (xvy : c : cs) = lexFracExp3 xvy c cs (isDigit c); 247.03/218.01 lexFracExp4 xww xwx = lexFracExp2 xwx; 247.03/218.01 ; 247.03/218.01 lexFracExp5 (xvy : xwv) = lexFracExp4 (xvy == '.') (xvy : xwv); 247.03/218.01 lexFracExp5 xwy = lexFracExp2 xwy; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 " 247.03/218.01 "lex13 True (xxv : s) = concatMap lex1 (lexString s) where { 247.03/218.01 lex1 vu55 = lex10 vu55; 247.03/218.01 ; 247.03/218.01 lex10 (str,t) = ('"' : str,t) : []; 247.03/218.01 lex10 xv = []; 247.03/218.01 ; 247.03/218.01 lexStrItem (wyy : wzw) = lexStrItem7 (wyy : wzw); 247.03/218.01 lexStrItem (wxw : wxz) = lexStrItem4 (wxw : wxz); 247.03/218.01 lexStrItem s = lexStrItem1 s; 247.03/218.01 ; 247.03/218.01 lexStrItem0 vu58 = lexStrItem00 vu58; 247.03/218.01 ; 247.03/218.01 lexStrItem00 (xux : t) = lexStrItem002 (xux : t); 247.03/218.01 lexStrItem00 xu = lexStrItem000 xu; 247.03/218.01 ; 247.03/218.01 lexStrItem000 xu = []; 247.03/218.01 ; 247.03/218.01 lexStrItem001 True (xux : t) = ([],t) : []; 247.03/218.01 lexStrItem001 xuy xuz = lexStrItem000 xuz; 247.03/218.01 ; 247.03/218.01 lexStrItem002 (xux : t) = lexStrItem001 (xux == '\') (xux : t); 247.03/218.01 lexStrItem002 xvu = lexStrItem000 xvu; 247.03/218.01 ; 247.03/218.01 lexStrItem1 s = lexLitChar s; 247.03/218.01 ; 247.03/218.01 lexStrItem2 wxw c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 247.03/218.01 lexStrItem2 wxw c s False = lexStrItem1 (wxw : c : s); 247.03/218.01 ; 247.03/218.01 lexStrItem3 True (wxw : c : s) = lexStrItem2 wxw c s (isSpace c); 247.03/218.01 lexStrItem3 wyu wyv = lexStrItem1 wyv; 247.03/218.01 ; 247.03/218.01 lexStrItem4 (wxw : wxz) = lexStrItem3 (wxw == '\') (wxw : wxz); 247.03/218.01 lexStrItem4 wyw = lexStrItem1 wyw; 247.03/218.01 ; 247.03/218.01 lexStrItem5 True (wyy : wzu : s) = ('\' : '&' : [],s) : []; 247.03/218.01 lexStrItem5 wzx wzy = lexStrItem4 wzy; 247.03/218.01 ; 247.03/218.01 lexStrItem6 True (wyy : wzu : s) = lexStrItem5 (wzu == '&') (wyy : wzu : s); 247.03/218.01 lexStrItem6 wzz xuu = lexStrItem4 xuu; 247.03/218.01 ; 247.03/218.01 lexStrItem7 (wyy : wzw) = lexStrItem6 (wyy == '\') (wyy : wzw); 247.03/218.01 lexStrItem7 xuv = lexStrItem4 xuv; 247.03/218.01 ; 247.03/218.01 lexString (wwx : s) = lexString4 (wwx : s); 247.03/218.01 lexString s = lexString2 s; 247.03/218.01 ; 247.03/218.01 lexString0 ch vu56 = lexString00 ch vu56; 247.03/218.01 ; 247.03/218.01 lexString00 ch (str,u) = (ch ++ str,u) : []; 247.03/218.01 lexString00 ch wy = []; 247.03/218.01 ; 247.03/218.01 lexString1 vu57 = lexString10 vu57; 247.03/218.01 ; 247.03/218.01 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 247.03/218.01 lexString10 wz = []; 247.03/218.01 ; 247.03/218.01 lexString2 s = concatMap lexString1 (lexStrItem s); 247.03/218.01 ; 247.03/218.01 lexString3 True (wwx : s) = ('"' : [],s) : []; 247.03/218.01 lexString3 wwy wwz = lexString2 wwz; 247.03/218.01 ; 247.03/218.01 lexString4 (wwx : s) = lexString3 (wwx == '"') (wwx : s); 247.03/218.01 lexString4 wxu = lexString2 wxu; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 lex13 xxw xxx = lex12 xxx; 247.03/218.01 " 247.03/218.01 "lex14 (xxv : s) = lex13 (xxv == '"') (xxv : s); 247.03/218.01 lex14 xxy = lex12 xxy; 247.03/218.01 " 247.03/218.01 "lex15 True (xyu : s) = concatMap lex0 (lexLitChar s); 247.03/218.01 lex15 xyv xyw = lex14 xyw; 247.03/218.01 " 247.03/218.01 "lex16 (xyu : s) = lex15 (xyu == ''') (xyu : s); 247.03/218.01 lex16 xyx = lex14 xyx; 247.03/218.01 " 247.03/218.01 "lex17 c s True = lex (dropWhile isSpace s); 247.03/218.01 lex17 c s False = lex16 (c : s); 247.03/218.01 " 247.03/218.01 "lex18 (c : s) = lex17 c s (isSpace c); 247.03/218.01 lex18 xyz = lex16 xyz; 247.03/218.01 " 247.03/218.01 "lex19 [] = ([],[]) : []; 247.03/218.01 lex19 xzv = lex18 xzv; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 247.03/218.01 lexmatch xs ys = (xs,ys); 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 247.03/218.01 lexmatch xs ys = lexmatch0 xs ys; 247.03/218.01 " 247.03/218.01 "lexmatch0 xs ys = (xs,ys); 247.03/218.01 " 247.03/218.01 "lexmatch1 x xs y ys True = lexmatch xs ys; 247.03/218.01 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 247.03/218.01 " 247.03/218.01 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 247.03/218.01 lexmatch2 xzy xzz = lexmatch0 xzy xzz; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "readsPrec20 ('T' : 'r' : 'u' : 'e' : [],r0) = (True,r0) : []; 247.03/218.01 readsPrec20 zw = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "readsPrec20 (yuw : ywx,r0) = readsPrec205 (yuw : ywx,r0); 247.03/218.01 readsPrec20 zw = readsPrec200 zw; 247.03/218.01 " 247.03/218.01 "readsPrec200 zw = []; 247.03/218.01 " 247.03/218.01 "readsPrec201 True (yuw : yuy : yvu : yvw : [],r0) = (True,r0) : []; 247.03/218.01 readsPrec201 ywy ywz = readsPrec200 ywz; 247.03/218.01 " 247.03/218.01 "readsPrec202 True (yuw : yuy : yvu : yvw : yvx,r0) = readsPrec201 (yvw == 'e') (yuw : yuy : yvu : yvw : yvx,r0); 247.03/218.01 readsPrec202 yxu yxv = readsPrec200 yxv; 247.03/218.01 " 247.03/218.01 "readsPrec203 True (yuw : yuy : yvu : yvz,r0) = readsPrec202 (yvu == 'u') (yuw : yuy : yvu : yvz,r0); 247.03/218.01 readsPrec203 yxw yxx = readsPrec200 yxx; 247.03/218.01 " 247.03/218.01 "readsPrec204 True (yuw : yuy : ywv,r0) = readsPrec203 (yuy == 'r') (yuw : yuy : ywv,r0); 247.03/218.01 readsPrec204 yxy yxz = readsPrec200 yxz; 247.03/218.01 " 247.03/218.01 "readsPrec205 (yuw : ywx,r0) = readsPrec204 (yuw == 'T') (yuw : ywx,r0); 247.03/218.01 readsPrec205 yyu = readsPrec200 yyu; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "undefined |Falseundefined; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "undefined = undefined1; 247.03/218.01 " 247.03/218.01 "undefined0 True = undefined; 247.03/218.01 " 247.03/218.01 "undefined1 = undefined0 False; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 247.03/218.01 mandatory20 zy = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "mandatory20 (yyx : yyy,s) = mandatory202 (yyx : yyy,s); 247.03/218.01 mandatory20 zy = mandatory200 zy; 247.03/218.01 " 247.03/218.01 "mandatory200 zy = []; 247.03/218.01 " 247.03/218.01 "mandatory201 True (yyx : [],s) = concatMap mandatory1 (optional s); 247.03/218.01 mandatory201 yyz yzu = mandatory200 yzu; 247.03/218.01 " 247.03/218.01 "mandatory202 (yyx : yyy,s) = mandatory201 (yyx == '(') (yyx : yyy,s); 247.03/218.01 mandatory202 yzv = mandatory200 yzv; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "mandatory00 x (')' : [],u) = (x,u) : []; 247.03/218.01 mandatory00 x zz = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "mandatory00 x (yzy : yzz,u) = mandatory002 x (yzy : yzz,u); 247.03/218.01 mandatory00 x zz = mandatory000 x zz; 247.03/218.01 " 247.03/218.01 "mandatory000 x zz = []; 247.03/218.01 " 247.03/218.01 "mandatory001 True x (yzy : [],u) = (x,u) : []; 247.03/218.01 mandatory001 zuu zuv zuw = mandatory000 zuv zuw; 247.03/218.01 " 247.03/218.01 "mandatory002 x (yzy : yzz,u) = mandatory001 (yzy == ')') x (yzy : yzz,u); 247.03/218.01 mandatory002 zux zuy = mandatory000 zux zuy; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "dropWhile p [] = []; 247.03/218.01 dropWhile p (vuv : vuw)|p vuvdropWhile p vuw|otherwisevuv : vuw; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "dropWhile p [] = dropWhile3 p []; 247.03/218.01 dropWhile p (vuv : vuw) = dropWhile2 p (vuv : vuw); 247.03/218.01 " 247.03/218.01 "dropWhile1 p vuv vuw True = dropWhile p vuw; 247.03/218.01 dropWhile1 p vuv vuw False = dropWhile0 p vuv vuw otherwise; 247.03/218.01 " 247.03/218.01 "dropWhile0 p vuv vuw True = vuv : vuw; 247.03/218.01 " 247.03/218.01 "dropWhile2 p (vuv : vuw) = dropWhile1 p vuv vuw (p vuv); 247.03/218.01 " 247.03/218.01 "dropWhile3 p [] = []; 247.03/218.01 dropWhile3 zvv zvw = dropWhile2 zvv zvw; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lex00 (ch,''' : t) = lex000 ch t (ch /= ''' : []); 247.03/218.01 lex00 vux = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lex00 (ch,zvz : t) = lex003 (ch,zvz : t); 247.03/218.01 lex00 vux = lex001 vux; 247.03/218.01 " 247.03/218.01 "lex001 vux = []; 247.03/218.01 " 247.03/218.01 "lex002 True (ch,zvz : t) = lex000 ch t (ch /= ''' : []); 247.03/218.01 lex002 zwu zwv = lex001 zwv; 247.03/218.01 " 247.03/218.01 "lex003 (ch,zvz : t) = lex002 (zvz == ''') (ch,zvz : t); 247.03/218.01 lex003 zww = lex001 zww; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 247.03/218.01 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 247.03/218.01 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 247.03/218.01 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 247.03/218.01 lexEsc (vuz : vvu)|isDigit vuzspan isDigit (vuz : vvu) : []|isUpper vuzlexEsc2 (concatMap (lexEsc1 (vuz : vvu)) table); 247.03/218.01 lexEsc vvv = []; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexEsc (c : s) = lexEsc16 (c : s); 247.03/218.01 lexEsc (zyy : zzv) = lexEsc14 (zyy : zzv); 247.03/218.01 lexEsc (zxz : s) = lexEsc11 (zxz : s); 247.03/218.01 lexEsc (zxu : s) = lexEsc8 (zxu : s); 247.03/218.01 lexEsc (vuz : vvu) = lexEsc6 (vuz : vvu); 247.03/218.01 lexEsc vvv = lexEsc3 vvv; 247.03/218.01 " 247.03/218.01 "lexEsc3 vvv = []; 247.03/218.01 " 247.03/218.01 "lexEsc5 vuz vvu True = span isDigit (vuz : vvu) : []; 247.03/218.01 lexEsc5 vuz vvu False = lexEsc4 vuz vvu (isUpper vuz); 247.03/218.01 " 247.03/218.01 "lexEsc4 vuz vvu True = lexEsc2 (concatMap (lexEsc1 (vuz : vvu)) table); 247.03/218.01 lexEsc4 vuz vvu False = lexEsc3 (vuz : vvu); 247.03/218.01 " 247.03/218.01 "lexEsc6 (vuz : vvu) = lexEsc5 vuz vvu (isDigit vuz); 247.03/218.01 lexEsc6 zwy = lexEsc3 zwy; 247.03/218.01 " 247.03/218.01 "lexEsc7 True (zxu : s) = prefix 'x' (span isHexDigit s) : []; 247.03/218.01 lexEsc7 zxv zxw = lexEsc6 zxw; 247.03/218.01 " 247.03/218.01 "lexEsc8 (zxu : s) = lexEsc7 (zxu == 'x') (zxu : s); 247.03/218.01 lexEsc8 zxx = lexEsc6 zxx; 247.03/218.01 " 247.03/218.01 "lexEsc9 True (zxz : s) = prefix 'o' (span isOctDigit s) : []; 247.03/218.01 lexEsc9 zyu zyv = lexEsc8 zyv; 247.03/218.01 " 247.03/218.01 "lexEsc11 (zxz : s) = lexEsc9 (zxz == 'o') (zxz : s); 247.03/218.01 lexEsc11 zyw = lexEsc8 zyw; 247.03/218.01 " 247.03/218.01 "lexEsc12 zyy c s True = ('^' : c : [],s) : []; 247.03/218.01 lexEsc12 zyy c s False = lexEsc11 (zyy : c : s); 247.03/218.01 " 247.03/218.01 "lexEsc13 True (zyy : c : s) = lexEsc12 zyy c s (c >= '@' && c <= '_'); 247.03/218.01 lexEsc13 zzw zzx = lexEsc11 zzx; 247.03/218.01 " 247.03/218.01 "lexEsc14 (zyy : zzv) = lexEsc13 (zyy == '^') (zyy : zzv); 247.03/218.01 lexEsc14 zzy = lexEsc11 zzy; 247.03/218.01 " 247.03/218.01 "lexEsc15 c s True = (c : [],s) : []; 247.03/218.01 lexEsc15 c s False = lexEsc14 (c : s); 247.03/218.01 " 247.03/218.01 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 247.03/218.01 lexEsc16 vuuu = lexEsc14 vuuu; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "lexLitChar [] = []; 247.03/218.01 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 247.03/218.01 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 247.03/218.01 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 247.03/218.01 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 247.03/218.01 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 247.03/218.01 lexEsc (vuz : vvu)|isDigit vuzspan isDigit (vuz : vvu) : []|isUpper vuzlexEsc2 (concatMap (lexEsc1 (vuz : vvu)) table); 247.03/218.01 lexEsc vvv = []; 247.03/218.01 ; 247.03/218.01 lexEsc0 mne vu69 = lexEsc00 mne vu69; 247.03/218.01 ; 247.03/218.01 lexEsc00 mne ([],s') = (mne,s') : []; 247.03/218.01 lexEsc00 mne vvx = []; 247.03/218.01 ; 247.03/218.01 lexEsc1 s vu70 = lexEsc10 s vu70; 247.03/218.01 ; 247.03/218.01 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.01 lexEsc10 s vvy = []; 247.03/218.01 ; 247.03/218.01 lexEsc2 (pr : vvw) = pr : []; 247.03/218.01 lexEsc2 [] = []; 247.03/218.01 ; 247.03/218.01 prefix c (t,s) = (c : t,s); 247.03/218.01 ; 247.03/218.01 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "lexLitChar [] = lexLitChar3 []; 247.03/218.01 lexLitChar (c : s) = lexLitChar2 (c : s); 247.03/218.01 " 247.03/218.01 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 247.03/218.01 lexEsc (c : s) = lexEsc16 (c : s); 247.03/218.01 lexEsc (zyy : zzv) = lexEsc14 (zyy : zzv); 247.03/218.01 lexEsc (zxz : s) = lexEsc11 (zxz : s); 247.03/218.01 lexEsc (zxu : s) = lexEsc8 (zxu : s); 247.03/218.01 lexEsc (vuz : vvu) = lexEsc6 (vuz : vvu); 247.03/218.01 lexEsc vvv = lexEsc3 vvv; 247.03/218.01 ; 247.03/218.01 lexEsc0 mne vu69 = lexEsc00 mne vu69; 247.03/218.01 ; 247.03/218.01 lexEsc00 mne ([],s') = (mne,s') : []; 247.03/218.01 lexEsc00 mne vvx = []; 247.03/218.01 ; 247.03/218.01 lexEsc1 s vu70 = lexEsc10 s vu70; 247.03/218.01 ; 247.03/218.01 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.01 lexEsc10 s vvy = []; 247.03/218.01 ; 247.03/218.01 lexEsc11 (zxz : s) = lexEsc9 (zxz == 'o') (zxz : s); 247.03/218.01 lexEsc11 zyw = lexEsc8 zyw; 247.03/218.01 ; 247.03/218.01 lexEsc12 zyy c s True = ('^' : c : [],s) : []; 247.03/218.01 lexEsc12 zyy c s False = lexEsc11 (zyy : c : s); 247.03/218.01 ; 247.03/218.01 lexEsc13 True (zyy : c : s) = lexEsc12 zyy c s (c >= '@' && c <= '_'); 247.03/218.01 lexEsc13 zzw zzx = lexEsc11 zzx; 247.03/218.01 ; 247.03/218.01 lexEsc14 (zyy : zzv) = lexEsc13 (zyy == '^') (zyy : zzv); 247.03/218.01 lexEsc14 zzy = lexEsc11 zzy; 247.03/218.01 ; 247.03/218.01 lexEsc15 c s True = (c : [],s) : []; 247.03/218.01 lexEsc15 c s False = lexEsc14 (c : s); 247.03/218.01 ; 247.03/218.01 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 247.03/218.01 lexEsc16 vuuu = lexEsc14 vuuu; 247.03/218.01 ; 247.03/218.01 lexEsc2 (pr : vvw) = pr : []; 247.03/218.01 lexEsc2 [] = []; 247.03/218.01 ; 247.03/218.01 lexEsc3 vvv = []; 247.03/218.01 ; 247.03/218.01 lexEsc4 vuz vvu True = lexEsc2 (concatMap (lexEsc1 (vuz : vvu)) table); 247.03/218.01 lexEsc4 vuz vvu False = lexEsc3 (vuz : vvu); 247.03/218.01 ; 247.03/218.01 lexEsc5 vuz vvu True = span isDigit (vuz : vvu) : []; 247.03/218.01 lexEsc5 vuz vvu False = lexEsc4 vuz vvu (isUpper vuz); 247.03/218.01 ; 247.03/218.01 lexEsc6 (vuz : vvu) = lexEsc5 vuz vvu (isDigit vuz); 247.03/218.01 lexEsc6 zwy = lexEsc3 zwy; 247.03/218.01 ; 247.03/218.01 lexEsc7 True (zxu : s) = prefix 'x' (span isHexDigit s) : []; 247.03/218.01 lexEsc7 zxv zxw = lexEsc6 zxw; 247.03/218.01 ; 247.03/218.01 lexEsc8 (zxu : s) = lexEsc7 (zxu == 'x') (zxu : s); 247.03/218.01 lexEsc8 zxx = lexEsc6 zxx; 247.03/218.01 ; 247.03/218.01 lexEsc9 True (zxz : s) = prefix 'o' (span isOctDigit s) : []; 247.03/218.01 lexEsc9 zyu zyv = lexEsc8 zyv; 247.03/218.01 ; 247.03/218.01 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 247.03/218.01 ; 247.03/218.01 lexLitChar1 c s True = (c : [],s) : []; 247.03/218.01 lexLitChar1 c s False = lexLitChar0 c s otherwise; 247.03/218.01 ; 247.03/218.01 prefix c (t,s) = (c : t,s); 247.03/218.01 ; 247.03/218.01 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 " 247.03/218.01 "lexLitChar3 [] = []; 247.03/218.01 lexLitChar3 vuux = lexLitChar2 vuux; 247.03/218.01 " 247.03/218.01 The following Function with conditions 247.03/218.01 "span p [] = ([],[]); 247.03/218.01 span p (vvz : vwu)|p vvz(vvz : ys,zs)|otherwise([],vvz : vwu) where { 247.03/218.01 vu43 = span p vwu; 247.03/218.01 ; 247.03/218.01 ys = ys0 vu43; 247.03/218.01 ; 247.03/218.01 ys0 (ys,vww) = ys; 247.03/218.01 ; 247.03/218.01 zs = zs0 vu43; 247.03/218.01 ; 247.03/218.01 zs0 (vwv,zs) = zs; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 " 247.03/218.01 is transformed to 247.03/218.01 "span p [] = span3 p []; 247.03/218.01 span p (vvz : vwu) = span2 p (vvz : vwu); 247.03/218.01 " 247.03/218.01 "span2 p (vvz : vwu) = span1 p vvz vwu (p vvz) where { 247.03/218.01 span0 p vvz vwu True = ([],vvz : vwu); 247.03/218.01 ; 247.03/218.01 span1 p vvz vwu True = (vvz : ys,zs); 247.03/218.01 span1 p vvz vwu False = span0 p vvz vwu otherwise; 247.03/218.01 ; 247.03/218.01 vu43 = span p vwu; 247.03/218.01 ; 247.03/218.01 ys = ys0 vu43; 247.03/218.01 ; 247.03/218.01 ys0 (ys,vww) = ys; 247.03/218.01 ; 247.03/218.01 zs = zs0 vu43; 247.03/218.01 ; 247.03/218.01 zs0 (vwv,zs) = zs; 247.03/218.01 } 247.03/218.01 ; 247.03/218.01 " 247.03/218.01 "span3 p [] = ([],[]); 247.03/218.01 span3 vuvu vuvv = span2 vuvu vuvv; 247.03/218.01 " 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (10) 247.03/218.01 Obligation: 247.03/218.01 mainModule Main 247.03/218.01 module Main where { 247.03/218.01 import qualified Prelude; 247.03/218.01 } 247.03/218.01 247.03/218.01 ---------------------------------------- 247.03/218.01 247.03/218.01 (11) LetRed (EQUIVALENT) 247.03/218.01 Let/Where Reductions: 247.03/218.01 The bindings of the following Let/Where expression 247.03/218.01 "lexLitChar1 c s (c /= '\') where { 247.03/218.01 lexEsc (c : s) = lexEsc16 (c : s); 247.03/218.01 lexEsc (zyy : zzv) = lexEsc14 (zyy : zzv); 247.03/218.01 lexEsc (zxz : s) = lexEsc11 (zxz : s); 247.03/218.01 lexEsc (zxu : s) = lexEsc8 (zxu : s); 247.03/218.01 lexEsc (vuz : vvu) = lexEsc6 (vuz : vvu); 247.03/218.01 lexEsc vvv = lexEsc3 vvv; 247.03/218.01 ; 247.03/218.01 lexEsc0 mne vu69 = lexEsc00 mne vu69; 247.03/218.01 ; 247.03/218.01 lexEsc00 mne ([],s') = (mne,s') : []; 247.03/218.01 lexEsc00 mne vvx = []; 247.03/218.01 ; 247.03/218.01 lexEsc1 s vu70 = lexEsc10 s vu70; 247.03/218.01 ; 247.03/218.01 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 247.03/218.01 lexEsc10 s vvy = []; 247.03/218.01 ; 247.03/218.01 lexEsc11 (zxz : s) = lexEsc9 (zxz == 'o') (zxz : s); 247.03/218.01 lexEsc11 zyw = lexEsc8 zyw; 247.03/218.01 ; 247.03/218.01 lexEsc12 zyy c s True = ('^' : c : [],s) : []; 247.03/218.01 lexEsc12 zyy c s False = lexEsc11 (zyy : c : s); 247.03/218.01 ; 247.03/218.01 lexEsc13 True (zyy : c : s) = lexEsc12 zyy c s (c >= '@' && c <= '_'); 247.03/218.01 lexEsc13 zzw zzx = lexEsc11 zzx; 247.03/218.01 ; 247.03/218.01 lexEsc14 (zyy : zzv) = lexEsc13 (zyy == '^') (zyy : zzv); 247.03/218.01 lexEsc14 zzy = lexEsc11 zzy; 247.03/218.01 ; 247.03/218.01 lexEsc15 c s True = (c : [],s) : []; 247.03/218.01 lexEsc15 c s False = lexEsc14 (c : s); 247.03/218.01 ; 247.03/218.01 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 247.03/218.01 lexEsc16 vuuu = lexEsc14 vuuu; 247.03/218.01 ; 247.03/218.01 lexEsc2 (pr : vvw) = pr : []; 247.03/218.01 lexEsc2 [] = []; 247.03/218.01 ; 247.03/218.01 lexEsc3 vvv = []; 247.03/218.01 ; 247.03/218.01 lexEsc4 vuz vvu True = lexEsc2 (concatMap (lexEsc1 (vuz : vvu)) table); 247.03/218.01 lexEsc4 vuz vvu False = lexEsc3 (vuz : vvu); 247.03/218.01 ; 247.03/218.01 lexEsc5 vuz vvu True = span isDigit (vuz : vvu) : []; 247.03/218.01 lexEsc5 vuz vvu False = lexEsc4 vuz vvu (isUpper vuz); 247.03/218.01 ; 247.03/218.01 lexEsc6 (vuz : vvu) = lexEsc5 vuz vvu (isDigit vuz); 247.03/218.01 lexEsc6 zwy = lexEsc3 zwy; 247.03/218.01 ; 247.03/218.01 lexEsc7 True (zxu : s) = prefix 'x' (span isHexDigit s) : []; 247.03/218.01 lexEsc7 zxv zxw = lexEsc6 zxw; 247.03/218.01 ; 247.03/218.01 lexEsc8 (zxu : s) = lexEsc7 (zxu == 'x') (zxu : s); 247.03/218.01 lexEsc8 zxx = lexEsc6 zxx; 247.03/218.01 ; 247.03/218.01 lexEsc9 True (zxz : s) = prefix 'o' (span isOctDigit s) : []; 247.03/218.01 lexEsc9 zyu zyv = lexEsc8 zyv; 247.03/218.01 ; 247.03/218.01 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 247.03/218.01 ; 247.03/218.01 lexLitChar1 c s True = (c : [],s) : []; 247.03/218.01 lexLitChar1 c s False = lexLitChar0 c s otherwise; 247.03/218.01 ; 247.03/218.01 prefix c (t,s) = (c : t,s); 247.03/218.01 ; 247.03/218.01 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 247.03/218.01 } 247.03/218.01 " 247.03/218.01 are unpacked to the following functions on top level 247.03/218.01 "lexLitChar2LexEsc14 (zyy : zzv) = lexLitChar2LexEsc13 (zyy == '^') (zyy : zzv); 247.03/218.01 lexLitChar2LexEsc14 zzy = lexLitChar2LexEsc11 zzy; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc8 (zxu : s) = lexLitChar2LexEsc7 (zxu == 'x') (zxu : s); 247.03/218.01 lexLitChar2LexEsc8 zxx = lexLitChar2LexEsc6 zxx; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 247.03/218.01 lexLitChar2LexEsc16 vuuu = lexLitChar2LexEsc14 vuuu; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc12 zyy c s True = ('^' : c : [],s) : []; 247.03/218.01 lexLitChar2LexEsc12 zyy c s False = lexLitChar2LexEsc11 (zyy : c : s); 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc4 vuz vvu True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (vuz : vvu)) lexLitChar2Table); 247.03/218.01 lexLitChar2LexEsc4 vuz vvu False = lexLitChar2LexEsc3 (vuz : vvu); 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 247.03/218.01 lexLitChar2LexEsc00 mne vvx = []; 247.03/218.01 " 247.03/218.01 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc6 (vuz : vvu) = lexLitChar2LexEsc5 vuz vvu (isDigit vuz); 247.03/218.01 lexLitChar2LexEsc6 zwy = lexLitChar2LexEsc3 zwy; 247.03/218.01 " 247.03/218.01 "lexLitChar2Prefix c (t,s) = (c : t,s); 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 247.03/218.01 lexLitChar2LexEsc10 s vvy = []; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc5 vuz vvu True = span isDigit (vuz : vvu) : []; 247.03/218.01 lexLitChar2LexEsc5 vuz vvu False = lexLitChar2LexEsc4 vuz vvu (isUpper vuz); 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc9 True (zxz : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 247.03/218.01 lexLitChar2LexEsc9 zyu zyv = lexLitChar2LexEsc8 zyv; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 247.03/218.01 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc2 (pr : vvw) = pr : []; 247.03/218.01 lexLitChar2LexEsc2 [] = []; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc13 True (zyy : c : s) = lexLitChar2LexEsc12 zyy c s (c >= '@' && c <= '_'); 247.03/218.01 lexLitChar2LexEsc13 zzw zzx = lexLitChar2LexEsc11 zzx; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc3 vvv = []; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 247.03/218.01 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc11 (zxz : s) = lexLitChar2LexEsc9 (zxz == 'o') (zxz : s); 247.03/218.01 lexLitChar2LexEsc11 zyw = lexLitChar2LexEsc8 zyw; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 247.03/218.01 lexLitChar2LexEsc (zyy : zzv) = lexLitChar2LexEsc14 (zyy : zzv); 247.03/218.01 lexLitChar2LexEsc (zxz : s) = lexLitChar2LexEsc11 (zxz : s); 247.03/218.01 lexLitChar2LexEsc (zxu : s) = lexLitChar2LexEsc8 (zxu : s); 247.03/218.01 lexLitChar2LexEsc (vuz : vvu) = lexLitChar2LexEsc6 (vuz : vvu); 247.03/218.01 lexLitChar2LexEsc vvv = lexLitChar2LexEsc3 vvv; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc7 True (zxu : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 247.03/218.01 lexLitChar2LexEsc7 zxv zxw = lexLitChar2LexEsc6 zxw; 247.03/218.01 " 247.03/218.01 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 247.03/218.01 " 247.03/218.01 The bindings of the following Let/Where expression 247.03/218.01 "concatMap lex1 (lexString s) where { 247.03/218.01 lex1 vu55 = lex10 vu55; 247.03/218.01 ; 247.03/218.01 lex10 (str,t) = ('"' : str,t) : []; 247.03/218.01 lex10 xv = []; 247.03/218.01 ; 247.03/218.01 lexStrItem (wyy : wzw) = lexStrItem7 (wyy : wzw); 247.03/218.01 lexStrItem (wxw : wxz) = lexStrItem4 (wxw : wxz); 247.03/218.01 lexStrItem s = lexStrItem1 s; 247.03/218.01 ; 247.03/218.01 lexStrItem0 vu58 = lexStrItem00 vu58; 247.03/218.01 ; 247.03/218.01 lexStrItem00 (xux : t) = lexStrItem002 (xux : t); 247.03/218.01 lexStrItem00 xu = lexStrItem000 xu; 247.03/218.01 ; 247.03/218.01 lexStrItem000 xu = []; 247.03/218.01 ; 247.03/218.01 lexStrItem001 True (xux : t) = ([],t) : []; 247.03/218.01 lexStrItem001 xuy xuz = lexStrItem000 xuz; 247.03/218.01 ; 247.03/218.01 lexStrItem002 (xux : t) = lexStrItem001 (xux == '\') (xux : t); 247.03/218.01 lexStrItem002 xvu = lexStrItem000 xvu; 247.03/218.01 ; 247.03/218.01 lexStrItem1 s = lexLitChar s; 247.03/218.01 ; 247.03/218.01 lexStrItem2 wxw c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 247.03/218.01 lexStrItem2 wxw c s False = lexStrItem1 (wxw : c : s); 247.03/218.01 ; 247.03/218.01 lexStrItem3 True (wxw : c : s) = lexStrItem2 wxw c s (isSpace c); 247.03/218.01 lexStrItem3 wyu wyv = lexStrItem1 wyv; 247.03/218.01 ; 247.03/218.01 lexStrItem4 (wxw : wxz) = lexStrItem3 (wxw == '\') (wxw : wxz); 247.03/218.01 lexStrItem4 wyw = lexStrItem1 wyw; 247.03/218.01 ; 247.03/218.01 lexStrItem5 True (wyy : wzu : s) = ('\' : '&' : [],s) : []; 247.03/218.01 lexStrItem5 wzx wzy = lexStrItem4 wzy; 247.03/218.01 ; 247.03/218.01 lexStrItem6 True (wyy : wzu : s) = lexStrItem5 (wzu == '&') (wyy : wzu : s); 247.03/218.01 lexStrItem6 wzz xuu = lexStrItem4 xuu; 247.03/218.01 ; 247.03/218.01 lexStrItem7 (wyy : wzw) = lexStrItem6 (wyy == '\') (wyy : wzw); 247.03/218.01 lexStrItem7 xuv = lexStrItem4 xuv; 247.03/218.01 ; 247.03/218.01 lexString (wwx : s) = lexString4 (wwx : s); 247.03/218.01 lexString s = lexString2 s; 247.03/218.01 ; 247.03/218.01 lexString0 ch vu56 = lexString00 ch vu56; 247.03/218.01 ; 247.03/218.01 lexString00 ch (str,u) = (ch ++ str,u) : []; 247.03/218.01 lexString00 ch wy = []; 247.03/218.01 ; 247.03/218.01 lexString1 vu57 = lexString10 vu57; 247.03/218.01 ; 247.03/218.01 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 247.03/218.01 lexString10 wz = []; 247.03/218.01 ; 247.03/218.01 lexString2 s = concatMap lexString1 (lexStrItem s); 247.03/218.01 ; 247.03/218.01 lexString3 True (wwx : s) = ('"' : [],s) : []; 247.03/218.01 lexString3 wwy wwz = lexString2 wwz; 247.03/218.01 ; 247.03/218.01 lexString4 (wwx : s) = lexString3 (wwx == '"') (wwx : s); 247.03/218.01 lexString4 wxu = lexString2 wxu; 247.03/218.01 } 247.03/218.01 " 247.03/218.01 are unpacked to the following functions on top level 247.03/218.01 "lex13LexStrItem001 True (xux : t) = ([],t) : []; 247.03/218.01 lex13LexStrItem001 xuy xuz = lex13LexStrItem000 xuz; 247.37/218.09 " 247.37/218.09 "lex13LexString0 ch vu56 = lex13LexString00 ch vu56; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem00 (xux : t) = lex13LexStrItem002 (xux : t); 247.37/218.09 lex13LexStrItem00 xu = lex13LexStrItem000 xu; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem (wyy : wzw) = lex13LexStrItem7 (wyy : wzw); 247.37/218.09 lex13LexStrItem (wxw : wxz) = lex13LexStrItem4 (wxw : wxz); 247.37/218.09 lex13LexStrItem s = lex13LexStrItem1 s; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem7 (wyy : wzw) = lex13LexStrItem6 (wyy == '\') (wyy : wzw); 247.37/218.09 lex13LexStrItem7 xuv = lex13LexStrItem4 xuv; 247.37/218.09 " 247.37/218.09 "lex13LexString00 ch (str,u) = (ch ++ str,u) : []; 247.37/218.09 lex13LexString00 ch wy = []; 247.37/218.09 " 247.37/218.09 "lex13Lex1 vu55 = lex13Lex10 vu55; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem2 wxw c s True = concatMap lex13LexStrItem0 (dropWhile isSpace s : []); 247.37/218.09 lex13LexStrItem2 wxw c s False = lex13LexStrItem1 (wxw : c : s); 247.37/218.09 " 247.37/218.09 "lex13LexStrItem002 (xux : t) = lex13LexStrItem001 (xux == '\') (xux : t); 247.37/218.09 lex13LexStrItem002 xvu = lex13LexStrItem000 xvu; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem6 True (wyy : wzu : s) = lex13LexStrItem5 (wzu == '&') (wyy : wzu : s); 247.37/218.09 lex13LexStrItem6 wzz xuu = lex13LexStrItem4 xuu; 247.37/218.09 " 247.37/218.09 "lex13LexString2 s = concatMap lex13LexString1 (lex13LexStrItem s); 247.37/218.09 " 247.37/218.09 "lex13LexString (wwx : s) = lex13LexString4 (wwx : s); 247.37/218.09 lex13LexString s = lex13LexString2 s; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem1 s = lexLitChar s; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem000 xu = []; 247.37/218.09 " 247.37/218.09 "lex13LexString1 vu57 = lex13LexString10 vu57; 247.37/218.09 " 247.37/218.09 "lex13LexString10 (ch,t) = concatMap (lex13LexString0 ch) (lex13LexString t); 247.37/218.09 lex13LexString10 wz = []; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem5 True (wyy : wzu : s) = ('\' : '&' : [],s) : []; 247.37/218.09 lex13LexStrItem5 wzx wzy = lex13LexStrItem4 wzy; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem0 vu58 = lex13LexStrItem00 vu58; 247.37/218.09 " 247.37/218.09 "lex13LexString4 (wwx : s) = lex13LexString3 (wwx == '"') (wwx : s); 247.37/218.09 lex13LexString4 wxu = lex13LexString2 wxu; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem3 True (wxw : c : s) = lex13LexStrItem2 wxw c s (isSpace c); 247.37/218.09 lex13LexStrItem3 wyu wyv = lex13LexStrItem1 wyv; 247.37/218.09 " 247.37/218.09 "lex13LexStrItem4 (wxw : wxz) = lex13LexStrItem3 (wxw == '\') (wxw : wxz); 247.37/218.09 lex13LexStrItem4 wyw = lex13LexStrItem1 wyw; 247.37/218.09 " 247.37/218.09 "lex13Lex10 (str,t) = ('"' : str,t) : []; 247.37/218.09 lex13Lex10 xv = []; 247.37/218.09 " 247.37/218.09 "lex13LexString3 True (wwx : s) = ('"' : [],s) : []; 247.37/218.09 lex13LexString3 wwy wwz = lex13LexString2 wwz; 247.37/218.09 " 247.37/218.09 The bindings of the following Let/Where expression 247.37/218.09 "span1 p vvz vwu (p vvz) where { 247.37/218.09 span0 p vvz vwu True = ([],vvz : vwu); 247.37/218.09 ; 247.37/218.09 span1 p vvz vwu True = (vvz : ys,zs); 247.37/218.09 span1 p vvz vwu False = span0 p vvz vwu otherwise; 247.37/218.09 ; 247.37/218.09 vu43 = span p vwu; 247.37/218.09 ; 247.37/218.09 ys = ys0 vu43; 247.37/218.09 ; 247.37/218.09 ys0 (ys,vww) = ys; 247.37/218.09 ; 247.37/218.09 zs = zs0 vu43; 247.37/218.09 ; 247.37/218.09 zs0 (vwv,zs) = zs; 247.37/218.09 } 247.37/218.09 " 247.37/218.09 are unpacked to the following functions on top level 247.37/218.09 "span2Span0 vuvw vuvx p vvz vwu True = ([],vvz : vwu); 247.37/218.09 " 247.37/218.09 "span2Vu43 vuvw vuvx = span vuvw vuvx; 247.37/218.09 " 247.37/218.09 "span2Ys vuvw vuvx = span2Ys0 vuvw vuvx (span2Vu43 vuvw vuvx); 247.37/218.09 " 247.37/218.09 "span2Zs vuvw vuvx = span2Zs0 vuvw vuvx (span2Vu43 vuvw vuvx); 247.37/218.09 " 247.37/218.09 "span2Zs0 vuvw vuvx (vwv,zs) = zs; 247.37/218.09 " 247.37/218.09 "span2Ys0 vuvw vuvx (ys,vww) = ys; 247.37/218.09 " 247.37/218.09 "span2Span1 vuvw vuvx p vvz vwu True = (vvz : span2Ys vuvw vuvx,span2Zs vuvw vuvx); 247.37/218.09 span2Span1 vuvw vuvx p vvz vwu False = span2Span0 vuvw vuvx p vvz vwu otherwise; 247.37/218.09 " 247.37/218.09 The bindings of the following Let/Where expression 247.37/218.09 "lex11 c s (isSingle c) where { 247.37/218.09 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 247.37/218.09 ; 247.37/218.09 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 247.37/218.09 ; 247.37/218.09 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 247.37/218.09 ; 247.37/218.09 lex11 c s True = (c : [],s) : []; 247.37/218.09 lex11 c s False = lex9 c s (isSym c); 247.37/218.09 ; 247.37/218.09 lex2 c vu59 = lex20 c vu59; 247.37/218.09 ; 247.37/218.09 lex20 c (sym,t) = (c : sym,t) : []; 247.37/218.09 lex20 c yx = []; 247.37/218.09 ; 247.37/218.09 lex3 c vu60 = lex30 c vu60; 247.37/218.09 ; 247.37/218.09 lex30 c (nam,t) = (c : nam,t) : []; 247.37/218.09 lex30 c yy = []; 247.37/218.09 ; 247.37/218.09 lex4 c ds vu61 = lex40 c ds vu61; 247.37/218.09 ; 247.37/218.09 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 247.37/218.09 lex40 c ds yv = []; 247.37/218.09 ; 247.37/218.09 lex5 c vu62 = lex50 c vu62; 247.37/218.09 ; 247.37/218.09 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 247.37/218.09 lex50 c yw = []; 247.37/218.09 ; 247.37/218.09 lex6 c s True = []; 247.37/218.09 ; 247.37/218.09 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 247.37/218.09 lex7 c s False = lex6 c s otherwise; 247.37/218.09 ; 247.37/218.09 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 247.37/218.09 lex8 c s False = lex7 c s (isDigit c); 247.37/218.09 ; 247.37/218.09 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 247.37/218.09 lex9 c s False = lex8 c s (isAlpha c); 247.37/218.09 ; 247.37/218.09 lexExp (e : s) = lexExp5 (e : s); 247.37/218.09 lexExp s = lexExp3 s; 247.37/218.09 ; 247.37/218.09 lexExp0 e c vu65 = lexExp00 e c vu65; 247.37/218.09 ; 247.37/218.09 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 247.37/218.09 lexExp00 e c xw = []; 247.37/218.09 ; 247.37/218.09 lexExp1 e vu66 = lexExp10 e vu66; 247.37/218.09 ; 247.37/218.09 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 247.37/218.09 lexExp10 e xy = []; 247.37/218.09 ; 247.37/218.09 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 247.37/218.09 lexExp100 e c t False = []; 247.37/218.09 ; 247.37/218.09 lexExp2 e vu67 = lexExp20 e vu67; 247.37/218.09 ; 247.37/218.09 lexExp20 e (ds,t) = (e : ds,t) : []; 247.37/218.09 lexExp20 e xx = []; 247.37/218.09 ; 247.37/218.09 lexExp3 s = ([],s) : []; 247.37/218.09 ; 247.37/218.09 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 247.37/218.09 lexExp4 e s False = lexExp3 (e : s); 247.37/218.09 ; 247.37/218.09 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 247.37/218.09 lexExp5 xvw = lexExp3 xvw; 247.37/218.09 ; 247.37/218.09 lexFracExp (xvy : xwv) = lexFracExp5 (xvy : xwv); 247.37/218.09 lexFracExp s = lexFracExp2 s; 247.37/218.09 ; 247.37/218.09 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 247.37/218.09 ; 247.37/218.09 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 247.37/218.09 lexFracExp00 ds yu = []; 247.37/218.09 ; 247.37/218.09 lexFracExp1 vu64 = lexFracExp10 vu64; 247.37/218.09 ; 247.37/218.09 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 247.37/218.09 lexFracExp10 xz = []; 247.37/218.09 ; 247.37/218.09 lexFracExp2 s = lexExp s; 247.37/218.09 ; 247.37/218.09 lexFracExp3 xvy c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 247.37/218.09 lexFracExp3 xvy c cs False = lexFracExp2 (xvy : c : cs); 247.37/218.09 ; 247.37/218.09 lexFracExp4 True (xvy : c : cs) = lexFracExp3 xvy c cs (isDigit c); 247.37/218.09 lexFracExp4 xww xwx = lexFracExp2 xwx; 247.37/218.09 ; 247.37/218.09 lexFracExp5 (xvy : xwv) = lexFracExp4 (xvy == '.') (xvy : xwv); 247.37/218.09 lexFracExp5 xwy = lexFracExp2 xwy; 247.37/218.09 } 247.37/218.09 " 247.37/218.09 are unpacked to the following functions on top level 247.37/218.09 "lex12LexExp5 (e : s) = lex12LexExp4 e s (e `elem` 'e' : 'E' : []); 247.37/218.09 lex12LexExp5 xvw = lex12LexExp3 xvw; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp0 ds vu63 = lex12LexFracExp00 ds vu63; 247.37/218.09 " 247.37/218.09 "lex12Lex30 c (nam,t) = (c : nam,t) : []; 247.37/218.09 lex12Lex30 c yy = []; 247.37/218.09 " 247.37/218.09 "lex12Lex4 c ds vu61 = lex12Lex40 c ds vu61; 247.37/218.09 " 247.37/218.09 "lex12Lex11 c s True = (c : [],s) : []; 247.37/218.09 lex12Lex11 c s False = lex12Lex9 c s (lex12IsSym c); 247.37/218.09 " 247.37/218.09 "lex12LexFracExp3 xvy c cs True = concatMap lex12LexFracExp1 (lexDigits (c : cs)); 247.37/218.09 lex12LexFracExp3 xvy c cs False = lex12LexFracExp2 (xvy : c : cs); 247.37/218.09 " 247.37/218.09 "lex12LexExp100 e c t True = concatMap (lex12LexExp0 e c) (lexDigits t); 247.37/218.09 lex12LexExp100 e c t False = []; 247.37/218.09 " 247.37/218.09 "lex12LexExp20 e (ds,t) = (e : ds,t) : []; 247.37/218.09 lex12LexExp20 e xx = []; 247.37/218.09 " 247.37/218.09 "lex12LexExp (e : s) = lex12LexExp5 (e : s); 247.37/218.09 lex12LexExp s = lex12LexExp3 s; 247.37/218.09 " 247.37/218.09 "lex12LexExp10 e (c : t) = lex12LexExp100 e c t (c `elem` '+' : '-' : []); 247.37/218.09 lex12LexExp10 e xy = []; 247.37/218.09 " 247.37/218.09 "lex12LexExp0 e c vu65 = lex12LexExp00 e c vu65; 247.37/218.09 " 247.37/218.09 "lex12Lex9 c s True = concatMap (lex12Lex2 c) (span lex12IsSym s : []); 247.37/218.09 lex12Lex9 c s False = lex12Lex8 c s (isAlpha c); 247.37/218.09 " 247.37/218.09 "lex12IsIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 247.37/218.09 " 247.37/218.09 "lex12Lex5 c vu62 = lex12Lex50 c vu62; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp10 (ds,t) = concatMap (lex12LexFracExp0 ds) (lex12LexExp t); 247.37/218.09 lex12LexFracExp10 xz = []; 247.37/218.09 " 247.37/218.09 "lex12Lex7 c s True = concatMap (lex12Lex5 c) (span isDigit s : []); 247.37/218.09 lex12Lex7 c s False = lex12Lex6 c s otherwise; 247.37/218.09 " 247.37/218.09 "lex12Lex50 c (ds,s) = concatMap (lex12Lex4 c ds) (lex12LexFracExp s); 247.37/218.09 lex12Lex50 c yw = []; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp1 vu64 = lex12LexFracExp10 vu64; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 247.37/218.09 lex12LexFracExp00 ds yu = []; 247.37/218.09 " 247.37/218.09 "lex12Lex8 c s True = concatMap (lex12Lex3 c) (span lex12IsIdChar s : []); 247.37/218.09 lex12Lex8 c s False = lex12Lex7 c s (isDigit c); 247.37/218.09 " 247.37/218.09 "lex12LexExp00 e c (ds,u) = (e : c : ds,u) : []; 247.37/218.09 lex12LexExp00 e c xw = []; 247.37/218.09 " 247.37/218.09 "lex12LexExp3 s = ([],s) : []; 247.37/218.09 " 247.37/218.09 "lex12Lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 247.37/218.09 lex12Lex40 c ds yv = []; 247.37/218.09 " 247.37/218.09 "lex12Lex6 c s True = []; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp4 True (xvy : c : cs) = lex12LexFracExp3 xvy c cs (isDigit c); 247.37/218.09 lex12LexFracExp4 xww xwx = lex12LexFracExp2 xwx; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp5 (xvy : xwv) = lex12LexFracExp4 (xvy == '.') (xvy : xwv); 247.37/218.09 lex12LexFracExp5 xwy = lex12LexFracExp2 xwy; 247.37/218.09 " 247.37/218.09 "lex12Lex3 c vu60 = lex12Lex30 c vu60; 247.37/218.09 " 247.37/218.09 "lex12LexExp4 e s True = concatMap (lex12LexExp1 e) (s : []) ++ concatMap (lex12LexExp2 e) (lexDigits s); 247.37/218.09 lex12LexExp4 e s False = lex12LexExp3 (e : s); 247.37/218.09 " 247.37/218.09 "lex12Lex2 c vu59 = lex12Lex20 c vu59; 247.37/218.09 " 247.37/218.09 "lex12IsSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 247.37/218.09 " 247.37/218.09 "lex12LexExp1 e vu66 = lex12LexExp10 e vu66; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp2 s = lex12LexExp s; 247.37/218.09 " 247.37/218.09 "lex12LexExp2 e vu67 = lex12LexExp20 e vu67; 247.37/218.09 " 247.37/218.09 "lex12LexFracExp (xvy : xwv) = lex12LexFracExp5 (xvy : xwv); 247.37/218.09 lex12LexFracExp s = lex12LexFracExp2 s; 247.37/218.09 " 247.37/218.09 "lex12IsSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 247.37/218.09 " 247.37/218.09 "lex12Lex20 c (sym,t) = (c : sym,t) : []; 247.37/218.09 lex12Lex20 c yx = []; 247.37/218.09 " 247.37/218.09 The bindings of the following Let/Where expression 247.37/218.09 "readParen0 b where { 247.37/218.09 mandatory r = concatMap mandatory2 (lex r); 247.37/218.09 ; 247.37/218.09 mandatory0 x vu48 = mandatory00 x vu48; 247.37/218.09 ; 247.37/218.09 mandatory00 x (yzy : yzz,u) = mandatory002 x (yzy : yzz,u); 247.37/218.09 mandatory00 x zz = mandatory000 x zz; 247.37/218.09 ; 247.37/218.09 mandatory000 x zz = []; 247.37/218.09 ; 247.37/218.09 mandatory001 True x (yzy : [],u) = (x,u) : []; 247.37/218.09 mandatory001 zuu zuv zuw = mandatory000 zuv zuw; 247.37/218.09 ; 247.37/218.09 mandatory002 x (yzy : yzz,u) = mandatory001 (yzy == ')') x (yzy : yzz,u); 247.37/218.09 mandatory002 zux zuy = mandatory000 zux zuy; 247.37/218.09 ; 247.37/218.09 mandatory1 vu49 = mandatory10 vu49; 247.37/218.09 ; 247.37/218.09 mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 247.37/218.09 mandatory10 vuu = []; 247.37/218.09 ; 247.37/218.09 mandatory2 vu50 = mandatory20 vu50; 247.37/218.09 ; 247.37/218.09 mandatory20 (yyx : yyy,s) = mandatory202 (yyx : yyy,s); 247.37/218.10 mandatory20 zy = mandatory200 zy; 247.37/218.10 ; 247.37/218.10 mandatory200 zy = []; 247.37/218.10 ; 247.37/218.10 mandatory201 True (yyx : [],s) = concatMap mandatory1 (optional s); 247.37/218.10 mandatory201 yyz yzu = mandatory200 yzu; 247.37/218.10 ; 247.37/218.10 mandatory202 (yyx : yyy,s) = mandatory201 (yyx == '(') (yyx : yyy,s); 247.37/218.10 mandatory202 yzv = mandatory200 yzv; 247.37/218.10 ; 247.37/218.10 optional r = g r ++ mandatory r; 247.37/218.10 ; 247.37/218.10 readParen0 True = mandatory; 247.37/218.10 readParen0 False = optional; 247.37/218.10 } 247.37/218.10 " 247.37/218.10 are unpacked to the following functions on top level 247.37/218.10 "readParenMandatory0 vuvy x vu48 = readParenMandatory00 vuvy x vu48; 247.37/218.10 " 247.37/218.10 "readParenMandatory1 vuvy vu49 = readParenMandatory10 vuvy vu49; 247.37/218.10 " 247.37/218.10 "readParenMandatory202 vuvy (yyx : yyy,s) = readParenMandatory201 vuvy (yyx == '(') (yyx : yyy,s); 247.37/218.10 readParenMandatory202 vuvy yzv = readParenMandatory200 vuvy yzv; 247.37/218.10 " 247.37/218.10 "readParenMandatory10 vuvy (x,t) = concatMap (readParenMandatory0 vuvy x) (lex t); 247.37/218.10 readParenMandatory10 vuvy vuu = []; 247.37/218.10 " 247.37/218.10 "readParenMandatory002 vuvy x (yzy : yzz,u) = readParenMandatory001 vuvy (yzy == ')') x (yzy : yzz,u); 247.37/218.10 readParenMandatory002 vuvy zux zuy = readParenMandatory000 vuvy zux zuy; 247.37/218.10 " 247.37/218.10 "readParenReadParen0 vuvy True = readParenMandatory vuvy; 247.37/218.10 readParenReadParen0 vuvy False = readParenOptional vuvy; 247.37/218.10 " 247.37/218.10 "readParenMandatory00 vuvy x (yzy : yzz,u) = readParenMandatory002 vuvy x (yzy : yzz,u); 247.37/218.10 readParenMandatory00 vuvy x zz = readParenMandatory000 vuvy x zz; 247.37/218.10 " 247.37/218.10 "readParenMandatory201 vuvy True (yyx : [],s) = concatMap (readParenMandatory1 vuvy) (readParenOptional vuvy s); 247.37/218.10 readParenMandatory201 vuvy yyz yzu = readParenMandatory200 vuvy yzu; 247.37/218.10 " 247.37/218.10 "readParenOptional vuvy r = vuvy r ++ readParenMandatory vuvy r; 247.37/218.10 " 247.37/218.10 "readParenMandatory000 vuvy x zz = []; 247.37/218.10 " 247.37/218.10 "readParenMandatory2 vuvy vu50 = readParenMandatory20 vuvy vu50; 247.37/218.10 " 247.37/218.10 "readParenMandatory200 vuvy zy = []; 247.37/218.10 " 247.37/218.10 "readParenMandatory20 vuvy (yyx : yyy,s) = readParenMandatory202 vuvy (yyx : yyy,s); 247.37/218.10 readParenMandatory20 vuvy zy = readParenMandatory200 vuvy zy; 247.37/218.10 " 247.37/218.10 "readParenMandatory vuvy r = concatMap (readParenMandatory2 vuvy) (lex r); 247.37/218.10 " 247.37/218.10 "readParenMandatory001 vuvy True x (yzy : [],u) = (x,u) : []; 247.37/218.10 readParenMandatory001 vuvy zuu zuv zuw = readParenMandatory000 vuvy zuv zuw; 247.37/218.10 " 247.37/218.10 247.37/218.10 ---------------------------------------- 247.37/218.10 247.37/218.10 (12) 247.37/218.10 Obligation: 247.37/218.10 mainModule Main 247.37/218.10 module Main where { 247.37/218.10 import qualified Prelude; 247.37/218.10 } 247.37/218.10 247.37/218.10 ---------------------------------------- 247.37/218.10 247.37/218.10 (13) NumRed (SOUND) 247.37/218.10 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 247.37/218.10 ---------------------------------------- 247.37/218.10 247.37/218.10 (14) 247.37/218.10 Obligation: 247.37/218.10 mainModule Main 247.37/218.10 module Main where { 247.37/218.10 import qualified Prelude; 247.37/218.10 } 247.50/218.14 EOF