Input expression letrec
p a b = let
p = - (+ a b) 20
in let
m p q = let
g = + a 6
in let
d pp = + (+ pp q) p
in let
c q = + (- q g) a
in - (- (d (+ 1 a)) (c (- a b))) p
in letrec
f a b = g a (+ b 1);
g x y = f x (+ y b)
in let
h a n = m (+ n 1) (f a n)
in h a p
in p 5 6
Result
$main = letrec
p = SC6
in p 5 6
SC6 a b = let
p = - (+ a b) 20
in let
m = SC5 a b
in letrec
f = SC1 g;
g = SC2 b f
in let
h = SC0 f m
in h a p
SC0 f m a n = m (+ n 1) (f a n)
SC1 g a b = g a (+ b 1)
SC2 b f x y = f x (+ y b)
SC5 a b p q = let
g = + a 6
in let
d = SC4 p q
in let
c = SC3 a g
in - (- (d (+ 1 a)) (c (- a b))) p
SC3 a g q = + (- q g) a
SC4 p q pp = + (+ pp q) p
Fully lazy
$main = let
v13 = + 1
in letrec
p0 = SC11 v13
in p0 5 6
SC11 v13 a1 = let
v12 = + a1
in let
g20 = + a1 6
in let
c16 = SC10 a1 g20
in let
v12 = v13 a1
in let
v15 = - a1
in SC9 a1 c16 v12 v15
SC9 a1 c16 v12 v15 b2 = let
p11 = - (v12 b2) 20
in let
v14 = c16 (v15 b2)
in let
m9 = SC8 v12 v14
in letrec
f5 = SC3 g6;
g6 = SC5 b2 f5
in let
h3 = SC1 f5 m9
in h3 a1 p11
SC1 f5 m9 a4 = let
v6 = f5 a4
in SC0 m9 v6
SC0 m9 v6 n5 = m9 (+ n5 1) (v6 n5)
SC3 g6 a7 = let
v9 = g6 a7
in SC2 v9
SC2 v9 b8 = v9 (+ b8 1)
SC5 b2 f5 x8 = let
v10 = f5 x8
in SC4 b2 v10
SC4 b2 v10 y9 = v10 (+ y9 b2)
SC8 v12 v14 p10 = SC7 p10 v12 v14
SC7 p10 v12 v14 q11 = let
d18 = SC6 p10 q11
in - (- (d18 v12) v14) p10
SC6 p10 q11 pp19 = + (+ pp19 q11) p10
SC10 a1 g20 q17 = + (- q17 g20) a1
|