226.12/198.30 MAYBE 228.01/198.89 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 228.01/198.89 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 228.01/198.89 228.01/198.89 228.01/198.89 H-Termination with start terms of the given HASKELL could not be shown: 228.01/198.89 228.01/198.89 (0) HASKELL 228.01/198.89 (1) LR [EQUIVALENT, 0 ms] 228.01/198.89 (2) HASKELL 228.01/198.89 (3) CR [EQUIVALENT, 0 ms] 228.01/198.89 (4) HASKELL 228.01/198.89 (5) IFR [EQUIVALENT, 19 ms] 228.01/198.89 (6) HASKELL 228.01/198.89 (7) BR [EQUIVALENT, 0 ms] 228.01/198.89 (8) HASKELL 228.01/198.89 (9) COR [EQUIVALENT, 20 ms] 228.01/198.89 (10) HASKELL 228.01/198.89 (11) LetRed [EQUIVALENT, 55 ms] 228.01/198.89 (12) HASKELL 228.01/198.89 (13) NumRed [SOUND, 0 ms] 228.01/198.89 (14) HASKELL 228.01/198.89 228.01/198.89 228.01/198.89 ---------------------------------------- 228.01/198.89 228.01/198.89 (0) 228.01/198.89 Obligation: 228.01/198.89 mainModule Main 228.01/198.89 module Main where { 228.01/198.89 import qualified Prelude; 228.01/198.89 } 228.01/198.89 228.01/198.89 ---------------------------------------- 228.01/198.89 228.01/198.89 (1) LR (EQUIVALENT) 228.01/198.89 Lambda Reductions: 228.01/198.89 The following Lambda expression 228.01/198.89 "\nd->n * radix + d" 228.01/198.89 is transformed to 228.01/198.89 "readInt0 radix n d = n * radix + d; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu77->case vu77 of { 228.01/198.89 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "readInt1 radix digToInt vu77 = case vu77 of { 228.01/198.89 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu54->case vu54 of { 228.01/198.89 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lex0 vu54 = case vu54 of { 228.01/198.89 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu56->case vu56 of { 228.01/198.89 (str,u) -> (ch ++ str,u) : []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexString0 ch vu56 = case vu56 of { 228.01/198.89 (str,u) -> (ch ++ str,u) : []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu57->case vu57 of { 228.01/198.89 (ch,t) -> concatMap (lexString0 ch) (lexString t); 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexString1 vu57 = case vu57 of { 228.01/198.89 (ch,t) -> concatMap (lexString0 ch) (lexString t); 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu58->case vu58 of { 228.01/198.89 '\' : t -> ([],t) : []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexStrItem0 vu58 = case vu58 of { 228.01/198.89 '\' : t -> ([],t) : []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu55->case vu55 of { 228.01/198.89 (str,t) -> ('"' : str,t) : []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lex1 vu55 = case vu55 of { 228.01/198.89 (str,t) -> ('"' : str,t) : []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu63->case vu63 of { 228.01/198.89 (e,u) -> ('.' : ds ++ e,u) : []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexFracExp0 ds vu63 = case vu63 of { 228.01/198.89 (e,u) -> ('.' : ds ++ e,u) : []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu64->case vu64 of { 228.01/198.89 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexFracExp1 vu64 = case vu64 of { 228.01/198.89 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu65->case vu65 of { 228.01/198.89 (ds,u) -> (e : c : ds,u) : []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexExp0 e c vu65 = case vu65 of { 228.01/198.89 (ds,u) -> (e : c : ds,u) : []; 228.01/198.89 _ -> []} 228.01/198.89 ; 228.01/198.89 " 228.01/198.89 The following Lambda expression 228.01/198.89 "\vu66->case vu66 of { 228.01/198.89 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 228.01/198.89 _ -> []} 228.01/198.89 " 228.01/198.89 is transformed to 228.01/198.89 "lexExp1 e vu66 = case vu66 of { 228.01/198.90 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu67->case vu67 of { 228.01/198.90 (ds,t) -> (e : ds,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexExp2 e vu67 = case vu67 of { 228.01/198.90 (ds,t) -> (e : ds,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu59->case vu59 of { 228.01/198.90 (sym,t) -> (c : sym,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex2 c vu59 = case vu59 of { 228.01/198.90 (sym,t) -> (c : sym,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu60->case vu60 of { 228.01/198.90 (nam,t) -> (c : nam,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex3 c vu60 = case vu60 of { 228.01/198.90 (nam,t) -> (c : nam,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu61->case vu61 of { 228.01/198.90 (fe,t) -> (c : ds ++ fe,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex4 c ds vu61 = case vu61 of { 228.01/198.90 (fe,t) -> (c : ds ++ fe,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu62->case vu62 of { 228.01/198.90 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex5 c vu62 = case vu62 of { 228.01/198.90 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\ab->(a,b)" 228.01/198.90 is transformed to 228.01/198.90 "zip0 a b = (a,b); 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu68->case vu68 of { 228.01/198.90 (cs@(_ : _),t) -> (cs,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "nonnull0 vu68 = case vu68 of { 228.01/198.90 (cs@(_ : _),t) -> (cs,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu88->case vu88 of { 228.01/198.90 (k,t) -> (`negate` k,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readExp'0 vu88 = case vu88 of { 228.01/198.90 (k,t) -> (`negate` k,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu86->case vu86 of { 228.01/198.90 (ds',t) -> (read (ds ++ ds'),length ds',t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFix0 ds vu86 = case vu86 of { 228.01/198.90 (ds',t) -> (read (ds ++ ds'),length ds',t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu87->case vu87 of { 228.01/198.90 (ds,d) -> concatMap (readFix0 ds) (lexFrac d); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFix1 vu87 = case vu87 of { 228.01/198.90 (ds,d) -> concatMap (readFix0 ds) (lexFrac d); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu82->case vu82 of { 228.01/198.90 (k,t) -> (fromRational (n % 1 * 10 ^^ (k - d)),t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat0 n d vu82 = case vu82 of { 228.01/198.90 (k,t) -> (fromRational (n % 1 * 10 ^^ (k - d)),t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu83->case vu83 of { 228.01/198.90 (n,d,s) -> concatMap (readFloat0 n d) (readExp s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat1 vu83 = case vu83 of { 228.01/198.90 (n,d,s) -> concatMap (readFloat0 n d) (readExp s); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu84->case vu84 of { 228.01/198.90 ('N' : 'a' : 'N' : [],t) -> (0 / 0,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat2 vu84 = case vu84 of { 228.01/198.90 ('N' : 'a' : 'N' : [],t) -> (0 / 0,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu85->case vu85 of { 228.01/198.90 ('I' : 'n' : 'f' : 'i' : 'n' : 'i' : 't' : 'y' : [],t) -> (1 / 0,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat3 vu85 = case vu85 of { 228.01/198.90 ('I' : 'n' : 'f' : 'i' : 'n' : 'i' : 't' : 'y' : [],t) -> (1 / 0,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\(_,zs)->zs" 228.01/198.90 is transformed to 228.01/198.90 "zs0 (_,zs) = zs; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\(ys,_)->ys" 228.01/198.90 is transformed to 228.01/198.90 "ys0 (ys,_) = ys; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu46->case vu46 of { 228.01/198.90 ([],[]) -> x : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read0 x vu46 = case vu46 of { 228.01/198.90 ([],[]) -> x : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu47->case vu47 of { 228.01/198.90 (x,t) -> concatMap (read0 x) (lex t); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read1 vu47 = case vu47 of { 228.01/198.90 (x,t) -> concatMap (read0 x) (lex t); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu48->case vu48 of { 228.01/198.90 (')' : [],u) -> (x,u) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "mandatory0 x vu48 = case vu48 of { 228.01/198.90 (')' : [],u) -> (x,u) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu49->case vu49 of { 228.01/198.90 (x,t) -> concatMap (mandatory0 x) (lex t); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "mandatory1 vu49 = case vu49 of { 228.01/198.90 (x,t) -> concatMap (mandatory0 x) (lex t); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu50->case vu50 of { 228.01/198.90 ('(' : [],s) -> concatMap mandatory1 (optional s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "mandatory2 vu50 = case vu50 of { 228.01/198.90 ('(' : [],s) -> concatMap mandatory1 (optional s); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu80->case vu80 of { 228.01/198.90 (n,[]) -> (n,s) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read''0 s vu80 = case vu80 of { 228.01/198.90 (n,[]) -> (n,s) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu81->case vu81 of { 228.01/198.90 (str,s) -> concatMap (read''0 s) (readPos str); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read''1 readPos vu81 = case vu81 of { 228.01/198.90 (str,s) -> concatMap (read''0 s) (readPos str); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu78->case vu78 of { 228.01/198.90 (x,t) -> (`negate` x,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read'0 vu78 = case vu78 of { 228.01/198.90 (x,t) -> (`negate` x,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu79->case vu79 of { 228.01/198.90 ('-' : [],s) -> concatMap read'0 (read'' s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read'1 vu79 = case vu79 of { 228.01/198.90 ('-' : [],s) -> concatMap read'0 (read'' s); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\n_->n + 1" 228.01/198.90 is transformed to 228.01/198.90 "length0 n _ = n + 1; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\d->fromEnum d - fromEnum_0" 228.01/198.90 is transformed to 228.01/198.90 "readDec0 d = fromEnum d - fromEnum_0; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu69->case vu69 of { 228.01/198.90 ([],s') -> (mne,s') : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexEsc0 mne vu69 = case vu69 of { 228.01/198.90 ([],s') -> (mne,s') : []; 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Lambda expression 228.01/198.90 "\vu70->case vu70 of { 228.01/198.90 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexEsc1 s vu70 = case vu70 of { 228.01/198.90 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.01/198.90 _ -> []} 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (2) 228.01/198.90 Obligation: 228.01/198.90 mainModule Main 228.01/198.90 module Main where { 228.01/198.90 import qualified Prelude; 228.01/198.90 } 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (3) CR (EQUIVALENT) 228.01/198.90 Case Reductions: 228.01/198.90 The following Case expression 228.01/198.90 "case vu55 of { 228.01/198.90 (str,t) -> ('"' : str,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex10 (str,t) = ('"' : str,t) : []; 228.01/198.90 lex10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu57 of { 228.01/198.90 (ch,t) -> concatMap (lexString0 ch) (lexString t); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 228.01/198.90 lexString10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu56 of { 228.01/198.90 (str,u) -> (ch ++ str,u) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexString00 ch (str,u) = (ch ++ str,u) : []; 228.01/198.90 lexString00 ch _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu58 of { 228.01/198.90 '\' : t -> ([],t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexStrItem00 ('\' : t) = ([],t) : []; 228.01/198.90 lexStrItem00 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu59 of { 228.01/198.90 (sym,t) -> (c : sym,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex20 c (sym,t) = (c : sym,t) : []; 228.01/198.90 lex20 c _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu67 of { 228.01/198.90 (ds,t) -> (e : ds,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexExp20 e (ds,t) = (e : ds,t) : []; 228.01/198.90 lexExp20 e _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu65 of { 228.01/198.90 (ds,u) -> (e : c : ds,u) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexExp00 e c (ds,u) = (e : c : ds,u) : []; 228.01/198.90 lexExp00 e c _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu62 of { 228.01/198.90 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 228.01/198.90 lex50 c _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu66 of { 228.01/198.90 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexExp10 e (c : t) = if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 228.01/198.90 lexExp10 e _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu60 of { 228.01/198.90 (nam,t) -> (c : nam,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex30 c (nam,t) = (c : nam,t) : []; 228.01/198.90 lex30 c _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu61 of { 228.01/198.90 (fe,t) -> (c : ds ++ fe,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 228.01/198.90 lex40 c ds _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu63 of { 228.01/198.90 (e,u) -> ('.' : ds ++ e,u) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 228.01/198.90 lexFracExp00 ds _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu64 of { 228.01/198.90 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 228.01/198.90 lexFracExp10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu47 of { 228.01/198.90 (x,t) -> concatMap (read0 x) (lex t); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read10 (x,t) = concatMap (read0 x) (lex t); 228.01/198.90 read10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu46 of { 228.01/198.90 ([],[]) -> x : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read00 x ([],[]) = x : []; 228.01/198.90 read00 x _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu68 of { 228.01/198.90 (cs@(_ : _),t) -> (cs,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 228.01/198.90 nonnull00 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu84 of { 228.01/198.90 ('N' : 'a' : 'N' : [],t) -> (0 / 0,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat20 ('N' : 'a' : 'N' : [],t) = (0 / 0,t) : []; 228.01/198.90 readFloat20 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu85 of { 228.01/198.90 ('I' : 'n' : 'f' : 'i' : 'n' : 'i' : 't' : 'y' : [],t) -> (1 / 0,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat30 ('I' : 'n' : 'f' : 'i' : 'n' : 'i' : 't' : 'y' : [],t) = (1 / 0,t) : []; 228.01/198.90 readFloat30 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu82 of { 228.01/198.90 (k,t) -> (fromRational (n % 1 * 10 ^^ (k - d)),t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat00 n d (k,t) = (fromRational (n % 1 * 10 ^^ (k - d)),t) : []; 228.01/198.90 readFloat00 n d _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu88 of { 228.01/198.90 (k,t) -> (`negate` k,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readExp'00 (k,t) = (`negate` k,t) : []; 228.01/198.90 readExp'00 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu86 of { 228.01/198.90 (ds',t) -> (read (ds ++ ds'),length ds',t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFix00 ds (ds',t) = (read (ds ++ ds'),length ds',t) : []; 228.01/198.90 readFix00 ds _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu83 of { 228.01/198.90 (n,d,s) -> concatMap (readFloat0 n d) (readExp s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFloat10 (n,d,s) = concatMap (readFloat0 n d) (readExp s); 228.01/198.90 readFloat10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu87 of { 228.01/198.90 (ds,d) -> concatMap (readFix0 ds) (lexFrac d); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readFix10 (ds,d) = concatMap (readFix0 ds) (lexFrac d); 228.01/198.90 readFix10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu77 of { 228.01/198.90 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readInt10 radix digToInt (ds,r) = (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 228.01/198.90 readInt10 radix digToInt _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case concatMap read1 (reads s) of { 228.01/198.90 x : [] -> x; 228.01/198.90 [] -> error []; 228.01/198.90 _ -> error []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read2 (x : []) = x; 228.01/198.90 read2 [] = error []; 228.01/198.90 read2 _ = error []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu54 of { 228.01/198.90 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex00 (ch,''' : t) = if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 228.01/198.90 lex00 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu48 of { 228.01/198.90 (')' : [],u) -> (x,u) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "mandatory00 x (')' : [],u) = (x,u) : []; 228.01/198.90 mandatory00 x _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu49 of { 228.01/198.90 (x,t) -> concatMap (mandatory0 x) (lex t); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 228.01/198.90 mandatory10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu50 of { 228.01/198.90 ('(' : [],s) -> concatMap mandatory1 (optional s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 228.01/198.90 mandatory20 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu79 of { 228.01/198.90 ('-' : [],s) -> concatMap read'0 (read'' s); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read'10 ('-' : [],s) = concatMap read'0 (read'' s); 228.01/198.90 read'10 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu78 of { 228.01/198.90 (x,t) -> (`negate` x,t) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read'00 (x,t) = (`negate` x,t) : []; 228.01/198.90 read'00 _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu80 of { 228.01/198.90 (n,[]) -> (n,s) : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read''00 s (n,[]) = (n,s) : []; 228.01/198.90 read''00 s _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu81 of { 228.01/198.90 (str,s) -> concatMap (read''0 s) (readPos str); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "read''10 readPos (str,s) = concatMap (read''0 s) (readPos str); 228.01/198.90 read''10 readPos _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case concatMap (lexEsc1 s) table of { 228.01/198.90 pr : _ -> pr : []; 228.01/198.90 [] -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexEsc2 (pr : _) = pr : []; 228.01/198.90 lexEsc2 [] = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu69 of { 228.01/198.90 ([],s') -> (mne,s') : []; 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexEsc00 mne ([],s') = (mne,s') : []; 228.01/198.90 lexEsc00 mne _ = []; 228.01/198.90 " 228.01/198.90 The following Case expression 228.01/198.90 "case vu70 of { 228.01/198.90 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.01/198.90 _ -> []} 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.01/198.90 lexEsc10 s _ = []; 228.01/198.90 " 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (4) 228.01/198.90 Obligation: 228.01/198.90 mainModule Main 228.01/198.90 module Main where { 228.01/198.90 import qualified Prelude; 228.01/198.90 } 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (5) IFR (EQUIVALENT) 228.01/198.90 If Reductions: 228.01/198.90 The following If expression 228.01/198.90 "if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []" 228.01/198.90 is transformed to 228.01/198.90 "lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 228.01/198.90 lexExp100 e c t False = []; 228.01/198.90 " 228.01/198.90 The following If expression 228.01/198.90 "if primGEqNatS x y then Succ (primDivNatS (primMinusNatS x y) (Succ y)) else Zero" 228.01/198.90 is transformed to 228.01/198.90 "primDivNatS0 x y True = Succ (primDivNatS (primMinusNatS x y) (Succ y)); 228.01/198.90 primDivNatS0 x y False = Zero; 228.01/198.90 " 228.01/198.90 The following If expression 228.01/198.90 "if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []" 228.01/198.90 is transformed to 228.01/198.90 "lex000 ch t True = (''' : ch ++ ''' : [],t) : []; 228.01/198.90 lex000 ch t False = []; 228.01/198.90 " 228.01/198.90 The following If expression 228.01/198.90 "if n >= 0 then x ^ n else recip (x ^ (`negate` n))" 228.01/198.90 is transformed to 228.01/198.90 "prPr0 x n True = x ^ n; 228.01/198.90 prPr0 x n False = recip (x ^ (`negate` n)); 228.01/198.90 " 228.01/198.90 The following If expression 228.01/198.90 "if b then mandatory else optional" 228.01/198.90 is transformed to 228.01/198.90 "readParen0 True = mandatory; 228.01/198.90 readParen0 False = optional; 228.01/198.90 " 228.01/198.90 The following If expression 228.01/198.90 "if primGEqNatS x y then primModNatS (primMinusNatS x y) (Succ y) else Succ x" 228.01/198.90 is transformed to 228.01/198.90 "primModNatS0 x y True = primModNatS (primMinusNatS x y) (Succ y); 228.01/198.90 primModNatS0 x y False = Succ x; 228.01/198.90 " 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (6) 228.01/198.90 Obligation: 228.01/198.90 mainModule Main 228.01/198.90 module Main where { 228.01/198.90 import qualified Prelude; 228.01/198.90 } 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (7) BR (EQUIVALENT) 228.01/198.90 Replaced joker patterns by fresh variables and removed binding patterns. 228.01/198.90 228.01/198.90 Binding Reductions: 228.01/198.90 The bind variable of the following binding Pattern 228.01/198.90 "xs@(vvy : vvz)" 228.01/198.90 is replaced by the following term 228.01/198.90 "vvy : vvz" 228.01/198.90 The bind variable of the following binding Pattern 228.01/198.90 "xs@(vww : vwx)" 228.01/198.90 is replaced by the following term 228.01/198.90 "vww : vwx" 228.01/198.90 The bind variable of the following binding Pattern 228.01/198.90 "cs@(vxw : vxx)" 228.01/198.90 is replaced by the following term 228.01/198.90 "vxw : vxx" 228.01/198.90 The bind variable of the following binding Pattern 228.01/198.90 "s@(wuw : wux)" 228.01/198.90 is replaced by the following term 228.01/198.90 "wuw : wux" 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (8) 228.01/198.90 Obligation: 228.01/198.90 mainModule Main 228.01/198.90 module Main where { 228.01/198.90 import qualified Prelude; 228.01/198.90 } 228.01/198.90 228.01/198.90 ---------------------------------------- 228.01/198.90 228.01/198.90 (9) COR (EQUIVALENT) 228.01/198.90 Cond Reductions: 228.01/198.90 The following Function with conditions 228.01/198.90 "takeWhile p [] = []; 228.01/198.90 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "takeWhile p [] = takeWhile3 p []; 228.01/198.90 takeWhile p (x : xs) = takeWhile2 p (x : xs); 228.01/198.90 " 228.01/198.90 "takeWhile0 p x xs True = []; 228.01/198.90 " 228.01/198.90 "takeWhile1 p x xs True = x : takeWhile p xs; 228.01/198.90 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 228.01/198.90 " 228.01/198.90 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 228.01/198.90 " 228.01/198.90 "takeWhile3 p [] = []; 228.01/198.90 takeWhile3 wvy wvz = takeWhile2 wvy wvz; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "gcd' x 0 = x; 228.01/198.90 gcd' x y = gcd' y (x `rem` y); 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "gcd' x wwu = gcd'2 x wwu; 228.01/198.90 gcd' x y = gcd'0 x y; 228.01/198.90 " 228.01/198.90 "gcd'0 x y = gcd' y (x `rem` y); 228.01/198.90 " 228.01/198.90 "gcd'1 True x wwu = x; 228.01/198.90 gcd'1 wwv www wwx = gcd'0 www wwx; 228.01/198.90 " 228.01/198.90 "gcd'2 x wwu = gcd'1 (wwu == 0) x wwu; 228.01/198.90 gcd'2 wwy wwz = gcd'0 wwy wwz; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "gcd 0 0 = error []; 228.01/198.90 gcd x y = gcd' (abs x) (abs y) where { 228.01/198.90 gcd' x 0 = x; 228.01/198.90 gcd' x y = gcd' y (x `rem` y); 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "gcd wxu wxv = gcd3 wxu wxv; 228.01/198.90 gcd x y = gcd0 x y; 228.01/198.90 " 228.01/198.90 "gcd0 x y = gcd' (abs x) (abs y) where { 228.01/198.90 gcd' x wwu = gcd'2 x wwu; 228.01/198.90 gcd' x y = gcd'0 x y; 228.01/198.90 ; 228.01/198.90 gcd'0 x y = gcd' y (x `rem` y); 228.01/198.90 ; 228.01/198.90 gcd'1 True x wwu = x; 228.01/198.90 gcd'1 wwv www wwx = gcd'0 www wwx; 228.01/198.90 ; 228.01/198.90 gcd'2 x wwu = gcd'1 (wwu == 0) x wwu; 228.01/198.90 gcd'2 wwy wwz = gcd'0 wwy wwz; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 "gcd1 True wxu wxv = error []; 228.01/198.90 gcd1 wxw wxx wxy = gcd0 wxx wxy; 228.01/198.90 " 228.01/198.90 "gcd2 True wxu wxv = gcd1 (wxv == 0) wxu wxv; 228.01/198.90 gcd2 wxz wyu wyv = gcd0 wyu wyv; 228.01/198.90 " 228.01/198.90 "gcd3 wxu wxv = gcd2 (wxu == 0) wxu wxv; 228.01/198.90 gcd3 wyw wyx = gcd0 wyw wyx; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lexString ('"' : s) = ('"' : [],s) : []; 228.01/198.90 lexString s = concatMap lexString1 (lexStrItem s); 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexString (wyz : s) = lexString4 (wyz : s); 228.01/198.90 lexString s = lexString2 s; 228.01/198.90 " 228.01/198.90 "lexString2 s = concatMap lexString1 (lexStrItem s); 228.01/198.90 " 228.01/198.90 "lexString3 True (wyz : s) = ('"' : [],s) : []; 228.01/198.90 lexString3 wzu wzv = lexString2 wzv; 228.01/198.90 " 228.01/198.90 "lexString4 (wyz : s) = lexString3 (wyz == '"') (wyz : s); 228.01/198.90 lexString4 wzw = lexString2 wzw; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 228.01/198.90 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 228.01/198.90 lexStrItem s = lexLitChar s; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexStrItem (xvu : xvy) = lexStrItem7 (xvu : xvy); 228.01/198.90 lexStrItem (wzy : xuv) = lexStrItem4 (wzy : xuv); 228.01/198.90 lexStrItem s = lexStrItem1 s; 228.01/198.90 " 228.01/198.90 "lexStrItem1 s = lexLitChar s; 228.01/198.90 " 228.01/198.90 "lexStrItem2 wzy c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 228.01/198.90 lexStrItem2 wzy c s False = lexStrItem1 (wzy : c : s); 228.01/198.90 " 228.01/198.90 "lexStrItem3 True (wzy : c : s) = lexStrItem2 wzy c s (isSpace c); 228.01/198.90 lexStrItem3 xuw xux = lexStrItem1 xux; 228.01/198.90 " 228.01/198.90 "lexStrItem4 (wzy : xuv) = lexStrItem3 (wzy == '\') (wzy : xuv); 228.01/198.90 lexStrItem4 xuy = lexStrItem1 xuy; 228.01/198.90 " 228.01/198.90 "lexStrItem5 True (xvu : xvw : s) = ('\' : '&' : [],s) : []; 228.01/198.90 lexStrItem5 xvz xwu = lexStrItem4 xwu; 228.01/198.90 " 228.01/198.90 "lexStrItem6 True (xvu : xvw : s) = lexStrItem5 (xvw == '&') (xvu : xvw : s); 228.01/198.90 lexStrItem6 xwv xww = lexStrItem4 xww; 228.01/198.90 " 228.01/198.90 "lexStrItem7 (xvu : xvy) = lexStrItem6 (xvu == '\') (xvu : xvy); 228.01/198.90 lexStrItem7 xwx = lexStrItem4 xwx; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lexStrItem00 ('\' : t) = ([],t) : []; 228.01/198.90 lexStrItem00 xu = []; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexStrItem00 (xwz : t) = lexStrItem002 (xwz : t); 228.01/198.90 lexStrItem00 xu = lexStrItem000 xu; 228.01/198.90 " 228.01/198.90 "lexStrItem000 xu = []; 228.01/198.90 " 228.01/198.90 "lexStrItem001 True (xwz : t) = ([],t) : []; 228.01/198.90 lexStrItem001 xxu xxv = lexStrItem000 xxv; 228.01/198.90 " 228.01/198.90 "lexStrItem002 (xwz : t) = lexStrItem001 (xwz == '\') (xwz : t); 228.01/198.90 lexStrItem002 xxw = lexStrItem000 xxw; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 228.01/198.90 lexExp s = ([],s) : []; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexExp (e : s) = lexExp5 (e : s); 228.01/198.90 lexExp s = lexExp3 s; 228.01/198.90 " 228.01/198.90 "lexExp3 s = ([],s) : []; 228.01/198.90 " 228.01/198.90 "lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 228.01/198.90 lexExp4 e s False = lexExp3 (e : s); 228.01/198.90 " 228.01/198.90 "lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 228.01/198.90 lexExp5 xxy = lexExp3 xxy; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 228.01/198.90 lexFracExp s = lexExp s; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexFracExp (xyu : xyx) = lexFracExp5 (xyu : xyx); 228.01/198.90 lexFracExp s = lexFracExp2 s; 228.01/198.90 " 228.01/198.90 "lexFracExp2 s = lexExp s; 228.01/198.90 " 228.01/198.90 "lexFracExp3 xyu c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 228.01/198.90 lexFracExp3 xyu c cs False = lexFracExp2 (xyu : c : cs); 228.01/198.90 " 228.01/198.90 "lexFracExp4 True (xyu : c : cs) = lexFracExp3 xyu c cs (isDigit c); 228.01/198.90 lexFracExp4 xyy xyz = lexFracExp2 xyz; 228.01/198.90 " 228.01/198.90 "lexFracExp5 (xyu : xyx) = lexFracExp4 (xyu == '.') (xyu : xyx); 228.01/198.90 lexFracExp5 xzu = lexFracExp2 xzu; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lex [] = ([],[]) : []; 228.01/198.90 lex (c : s)|isSpace clex (dropWhile isSpace s); 228.01/198.90 lex (''' : s) = concatMap lex0 (lexLitChar s); 228.01/198.90 lex ('"' : s) = concatMap lex1 (lexString s) where { 228.01/198.90 lex1 vu55 = lex10 vu55; 228.01/198.90 ; 228.01/198.90 lex10 (str,t) = ('"' : str,t) : []; 228.01/198.90 lex10 xv = []; 228.01/198.90 ; 228.01/198.90 lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 228.01/198.90 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 228.01/198.90 lexStrItem s = lexLitChar s; 228.01/198.90 ; 228.01/198.90 lexStrItem0 vu58 = lexStrItem00 vu58; 228.01/198.90 ; 228.01/198.90 lexStrItem00 ('\' : t) = ([],t) : []; 228.01/198.90 lexStrItem00 xu = []; 228.01/198.90 ; 228.01/198.90 lexString ('"' : s) = ('"' : [],s) : []; 228.01/198.90 lexString s = concatMap lexString1 (lexStrItem s); 228.01/198.90 ; 228.01/198.90 lexString0 ch vu56 = lexString00 ch vu56; 228.01/198.90 ; 228.01/198.90 lexString00 ch (str,u) = (ch ++ str,u) : []; 228.01/198.90 lexString00 ch wy = []; 228.01/198.90 ; 228.01/198.90 lexString1 vu57 = lexString10 vu57; 228.01/198.90 ; 228.01/198.90 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 228.01/198.90 lexString10 wz = []; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 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 { 228.01/198.90 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 228.01/198.90 ; 228.01/198.90 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 228.01/198.90 ; 228.01/198.90 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 228.01/198.90 ; 228.01/198.90 lex2 c vu59 = lex20 c vu59; 228.01/198.90 ; 228.01/198.90 lex20 c (sym,t) = (c : sym,t) : []; 228.01/198.90 lex20 c yx = []; 228.01/198.90 ; 228.01/198.90 lex3 c vu60 = lex30 c vu60; 228.01/198.90 ; 228.01/198.90 lex30 c (nam,t) = (c : nam,t) : []; 228.01/198.90 lex30 c yy = []; 228.01/198.90 ; 228.01/198.90 lex4 c ds vu61 = lex40 c ds vu61; 228.01/198.90 ; 228.01/198.90 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 228.01/198.90 lex40 c ds yv = []; 228.01/198.90 ; 228.01/198.90 lex5 c vu62 = lex50 c vu62; 228.01/198.90 ; 228.01/198.90 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 228.01/198.90 lex50 c yw = []; 228.01/198.90 ; 228.01/198.90 lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 228.01/198.90 lexExp s = ([],s) : []; 228.01/198.90 ; 228.01/198.90 lexExp0 e c vu65 = lexExp00 e c vu65; 228.01/198.90 ; 228.01/198.90 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 228.01/198.90 lexExp00 e c xw = []; 228.01/198.90 ; 228.01/198.90 lexExp1 e vu66 = lexExp10 e vu66; 228.01/198.90 ; 228.01/198.90 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 228.01/198.90 lexExp10 e xy = []; 228.01/198.90 ; 228.01/198.90 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 228.01/198.90 lexExp100 e c t False = []; 228.01/198.90 ; 228.01/198.90 lexExp2 e vu67 = lexExp20 e vu67; 228.01/198.90 ; 228.01/198.90 lexExp20 e (ds,t) = (e : ds,t) : []; 228.01/198.90 lexExp20 e xx = []; 228.01/198.90 ; 228.01/198.90 lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 228.01/198.90 lexFracExp s = lexExp s; 228.01/198.90 ; 228.01/198.90 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 228.01/198.90 ; 228.01/198.90 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 228.01/198.90 lexFracExp00 ds yu = []; 228.01/198.90 ; 228.01/198.90 lexFracExp1 vu64 = lexFracExp10 vu64; 228.01/198.90 ; 228.01/198.90 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 228.01/198.90 lexFracExp10 xz = []; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lex [] = lex19 []; 228.01/198.90 lex (c : s) = lex18 (c : s); 228.01/198.90 lex (yuw : s) = lex16 (yuw : s); 228.01/198.90 lex (xzx : s) = lex14 (xzx : s); 228.01/198.90 lex (c : s) = lex12 (c : s); 228.01/198.90 " 228.01/198.90 "lex12 (c : s) = lex11 c s (isSingle c) where { 228.01/198.90 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 228.01/198.90 ; 228.01/198.90 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 228.01/198.90 ; 228.01/198.90 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 228.01/198.90 ; 228.01/198.90 lex11 c s True = (c : [],s) : []; 228.01/198.90 lex11 c s False = lex9 c s (isSym c); 228.01/198.90 ; 228.01/198.90 lex2 c vu59 = lex20 c vu59; 228.01/198.90 ; 228.01/198.90 lex20 c (sym,t) = (c : sym,t) : []; 228.01/198.90 lex20 c yx = []; 228.01/198.90 ; 228.01/198.90 lex3 c vu60 = lex30 c vu60; 228.01/198.90 ; 228.01/198.90 lex30 c (nam,t) = (c : nam,t) : []; 228.01/198.90 lex30 c yy = []; 228.01/198.90 ; 228.01/198.90 lex4 c ds vu61 = lex40 c ds vu61; 228.01/198.90 ; 228.01/198.90 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 228.01/198.90 lex40 c ds yv = []; 228.01/198.90 ; 228.01/198.90 lex5 c vu62 = lex50 c vu62; 228.01/198.90 ; 228.01/198.90 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 228.01/198.90 lex50 c yw = []; 228.01/198.90 ; 228.01/198.90 lex6 c s True = []; 228.01/198.90 ; 228.01/198.90 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 228.01/198.90 lex7 c s False = lex6 c s otherwise; 228.01/198.90 ; 228.01/198.90 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 228.01/198.90 lex8 c s False = lex7 c s (isDigit c); 228.01/198.90 ; 228.01/198.90 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 228.01/198.90 lex9 c s False = lex8 c s (isAlpha c); 228.01/198.90 ; 228.01/198.90 lexExp (e : s) = lexExp5 (e : s); 228.01/198.90 lexExp s = lexExp3 s; 228.01/198.90 ; 228.01/198.90 lexExp0 e c vu65 = lexExp00 e c vu65; 228.01/198.90 ; 228.01/198.90 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 228.01/198.90 lexExp00 e c xw = []; 228.01/198.90 ; 228.01/198.90 lexExp1 e vu66 = lexExp10 e vu66; 228.01/198.90 ; 228.01/198.90 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 228.01/198.90 lexExp10 e xy = []; 228.01/198.90 ; 228.01/198.90 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 228.01/198.90 lexExp100 e c t False = []; 228.01/198.90 ; 228.01/198.90 lexExp2 e vu67 = lexExp20 e vu67; 228.01/198.90 ; 228.01/198.90 lexExp20 e (ds,t) = (e : ds,t) : []; 228.01/198.90 lexExp20 e xx = []; 228.01/198.90 ; 228.01/198.90 lexExp3 s = ([],s) : []; 228.01/198.90 ; 228.01/198.90 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 228.01/198.90 lexExp4 e s False = lexExp3 (e : s); 228.01/198.90 ; 228.01/198.90 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 228.01/198.90 lexExp5 xxy = lexExp3 xxy; 228.01/198.90 ; 228.01/198.90 lexFracExp (xyu : xyx) = lexFracExp5 (xyu : xyx); 228.01/198.90 lexFracExp s = lexFracExp2 s; 228.01/198.90 ; 228.01/198.90 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 228.01/198.90 ; 228.01/198.90 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 228.01/198.90 lexFracExp00 ds yu = []; 228.01/198.90 ; 228.01/198.90 lexFracExp1 vu64 = lexFracExp10 vu64; 228.01/198.90 ; 228.01/198.90 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 228.01/198.90 lexFracExp10 xz = []; 228.01/198.90 ; 228.01/198.90 lexFracExp2 s = lexExp s; 228.01/198.90 ; 228.01/198.90 lexFracExp3 xyu c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 228.01/198.90 lexFracExp3 xyu c cs False = lexFracExp2 (xyu : c : cs); 228.01/198.90 ; 228.01/198.90 lexFracExp4 True (xyu : c : cs) = lexFracExp3 xyu c cs (isDigit c); 228.01/198.90 lexFracExp4 xyy xyz = lexFracExp2 xyz; 228.01/198.90 ; 228.01/198.90 lexFracExp5 (xyu : xyx) = lexFracExp4 (xyu == '.') (xyu : xyx); 228.01/198.90 lexFracExp5 xzu = lexFracExp2 xzu; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 "lex13 True (xzx : s) = concatMap lex1 (lexString s) where { 228.01/198.90 lex1 vu55 = lex10 vu55; 228.01/198.90 ; 228.01/198.90 lex10 (str,t) = ('"' : str,t) : []; 228.01/198.90 lex10 xv = []; 228.01/198.90 ; 228.01/198.90 lexStrItem (xvu : xvy) = lexStrItem7 (xvu : xvy); 228.01/198.90 lexStrItem (wzy : xuv) = lexStrItem4 (wzy : xuv); 228.01/198.90 lexStrItem s = lexStrItem1 s; 228.01/198.90 ; 228.01/198.90 lexStrItem0 vu58 = lexStrItem00 vu58; 228.01/198.90 ; 228.01/198.90 lexStrItem00 (xwz : t) = lexStrItem002 (xwz : t); 228.01/198.90 lexStrItem00 xu = lexStrItem000 xu; 228.01/198.90 ; 228.01/198.90 lexStrItem000 xu = []; 228.01/198.90 ; 228.01/198.90 lexStrItem001 True (xwz : t) = ([],t) : []; 228.01/198.90 lexStrItem001 xxu xxv = lexStrItem000 xxv; 228.01/198.90 ; 228.01/198.90 lexStrItem002 (xwz : t) = lexStrItem001 (xwz == '\') (xwz : t); 228.01/198.90 lexStrItem002 xxw = lexStrItem000 xxw; 228.01/198.90 ; 228.01/198.90 lexStrItem1 s = lexLitChar s; 228.01/198.90 ; 228.01/198.90 lexStrItem2 wzy c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 228.01/198.90 lexStrItem2 wzy c s False = lexStrItem1 (wzy : c : s); 228.01/198.90 ; 228.01/198.90 lexStrItem3 True (wzy : c : s) = lexStrItem2 wzy c s (isSpace c); 228.01/198.90 lexStrItem3 xuw xux = lexStrItem1 xux; 228.01/198.90 ; 228.01/198.90 lexStrItem4 (wzy : xuv) = lexStrItem3 (wzy == '\') (wzy : xuv); 228.01/198.90 lexStrItem4 xuy = lexStrItem1 xuy; 228.01/198.90 ; 228.01/198.90 lexStrItem5 True (xvu : xvw : s) = ('\' : '&' : [],s) : []; 228.01/198.90 lexStrItem5 xvz xwu = lexStrItem4 xwu; 228.01/198.90 ; 228.01/198.90 lexStrItem6 True (xvu : xvw : s) = lexStrItem5 (xvw == '&') (xvu : xvw : s); 228.01/198.90 lexStrItem6 xwv xww = lexStrItem4 xww; 228.01/198.90 ; 228.01/198.90 lexStrItem7 (xvu : xvy) = lexStrItem6 (xvu == '\') (xvu : xvy); 228.01/198.90 lexStrItem7 xwx = lexStrItem4 xwx; 228.01/198.90 ; 228.01/198.90 lexString (wyz : s) = lexString4 (wyz : s); 228.01/198.90 lexString s = lexString2 s; 228.01/198.90 ; 228.01/198.90 lexString0 ch vu56 = lexString00 ch vu56; 228.01/198.90 ; 228.01/198.90 lexString00 ch (str,u) = (ch ++ str,u) : []; 228.01/198.90 lexString00 ch wy = []; 228.01/198.90 ; 228.01/198.90 lexString1 vu57 = lexString10 vu57; 228.01/198.90 ; 228.01/198.90 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 228.01/198.90 lexString10 wz = []; 228.01/198.90 ; 228.01/198.90 lexString2 s = concatMap lexString1 (lexStrItem s); 228.01/198.90 ; 228.01/198.90 lexString3 True (wyz : s) = ('"' : [],s) : []; 228.01/198.90 lexString3 wzu wzv = lexString2 wzv; 228.01/198.90 ; 228.01/198.90 lexString4 (wyz : s) = lexString3 (wyz == '"') (wyz : s); 228.01/198.90 lexString4 wzw = lexString2 wzw; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 lex13 xzy xzz = lex12 xzz; 228.01/198.90 " 228.01/198.90 "lex14 (xzx : s) = lex13 (xzx == '"') (xzx : s); 228.01/198.90 lex14 yuu = lex12 yuu; 228.01/198.90 " 228.01/198.90 "lex15 True (yuw : s) = concatMap lex0 (lexLitChar s); 228.01/198.90 lex15 yux yuy = lex14 yuy; 228.01/198.90 " 228.01/198.90 "lex16 (yuw : s) = lex15 (yuw == ''') (yuw : s); 228.01/198.90 lex16 yuz = lex14 yuz; 228.01/198.90 " 228.01/198.90 "lex17 c s True = lex (dropWhile isSpace s); 228.01/198.90 lex17 c s False = lex16 (c : s); 228.01/198.90 " 228.01/198.90 "lex18 (c : s) = lex17 c s (isSpace c); 228.01/198.90 lex18 yvv = lex16 yvv; 228.01/198.90 " 228.01/198.90 "lex19 [] = ([],[]) : []; 228.01/198.90 lex19 yvx = lex18 yvx; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "reduce x y|y == 0error []|otherwisex `quot` d :% (y `quot` d) where { 228.01/198.90 d = gcd x y; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "reduce x y = reduce2 x y; 228.01/198.90 " 228.01/198.90 "reduce2 x y = reduce1 x y (y == 0) where { 228.01/198.90 d = gcd x y; 228.01/198.90 ; 228.01/198.90 reduce0 x y True = x `quot` d :% (y `quot` d); 228.01/198.90 ; 228.01/198.90 reduce1 x y True = error []; 228.01/198.90 reduce1 x y False = reduce0 x y otherwise; 228.01/198.90 } 228.01/198.90 ; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "signumReal x|x == 00|x > 01|otherwise-1; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "signumReal x = signumReal3 x; 228.01/198.90 " 228.01/198.90 "signumReal1 x True = 1; 228.01/198.90 signumReal1 x False = signumReal0 x otherwise; 228.01/198.90 " 228.01/198.90 "signumReal0 x True = -1; 228.01/198.90 " 228.01/198.90 "signumReal2 x True = 0; 228.01/198.90 signumReal2 x False = signumReal1 x (x > 0); 228.01/198.90 " 228.01/198.90 "signumReal3 x = signumReal2 x (x == 0); 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "undefined |Falseundefined; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "undefined = undefined1; 228.01/198.90 " 228.01/198.90 "undefined0 True = undefined; 228.01/198.90 " 228.01/198.90 "undefined1 = undefined0 False; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "readExp (e : s)|e `elem` 'e' : 'E' : []readExp' s; 228.01/198.90 readExp s = (0,s) : []; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readExp (e : s) = readExp2 (e : s); 228.01/198.90 readExp s = readExp0 s; 228.01/198.90 " 228.01/198.90 "readExp0 s = (0,s) : []; 228.01/198.90 " 228.01/198.90 "readExp1 e s True = readExp' s; 228.01/198.90 readExp1 e s False = readExp0 (e : s); 228.01/198.90 " 228.01/198.90 "readExp2 (e : s) = readExp1 e s (e `elem` 'e' : 'E' : []); 228.01/198.90 readExp2 yvz = readExp0 yvz; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "readExp' ('-' : s) = concatMap readExp'0 (readDec s); 228.01/198.90 readExp' ('+' : s) = readDec s; 228.01/198.90 readExp' s = readDec s; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "readExp' (yxu : s) = readExp'5 (yxu : s); 228.01/198.90 readExp' (ywv : s) = readExp'3 (ywv : s); 228.01/198.90 readExp' s = readExp'1 s; 228.01/198.90 " 228.01/198.90 "readExp'1 s = readDec s; 228.01/198.90 " 228.01/198.90 "readExp'2 True (ywv : s) = readDec s; 228.01/198.90 readExp'2 yww ywx = readExp'1 ywx; 228.01/198.90 " 228.01/198.90 "readExp'3 (ywv : s) = readExp'2 (ywv == '+') (ywv : s); 228.01/198.90 readExp'3 ywy = readExp'1 ywy; 228.01/198.90 " 228.01/198.90 "readExp'4 True (yxu : s) = concatMap readExp'0 (readDec s); 228.01/198.90 readExp'4 yxv yxw = readExp'3 yxw; 228.01/198.90 " 228.01/198.90 "readExp'5 (yxu : s) = readExp'4 (yxu == '-') (yxu : s); 228.01/198.90 readExp'5 yxx = readExp'3 yxx; 228.01/198.90 " 228.01/198.90 The following Function with conditions 228.01/198.90 "lexFrac ('.' : s) = lexDigits s; 228.01/198.90 lexFrac s = ([],s) : []; 228.01/198.90 " 228.01/198.90 is transformed to 228.01/198.90 "lexFrac (yxz : s) = lexFrac2 (yxz : s); 228.01/198.90 lexFrac s = lexFrac0 s; 228.01/198.90 " 228.01/198.90 "lexFrac0 s = ([],s) : []; 228.01/198.90 " 228.01/198.90 "lexFrac1 True (yxz : s) = lexDigits s; 228.28/198.95 lexFrac1 yyu yyv = lexFrac0 yyv; 228.28/198.95 " 228.28/198.95 "lexFrac2 (yxz : s) = lexFrac1 (yxz == '.') (yxz : s); 228.28/198.95 lexFrac2 yyw = lexFrac0 yyw; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "readFloat20 ('N' : 'a' : 'N' : [],t) = (0 / 0,t) : []; 228.28/198.95 readFloat20 vuy = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "readFloat20 (yyz : zuw,t) = readFloat204 (yyz : zuw,t); 228.28/198.95 readFloat20 vuy = readFloat200 vuy; 228.28/198.95 " 228.28/198.95 "readFloat200 vuy = []; 228.28/198.95 " 228.28/198.95 "readFloat201 True (yyz : yzv : yzx : [],t) = (0 / 0,t) : []; 228.28/198.95 readFloat201 zux zuy = readFloat200 zuy; 228.28/198.95 " 228.28/198.95 "readFloat202 True (yyz : yzv : yzx : yzy,t) = readFloat201 (yzx == 'N') (yyz : yzv : yzx : yzy,t); 228.28/198.95 readFloat202 zuz zvu = readFloat200 zvu; 228.28/198.95 " 228.28/198.95 "readFloat203 True (yyz : yzv : zuu,t) = readFloat202 (yzv == 'a') (yyz : yzv : zuu,t); 228.28/198.95 readFloat203 zvv zvw = readFloat200 zvw; 228.28/198.95 " 228.28/198.95 "readFloat204 (yyz : zuw,t) = readFloat203 (yyz == 'N') (yyz : zuw,t); 228.28/198.95 readFloat204 zvx = readFloat200 zvx; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "readFloat30 ('I' : 'n' : 'f' : 'i' : 'n' : 'i' : 't' : 'y' : [],t) = (1 / 0,t) : []; 228.28/198.95 readFloat30 vvu = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "readFloat30 (zwu : vuuz,t) = readFloat309 (zwu : vuuz,t); 228.28/198.95 readFloat30 vvu = readFloat300 vvu; 228.28/198.95 " 228.28/198.95 "readFloat300 vvu = []; 228.28/198.95 " 228.28/198.95 "readFloat301 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : [],t) = (1 / 0,t) : []; 228.28/198.95 readFloat301 vuvu vuvv = readFloat300 vuvv; 228.28/198.95 " 228.28/198.95 "readFloat302 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : zyx,t) = readFloat301 (zyw == 'y') (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : zyx,t); 228.28/198.95 readFloat302 vuvw vuvx = readFloat300 vuvx; 228.28/198.95 " 228.28/198.95 "readFloat303 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyz,t) = readFloat302 (zyu == 't') (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyz,t); 228.28/198.95 readFloat303 vuvy vuvz = readFloat300 vuvz; 228.28/198.95 " 228.28/198.95 "readFloat304 True (zwu : zww : zwy : zxu : zxw : zxy : zzv,t) = readFloat303 (zxy == 'i') (zwu : zww : zwy : zxu : zxw : zxy : zzv,t); 228.28/198.95 readFloat304 vuwu vuwv = readFloat300 vuwv; 228.28/198.95 " 228.28/198.95 "readFloat305 True (zwu : zww : zwy : zxu : zxw : zzx,t) = readFloat304 (zxw == 'n') (zwu : zww : zwy : zxu : zxw : zzx,t); 228.28/198.95 readFloat305 vuww vuwx = readFloat300 vuwx; 228.28/198.95 " 228.28/198.95 "readFloat306 True (zwu : zww : zwy : zxu : zzz,t) = readFloat305 (zxu == 'i') (zwu : zww : zwy : zxu : zzz,t); 228.28/198.95 readFloat306 vuwy vuwz = readFloat300 vuwz; 228.28/198.95 " 228.28/198.95 "readFloat307 True (zwu : zww : zwy : vuuv,t) = readFloat306 (zwy == 'f') (zwu : zww : zwy : vuuv,t); 228.28/198.95 readFloat307 vuxu vuxv = readFloat300 vuxv; 228.28/198.95 " 228.28/198.95 "readFloat308 True (zwu : zww : vuux,t) = readFloat307 (zww == 'n') (zwu : zww : vuux,t); 228.28/198.95 readFloat308 vuxw vuxx = readFloat300 vuxx; 228.28/198.95 " 228.28/198.95 "readFloat309 (zwu : vuuz,t) = readFloat308 (zwu == 'I') (zwu : vuuz,t); 228.28/198.95 readFloat309 vuxy = readFloat300 vuxy; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "g x n|even ng (x * x) (n `quot` 2)|otherwisef x (n - 1) (x * y); 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "g x n = g2 x n; 228.28/198.95 " 228.28/198.95 "g0 x n True = f x (n - 1) (x * y); 228.28/198.95 " 228.28/198.95 "g1 x n True = g (x * x) (n `quot` 2); 228.28/198.95 g1 x n False = g0 x n otherwise; 228.28/198.95 " 228.28/198.95 "g2 x n = g1 x n (even n); 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "f vvv 0 y = y; 228.28/198.95 f x n y = g x n where { 228.28/198.95 g x n|even ng (x * x) (n `quot` 2)|otherwisef x (n - 1) (x * y); 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "f vvv vuxz y = f4 vvv vuxz y; 228.28/198.95 f x n y = f0 x n y; 228.28/198.95 " 228.28/198.95 "f0 x n y = g x n where { 228.28/198.95 g x n = g2 x n; 228.28/198.95 ; 228.28/198.95 g0 x n True = f x (n - 1) (x * y); 228.28/198.95 ; 228.28/198.95 g1 x n True = g (x * x) (n `quot` 2); 228.28/198.95 g1 x n False = g0 x n otherwise; 228.28/198.95 ; 228.28/198.95 g2 x n = g1 x n (even n); 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 " 228.28/198.95 "f3 True vvv vuxz y = y; 228.28/198.95 f3 vuyu vuyv vuyw vuyx = f0 vuyv vuyw vuyx; 228.28/198.95 " 228.28/198.95 "f4 vvv vuxz y = f3 (vuxz == 0) vvv vuxz y; 228.28/198.95 f4 vuyy vuyz vuzu = f0 vuyy vuyz vuzu; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "^ x 0 = 1; 228.28/198.95 ^ x n|n > 0f x (n - 1) x where { 228.28/198.95 f vvv 0 y = y; 228.28/198.95 f x n y = g x n where { 228.28/198.95 g x n|even ng (x * x) (n `quot` 2)|otherwisef x (n - 1) (x * y); 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 ^ vvw vvx = error []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "^ x vuzx = pr4 x vuzx; 228.28/198.95 ^ x n = pr2 x n; 228.28/198.95 ^ vvw vvx = pr0 vvw vvx; 228.28/198.95 " 228.28/198.95 "pr0 vvw vvx = error []; 228.28/198.95 " 228.28/198.95 "pr2 x n = pr1 x n (n > 0) where { 228.28/198.95 f vvv vuxz y = f4 vvv vuxz y; 228.28/198.95 f x n y = f0 x n y; 228.28/198.95 ; 228.28/198.95 f0 x n y = g x n where { 228.28/198.95 g x n = g2 x n; 228.28/198.95 ; 228.28/198.95 g0 x n True = f x (n - 1) (x * y); 228.28/198.95 ; 228.28/198.95 g1 x n True = g (x * x) (n `quot` 2); 228.28/198.95 g1 x n False = g0 x n otherwise; 228.28/198.95 ; 228.28/198.95 g2 x n = g1 x n (even n); 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 ; 228.28/198.95 f3 True vvv vuxz y = y; 228.28/198.95 f3 vuyu vuyv vuyw vuyx = f0 vuyv vuyw vuyx; 228.28/198.95 ; 228.28/198.95 f4 vvv vuxz y = f3 (vuxz == 0) vvv vuxz y; 228.28/198.95 f4 vuyy vuyz vuzu = f0 vuyy vuyz vuzu; 228.28/198.95 ; 228.28/198.95 pr1 x n True = f x (n - 1) x; 228.28/198.95 pr1 x n False = pr0 x n; 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 pr2 vuzv vuzw = pr0 vuzv vuzw; 228.28/198.95 " 228.28/198.95 "pr3 True x vuzx = 1; 228.28/198.95 pr3 vuzy vuzz vvuu = pr2 vuzz vvuu; 228.28/198.95 " 228.28/198.95 "pr4 x vuzx = pr3 (vuzx == 0) x vuzx; 228.28/198.95 pr4 vvuv vvuw = pr2 vvuv vvuw; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "dropWhile p [] = []; 228.28/198.95 dropWhile p (vvy : vvz)|p vvydropWhile p vvz|otherwisevvy : vvz; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "dropWhile p [] = dropWhile3 p []; 228.28/198.95 dropWhile p (vvy : vvz) = dropWhile2 p (vvy : vvz); 228.28/198.95 " 228.28/198.95 "dropWhile0 p vvy vvz True = vvy : vvz; 228.28/198.95 " 228.28/198.95 "dropWhile1 p vvy vvz True = dropWhile p vvz; 228.28/198.95 dropWhile1 p vvy vvz False = dropWhile0 p vvy vvz otherwise; 228.28/198.95 " 228.28/198.95 "dropWhile2 p (vvy : vvz) = dropWhile1 p vvy vvz (p vvy); 228.28/198.95 " 228.28/198.95 "dropWhile3 p [] = []; 228.28/198.95 dropWhile3 vvuz vvvu = dropWhile2 vvuz vvvu; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "lex00 (ch,''' : t) = lex000 ch t (ch /= ''' : []); 228.28/198.95 lex00 vwv = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "lex00 (ch,vvvx : t) = lex003 (ch,vvvx : t); 228.28/198.95 lex00 vwv = lex001 vwv; 228.28/198.95 " 228.28/198.95 "lex001 vwv = []; 228.28/198.95 " 228.28/198.95 "lex002 True (ch,vvvx : t) = lex000 ch t (ch /= ''' : []); 228.28/198.95 lex002 vvvy vvvz = lex001 vvvz; 228.28/198.95 " 228.28/198.95 "lex003 (ch,vvvx : t) = lex002 (vvvx == ''') (ch,vvvx : t); 228.28/198.95 lex003 vvwu = lex001 vvwu; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "span p [] = ([],[]); 228.28/198.95 span p (vww : vwx)|p vww(vww : ys,zs)|otherwise([],vww : vwx) where { 228.28/198.95 vu43 = span p vwx; 228.28/198.95 ; 228.28/198.95 ys = ys0 vu43; 228.28/198.95 ; 228.28/198.95 ys0 (ys,vwz) = ys; 228.28/198.95 ; 228.28/198.95 zs = zs0 vu43; 228.28/198.95 ; 228.28/198.95 zs0 (vwy,zs) = zs; 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "span p [] = span3 p []; 228.28/198.95 span p (vww : vwx) = span2 p (vww : vwx); 228.28/198.95 " 228.28/198.95 "span2 p (vww : vwx) = span1 p vww vwx (p vww) where { 228.28/198.95 span0 p vww vwx True = ([],vww : vwx); 228.28/198.95 ; 228.28/198.95 span1 p vww vwx True = (vww : ys,zs); 228.28/198.95 span1 p vww vwx False = span0 p vww vwx otherwise; 228.28/198.95 ; 228.28/198.95 vu43 = span p vwx; 228.28/198.95 ; 228.28/198.95 ys = ys0 vu43; 228.28/198.95 ; 228.28/198.95 ys0 (ys,vwz) = ys; 228.28/198.95 ; 228.28/198.95 zs = zs0 vu43; 228.28/198.95 ; 228.28/198.95 zs0 (vwy,zs) = zs; 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 " 228.28/198.95 "span3 p [] = ([],[]); 228.28/198.95 span3 vvwx vvwy = span2 vvwx vvwy; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 228.28/198.95 lexmatch xs ys = (xs,ys); 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 228.28/198.95 lexmatch xs ys = lexmatch0 xs ys; 228.28/198.95 " 228.28/198.95 "lexmatch0 xs ys = (xs,ys); 228.28/198.95 " 228.28/198.95 "lexmatch1 x xs y ys True = lexmatch xs ys; 228.28/198.95 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 228.28/198.95 " 228.28/198.95 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 228.28/198.95 lexmatch2 vvxv vvxw = lexmatch0 vvxv vvxw; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "absReal x|x >= 0x|otherwise`negate` x; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "absReal x = absReal2 x; 228.28/198.95 " 228.28/198.95 "absReal0 x True = `negate` x; 228.28/198.95 " 228.28/198.95 "absReal1 x True = x; 228.28/198.95 absReal1 x False = absReal0 x otherwise; 228.28/198.95 " 228.28/198.95 "absReal2 x = absReal1 x (x >= 0); 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 228.28/198.95 mandatory20 vzu = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "mandatory20 (vvxz : vvyu,s) = mandatory202 (vvxz : vvyu,s); 228.28/198.95 mandatory20 vzu = mandatory200 vzu; 228.28/198.95 " 228.28/198.95 "mandatory200 vzu = []; 228.28/198.95 " 228.28/198.95 "mandatory201 True (vvxz : [],s) = concatMap mandatory1 (optional s); 228.28/198.95 mandatory201 vvyv vvyw = mandatory200 vvyw; 228.28/198.95 " 228.28/198.95 "mandatory202 (vvxz : vvyu,s) = mandatory201 (vvxz == '(') (vvxz : vvyu,s); 228.28/198.95 mandatory202 vvyx = mandatory200 vvyx; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "mandatory00 x (')' : [],u) = (x,u) : []; 228.28/198.95 mandatory00 x vzv = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "mandatory00 x (vvzu : vvzv,u) = mandatory002 x (vvzu : vvzv,u); 228.28/198.95 mandatory00 x vzv = mandatory000 x vzv; 228.28/198.95 " 228.28/198.95 "mandatory000 x vzv = []; 228.28/198.95 " 228.28/198.95 "mandatory001 True x (vvzu : [],u) = (x,u) : []; 228.28/198.95 mandatory001 vvzw vvzx vvzy = mandatory000 vvzx vvzy; 228.28/198.95 " 228.28/198.95 "mandatory002 x (vvzu : vvzv,u) = mandatory001 (vvzu == ')') x (vvzu : vvzv,u); 228.28/198.95 mandatory002 vvzz vwuu = mandatory000 vvzz vwuu; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "read'10 ('-' : [],s) = concatMap read'0 (read'' s); 228.28/198.95 read'10 vzz = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "read'10 (vwux : vwuy,s) = read'102 (vwux : vwuy,s); 228.28/198.95 read'10 vzz = read'100 vzz; 228.28/198.95 " 228.28/198.95 "read'100 vzz = []; 228.28/198.95 " 228.28/198.95 "read'101 True (vwux : [],s) = concatMap read'0 (read'' s); 228.28/198.95 read'101 vwuz vwvu = read'100 vwvu; 228.28/198.95 " 228.28/198.95 "read'102 (vwux : vwuy,s) = read'101 (vwux == '-') (vwux : vwuy,s); 228.28/198.95 read'102 vwvv = read'100 vwvv; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 228.28/198.95 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 228.28/198.95 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 228.28/198.95 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 228.28/198.95 lexEsc (wuw : wux)|isDigit wuwspan isDigit (wuw : wux) : []|isUpper wuwlexEsc2 (concatMap (lexEsc1 (wuw : wux)) table); 228.28/198.95 lexEsc wuy = []; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "lexEsc (c : s) = lexEsc16 (c : s); 228.28/198.95 lexEsc (vwxx : vwyu) = lexEsc14 (vwxx : vwyu); 228.28/198.95 lexEsc (vwwy : s) = lexEsc11 (vwwy : s); 228.28/198.95 lexEsc (vwvz : s) = lexEsc8 (vwvz : s); 228.28/198.95 lexEsc (wuw : wux) = lexEsc6 (wuw : wux); 228.28/198.95 lexEsc wuy = lexEsc3 wuy; 228.28/198.95 " 228.28/198.95 "lexEsc3 wuy = []; 228.28/198.95 " 228.28/198.95 "lexEsc4 wuw wux True = lexEsc2 (concatMap (lexEsc1 (wuw : wux)) table); 228.28/198.95 lexEsc4 wuw wux False = lexEsc3 (wuw : wux); 228.28/198.95 " 228.28/198.95 "lexEsc5 wuw wux True = span isDigit (wuw : wux) : []; 228.28/198.95 lexEsc5 wuw wux False = lexEsc4 wuw wux (isUpper wuw); 228.28/198.95 " 228.28/198.95 "lexEsc6 (wuw : wux) = lexEsc5 wuw wux (isDigit wuw); 228.28/198.95 lexEsc6 vwvx = lexEsc3 vwvx; 228.28/198.95 " 228.28/198.95 "lexEsc7 True (vwvz : s) = prefix 'x' (span isHexDigit s) : []; 228.28/198.95 lexEsc7 vwwu vwwv = lexEsc6 vwwv; 228.28/198.95 " 228.28/198.95 "lexEsc8 (vwvz : s) = lexEsc7 (vwvz == 'x') (vwvz : s); 228.28/198.95 lexEsc8 vwww = lexEsc6 vwww; 228.28/198.95 " 228.28/198.95 "lexEsc9 True (vwwy : s) = prefix 'o' (span isOctDigit s) : []; 228.28/198.95 lexEsc9 vwwz vwxu = lexEsc8 vwxu; 228.28/198.95 " 228.28/198.95 "lexEsc11 (vwwy : s) = lexEsc9 (vwwy == 'o') (vwwy : s); 228.28/198.95 lexEsc11 vwxv = lexEsc8 vwxv; 228.28/198.95 " 228.28/198.95 "lexEsc12 vwxx c s True = ('^' : c : [],s) : []; 228.28/198.95 lexEsc12 vwxx c s False = lexEsc11 (vwxx : c : s); 228.28/198.95 " 228.28/198.95 "lexEsc13 True (vwxx : c : s) = lexEsc12 vwxx c s (c >= '@' && c <= '_'); 228.28/198.95 lexEsc13 vwyv vwyw = lexEsc11 vwyw; 228.28/198.95 " 228.28/198.95 "lexEsc14 (vwxx : vwyu) = lexEsc13 (vwxx == '^') (vwxx : vwyu); 228.28/198.95 lexEsc14 vwyx = lexEsc11 vwyx; 228.28/198.95 " 228.28/198.95 "lexEsc15 c s True = (c : [],s) : []; 228.28/198.95 lexEsc15 c s False = lexEsc14 (c : s); 228.28/198.95 " 228.28/198.95 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 228.28/198.95 lexEsc16 vwyz = lexEsc14 vwyz; 228.28/198.95 " 228.28/198.95 The following Function with conditions 228.28/198.95 "lexLitChar [] = []; 228.28/198.95 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 228.28/198.95 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 228.28/198.95 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 228.28/198.95 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 228.28/198.95 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 228.28/198.95 lexEsc (wuw : wux)|isDigit wuwspan isDigit (wuw : wux) : []|isUpper wuwlexEsc2 (concatMap (lexEsc1 (wuw : wux)) table); 228.28/198.95 lexEsc wuy = []; 228.28/198.95 ; 228.28/198.95 lexEsc0 mne vu69 = lexEsc00 mne vu69; 228.28/198.95 ; 228.28/198.95 lexEsc00 mne ([],s') = (mne,s') : []; 228.28/198.95 lexEsc00 mne wvu = []; 228.28/198.95 ; 228.28/198.95 lexEsc1 s vu70 = lexEsc10 s vu70; 228.28/198.95 ; 228.28/198.95 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.28/198.95 lexEsc10 s wvv = []; 228.28/198.95 ; 228.28/198.95 lexEsc2 (pr : wuz) = pr : []; 228.28/198.95 lexEsc2 [] = []; 228.28/198.95 ; 228.28/198.95 prefix c (t,s) = (c : t,s); 228.28/198.95 ; 228.28/198.95 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 " 228.28/198.95 is transformed to 228.28/198.95 "lexLitChar [] = lexLitChar3 []; 228.28/198.95 lexLitChar (c : s) = lexLitChar2 (c : s); 228.28/198.95 " 228.28/198.95 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 228.28/198.95 lexEsc (c : s) = lexEsc16 (c : s); 228.28/198.95 lexEsc (vwxx : vwyu) = lexEsc14 (vwxx : vwyu); 228.28/198.95 lexEsc (vwwy : s) = lexEsc11 (vwwy : s); 228.28/198.95 lexEsc (vwvz : s) = lexEsc8 (vwvz : s); 228.28/198.95 lexEsc (wuw : wux) = lexEsc6 (wuw : wux); 228.28/198.95 lexEsc wuy = lexEsc3 wuy; 228.28/198.95 ; 228.28/198.95 lexEsc0 mne vu69 = lexEsc00 mne vu69; 228.28/198.95 ; 228.28/198.95 lexEsc00 mne ([],s') = (mne,s') : []; 228.28/198.95 lexEsc00 mne wvu = []; 228.28/198.95 ; 228.28/198.95 lexEsc1 s vu70 = lexEsc10 s vu70; 228.28/198.95 ; 228.28/198.95 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.28/198.95 lexEsc10 s wvv = []; 228.28/198.95 ; 228.28/198.95 lexEsc11 (vwwy : s) = lexEsc9 (vwwy == 'o') (vwwy : s); 228.28/198.95 lexEsc11 vwxv = lexEsc8 vwxv; 228.28/198.95 ; 228.28/198.95 lexEsc12 vwxx c s True = ('^' : c : [],s) : []; 228.28/198.95 lexEsc12 vwxx c s False = lexEsc11 (vwxx : c : s); 228.28/198.95 ; 228.28/198.95 lexEsc13 True (vwxx : c : s) = lexEsc12 vwxx c s (c >= '@' && c <= '_'); 228.28/198.95 lexEsc13 vwyv vwyw = lexEsc11 vwyw; 228.28/198.95 ; 228.28/198.95 lexEsc14 (vwxx : vwyu) = lexEsc13 (vwxx == '^') (vwxx : vwyu); 228.28/198.95 lexEsc14 vwyx = lexEsc11 vwyx; 228.28/198.95 ; 228.28/198.95 lexEsc15 c s True = (c : [],s) : []; 228.28/198.95 lexEsc15 c s False = lexEsc14 (c : s); 228.28/198.95 ; 228.28/198.95 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 228.28/198.95 lexEsc16 vwyz = lexEsc14 vwyz; 228.28/198.95 ; 228.28/198.95 lexEsc2 (pr : wuz) = pr : []; 228.28/198.95 lexEsc2 [] = []; 228.28/198.95 ; 228.28/198.95 lexEsc3 wuy = []; 228.28/198.95 ; 228.28/198.95 lexEsc4 wuw wux True = lexEsc2 (concatMap (lexEsc1 (wuw : wux)) table); 228.28/198.95 lexEsc4 wuw wux False = lexEsc3 (wuw : wux); 228.28/198.95 ; 228.28/198.95 lexEsc5 wuw wux True = span isDigit (wuw : wux) : []; 228.28/198.95 lexEsc5 wuw wux False = lexEsc4 wuw wux (isUpper wuw); 228.28/198.95 ; 228.28/198.95 lexEsc6 (wuw : wux) = lexEsc5 wuw wux (isDigit wuw); 228.28/198.95 lexEsc6 vwvx = lexEsc3 vwvx; 228.28/198.95 ; 228.28/198.95 lexEsc7 True (vwvz : s) = prefix 'x' (span isHexDigit s) : []; 228.28/198.95 lexEsc7 vwwu vwwv = lexEsc6 vwwv; 228.28/198.95 ; 228.28/198.95 lexEsc8 (vwvz : s) = lexEsc7 (vwvz == 'x') (vwvz : s); 228.28/198.95 lexEsc8 vwww = lexEsc6 vwww; 228.28/198.95 ; 228.28/198.95 lexEsc9 True (vwwy : s) = prefix 'o' (span isOctDigit s) : []; 228.28/198.95 lexEsc9 vwwz vwxu = lexEsc8 vwxu; 228.28/198.95 ; 228.28/198.95 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 228.28/198.95 ; 228.28/198.95 lexLitChar1 c s True = (c : [],s) : []; 228.28/198.95 lexLitChar1 c s False = lexLitChar0 c s otherwise; 228.28/198.95 ; 228.28/198.95 prefix c (t,s) = (c : t,s); 228.28/198.95 ; 228.28/198.95 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 " 228.28/198.95 "lexLitChar3 [] = []; 228.28/198.95 lexLitChar3 vwzw = lexLitChar2 vwzw; 228.28/198.95 " 228.28/198.95 228.28/198.95 ---------------------------------------- 228.28/198.95 228.28/198.95 (10) 228.28/198.95 Obligation: 228.28/198.95 mainModule Main 228.28/198.95 module Main where { 228.28/198.95 import qualified Prelude; 228.28/198.95 } 228.28/198.95 228.28/198.95 ---------------------------------------- 228.28/198.95 228.28/198.95 (11) LetRed (EQUIVALENT) 228.28/198.95 Let/Where Reductions: 228.28/198.95 The bindings of the following Let/Where expression 228.28/198.95 "gcd' (abs x) (abs y) where { 228.28/198.95 gcd' x wwu = gcd'2 x wwu; 228.28/198.95 gcd' x y = gcd'0 x y; 228.28/198.95 ; 228.28/198.95 gcd'0 x y = gcd' y (x `rem` y); 228.28/198.95 ; 228.28/198.95 gcd'1 True x wwu = x; 228.28/198.95 gcd'1 wwv www wwx = gcd'0 www wwx; 228.28/198.95 ; 228.28/198.95 gcd'2 x wwu = gcd'1 (wwu == 0) x wwu; 228.28/198.95 gcd'2 wwy wwz = gcd'0 wwy wwz; 228.28/198.95 } 228.28/198.95 " 228.28/198.95 are unpacked to the following functions on top level 228.28/198.95 "gcd0Gcd' x wwu = gcd0Gcd'2 x wwu; 228.28/198.95 gcd0Gcd' x y = gcd0Gcd'0 x y; 228.28/198.95 " 228.28/198.95 "gcd0Gcd'0 x y = gcd0Gcd' y (x `rem` y); 228.28/198.95 " 228.28/198.95 "gcd0Gcd'2 x wwu = gcd0Gcd'1 (wwu == 0) x wwu; 228.28/198.95 gcd0Gcd'2 wwy wwz = gcd0Gcd'0 wwy wwz; 228.28/198.95 " 228.28/198.95 "gcd0Gcd'1 True x wwu = x; 228.28/198.95 gcd0Gcd'1 wwv www wwx = gcd0Gcd'0 www wwx; 228.28/198.95 " 228.28/198.95 The bindings of the following Let/Where expression 228.28/198.95 "reduce1 x y (y == 0) where { 228.28/198.95 d = gcd x y; 228.28/198.95 ; 228.28/198.95 reduce0 x y True = x `quot` d :% (y `quot` d); 228.28/198.95 ; 228.28/198.95 reduce1 x y True = error []; 228.28/198.95 reduce1 x y False = reduce0 x y otherwise; 228.28/198.95 } 228.28/198.95 " 228.28/198.95 are unpacked to the following functions on top level 228.28/198.95 "reduce2D vwzx vwzy = gcd vwzx vwzy; 228.28/198.95 " 228.28/198.95 "reduce2Reduce1 vwzx vwzy x y True = error []; 228.28/198.95 reduce2Reduce1 vwzx vwzy x y False = reduce2Reduce0 vwzx vwzy x y otherwise; 228.28/198.95 " 228.28/198.95 "reduce2Reduce0 vwzx vwzy x y True = x `quot` reduce2D vwzx vwzy :% (y `quot` reduce2D vwzx vwzy); 228.28/198.95 " 228.28/198.95 The bindings of the following Let/Where expression 228.28/198.95 "lexLitChar1 c s (c /= '\') where { 228.28/198.95 lexEsc (c : s) = lexEsc16 (c : s); 228.28/198.95 lexEsc (vwxx : vwyu) = lexEsc14 (vwxx : vwyu); 228.28/198.95 lexEsc (vwwy : s) = lexEsc11 (vwwy : s); 228.28/198.95 lexEsc (vwvz : s) = lexEsc8 (vwvz : s); 228.28/198.95 lexEsc (wuw : wux) = lexEsc6 (wuw : wux); 228.28/198.95 lexEsc wuy = lexEsc3 wuy; 228.28/198.95 ; 228.28/198.95 lexEsc0 mne vu69 = lexEsc00 mne vu69; 228.28/198.95 ; 228.28/198.95 lexEsc00 mne ([],s') = (mne,s') : []; 228.28/198.95 lexEsc00 mne wvu = []; 228.28/198.95 ; 228.28/198.95 lexEsc1 s vu70 = lexEsc10 s vu70; 228.28/198.95 ; 228.28/198.95 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 228.28/198.95 lexEsc10 s wvv = []; 228.28/198.95 ; 228.28/198.95 lexEsc11 (vwwy : s) = lexEsc9 (vwwy == 'o') (vwwy : s); 228.28/198.95 lexEsc11 vwxv = lexEsc8 vwxv; 228.28/198.95 ; 228.28/198.95 lexEsc12 vwxx c s True = ('^' : c : [],s) : []; 228.28/198.95 lexEsc12 vwxx c s False = lexEsc11 (vwxx : c : s); 228.28/198.95 ; 228.28/198.95 lexEsc13 True (vwxx : c : s) = lexEsc12 vwxx c s (c >= '@' && c <= '_'); 228.28/198.95 lexEsc13 vwyv vwyw = lexEsc11 vwyw; 228.28/198.95 ; 228.28/198.95 lexEsc14 (vwxx : vwyu) = lexEsc13 (vwxx == '^') (vwxx : vwyu); 228.28/198.95 lexEsc14 vwyx = lexEsc11 vwyx; 228.28/198.95 ; 228.28/198.95 lexEsc15 c s True = (c : [],s) : []; 228.28/198.95 lexEsc15 c s False = lexEsc14 (c : s); 228.28/198.95 ; 228.28/198.95 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 228.28/198.95 lexEsc16 vwyz = lexEsc14 vwyz; 228.28/198.95 ; 228.28/198.95 lexEsc2 (pr : wuz) = pr : []; 228.28/198.95 lexEsc2 [] = []; 228.28/198.95 ; 228.28/198.95 lexEsc3 wuy = []; 228.28/198.95 ; 228.28/198.95 lexEsc4 wuw wux True = lexEsc2 (concatMap (lexEsc1 (wuw : wux)) table); 228.28/198.95 lexEsc4 wuw wux False = lexEsc3 (wuw : wux); 228.28/198.95 ; 228.28/198.95 lexEsc5 wuw wux True = span isDigit (wuw : wux) : []; 228.28/198.95 lexEsc5 wuw wux False = lexEsc4 wuw wux (isUpper wuw); 228.28/198.95 ; 228.28/198.95 lexEsc6 (wuw : wux) = lexEsc5 wuw wux (isDigit wuw); 228.28/198.95 lexEsc6 vwvx = lexEsc3 vwvx; 228.28/198.95 ; 228.28/198.95 lexEsc7 True (vwvz : s) = prefix 'x' (span isHexDigit s) : []; 228.28/198.95 lexEsc7 vwwu vwwv = lexEsc6 vwwv; 228.28/198.95 ; 228.28/198.95 lexEsc8 (vwvz : s) = lexEsc7 (vwvz == 'x') (vwvz : s); 228.28/198.95 lexEsc8 vwww = lexEsc6 vwww; 228.28/198.95 ; 228.28/198.95 lexEsc9 True (vwwy : s) = prefix 'o' (span isOctDigit s) : []; 228.28/198.95 lexEsc9 vwwz vwxu = lexEsc8 vwxu; 228.28/198.95 ; 228.28/198.95 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 228.28/198.95 ; 228.28/198.95 lexLitChar1 c s True = (c : [],s) : []; 228.28/198.95 lexLitChar1 c s False = lexLitChar0 c s otherwise; 228.28/198.95 ; 228.28/198.95 prefix c (t,s) = (c : t,s); 228.28/198.95 ; 228.28/198.95 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 228.28/198.95 } 228.28/198.95 " 228.28/198.95 are unpacked to the following functions on top level 228.28/198.95 "lexLitChar2LexEsc6 (wuw : wux) = lexLitChar2LexEsc5 wuw wux (isDigit wuw); 228.28/198.95 lexLitChar2LexEsc6 vwvx = lexLitChar2LexEsc3 vwvx; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 228.28/198.95 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 228.28/198.95 " 228.28/198.95 "lexLitChar2Prefix c (t,s) = (c : t,s); 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc9 True (vwwy : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 228.28/198.95 lexLitChar2LexEsc9 vwwz vwxu = lexLitChar2LexEsc8 vwxu; 228.28/198.95 " 228.28/198.95 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc13 True (vwxx : c : s) = lexLitChar2LexEsc12 vwxx c s (c >= '@' && c <= '_'); 228.28/198.95 lexLitChar2LexEsc13 vwyv vwyw = lexLitChar2LexEsc11 vwyw; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc4 wuw wux True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (wuw : wux)) lexLitChar2Table); 228.28/198.95 lexLitChar2LexEsc4 wuw wux False = lexLitChar2LexEsc3 (wuw : wux); 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc12 vwxx c s True = ('^' : c : [],s) : []; 228.28/198.95 lexLitChar2LexEsc12 vwxx c s False = lexLitChar2LexEsc11 (vwxx : c : s); 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 228.28/198.95 lexLitChar2LexEsc (vwxx : vwyu) = lexLitChar2LexEsc14 (vwxx : vwyu); 228.28/198.95 lexLitChar2LexEsc (vwwy : s) = lexLitChar2LexEsc11 (vwwy : s); 228.28/198.95 lexLitChar2LexEsc (vwvz : s) = lexLitChar2LexEsc8 (vwvz : s); 228.28/198.95 lexLitChar2LexEsc (wuw : wux) = lexLitChar2LexEsc6 (wuw : wux); 228.28/198.95 lexLitChar2LexEsc wuy = lexLitChar2LexEsc3 wuy; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 228.28/198.95 " 228.28/198.95 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 228.28/198.95 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc3 wuy = []; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc7 True (vwvz : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 228.28/198.95 lexLitChar2LexEsc7 vwwu vwwv = lexLitChar2LexEsc6 vwwv; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc2 (pr : wuz) = pr : []; 228.28/198.95 lexLitChar2LexEsc2 [] = []; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc8 (vwvz : s) = lexLitChar2LexEsc7 (vwvz == 'x') (vwvz : s); 228.28/198.95 lexLitChar2LexEsc8 vwww = lexLitChar2LexEsc6 vwww; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc5 wuw wux True = span isDigit (wuw : wux) : []; 228.28/198.95 lexLitChar2LexEsc5 wuw wux False = lexLitChar2LexEsc4 wuw wux (isUpper wuw); 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 228.28/198.95 lexLitChar2LexEsc10 s wvv = []; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 228.28/198.95 lexLitChar2LexEsc00 mne wvu = []; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc11 (vwwy : s) = lexLitChar2LexEsc9 (vwwy == 'o') (vwwy : s); 228.28/198.95 lexLitChar2LexEsc11 vwxv = lexLitChar2LexEsc8 vwxv; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 228.28/198.95 lexLitChar2LexEsc16 vwyz = lexLitChar2LexEsc14 vwyz; 228.28/198.95 " 228.28/198.95 "lexLitChar2LexEsc14 (vwxx : vwyu) = lexLitChar2LexEsc13 (vwxx == '^') (vwxx : vwyu); 228.28/198.95 lexLitChar2LexEsc14 vwyx = lexLitChar2LexEsc11 vwyx; 228.28/198.95 " 228.28/198.95 The bindings of the following Let/Where expression 228.28/198.95 "concatMap readFloat1 (readFix r) ++ concatMap readFloat2 (lex r) ++ concatMap readFloat3 (lex r) where { 228.28/198.95 lexFrac (yxz : s) = lexFrac2 (yxz : s); 228.28/198.95 lexFrac s = lexFrac0 s; 228.28/198.95 ; 228.28/198.95 lexFrac0 s = ([],s) : []; 228.28/198.95 ; 228.28/198.95 lexFrac1 True (yxz : s) = lexDigits s; 228.28/198.95 lexFrac1 yyu yyv = lexFrac0 yyv; 228.28/198.95 ; 228.28/198.95 lexFrac2 (yxz : s) = lexFrac1 (yxz == '.') (yxz : s); 228.28/198.95 lexFrac2 yyw = lexFrac0 yyw; 228.28/198.95 ; 228.28/198.95 readExp (e : s) = readExp2 (e : s); 228.28/198.95 readExp s = readExp0 s; 228.28/198.95 ; 228.28/198.95 readExp' (yxu : s) = readExp'5 (yxu : s); 228.28/198.95 readExp' (ywv : s) = readExp'3 (ywv : s); 228.28/198.95 readExp' s = readExp'1 s; 228.28/198.95 ; 228.28/198.95 readExp'0 vu88 = readExp'00 vu88; 228.28/198.95 ; 228.28/198.95 readExp'00 (k,t) = (`negate` k,t) : []; 228.28/198.95 readExp'00 vuu = []; 228.28/198.95 ; 228.28/198.95 readExp'1 s = readDec s; 228.28/198.95 ; 228.28/198.95 readExp'2 True (ywv : s) = readDec s; 228.28/198.95 readExp'2 yww ywx = readExp'1 ywx; 228.28/198.95 ; 228.28/198.95 readExp'3 (ywv : s) = readExp'2 (ywv == '+') (ywv : s); 228.28/198.95 readExp'3 ywy = readExp'1 ywy; 228.28/198.95 ; 228.28/198.95 readExp'4 True (yxu : s) = concatMap readExp'0 (readDec s); 228.28/198.95 readExp'4 yxv yxw = readExp'3 yxw; 228.28/198.95 ; 228.28/198.95 readExp'5 (yxu : s) = readExp'4 (yxu == '-') (yxu : s); 228.28/198.95 readExp'5 yxx = readExp'3 yxx; 228.28/198.95 ; 228.28/198.95 readExp0 s = (0,s) : []; 228.28/198.95 ; 228.28/198.95 readExp1 e s True = readExp' s; 228.28/198.95 readExp1 e s False = readExp0 (e : s); 228.28/198.95 ; 228.28/198.95 readExp2 (e : s) = readExp1 e s (e `elem` 'e' : 'E' : []); 228.28/198.95 readExp2 yvz = readExp0 yvz; 228.28/198.95 ; 228.28/198.95 readFix r = concatMap readFix1 (lexDigits r); 228.28/198.95 ; 228.28/198.95 readFix0 ds vu86 = readFix00 ds vu86; 228.28/198.95 ; 228.28/198.95 readFix00 ds (ds',t) = (read (ds ++ ds'),length ds',t) : []; 228.28/198.95 readFix00 ds vuv = []; 228.28/198.95 ; 228.28/198.95 readFix1 vu87 = readFix10 vu87; 228.28/198.95 ; 228.28/198.95 readFix10 (ds,d) = concatMap (readFix0 ds) (lexFrac d); 228.28/198.95 readFix10 vuw = []; 228.28/198.95 ; 228.28/198.95 readFloat0 n d vu82 = readFloat00 n d vu82; 228.28/198.95 ; 228.28/198.95 readFloat00 n d (k,t) = (fromRational (n % 1 * 10 ^^ (k - d)),t) : []; 228.28/198.95 readFloat00 n d vux = []; 228.28/198.95 ; 228.28/198.95 readFloat1 vu83 = readFloat10 vu83; 228.28/198.95 ; 228.28/198.95 readFloat10 (n,d,s) = concatMap (readFloat0 n d) (readExp s); 228.28/198.95 readFloat10 vuz = []; 228.28/198.95 ; 228.28/198.95 readFloat2 vu84 = readFloat20 vu84; 228.28/198.95 ; 228.28/198.95 readFloat20 (yyz : zuw,t) = readFloat204 (yyz : zuw,t); 228.28/198.95 readFloat20 vuy = readFloat200 vuy; 228.28/198.95 ; 228.28/198.95 readFloat200 vuy = []; 228.28/198.95 ; 228.28/198.95 readFloat201 True (yyz : yzv : yzx : [],t) = (0 / 0,t) : []; 228.28/198.95 readFloat201 zux zuy = readFloat200 zuy; 228.28/198.95 ; 228.28/198.95 readFloat202 True (yyz : yzv : yzx : yzy,t) = readFloat201 (yzx == 'N') (yyz : yzv : yzx : yzy,t); 228.28/198.95 readFloat202 zuz zvu = readFloat200 zvu; 228.28/198.95 ; 228.28/198.95 readFloat203 True (yyz : yzv : zuu,t) = readFloat202 (yzv == 'a') (yyz : yzv : zuu,t); 228.28/198.95 readFloat203 zvv zvw = readFloat200 zvw; 228.28/198.95 ; 228.28/198.95 readFloat204 (yyz : zuw,t) = readFloat203 (yyz == 'N') (yyz : zuw,t); 228.28/198.95 readFloat204 zvx = readFloat200 zvx; 228.28/198.95 ; 228.28/198.95 readFloat3 vu85 = readFloat30 vu85; 228.28/198.95 ; 228.28/198.95 readFloat30 (zwu : vuuz,t) = readFloat309 (zwu : vuuz,t); 228.28/198.95 readFloat30 vvu = readFloat300 vvu; 228.28/198.95 ; 228.28/198.95 readFloat300 vvu = []; 228.28/198.95 ; 228.28/198.95 readFloat301 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : [],t) = (1 / 0,t) : []; 228.28/198.95 readFloat301 vuvu vuvv = readFloat300 vuvv; 228.28/198.95 ; 228.28/198.95 readFloat302 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : zyx,t) = readFloat301 (zyw == 'y') (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : zyx,t); 228.28/198.95 readFloat302 vuvw vuvx = readFloat300 vuvx; 228.28/198.95 ; 228.28/198.95 readFloat303 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyz,t) = readFloat302 (zyu == 't') (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyz,t); 228.28/198.95 readFloat303 vuvy vuvz = readFloat300 vuvz; 228.28/198.95 ; 228.28/198.95 readFloat304 True (zwu : zww : zwy : zxu : zxw : zxy : zzv,t) = readFloat303 (zxy == 'i') (zwu : zww : zwy : zxu : zxw : zxy : zzv,t); 228.28/198.95 readFloat304 vuwu vuwv = readFloat300 vuwv; 228.28/198.95 ; 228.28/198.95 readFloat305 True (zwu : zww : zwy : zxu : zxw : zzx,t) = readFloat304 (zxw == 'n') (zwu : zww : zwy : zxu : zxw : zzx,t); 228.28/198.95 readFloat305 vuww vuwx = readFloat300 vuwx; 228.28/198.95 ; 228.28/198.95 readFloat306 True (zwu : zww : zwy : zxu : zzz,t) = readFloat305 (zxu == 'i') (zwu : zww : zwy : zxu : zzz,t); 228.28/198.95 readFloat306 vuwy vuwz = readFloat300 vuwz; 228.28/198.95 ; 228.28/198.95 readFloat307 True (zwu : zww : zwy : vuuv,t) = readFloat306 (zwy == 'f') (zwu : zww : zwy : vuuv,t); 228.28/198.95 readFloat307 vuxu vuxv = readFloat300 vuxv; 228.28/198.95 ; 228.28/198.95 readFloat308 True (zwu : zww : vuux,t) = readFloat307 (zww == 'n') (zwu : zww : vuux,t); 228.28/198.95 readFloat308 vuxw vuxx = readFloat300 vuxx; 228.28/198.95 ; 228.28/198.95 readFloat309 (zwu : vuuz,t) = readFloat308 (zwu == 'I') (zwu : vuuz,t); 228.28/198.95 readFloat309 vuxy = readFloat300 vuxy; 228.28/198.95 } 228.28/198.95 " 228.28/198.95 are unpacked to the following functions on top level 228.28/198.95 "readFloatLexFrac0 s = ([],s) : []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat307 True (zwu : zww : zwy : vuuv,t) = readFloatReadFloat306 (zwy == 'f') (zwu : zww : zwy : vuuv,t); 228.28/198.95 readFloatReadFloat307 vuxu vuxv = readFloatReadFloat300 vuxv; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat308 True (zwu : zww : vuux,t) = readFloatReadFloat307 (zww == 'n') (zwu : zww : vuux,t); 228.28/198.95 readFloatReadFloat308 vuxw vuxx = readFloatReadFloat300 vuxx; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat0 n d vu82 = readFloatReadFloat00 n d vu82; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat1 vu83 = readFloatReadFloat10 vu83; 228.28/198.95 " 228.28/198.95 "readFloatLexFrac1 True (yxz : s) = lexDigits s; 228.28/198.95 readFloatLexFrac1 yyu yyv = readFloatLexFrac0 yyv; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat00 n d (k,t) = (fromRational (n % 1 * 10 ^^ (k - d)),t) : []; 228.28/198.95 readFloatReadFloat00 n d vux = []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat30 (zwu : vuuz,t) = readFloatReadFloat309 (zwu : vuuz,t); 228.28/198.95 readFloatReadFloat30 vvu = readFloatReadFloat300 vvu; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat305 True (zwu : zww : zwy : zxu : zxw : zzx,t) = readFloatReadFloat304 (zxw == 'n') (zwu : zww : zwy : zxu : zxw : zzx,t); 228.28/198.95 readFloatReadFloat305 vuww vuwx = readFloatReadFloat300 vuwx; 228.28/198.95 " 228.28/198.95 "readFloatReadFix r = concatMap readFloatReadFix1 (lexDigits r); 228.28/198.95 " 228.28/198.95 "readFloatReadExp1 e s True = readFloatReadExp' s; 228.28/198.95 readFloatReadExp1 e s False = readFloatReadExp0 (e : s); 228.28/198.95 " 228.28/198.95 "readFloatReadFloat304 True (zwu : zww : zwy : zxu : zxw : zxy : zzv,t) = readFloatReadFloat303 (zxy == 'i') (zwu : zww : zwy : zxu : zxw : zxy : zzv,t); 228.28/198.95 readFloatReadFloat304 vuwu vuwv = readFloatReadFloat300 vuwv; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'2 True (ywv : s) = readDec s; 228.28/198.95 readFloatReadExp'2 yww ywx = readFloatReadExp'1 ywx; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat10 (n,d,s) = concatMap (readFloatReadFloat0 n d) (readFloatReadExp s); 228.28/198.95 readFloatReadFloat10 vuz = []; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'0 vu88 = readFloatReadExp'00 vu88; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat302 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : zyx,t) = readFloatReadFloat301 (zyw == 'y') (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : zyx,t); 228.28/198.95 readFloatReadFloat302 vuvw vuvx = readFloatReadFloat300 vuvx; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat300 vvu = []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat204 (yyz : zuw,t) = readFloatReadFloat203 (yyz == 'N') (yyz : zuw,t); 228.28/198.95 readFloatReadFloat204 zvx = readFloatReadFloat200 zvx; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat200 vuy = []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat309 (zwu : vuuz,t) = readFloatReadFloat308 (zwu == 'I') (zwu : vuuz,t); 228.28/198.95 readFloatReadFloat309 vuxy = readFloatReadFloat300 vuxy; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'3 (ywv : s) = readFloatReadExp'2 (ywv == '+') (ywv : s); 228.28/198.95 readFloatReadExp'3 ywy = readFloatReadExp'1 ywy; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat301 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyw : [],t) = (1 / 0,t) : []; 228.28/198.95 readFloatReadFloat301 vuvu vuvv = readFloatReadFloat300 vuvv; 228.28/198.95 " 228.28/198.95 "readFloatReadFix10 (ds,d) = concatMap (readFloatReadFix0 ds) (readFloatLexFrac d); 228.28/198.95 readFloatReadFix10 vuw = []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat201 True (yyz : yzv : yzx : [],t) = (0 / 0,t) : []; 228.28/198.95 readFloatReadFloat201 zux zuy = readFloatReadFloat200 zuy; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat2 vu84 = readFloatReadFloat20 vu84; 228.28/198.95 " 228.28/198.95 "readFloatReadExp' (yxu : s) = readFloatReadExp'5 (yxu : s); 228.28/198.95 readFloatReadExp' (ywv : s) = readFloatReadExp'3 (ywv : s); 228.28/198.95 readFloatReadExp' s = readFloatReadExp'1 s; 228.28/198.95 " 228.28/198.95 "readFloatReadExp2 (e : s) = readFloatReadExp1 e s (e `elem` 'e' : 'E' : []); 228.28/198.95 readFloatReadExp2 yvz = readFloatReadExp0 yvz; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat3 vu85 = readFloatReadFloat30 vu85; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'00 (k,t) = (`negate` k,t) : []; 228.28/198.95 readFloatReadExp'00 vuu = []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat203 True (yyz : yzv : zuu,t) = readFloatReadFloat202 (yzv == 'a') (yyz : yzv : zuu,t); 228.28/198.95 readFloatReadFloat203 zvv zvw = readFloatReadFloat200 zvw; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat202 True (yyz : yzv : yzx : yzy,t) = readFloatReadFloat201 (yzx == 'N') (yyz : yzv : yzx : yzy,t); 228.28/198.95 readFloatReadFloat202 zuz zvu = readFloatReadFloat200 zvu; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat306 True (zwu : zww : zwy : zxu : zzz,t) = readFloatReadFloat305 (zxu == 'i') (zwu : zww : zwy : zxu : zzz,t); 228.28/198.95 readFloatReadFloat306 vuwy vuwz = readFloatReadFloat300 vuwz; 228.28/198.95 " 228.28/198.95 "readFloatReadFix0 ds vu86 = readFloatReadFix00 ds vu86; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'1 s = readDec s; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat20 (yyz : zuw,t) = readFloatReadFloat204 (yyz : zuw,t); 228.28/198.95 readFloatReadFloat20 vuy = readFloatReadFloat200 vuy; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'4 True (yxu : s) = concatMap readFloatReadExp'0 (readDec s); 228.28/198.95 readFloatReadExp'4 yxv yxw = readFloatReadExp'3 yxw; 228.28/198.95 " 228.28/198.95 "readFloatReadFix00 ds (ds',t) = (read (ds ++ ds'),length ds',t) : []; 228.28/198.95 readFloatReadFix00 ds vuv = []; 228.28/198.95 " 228.28/198.95 "readFloatReadFloat303 True (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyz,t) = readFloatReadFloat302 (zyu == 't') (zwu : zww : zwy : zxu : zxw : zxy : zyu : zyz,t); 228.28/198.95 readFloatReadFloat303 vuvy vuvz = readFloatReadFloat300 vuvz; 228.28/198.95 " 228.28/198.95 "readFloatReadExp (e : s) = readFloatReadExp2 (e : s); 228.28/198.95 readFloatReadExp s = readFloatReadExp0 s; 228.28/198.95 " 228.28/198.95 "readFloatLexFrac (yxz : s) = readFloatLexFrac2 (yxz : s); 228.28/198.95 readFloatLexFrac s = readFloatLexFrac0 s; 228.28/198.95 " 228.28/198.95 "readFloatReadExp'5 (yxu : s) = readFloatReadExp'4 (yxu == '-') (yxu : s); 228.28/198.95 readFloatReadExp'5 yxx = readFloatReadExp'3 yxx; 228.28/198.95 " 228.28/198.95 "readFloatReadExp0 s = (0,s) : []; 228.28/198.95 " 228.28/198.95 "readFloatReadFix1 vu87 = readFloatReadFix10 vu87; 228.28/198.95 " 228.28/198.95 "readFloatLexFrac2 (yxz : s) = readFloatLexFrac1 (yxz == '.') (yxz : s); 228.28/198.95 readFloatLexFrac2 yyw = readFloatLexFrac0 yyw; 228.28/198.95 " 228.28/198.95 The bindings of the following Let/Where expression 228.28/198.95 "pr1 x n (n > 0) where { 228.28/198.95 f vvv vuxz y = f4 vvv vuxz y; 228.28/198.95 f x n y = f0 x n y; 228.28/198.95 ; 228.28/198.95 f0 x n y = g x n where { 228.28/198.95 g x n = g2 x n; 228.28/198.95 ; 228.28/198.95 g0 x n True = f x (n - 1) (x * y); 228.28/198.95 ; 228.28/198.95 g1 x n True = g (x * x) (n `quot` 2); 228.28/198.95 g1 x n False = g0 x n otherwise; 228.28/198.95 ; 228.28/198.95 g2 x n = g1 x n (even n); 228.28/198.95 } 228.28/198.95 ; 228.28/198.95 ; 228.28/198.95 f3 True vvv vuxz y = y; 228.28/198.95 f3 vuyu vuyv vuyw vuyx = f0 vuyv vuyw vuyx; 228.28/198.95 ; 228.28/198.95 f4 vvv vuxz y = f3 (vuxz == 0) vvv vuxz y; 228.28/198.95 f4 vuyy vuyz vuzu = f0 vuyy vuyz vuzu; 228.28/198.95 ; 228.28/198.95 pr1 x n True = f x (n - 1) x; 228.28/198.95 pr1 x n False = pr0 x n; 228.28/198.95 } 228.28/198.95 " 228.28/198.95 are unpacked to the following functions on top level 228.28/198.95 "pr2F4 vvv vuxz y = pr2F3 (vuxz == 0) vvv vuxz y; 228.28/198.95 pr2F4 vuyy vuyz vuzu = pr2F0 vuyy vuyz vuzu; 228.28/198.95 " 228.28/198.95 "pr2F vvv vuxz y = pr2F4 vvv vuxz y; 228.28/198.95 pr2F x n y = pr2F0 x n y; 228.28/198.95 " 228.28/198.95 "pr2F0 x n y = pr2F0G y x n; 228.28/198.95 " 228.28/198.95 "pr2Pr1 x n True = pr2F x (n - 1) x; 228.28/198.95 pr2Pr1 x n False = pr0 x n; 228.28/198.95 " 228.28/198.95 "pr2F3 True vvv vuxz y = y; 228.28/198.95 pr2F3 vuyu vuyv vuyw vuyx = pr2F0 vuyv vuyw vuyx; 228.28/198.95 " 228.28/198.95 The bindings of the following Let/Where expression 228.28/198.95 "concatMap lex1 (lexString s) where { 228.28/198.95 lex1 vu55 = lex10 vu55; 228.28/198.95 ; 228.28/198.95 lex10 (str,t) = ('"' : str,t) : []; 228.28/198.95 lex10 xv = []; 228.28/198.95 ; 228.28/198.95 lexStrItem (xvu : xvy) = lexStrItem7 (xvu : xvy); 228.28/198.95 lexStrItem (wzy : xuv) = lexStrItem4 (wzy : xuv); 228.28/198.95 lexStrItem s = lexStrItem1 s; 228.28/198.95 ; 228.28/198.95 lexStrItem0 vu58 = lexStrItem00 vu58; 228.28/198.95 ; 228.28/198.95 lexStrItem00 (xwz : t) = lexStrItem002 (xwz : t); 228.28/198.95 lexStrItem00 xu = lexStrItem000 xu; 228.28/198.95 ; 228.28/198.95 lexStrItem000 xu = []; 228.28/198.95 ; 228.28/198.95 lexStrItem001 True (xwz : t) = ([],t) : []; 228.28/198.95 lexStrItem001 xxu xxv = lexStrItem000 xxv; 228.28/198.95 ; 228.28/198.95 lexStrItem002 (xwz : t) = lexStrItem001 (xwz == '\') (xwz : t); 228.28/198.95 lexStrItem002 xxw = lexStrItem000 xxw; 228.28/198.95 ; 228.28/198.95 lexStrItem1 s = lexLitChar s; 228.28/198.95 ; 228.28/198.95 lexStrItem2 wzy c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 228.28/198.95 lexStrItem2 wzy c s False = lexStrItem1 (wzy : c : s); 228.28/198.95 ; 228.28/198.95 lexStrItem3 True (wzy : c : s) = lexStrItem2 wzy c s (isSpace c); 228.28/198.95 lexStrItem3 xuw xux = lexStrItem1 xux; 228.28/198.95 ; 228.28/198.95 lexStrItem4 (wzy : xuv) = lexStrItem3 (wzy == '\') (wzy : xuv); 228.28/198.95 lexStrItem4 xuy = lexStrItem1 xuy; 228.28/198.95 ; 228.28/198.95 lexStrItem5 True (xvu : xvw : s) = ('\' : '&' : [],s) : []; 228.28/198.95 lexStrItem5 xvz xwu = lexStrItem4 xwu; 228.28/198.95 ; 228.28/198.95 lexStrItem6 True (xvu : xvw : s) = lexStrItem5 (xvw == '&') (xvu : xvw : s); 228.28/198.95 lexStrItem6 xwv xww = lexStrItem4 xww; 228.28/198.95 ; 228.28/198.95 lexStrItem7 (xvu : xvy) = lexStrItem6 (xvu == '\') (xvu : xvy); 228.28/198.95 lexStrItem7 xwx = lexStrItem4 xwx; 228.28/198.95 ; 228.28/198.95 lexString (wyz : s) = lexString4 (wyz : s); 228.28/198.95 lexString s = lexString2 s; 228.28/198.95 ; 228.28/198.95 lexString0 ch vu56 = lexString00 ch vu56; 228.28/198.95 ; 228.28/198.95 lexString00 ch (str,u) = (ch ++ str,u) : []; 228.28/198.95 lexString00 ch wy = []; 228.28/198.95 ; 228.28/198.95 lexString1 vu57 = lexString10 vu57; 228.28/198.95 ; 228.28/198.95 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 228.28/198.95 lexString10 wz = []; 228.28/198.95 ; 228.28/198.95 lexString2 s = concatMap lexString1 (lexStrItem s); 228.28/198.95 ; 228.28/198.95 lexString3 True (wyz : s) = ('"' : [],s) : []; 228.28/198.95 lexString3 wzu wzv = lexString2 wzv; 228.28/198.95 ; 228.28/198.95 lexString4 (wyz : s) = lexString3 (wyz == '"') (wyz : s); 228.28/198.95 lexString4 wzw = lexString2 wzw; 228.28/198.95 } 228.28/198.95 " 228.28/198.95 are unpacked to the following functions on top level 228.28/198.95 "lex13LexString2 s = concatMap lex13LexString1 (lex13LexStrItem s); 228.28/198.95 " 228.28/198.95 "lex13LexStrItem1 s = lexLitChar s; 228.28/198.95 " 228.28/198.95 "lex13LexString (wyz : s) = lex13LexString4 (wyz : s); 228.28/198.95 lex13LexString s = lex13LexString2 s; 228.28/198.95 " 228.28/198.95 "lex13LexString00 ch (str,u) = (ch ++ str,u) : []; 228.28/198.95 lex13LexString00 ch wy = []; 228.28/198.95 " 228.28/198.95 "lex13LexStrItem000 xu = []; 228.28/198.95 " 228.28/198.95 "lex13LexStrItem6 True (xvu : xvw : s) = lex13LexStrItem5 (xvw == '&') (xvu : xvw : s); 228.28/198.95 lex13LexStrItem6 xwv xww = lex13LexStrItem4 xww; 228.28/198.95 " 228.28/198.95 "lex13LexStrItem (xvu : xvy) = lex13LexStrItem7 (xvu : xvy); 228.28/198.95 lex13LexStrItem (wzy : xuv) = lex13LexStrItem4 (wzy : xuv); 228.28/198.95 lex13LexStrItem s = lex13LexStrItem1 s; 228.28/198.95 " 228.28/198.95 "lex13LexStrItem002 (xwz : t) = lex13LexStrItem001 (xwz == '\') (xwz : t); 228.28/198.95 lex13LexStrItem002 xxw = lex13LexStrItem000 xxw; 228.28/198.95 " 228.28/198.95 "lex13LexStrItem001 True (xwz : t) = ([],t) : []; 228.28/198.95 lex13LexStrItem001 xxu xxv = lex13LexStrItem000 xxv; 228.28/198.95 " 228.28/198.95 "lex13LexString10 (ch,t) = concatMap (lex13LexString0 ch) (lex13LexString t); 228.28/198.95 lex13LexString10 wz = []; 228.28/198.95 " 228.28/198.95 "lex13LexString3 True (wyz : s) = ('"' : [],s) : []; 228.58/199.01 lex13LexString3 wzu wzv = lex13LexString2 wzv; 228.58/199.01 " 228.58/199.01 "lex13LexStrItem7 (xvu : xvy) = lex13LexStrItem6 (xvu == '\') (xvu : xvy); 228.58/199.01 lex13LexStrItem7 xwx = lex13LexStrItem4 xwx; 228.58/199.01 " 228.58/199.01 "lex13LexStrItem4 (wzy : xuv) = lex13LexStrItem3 (wzy == '\') (wzy : xuv); 228.58/199.01 lex13LexStrItem4 xuy = lex13LexStrItem1 xuy; 228.58/199.01 " 228.58/199.01 "lex13LexString1 vu57 = lex13LexString10 vu57; 228.58/199.01 " 228.58/199.01 "lex13LexString4 (wyz : s) = lex13LexString3 (wyz == '"') (wyz : s); 228.58/199.01 lex13LexString4 wzw = lex13LexString2 wzw; 228.58/199.01 " 228.58/199.01 "lex13Lex10 (str,t) = ('"' : str,t) : []; 228.58/199.01 lex13Lex10 xv = []; 228.58/199.01 " 228.58/199.01 "lex13LexStrItem2 wzy c s True = concatMap lex13LexStrItem0 (dropWhile isSpace s : []); 228.58/199.01 lex13LexStrItem2 wzy c s False = lex13LexStrItem1 (wzy : c : s); 228.58/199.01 " 228.58/199.01 "lex13LexStrItem5 True (xvu : xvw : s) = ('\' : '&' : [],s) : []; 228.58/199.01 lex13LexStrItem5 xvz xwu = lex13LexStrItem4 xwu; 228.58/199.01 " 228.58/199.01 "lex13Lex1 vu55 = lex13Lex10 vu55; 228.58/199.01 " 228.58/199.01 "lex13LexStrItem3 True (wzy : c : s) = lex13LexStrItem2 wzy c s (isSpace c); 228.58/199.01 lex13LexStrItem3 xuw xux = lex13LexStrItem1 xux; 228.58/199.01 " 228.58/199.01 "lex13LexString0 ch vu56 = lex13LexString00 ch vu56; 228.58/199.01 " 228.58/199.01 "lex13LexStrItem0 vu58 = lex13LexStrItem00 vu58; 228.58/199.01 " 228.58/199.01 "lex13LexStrItem00 (xwz : t) = lex13LexStrItem002 (xwz : t); 228.58/199.01 lex13LexStrItem00 xu = lex13LexStrItem000 xu; 228.58/199.01 " 228.58/199.01 The bindings of the following Let/Where expression 228.58/199.01 "span1 p vww vwx (p vww) where { 228.58/199.01 span0 p vww vwx True = ([],vww : vwx); 228.58/199.01 ; 228.58/199.01 span1 p vww vwx True = (vww : ys,zs); 228.58/199.01 span1 p vww vwx False = span0 p vww vwx otherwise; 228.58/199.01 ; 228.58/199.01 vu43 = span p vwx; 228.58/199.01 ; 228.58/199.01 ys = ys0 vu43; 228.58/199.01 ; 228.58/199.01 ys0 (ys,vwz) = ys; 228.58/199.01 ; 228.58/199.01 zs = zs0 vu43; 228.58/199.01 ; 228.58/199.01 zs0 (vwy,zs) = zs; 228.58/199.01 } 228.58/199.01 " 228.58/199.01 are unpacked to the following functions on top level 228.58/199.01 "span2Zs vwzz vxuu = span2Zs0 vwzz vxuu (span2Vu43 vwzz vxuu); 228.58/199.01 " 228.58/199.01 "span2Vu43 vwzz vxuu = span vwzz vxuu; 228.58/199.01 " 228.58/199.01 "span2Ys0 vwzz vxuu (ys,vwz) = ys; 228.58/199.01 " 228.58/199.01 "span2Span1 vwzz vxuu p vww vwx True = (vww : span2Ys vwzz vxuu,span2Zs vwzz vxuu); 228.58/199.01 span2Span1 vwzz vxuu p vww vwx False = span2Span0 vwzz vxuu p vww vwx otherwise; 228.58/199.01 " 228.58/199.01 "span2Span0 vwzz vxuu p vww vwx True = ([],vww : vwx); 228.58/199.01 " 228.58/199.01 "span2Zs0 vwzz vxuu (vwy,zs) = zs; 228.58/199.01 " 228.58/199.01 "span2Ys vwzz vxuu = span2Ys0 vwzz vxuu (span2Vu43 vwzz vxuu); 228.58/199.01 " 228.58/199.01 The bindings of the following Let/Where expression 228.58/199.01 "lex11 c s (isSingle c) where { 228.58/199.01 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 228.58/199.01 ; 228.58/199.01 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 228.58/199.01 ; 228.58/199.01 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 228.58/199.01 ; 228.58/199.01 lex11 c s True = (c : [],s) : []; 228.58/199.01 lex11 c s False = lex9 c s (isSym c); 228.58/199.01 ; 228.58/199.01 lex2 c vu59 = lex20 c vu59; 228.58/199.01 ; 228.58/199.01 lex20 c (sym,t) = (c : sym,t) : []; 228.58/199.01 lex20 c yx = []; 228.58/199.01 ; 228.58/199.01 lex3 c vu60 = lex30 c vu60; 228.58/199.01 ; 228.58/199.01 lex30 c (nam,t) = (c : nam,t) : []; 228.58/199.01 lex30 c yy = []; 228.58/199.01 ; 228.58/199.01 lex4 c ds vu61 = lex40 c ds vu61; 228.58/199.01 ; 228.58/199.01 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 228.58/199.01 lex40 c ds yv = []; 228.58/199.01 ; 228.58/199.01 lex5 c vu62 = lex50 c vu62; 228.58/199.01 ; 228.58/199.01 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 228.58/199.01 lex50 c yw = []; 228.58/199.01 ; 228.58/199.01 lex6 c s True = []; 228.58/199.01 ; 228.58/199.01 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 228.58/199.01 lex7 c s False = lex6 c s otherwise; 228.58/199.01 ; 228.58/199.01 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 228.58/199.01 lex8 c s False = lex7 c s (isDigit c); 228.58/199.01 ; 228.58/199.01 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 228.58/199.01 lex9 c s False = lex8 c s (isAlpha c); 228.58/199.01 ; 228.58/199.01 lexExp (e : s) = lexExp5 (e : s); 228.58/199.01 lexExp s = lexExp3 s; 228.58/199.01 ; 228.58/199.01 lexExp0 e c vu65 = lexExp00 e c vu65; 228.58/199.01 ; 228.58/199.01 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 228.58/199.01 lexExp00 e c xw = []; 228.58/199.01 ; 228.58/199.01 lexExp1 e vu66 = lexExp10 e vu66; 228.58/199.01 ; 228.58/199.01 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 228.58/199.01 lexExp10 e xy = []; 228.58/199.01 ; 228.58/199.01 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 228.58/199.01 lexExp100 e c t False = []; 228.58/199.01 ; 228.58/199.01 lexExp2 e vu67 = lexExp20 e vu67; 228.58/199.01 ; 228.58/199.01 lexExp20 e (ds,t) = (e : ds,t) : []; 228.58/199.01 lexExp20 e xx = []; 228.58/199.01 ; 228.58/199.01 lexExp3 s = ([],s) : []; 228.58/199.01 ; 228.58/199.01 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 228.58/199.01 lexExp4 e s False = lexExp3 (e : s); 228.58/199.01 ; 228.58/199.01 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 228.58/199.01 lexExp5 xxy = lexExp3 xxy; 228.58/199.01 ; 228.58/199.01 lexFracExp (xyu : xyx) = lexFracExp5 (xyu : xyx); 228.58/199.01 lexFracExp s = lexFracExp2 s; 228.58/199.01 ; 228.58/199.01 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 228.58/199.01 ; 228.58/199.01 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 228.58/199.01 lexFracExp00 ds yu = []; 228.58/199.01 ; 228.58/199.01 lexFracExp1 vu64 = lexFracExp10 vu64; 228.58/199.01 ; 228.58/199.01 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 228.58/199.01 lexFracExp10 xz = []; 228.58/199.01 ; 228.58/199.01 lexFracExp2 s = lexExp s; 228.58/199.01 ; 228.58/199.01 lexFracExp3 xyu c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 228.58/199.01 lexFracExp3 xyu c cs False = lexFracExp2 (xyu : c : cs); 228.58/199.01 ; 228.58/199.01 lexFracExp4 True (xyu : c : cs) = lexFracExp3 xyu c cs (isDigit c); 228.58/199.01 lexFracExp4 xyy xyz = lexFracExp2 xyz; 228.58/199.01 ; 228.58/199.01 lexFracExp5 (xyu : xyx) = lexFracExp4 (xyu == '.') (xyu : xyx); 228.58/199.01 lexFracExp5 xzu = lexFracExp2 xzu; 228.58/199.01 } 228.58/199.01 " 228.58/199.01 are unpacked to the following functions on top level 228.58/199.01 "lex12Lex9 c s True = concatMap (lex12Lex2 c) (span lex12IsSym s : []); 228.58/199.01 lex12Lex9 c s False = lex12Lex8 c s (isAlpha c); 228.58/199.01 " 228.58/199.01 "lex12Lex30 c (nam,t) = (c : nam,t) : []; 228.58/199.01 lex12Lex30 c yy = []; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp4 True (xyu : c : cs) = lex12LexFracExp3 xyu c cs (isDigit c); 228.58/199.01 lex12LexFracExp4 xyy xyz = lex12LexFracExp2 xyz; 228.58/199.01 " 228.58/199.01 "lex12Lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 228.58/199.01 lex12Lex40 c ds yv = []; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp0 ds vu63 = lex12LexFracExp00 ds vu63; 228.58/199.01 " 228.58/199.01 "lex12Lex4 c ds vu61 = lex12Lex40 c ds vu61; 228.58/199.01 " 228.58/199.01 "lex12IsIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp (xyu : xyx) = lex12LexFracExp5 (xyu : xyx); 228.58/199.01 lex12LexFracExp s = lex12LexFracExp2 s; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp2 s = lex12LexExp s; 228.58/199.01 " 228.58/199.01 "lex12IsSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 228.58/199.01 " 228.58/199.01 "lex12LexExp (e : s) = lex12LexExp5 (e : s); 228.58/199.01 lex12LexExp s = lex12LexExp3 s; 228.58/199.01 " 228.58/199.01 "lex12Lex50 c (ds,s) = concatMap (lex12Lex4 c ds) (lex12LexFracExp s); 228.58/199.01 lex12Lex50 c yw = []; 228.58/199.01 " 228.58/199.01 "lex12LexExp100 e c t True = concatMap (lex12LexExp0 e c) (lexDigits t); 228.58/199.01 lex12LexExp100 e c t False = []; 228.58/199.01 " 228.58/199.01 "lex12Lex3 c vu60 = lex12Lex30 c vu60; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp5 (xyu : xyx) = lex12LexFracExp4 (xyu == '.') (xyu : xyx); 228.58/199.01 lex12LexFracExp5 xzu = lex12LexFracExp2 xzu; 228.58/199.01 " 228.58/199.01 "lex12IsSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 228.58/199.01 " 228.58/199.01 "lex12LexExp00 e c (ds,u) = (e : c : ds,u) : []; 228.58/199.01 lex12LexExp00 e c xw = []; 228.58/199.01 " 228.58/199.01 "lex12LexExp20 e (ds,t) = (e : ds,t) : []; 228.58/199.01 lex12LexExp20 e xx = []; 228.58/199.01 " 228.58/199.01 "lex12LexExp4 e s True = concatMap (lex12LexExp1 e) (s : []) ++ concatMap (lex12LexExp2 e) (lexDigits s); 228.58/199.01 lex12LexExp4 e s False = lex12LexExp3 (e : s); 228.58/199.01 " 228.58/199.01 "lex12LexFracExp1 vu64 = lex12LexFracExp10 vu64; 228.58/199.01 " 228.58/199.01 "lex12Lex5 c vu62 = lex12Lex50 c vu62; 228.58/199.01 " 228.58/199.01 "lex12LexExp0 e c vu65 = lex12LexExp00 e c vu65; 228.58/199.01 " 228.58/199.01 "lex12LexExp1 e vu66 = lex12LexExp10 e vu66; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 228.58/199.01 lex12LexFracExp00 ds yu = []; 228.58/199.01 " 228.58/199.01 "lex12LexExp5 (e : s) = lex12LexExp4 e s (e `elem` 'e' : 'E' : []); 228.58/199.01 lex12LexExp5 xxy = lex12LexExp3 xxy; 228.58/199.01 " 228.58/199.01 "lex12LexExp3 s = ([],s) : []; 228.58/199.01 " 228.58/199.01 "lex12LexExp2 e vu67 = lex12LexExp20 e vu67; 228.58/199.01 " 228.58/199.01 "lex12LexFracExp3 xyu c cs True = concatMap lex12LexFracExp1 (lexDigits (c : cs)); 228.58/199.01 lex12LexFracExp3 xyu c cs False = lex12LexFracExp2 (xyu : c : cs); 228.58/199.01 " 228.58/199.01 "lex12Lex6 c s True = []; 228.58/199.01 " 228.58/199.01 "lex12LexExp10 e (c : t) = lex12LexExp100 e c t (c `elem` '+' : '-' : []); 228.58/199.01 lex12LexExp10 e xy = []; 228.58/199.01 " 228.58/199.01 "lex12Lex11 c s True = (c : [],s) : []; 228.58/199.01 lex12Lex11 c s False = lex12Lex9 c s (lex12IsSym c); 228.58/199.01 " 228.58/199.01 "lex12Lex2 c vu59 = lex12Lex20 c vu59; 228.58/199.01 " 228.58/199.01 "lex12Lex20 c (sym,t) = (c : sym,t) : []; 228.58/199.01 lex12Lex20 c yx = []; 228.58/199.01 " 228.58/199.01 "lex12Lex8 c s True = concatMap (lex12Lex3 c) (span lex12IsIdChar s : []); 228.58/199.01 lex12Lex8 c s False = lex12Lex7 c s (isDigit c); 228.58/199.01 " 228.58/199.01 "lex12LexFracExp10 (ds,t) = concatMap (lex12LexFracExp0 ds) (lex12LexExp t); 228.58/199.01 lex12LexFracExp10 xz = []; 228.58/199.01 " 228.58/199.01 "lex12Lex7 c s True = concatMap (lex12Lex5 c) (span isDigit s : []); 228.58/199.01 lex12Lex7 c s False = lex12Lex6 c s otherwise; 228.58/199.01 " 228.58/199.01 The bindings of the following Let/Where expression 228.58/199.01 "readParen0 b where { 228.58/199.01 mandatory r = concatMap mandatory2 (lex r); 228.58/199.01 ; 228.58/199.01 mandatory0 x vu48 = mandatory00 x vu48; 228.58/199.01 ; 228.58/199.01 mandatory00 x (vvzu : vvzv,u) = mandatory002 x (vvzu : vvzv,u); 228.58/199.01 mandatory00 x vzv = mandatory000 x vzv; 228.58/199.01 ; 228.58/199.01 mandatory000 x vzv = []; 228.58/199.01 ; 228.58/199.01 mandatory001 True x (vvzu : [],u) = (x,u) : []; 228.58/199.01 mandatory001 vvzw vvzx vvzy = mandatory000 vvzx vvzy; 228.58/199.01 ; 228.58/199.01 mandatory002 x (vvzu : vvzv,u) = mandatory001 (vvzu == ')') x (vvzu : vvzv,u); 228.58/199.01 mandatory002 vvzz vwuu = mandatory000 vvzz vwuu; 228.58/199.01 ; 228.58/199.01 mandatory1 vu49 = mandatory10 vu49; 228.58/199.01 ; 228.58/199.01 mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 228.58/199.01 mandatory10 vzw = []; 228.58/199.01 ; 228.58/199.01 mandatory2 vu50 = mandatory20 vu50; 228.58/199.01 ; 228.58/199.01 mandatory20 (vvxz : vvyu,s) = mandatory202 (vvxz : vvyu,s); 228.58/199.01 mandatory20 vzu = mandatory200 vzu; 228.58/199.01 ; 228.58/199.01 mandatory200 vzu = []; 228.58/199.01 ; 228.58/199.01 mandatory201 True (vvxz : [],s) = concatMap mandatory1 (optional s); 228.58/199.01 mandatory201 vvyv vvyw = mandatory200 vvyw; 228.58/199.01 ; 228.58/199.01 mandatory202 (vvxz : vvyu,s) = mandatory201 (vvxz == '(') (vvxz : vvyu,s); 228.58/199.01 mandatory202 vvyx = mandatory200 vvyx; 228.58/199.01 ; 228.58/199.01 optional r = g r ++ mandatory r; 228.58/199.01 ; 228.58/199.01 readParen0 True = mandatory; 228.58/199.01 readParen0 False = optional; 228.58/199.01 } 228.58/199.01 " 228.58/199.01 are unpacked to the following functions on top level 228.58/199.01 "readParenMandatory002 vxuv x (vvzu : vvzv,u) = readParenMandatory001 vxuv (vvzu == ')') x (vvzu : vvzv,u); 228.58/199.01 readParenMandatory002 vxuv vvzz vwuu = readParenMandatory000 vxuv vvzz vwuu; 228.58/199.01 " 228.58/199.01 "readParenMandatory10 vxuv (x,t) = concatMap (readParenMandatory0 vxuv x) (lex t); 228.58/199.01 readParenMandatory10 vxuv vzw = []; 228.58/199.01 " 228.58/199.01 "readParenMandatory001 vxuv True x (vvzu : [],u) = (x,u) : []; 228.58/199.01 readParenMandatory001 vxuv vvzw vvzx vvzy = readParenMandatory000 vxuv vvzx vvzy; 228.58/199.01 " 228.58/199.01 "readParenMandatory00 vxuv x (vvzu : vvzv,u) = readParenMandatory002 vxuv x (vvzu : vvzv,u); 228.58/199.01 readParenMandatory00 vxuv x vzv = readParenMandatory000 vxuv x vzv; 228.58/199.01 " 228.58/199.01 "readParenMandatory20 vxuv (vvxz : vvyu,s) = readParenMandatory202 vxuv (vvxz : vvyu,s); 228.58/199.01 readParenMandatory20 vxuv vzu = readParenMandatory200 vxuv vzu; 228.58/199.01 " 228.58/199.01 "readParenMandatory1 vxuv vu49 = readParenMandatory10 vxuv vu49; 228.58/199.01 " 228.58/199.01 "readParenReadParen0 vxuv True = readParenMandatory vxuv; 228.58/199.01 readParenReadParen0 vxuv False = readParenOptional vxuv; 228.58/199.01 " 228.58/199.01 "readParenOptional vxuv r = vxuv r ++ readParenMandatory vxuv r; 228.58/199.01 " 228.58/199.01 "readParenMandatory2 vxuv vu50 = readParenMandatory20 vxuv vu50; 228.58/199.01 " 228.58/199.01 "readParenMandatory202 vxuv (vvxz : vvyu,s) = readParenMandatory201 vxuv (vvxz == '(') (vvxz : vvyu,s); 228.58/199.01 readParenMandatory202 vxuv vvyx = readParenMandatory200 vxuv vvyx; 228.58/199.01 " 228.58/199.01 "readParenMandatory201 vxuv True (vvxz : [],s) = concatMap (readParenMandatory1 vxuv) (readParenOptional vxuv s); 228.58/199.01 readParenMandatory201 vxuv vvyv vvyw = readParenMandatory200 vxuv vvyw; 228.58/199.02 " 228.58/199.02 "readParenMandatory200 vxuv vzu = []; 228.58/199.02 " 228.58/199.02 "readParenMandatory000 vxuv x vzv = []; 228.58/199.02 " 228.58/199.02 "readParenMandatory0 vxuv x vu48 = readParenMandatory00 vxuv x vu48; 228.58/199.02 " 228.58/199.02 "readParenMandatory vxuv r = concatMap (readParenMandatory2 vxuv) (lex r); 228.58/199.02 " 228.58/199.02 The bindings of the following Let/Where expression 228.58/199.02 "readParen False read' where { 228.58/199.02 read' r = read'' r ++ concatMap read'1 (lex r); 228.58/199.02 ; 228.58/199.02 read'' r = concatMap (read''1 readPos) (lex r); 228.58/199.02 ; 228.58/199.02 read''0 s vu80 = read''00 s vu80; 228.58/199.02 ; 228.58/199.02 read''00 s (n,[]) = (n,s) : []; 228.58/199.02 read''00 s vzy = []; 228.58/199.02 ; 228.58/199.02 read''1 readPos vu81 = read''10 readPos vu81; 228.58/199.02 ; 228.58/199.02 read''10 readPos (str,s) = concatMap (read''0 s) (readPos str); 228.58/199.02 read''10 readPos vzx = []; 228.58/199.02 ; 228.58/199.02 read'0 vu78 = read'00 vu78; 228.58/199.02 ; 228.58/199.02 read'00 (x,t) = (`negate` x,t) : []; 228.58/199.02 read'00 wuu = []; 228.58/199.02 ; 228.58/199.02 read'1 vu79 = read'10 vu79; 228.58/199.02 ; 228.58/199.02 read'10 (vwux : vwuy,s) = read'102 (vwux : vwuy,s); 228.58/199.02 read'10 vzz = read'100 vzz; 228.58/199.02 ; 228.58/199.02 read'100 vzz = []; 228.58/199.02 ; 228.58/199.02 read'101 True (vwux : [],s) = concatMap read'0 (read'' s); 228.58/199.02 read'101 vwuz vwvu = read'100 vwvu; 228.58/199.02 ; 228.58/199.02 read'102 (vwux : vwuy,s) = read'101 (vwux == '-') (vwux : vwuy,s); 228.58/199.02 read'102 vwvv = read'100 vwvv; 228.58/199.02 } 228.58/199.02 " 228.58/199.02 are unpacked to the following functions on top level 228.58/199.02 "readSignedRead''0 vxuw s vu80 = readSignedRead''00 vxuw s vu80; 228.58/199.02 " 228.58/199.02 "readSignedRead' vxuw r = readSignedRead'' vxuw r ++ concatMap (readSignedRead'1 vxuw) (lex r); 228.58/199.02 " 228.58/199.02 "readSignedRead'' vxuw r = concatMap (readSignedRead''1 vxuw vxuw) (lex r); 228.58/199.02 " 228.58/199.02 "readSignedRead'00 vxuw (x,t) = (`negate` x,t) : []; 228.58/199.02 readSignedRead'00 vxuw wuu = []; 228.58/199.02 " 228.58/199.02 "readSignedRead''00 vxuw s (n,[]) = (n,s) : []; 228.58/199.02 readSignedRead''00 vxuw s vzy = []; 228.58/199.02 " 228.58/199.02 "readSignedRead'102 vxuw (vwux : vwuy,s) = readSignedRead'101 vxuw (vwux == '-') (vwux : vwuy,s); 228.58/199.02 readSignedRead'102 vxuw vwvv = readSignedRead'100 vxuw vwvv; 228.58/199.02 " 228.58/199.02 "readSignedRead''1 vxuw readPos vu81 = readSignedRead''10 vxuw readPos vu81; 228.58/199.02 " 228.58/199.02 "readSignedRead''10 vxuw readPos (str,s) = concatMap (readSignedRead''0 vxuw s) (readPos str); 228.58/199.02 readSignedRead''10 vxuw readPos vzx = []; 228.58/199.02 " 228.58/199.02 "readSignedRead'1 vxuw vu79 = readSignedRead'10 vxuw vu79; 228.58/199.02 " 228.58/199.02 "readSignedRead'101 vxuw True (vwux : [],s) = concatMap (readSignedRead'0 vxuw) (readSignedRead'' vxuw s); 228.58/199.02 readSignedRead'101 vxuw vwuz vwvu = readSignedRead'100 vxuw vwvu; 228.58/199.02 " 228.58/199.02 "readSignedRead'10 vxuw (vwux : vwuy,s) = readSignedRead'102 vxuw (vwux : vwuy,s); 228.58/199.02 readSignedRead'10 vxuw vzz = readSignedRead'100 vxuw vzz; 228.58/199.02 " 228.58/199.02 "readSignedRead'0 vxuw vu78 = readSignedRead'00 vxuw vu78; 228.58/199.02 " 228.58/199.02 "readSignedRead'100 vxuw vzz = []; 228.58/199.02 " 228.58/199.02 The bindings of the following Let/Where expression 228.58/199.02 "g x n where { 228.58/199.02 g x n = g2 x n; 228.58/199.02 ; 228.58/199.02 g0 x n True = f x (n - 1) (x * y); 228.58/199.02 ; 228.58/199.02 g1 x n True = g (x * x) (n `quot` 2); 228.58/199.02 g1 x n False = g0 x n otherwise; 228.58/199.02 ; 228.58/199.02 g2 x n = g1 x n (even n); 228.58/199.02 } 228.58/199.02 " 228.58/199.02 are unpacked to the following functions on top level 228.58/199.02 "pr2F0G0 vxux x n True = pr2F x (n - 1) (x * vxux); 228.58/199.02 " 228.58/199.02 "pr2F0G2 vxux x n = pr2F0G1 vxux x n (even n); 228.58/199.02 " 228.58/199.02 "pr2F0G vxux x n = pr2F0G2 vxux x n; 228.58/199.02 " 228.58/199.02 "pr2F0G1 vxux x n True = pr2F0G vxux (x * x) (n `quot` 2); 228.58/199.02 pr2F0G1 vxux x n False = pr2F0G0 vxux x n otherwise; 228.58/199.02 " 228.58/199.02 228.58/199.02 ---------------------------------------- 228.58/199.02 228.58/199.02 (12) 228.58/199.02 Obligation: 228.58/199.02 mainModule Main 228.58/199.02 module Main where { 228.58/199.02 import qualified Prelude; 228.58/199.02 } 228.58/199.02 228.58/199.02 ---------------------------------------- 228.58/199.02 228.58/199.02 (13) NumRed (SOUND) 228.58/199.02 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 228.58/199.02 ---------------------------------------- 228.58/199.02 228.58/199.02 (14) 228.58/199.02 Obligation: 228.58/199.02 mainModule Main 228.58/199.02 module Main where { 228.58/199.02 import qualified Prelude; 228.58/199.02 } 228.76/199.09 EOF