(define x 2)
(define y 3)

(+ x y)

(define add
  (lambda (a b)
    (+ a b)))

(add x 10)

==== SYMBOL TABLE Level 2 ====
       a : VARIABLE
       b : VARIABLE
==============================


(define func
  (lambda (a)
    (let* ((b 2)
           (prod (* a b)))
      prod)))

(define proc

==== SYMBOL TABLE Level 2 ====
       a : VARIABLE
==============================


==== SYMBOL TABLE Level 3 ====
       b : VARIABLE
    prod : VARIABLE
==============================

  (lambda (a b)
    (let ((sum (+ a (func b))))
      sum)))

(proc x y)

==== SYMBOL TABLE Level 2 ====
       a : VARIABLE
       b : VARIABLE
==============================


==== SYMBOL TABLE Level 3 ====
     sum : VARIABLE
==============================


==== SYMBOL TABLE Level 0 ====
       * : BUILT_IN
       + : BUILT_IN
==============================


==== SYMBOL TABLE Level 1 ====
     add : PROCEDURE
    func : PROCEDURE
    proc : PROCEDURE
       x : VARIABLE
       y : VARIABLE
==============================


==== TREE ====

(define x 2)

==== TREE ====

(define y 3)

==== TREE ====

(+ x y)

==== TREE ====

(define add 
  (lambda 
    (a b) 
    (+ a b)))

==== TREE ====

(add x 10)

==== TREE ====

(define func 
  (lambda 
    (a) 
    (let* 
      (
        (b 2) 
        (prod 
          (* a b))) prod)))

==== TREE ====

(define proc 
  (lambda 
    (a b) 
    (let 
      (
        (sum 
          (+ a 
            (func b)))) sum)))

==== TREE ====

(proc x y)

===== BEGIN EXECUTION =====

2.0
3.0
5.0
12.0
8.0
(define x 2)
(define y 3)

(+ x y)

(define add
  (lambda (a b)
    (+ a b)))

(add x 10)

==== SYMBOL TABLE Level 2 ====
       a : VARIABLE
       b : VARIABLE
==============================


(define func
  (lambda (a)
    (let* ((b 2)
           (prod (* a b)))
      prod)))

(define proc

==== SYMBOL TABLE Level 2 ====
       a : VARIABLE
==============================


==== SYMBOL TABLE Level 3 ====
       b : VARIABLE
    prod : VARIABLE
==============================

  (lambda (a b)
    (let ((sum (+ a (func b))))
      sum)))

(proc x y)

==== SYMBOL TABLE Level 2 ====
       a : VARIABLE
       b : VARIABLE
==============================


==== SYMBOL TABLE Level 3 ====
     sum : VARIABLE
==============================


==== SYMBOL TABLE Level 0 ====
       * : BUILT_IN
       + : BUILT_IN
==============================


==== SYMBOL TABLE Level 1 ====
     add : PROCEDURE
    func : PROCEDURE
    proc : PROCEDURE
       x : VARIABLE
       y : VARIABLE
==============================


==== TREE ====

(define x 2)

==== TREE ====

(define y 3)

==== TREE ====

(+ x y)

==== TREE ====

(define add 
  (lambda 
    (a b) 
    (+ a b)))

==== TREE ====

(add x 10)

==== TREE ====

(define func 
  (lambda 
    (a) 
    (let* 
      (
        (b 2) 
        (prod 
          (* a b))) prod)))

==== TREE ====

(define proc 
  (lambda 
    (a b) 
    (let 
      (
        (sum 
          (+ a 
            (func b)))) sum)))

==== TREE ====

(proc x y)

===== BEGIN EXECUTION =====

2.0
3.0
5.0
12.0
8.0
