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